我正在使用C#和.NET CF为Windows Mobile开发一个转弯导航软件。我可以通过绘制线条绘制2D地图。我的问题是我想得到一张像图片中的2.5D地图。我在2D渲染图像上尝试了非仿射变换,但对于我们所针对的Windows Mobile设备来说速度太慢了。谁能给我一个关于我问题的线索?
example image http://www.cartotype.com/assets/images/promopanels/citymap.png
答案 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=0
(1.25*x
}到底部的y=h
(当x
时)。请注意,我们需要相对于屏幕中心缩放{{1}}。
这可以与直接绘制线条一样快,如果需要分解常量表达式并使其使用查找表。
答案 1 :(得分:0)
使用透视变换,因为它会将直线映射到直线。 this answer中的更多详细信息。