【问题标题】:Finding 3D coordinates from point with known XYZ angles, radius and origin?从具有已知 XYZ 角度、半径和原点的点查找 3D 坐标?
【发布时间】:2012-08-02 22:12:36
【问题描述】:

我已经在互联网上阅读了 300 多页,但我没有得到我想要的结果,或者它不起作用,所以我希望人们能在这里帮助我。您可以使用伪代码和数学来解释。 :)

所以,我们有 A 点(这是原点)。点 A 有一个半径、一个 XYZ 位置和 XYZ 旋转(我知道它可以用 2 个角度完成,但我真的需要它用 3 个角度)。 B点位置未知。

有了这些信息,我的问题是:如何找到 B 点的位置? (或者,我的问题可以改写为:“如何在球体上找到 3D 点?”)

我已经在 2D 中完成了它,它在那里工作。 对于我使用的 2D:

x=pointA.x+radius*cos(angle)
y=pointA.y+radius*sin(angle)

我不使用纯矩阵,但我想使用余弦等。我在伪代码中的尝试(失败得很厉害,我真的不知道如何将 XYZ 旋转与余弦结合起来):

newx=pointA.x+radius*cos(rotationY)*sin(rotationZ+toRadians(90))
newy=pointA.y+radius*cos(rotationZ-toRadians(90))*math.sin(rotationY)*math.cos(rotationX)
newz=pointA.z+radius*math.cos(rotationZ+toRadians(90))*sin(rotationX)

如果有人能帮助我,我将不胜感激。 :)

【问题讨论】:

    标签: 3d rotation geometry coordinates trigonometry


    【解决方案1】:

    假设您有一个以原点为中心的球体,具有已知的半径、方位角和仰角。然后您可以使用spherical to cartesian conversion 简单地找到笛卡尔坐标。

    所以,首先取相对 B 分量,包括 A 半径和角度。您获得笛卡尔分量。然后,您可以将这些相对分量添加到 A 笛卡尔分量,返回绝对 B 坐标。不要考虑侧倾角,因为对于一个点来说它是无用的。

    【讨论】:

    • 谢谢,通常我不理解维基百科上的那些方程式,但现在我能够在我的 3d 环境中实现它。它确实仅以 2 个角度成功旋转。但是我还是不确定应该使用XY还是ZX等?
    • 有约定。您可以使用您想要的约定,但请记住要与之保持一致(如果可以,请始终使用相同的约定)。如果您对此不了解,请使用 ZYX 约定。
    【解决方案2】:

    x = cos(yaw) * cos(pitch)

    y = sin(yaw) * cos(pitch)

    z = sin(pitch)

    不需要滚动。

    我不认为这不完美吗?需要弧度,这可能是错误的来源。 我相信您必须获得所有四元数或合并滚动,但这对于中间解决方案就足够了。

    在最近的情况下,我否定了 x = cos(yaw) * -cos(pitch) 的 cos of pitch

    【讨论】:

      【解决方案3】:

      感谢您的回答。我知道这个问题很久以前就得到了回答,但是为了人们阅读本文,我将分享我的实现。所以它在 Lua 中; PointOnSphere函数有两个输入角度(方位角和高度与rotation.x和rotation.y相同)(以度为单位):

      function PointOnSphere(origin,rotation,radius)
      return {x=origin.x+radius*math.cos(math.rad(rotation.y))*math.cos(math.rad(rotation.x)),y=origin.y+radius*math.sin(math.rad(rotation.x)),z=origin.z+radius*math.sin(math.rad(rotation.y))*math.cos(math.rad(rotation.x))}
      end 
      

      请注意,当使用 y 轴指向上方的坐标系时,此答案是相关的。

      另一个有用的链接是这个,它是同一个问题,答案相似:https://math.stackexchange.com/questions/264686/how-to-find-the-3d-coordinates-on-a-celestial-spheres-surface

      【讨论】:

        猜你喜欢
        • 2011-02-22
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多