gpt4 book ai didi

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

转载 作者:塔克拉玛干 更新时间:2023-11-03 06:34:48 25 4
gpt4 key购买 nike

我有如下二维格式的矢量街道 map 数据:

折线0:dataX = {x00,x01,..,x0n}dataY = {y00,y01,..,y0n}

折线 1:dataX = {x10,x11,..,x1n}dataY = {y10,y11,..,y1n}

折线 2:dataX = {x20,x21,..,x2n}dataY = {y20,y21,..,y2n}

...

折线:dataX = {xm0,xm​​1,..,xmn}dataY = {ym0,ym1,..,ymn}

我可以在屏幕上绘制 polyline0、polyline1、..、polylinem 作为自上而下的 View (2D)。

现在我想在屏幕上绘制 polyline0、polyline1、..、polylinem 作为 2.5D View (透视投影或等距投影)

我正在寻找将 2D 坐标转换为 2.5D 的算法。我试图在互联网上搜索这个算法,但没有找到。

我正在寻找的只是一个简单的公式,它允许我将上述 2D 数据转换为 2.5D 数据,如下所示:

以polyline0为例:对于 (i = 0; i < n; i++){ dataX[i] in 2.5D = convert2Dto2.5D(dataX[i] in 2D); dataY[i] in 2.5D = convert2Dto2.5D(dataY[i] in 2D);

我正在寻求您的帮助,非常感谢您花时间帮助我解决将 2D 坐标转换为 2.5D 的算法。

最佳答案

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

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

直线上点的 z 坐标始终为 0,因此该维基百科页面上的矩阵乘积就是

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

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

如果您不介意缩放。

其他等距 View 可以从上面的源中得到。

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

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com