我希望确定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,如果这有任何区别.哦,无论我选择哪种解决方案,都必须快速执行.
谢谢你的帮助
这是一个非常一般的答案.假设相机处于(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)