根据距离和角度从已知原点找到新的 3D 位置

Find a new 3D position from a known point of origin, based on distance and angle

我的数学很生疏,我从来都不擅长想象二维以上的事物 space。

我的问题是这样的。给定一个原点 (p1),我如何根据两个角度(偏航角和俯仰角)计算一个已知距离(100 个单位)的新点 (p2)。

我所知道的是虚拟房间的 3D 尺寸、该房间内的原点以及 Yaw 和 Pitch(我称之为水平角和垂直角)。用英语来说,我想根据它的 Yaw 和 Pitch 值从原点在这个房间内发射 100 个单位的线,并在该线的末端获得点。

我想要 space 中的这一点,因为我想使用 p1 和 p2 来定义我的线。我想最终继续在 line/plane 交集测试中使用这条线。这些平面在虚拟房间内也是已知的。我只提这个是因为我缺乏数学知识,有人可能会建议我看看其他方法。

如果你只是想定义一条线,你不需要第二个点。直线的方向向量可以直接计算为:

      / cos pitch * sin yaw \
dir = | sin pitch           |
      \ cos pitch * cos yaw /

这假设 y 轴指向上方。零偏航指向正 z 轴。增加偏航会将方向转向正 x 轴。这些定义都是可以互换的。

那一行是:

x = startPoint + t * dir  |  t \in R

如果你真的想要第二点,就用100作为t然后计算x