【问题标题】:Calculate 3d Vector perpendicular to plane described by a Point and True North Heading计算垂直于由点和真北航向描述的平面的 3d 矢量
【发布时间】:2009-04-02 01:36:15
【问题描述】:

我在地球表面有一个点,我将其转换为地球中心的向量。

我有一个以度数为单位的正北航向,用于描述该点在地球表面上的行进路径。

我需要计算一个向量,该向量垂直于该点沿地球表面的路径所创建的平面。

我尝试使用here 描述的方法计算沿路径的任意点 然后取两个向量的叉积,但它似乎不够准确,而且开销似乎比必要的要多。

这与我的另一篇帖子 ray-polygon-intersection-point-on-the-surface-of-a-sphere 有关。

【问题讨论】:

  • 你能清除你的输入吗? “表面上的点路径”意味着多个点,不是吗?以及如何指定北航向?一个角度,一个从该点指向北极的矢量,还是其他的东西?
  • 如果将真北航向指定为矢量并且您的点位于表面上,则您已固定了一个平面。但是垂直于该平面的矢量与真正的北航向共线。我不确定你要计算什么。
  • 我在 Lat,Lon 有一个点,我正在从地球中心转换为向量。我有一个以正北度数为单位的角度,它描述了地球表面上这一点将要经过的路径。我基本上需要能够将 Degrees North 转换为 3d 矢量,然后我可以完成剩下的工作。

标签: math 3d vector geometry geolocation


【解决方案1】:

我假设您正在尝试计算一个矢量位于路径的平面中,而不是垂直于它(因为您已经有了一个 - 即从原点到你的观点)。

您首先需要计算位于该平面上的向量,该向量指向正北和正东。为此,我们将P 称为您的点,O 是原点,N = (0, 0, R) 是您球体顶部的点。那么

e = cross(N - P, P - O)

是一个指向正东的向量,并且与球体相切,因为它垂直于球体的半径P - O

出于类似的原因

n = cross(e, P - O)

将指向正北,并与球体相切。

现在对 ne 进行归一化处理,您就得到了切线空间的标准正交基。要找到方向theta 的向量(例如,从正东轴逆时针方向,以简化数学运算),只需取一点e 和一点n

v = cos(theta) * e + sin(theta) * n

【讨论】:

  • 我终于得到了相同的结论,无法更好地解释它。 +1
【解决方案2】:

这是我对您的问题的理解:

  • 您在地球表面有一个点,指定为纬度/经度坐标
  • “真北”方向是一个人在该点通过最直接的可能路线到达(地理)北极的方向。也就是说,“真北矢量”在您选择的点与地球表面相切,并直接指向北方,平行于经线。
  • 该点的运动方向将(最初)在您选择的点与地球表面相切。
  • 您有一个相对于真北的角度(以度为单位),它指定了该点将要移动的方向。
  • 此角度是“真北矢量”与点运动方向之间的夹角。
  • 您想要计算一个向量,该向量在该点与地球表面相切,但垂直于该点的运动方向。

如果我理解正确的话,你可以这样做:

  1. 纬度lat,经度lng的“真北矢量”由

    给出
    [-sin(lat) * cos(lng), -sin(lat) * sin(lng), cos(lat)]
  2. 一个垂直于“真北向量”的向量,它指向一条纬线(向东),由

    给出
    [-sin(lng), cos(lng), 0]
  3. 由于这两个向量标识与地球表面相切的平面,并且指定点运动方向的向量也在该平面内,因此您的运动向量是前两个的线性组合:

    [ -(sin(lat) * cos(lng) * cos(th) + sin(lng) * sin(th)) -(sin(lat) * sin(lng) * cos(th) - cos(lng) * sin(th)) cos(lat) * cos(th) ] 其中th 是您的航向角。
  4. 要找到垂直于该运动矢量的矢量,您只需取半径矢量的叉积(即从地球中心指向您的点的矢量,

    [cos(lat) * cos(lng), cos(lat) * sin(lng), sin(lat)]
    与运动向量。 (那个数学会很乱,最好让电脑处理)

【讨论】:

    【解决方案3】:

    您已经有 2 个向量:

    N = (0,0,1) 点从原点直接向上。

    P = (a,b,c) 点从原点到您的点。

    计算单位向量到你的点 U = P/|P|

    计算垂直于 U 和 N 的单位向量 E = U X N

    计算垂直于 U 和 E 的单位向量(这将与球体相切) T = U X E T 可以指向北或南,所以 如果 T.z

    T 现在指向正北,并平行于在 P 处与球体相切的平面。

    您现在有足够的信息来构造一个旋转矩阵 (R),因此您可以围绕 U 旋转 T。您可以在 wikipedia 上找到如何制作一个围绕任意轴旋转的矩阵:

    使用 R,您可以计算指向行进方向的向量。

    A = RT

    A 是您正在寻找的答案。

    【讨论】:

      猜你喜欢
      • 2012-05-28
      • 2011-01-25
      • 2017-06-18
      • 2011-03-29
      • 1970-01-01
      • 2015-04-28
      • 2022-01-15
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多