首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >将2D坐标转换为2.5D的算法

将2D坐标转换为2.5D的算法
EN

Stack Overflow用户
提问于 2010-09-30 12:14:27
回答 1查看 2.4K关注 0票数 0

我有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的算法。

EN

回答 1

Stack Overflow用户

发布于 2010-09-30 14:06:38

对于评论者,这里描述了2.5D

isometric projection看起来很容易实现。有了这些限制,数学就会变得更简单。

线上点的z坐标始终为0,因此该wikipedia页面上矩阵的乘积为

代码语言:javascript
复制
newx = 1 / sqrt(2) * oldx;
newy = 1 / sqrt(6) * (oldx + 2 * oldy);

代码语言:javascript
复制
newx = oldx;
newy = 1 / sqrt(3) * (oldx + 2 * oldy);

如果你不介意缩放的话。

其他等轴测视图可以从上面的来源中计算出来。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/3827672

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档