【问题标题】:How to approximate distance between given points?如何估计给定点之间的距离?
【发布时间】:2013-03-21 17:10:17
【问题描述】:

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

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

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

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

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

【问题讨论】:

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

标签: android augmented-reality projection-matrix perspectivecamera


【解决方案1】:

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

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

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

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

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

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-11-29
    • 2021-10-16
    • 1970-01-01
    • 2014-02-28
    • 2010-10-30
    相关资源
    最近更新 更多