我要做的是从我的相机发射一条光线。我知道相机的x、y和z坐标,以及它的俯仰角和偏航角。我需要计算其方向向量,以便将其传递给我的光线跟踪算法。
相机的上向量为(0, 1, 0)。“俯仰角”是相对于相机而言的,是向上或向下看。
(如果必须要用矩阵,我也可以接受)
我要做的是从我的相机发射一条光线。我知道相机的x、y和z坐标,以及它的俯仰角和偏航角。我需要计算其方向向量,以便将其传递给我的光线跟踪算法。
相机的上向量为(0, 1, 0)。“俯仰角”是相对于相机而言的,是向上或向下看。
(如果必须要用矩阵,我也可以接受)
假设你的坐标系设置满足以下条件:
(pitch, yaw) -> (x, y, z)
(0, 0) -> (1, 0, 0)
(pi/2, 0) -> (0, 1, 0)
(0, -pi/2) -> (0, 0, 1)
这将计算(x,y,z):xzLen = cos(pitch)
x = xzLen * cos(yaw)
y = sin(pitch)
z = xzLen * sin(-yaw)
xzLen
是将单位向量投影到包含 x 和 z 轴的平面后,在所需方向上的长度。该公式直接遵循 sin() 和 cos() 的定义。 - Neil Forrester