我有2D格式的矢量街道地图数据,如下所示:
polyline0: dataX = {x00,x01,..,x0n} dataY = {y00,y01,..,y0n}
polyline1: dataX = {x10,x11,..,x1n} dataY = {y10,y11,..,y1n}
polyline2: dataX = {x20,x21,..,x2n} dataY = {y20,y21,..,y2n}
..。
多线: dataX = {xm0,xm1,..,xmn} dataY = {ym0,ym1,..,ymn}
我可以在屏幕上绘制polyline0,polyline1,..,polylinem作为自上而下的视图(2D)。
现在我想在屏幕上绘制polyline0,polyline1,..,polylinem作为2.5D视图(透视投影或等轴测投影)
我正在寻找算法,以转换2D坐标为2.5D。我试着在互联网上搜索这个算法,但是没有找到。
我正在寻找的只是一个简单的公式,允许我将上面的2D数据转换为2.5D数据,如下所示:
以polyline0为例: for (i = 0;i< n;i++) { 2.5D中的dataXi =Convert2Dto2.5D(2D中的dataXi);2.5D中的dataYi =Convert2Dto2.5D(2D中的dataYi);}
我正在寻找您的帮助,并非常感谢您的时间来帮助我的2D坐标转换为2.5D的算法。
发布于 2010-09-30 14:06:38
对于评论者,这里描述了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);如果你不介意缩放的话。
其他等轴测视图可以从上面的来源中计算出来。
https://stackoverflow.com/questions/3827672
复制相似问题