使用C#从行绘制2.5D或3D地图

时间:2010-05-11 06:02:49

标签: c# graphics 3d navigation

我正在使用C#和.NET CF为Windows Mobile开发一个转弯导航软件。我可以通过绘制线条绘制2D地图。我的问题是我想得到一张像图片中的2.5D地图。我在2D渲染图像上尝试了非仿射变换,但对于我们所针对的Windows Mobile设备来说速度太慢了。谁能给我一个关于我问题的线索?

example image http://www.cartotype.com/assets/images/promopanels/citymap.png

2 个答案:

答案 0 :(得分:1)

一个非常基本的线性变换可能就足够了,因为视口总是具有相同的方向(即“倾斜”)。

类似的东西:

# assuming 0,0 is top left of screen
w = 320 # screen width
h = 480 # screen height

t1 = 0.75 # scale at top of screen
t2 = 1.25 # scale at bottom of screen

# x,y is the initial point
# x_,y_ is the transformed result
x_ = (x - w/2)*(t1+(y/h)*(t2-t1)) + w/2
y_ = y

屏幕越高,屏幕越高,x多个0.75*x,从顶部的y=01.25*x}到底部的y=h (当x时)。请注意,我们需要相对于屏幕中心缩放{{1}}。

这可以与直接绘制线条一样快,如果需要分解常量表达式并使其使用查找表。

答案 1 :(得分:0)

使用透视变换,因为它会将直线映射到直线。 this answer中的更多详细信息。