Android 如何近似给定点之间的距离?

Android 如何近似给定点之间的距离?,android,augmented-reality,projection-matrix,perspectivecamera,Android,Augmented Reality,Projection Matrix,Perspectivecamera,我有P1,P2,P3,P4的值以及屏幕点(x,y)和经度,纬度。除此之外,我还有一个摄像头(带lat、long)、摄像头的高度(1.6m(恒定))和摄像头的方向(轴承、俯仰、滚动)。我还有相机的水平视角和垂直视角:) 现在我想计算PX(lat,long)在我的显示器上的估计位置(如果它是可见的)。 对于给定的PX(lat,long),如何得到p(?,?)?(图中的紫色点)这似乎是可能的,因为我知道我相机的角度,我有四个顶点。但我不知道如何解决这个问题 我需要一个基于这四个顶点的函数,它可以将(

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

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

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

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


我有一个公式,可以将(屏幕X,屏幕Y)转换为(纬度,经度),但我无法逆转这个公式。因此,如果需要顶点以外的其他点,我可以计算它们(但我不能简单地对屏幕中的每个像素使用此公式…这将是每100毫秒一百万次方法调用…)

因此,我可能在其他线程的注释中回答了这一问题,但最简单的方法是: 忽略屏幕边缘的GPS坐标-通常情况下,将所有内容转换为以相机为原点的坐标空间,并确定其他对象的位置。如果要获得GPS坐标之间的相对距离,请使用在短距离内条件良好的方法,如哈弗森公式

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

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

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

tan(β)/tan(α)*(该轴上半个屏幕中的像素数)


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

摄影机与顶点的关系是什么?顶点描述屏幕了吗?嘿。是的,顶点描述屏幕。矩形P1-P2-P3-P4是我相机的整个视口。