如何估算给定点之间的距离?

时间:2013-03-31 13:10:28

标签: android augmented-reality projection-matrix perspectivecamera

我的值为P1,P2,P3,P4,屏幕点(x,y)和经度,纬度。除此之外,我有一个摄像头(带有lat,长),摄像头的高度(1.6m(恒定))和摄像头的方向(轴承,俯仰,滚动)。我还有相机的水平视角和垂直视角:)

现在我想计算PX(lat,long)在我的显示器上的估计位置(如果它可见)。 Following Problem

如何获得给定PX(lat,long)的P(?,?)? (图中的紫色点)这似乎是可能的,因为我知道我的相机的角度,我有四个顶点。但我不知道如何解决这个问题。

我需要一个基于这四个顶点的函数,它可以将(lat,long)转换为(screenX,screenY)。

我有一个公式,可以将(screenX,screenY)转换为(lat,long),但是我无法反转这个公式。所以,如果需要除了顶点之外的其他点,我可以计算它们(但我不能简单地将这个公式用于我的屏幕中的每个像素......那将是每100毫秒一百万个方法调用......)

1 个答案:

答案 0 :(得分:1)

所以我可能在你的另一个帖子的评论中回答了这个问题,但最简单的方法是: 忽略屏幕边缘的GPS坐标 - 通常将所有内容转换为相机作为原点的坐标空间,并确定其他对象的位置,使用短距离调节好的方法获取GPS坐标之间的相对距离,像Haversine公式

获取投影中心与要显示的对象之间的相对影响。

您可以确定轴的视角。您可以在两个轴上确定虚拟对象与投影中心(相机指向的方向)之间的相对方位。你知道你的屏幕分辨率。

如果Alpha是您的视角的一半(对于给定的角度),并且Beta是您的投影中心和您想要在屏幕上找到的对象之间的相对方位,那么屏幕上的点大致由

tan(beta)/ tan(alpha)*(该轴中半个屏幕的像素数)

显然,您需要添加逻辑来捕捉屏幕外的投影,无论投影中心是左侧还是右侧,以及是否有某些东西(投影本身不处理z距离)。