这是我在这个论坛上的第一篇文章,我是编程方面的新手。我想构建一个应用程序,在那里我可以准确地看到手机上某些gps值的位置。我知道很多应用程序,比如junaio,mixare和其他应用程序,但它们只显示对象的方向并且它们不是很准确(它们没有将目标投影到屏幕上的确切位置) - 所以我我想自己建造它。我在android中编程,但我认为它在iPhone上会是一样的。
我按照dabhaid建议的步骤进行了操作:
有三个步骤。
1)使用传感器确定您的位置和方向。
2)通过使用例如大圆距离和方位确定已知GPS坐标的相对位置和方位,从GPS坐标空间转换到平面坐标空间。 (您的设备使用此方案保留在坐标空间的原点)
3)做一个透视投影http://en.wikipedia.org/wiki/3D_projection#Perspective_projection来确定物体应该出现在你的显示器(好的,你的相机传感器)的平面上的位置,这样你就可以增加它们。
第1步:简单,我有移动设备(x,y,z)的gps位置和所有方向。为了进一步改进,我可以使用一些算法来平滑这个值(平均值,低滤波器,无论如何)。
第2步:我不知道,平面坐标空间究竟是什么意思。我有一些不同的方法来转换我的gps坐标空间。其中之一是ECEF(以地球为中心),其中0,0,0是地球的中心。不知怎的,这对我来说并不好看,因为一个轴的每一个小变化都会导致另外两个轴的变化。因此,如果我改变高度,所有3轴都会改变。我不知道我是否可以使用此坐标系来执行步骤3。 在第2步中提到:使用hasrsine - 这会给我到点的距离,但是我没有得到它的x,y,z。我是否必须通过使用三角法(轴承(alpha)+距离(斜边))来计算x,y?
第3步:此方法看起来很酷!如果我有第2步的坐标空间,我可以使用维基百科上的公式计算 d_x,d_y,d_z 。但是在这一步之后,我还没有完成,因为我只有坐标并将其投影到我的屏幕上,我只需要两个坐标?来自维基百科的文本通过计算 b_x,b_y 继续使用 e_x,e_y,e_z ,这是观看者相对于显示表面的位置 - >如何从移动设备获取这些值? (机器人/ IOS)。从维基百科建议的另一种方法是:使用维基百科上提到的公式计算 b_x,b_y by 。在这个公式中,他们使用s_x,s_y,这是屏幕尺寸, r_x,r_y 是记录表面尺寸。再次,我如何从我的移动设备获取录制表面?
我在互联网上找不到任何东西。似乎android / ios上的任何人都没有实现过透视投影......
非常感谢您的所有回复!此外,链接到有用的网站会有所帮助!
答案 0 :(得分:2)
我认为你可以在另一个帖子中找到很多答案:Transform GPS-Points to Screen-Points with Perspective Projection in Android。
希望它有所帮助,再见!
答案 1 :(得分:0)