我有二维格式的矢量街道图数据,如下所示:
多段线0:
数据x={x00,x01,…,x0n}
数据y={y00,y01,…,y0n}
多段线1:
数据x={x10,x11,…,x1n}
数据y={y10,y11,…,y1n}
多段线2:
数据x={x20,x21,…,x2n}
数据y={y20,y21,…,y2n}
...
折线:
数据x={xm0,xm1,…,xmn}
数据y={ym0,ym1,…,ymn}
我可以在屏幕上绘制polyline0,polyline1,…,polylinem作为自顶向下视图(2d)。
现在我想在屏幕上绘制polyline0,polyline1,…,polylinem作为2.5d视图(透视投影或等轴测投影)
我正在寻找将二维坐标转换为2.5D的算法。我试图在Internet上搜索此算法,但找不到。
我正在寻找的只是一个简单的公式,它允许我将上述二维数据转换为2.5d数据,如下所示:
以polyline0为例:
对于(i=0;i{
2.5d中的datax[i]=转换2d到2.5d(2d中的datax[i]);
2.5d中的数据y[i]=转换2d到2.5d(2d中的数据y[i]);
}
我正在寻求您的帮助,并非常感谢您的时间来帮助我与算法转换二维坐标到2.5D。

最佳答案

对于评论者,2.5D在这里被描述。
isometric projection看起来很容易实现。有了这些限制,数学变得更简单了。
直线上的点的z坐标总是0,所以wikipedia页面上的矩阵的乘积就是

newx = 1 / sqrt(2) * oldx;
newy = 1 / sqrt(6) * (oldx + 2 * oldy);


newx = oldx;
newy = 1 / sqrt(3) * (oldx + 2 * oldy);

如果你不介意缩放的话。
其他等轴测视图可以从上面的源代码中获得。

关于algorithm - 将2D坐标转换为2.5D的算法,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/3827672/

10-13 02:22