从两个角度和一个距离的3D点

时间:2018-10-12 14:24:09

标签: math 3d opengl-es geometry opengl-es-2.0

我希望能够基于3D点到原点的距离和两个角度来计算3D点的坐标:围绕Y轴的“偏航”和围绕X轴的“俯仰”。

在该示例中,距原点的距离为50个单位,偏航10度,俯仰10度。

是否存在用于检索3D结果点的公式?

Graphic

1 个答案:

答案 0 :(得分:1)

如果您有一个由方位角(yaw),高度角(pitch)和沿该方向矢量的距离定义的点,则必须转换方位角(首先是yaw和高度方向(pitch)的单位方向向量。
参见Solar zenith angleAzimuthEuler angles

在坐标系中,x轴指向左侧,z轴指向前方,而y轴是向上矢量(Lefthanded coordiante system),可以这样计算:

x = sin(yaw) * cos(pitch)
y = sin(pitch) 
z = cos(yaw) * cos(pitch)

其中yaw是z轴和指向该点的矢量(投影到XZ平面)之间的顺时针角度。

该方向必须乘以到原点的距离:

P = distance * (x, y, z); 

Px = distance * sin(yaw) * cos(pitch) 
Py = distance * sin(pitch) 
Pz = distance * cos(yaw) * cos(pitch)