当前位置:  开发笔记 > 编程语言 > 正文

透视投影 - 帮助一个菜鸟

如何解决《透视投影-帮助一个菜鸟》经验,为你挑选了1个好方法。

我希望确定3D空间(x,y,z)中点的2D屏幕坐标(x,y).

我希望投射的点是由GPS坐标和海拔高度表示的真实世界点.

例如:Point(Lat:49.291882,Long:-123.131676,Height:14m)

摄像机位置和高度也可以确定为ax,y,z点.我还有相机的标题(罗盘度),它的倾斜度(地平线上方/下方)和滚动(绕z轴).

我没有3D编程的经验,因此,我已经阅读了透视投影的主题,并了解到它需要矩阵,变换等知识 - 所有这些都使我目前感到困惑.

有人告诉我,OpenGL可能用于构建真实世界点的3D模型,设置相机方向并检索3D点的2D坐标.

但是,我不确定使用OpenGL是否是解决此问题的最佳解决方案,即使它是我不知道如何创建模型,设置相机等

有人可以提出解决问题的最佳方法吗?如果OpenGL是一个可行的解决方案,我必须使用OpenGL ES,如果这有任何区别.哦,无论我选择哪种解决方案,都必须快速执行.

谢谢你的帮助



1> rofrankel..:

这是一个非常一般的答案.假设相机处于(Xc,Yc,Zc)并且您要投影的点是P =(X,Y,Z).从摄像机到投影到的2D平面的距离为F(因此平面的方程为Z-Zc = F).投影到平面上的P的2D坐标是(X',Y').

然后,非常简单:

X'=((X-Xc)*(F/Z))+ Xc

Y'=((Y-Yc)*(F/Z))+ Yc

如果您的相机是原点,那么这简化为:

X'= X*(F/Z)

Y'= Y*(F/Z)


@rofrankel如果我想用Z = 0投影点怎么办?
推荐阅读
低调pasta_730
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有