如何解决欧拉角到OpenGL方向向量?
我目前正在 minecraft 克隆中进行块破坏。为此,我想使用相机的欧拉角来确定相机光线的方向向量。
我有两个角度:俯仰和偏航。 Pitch 沿 X 轴旋转,当玩家向下看时为正,当玩家向上看时为负。不能大于90度(直视),不能小于-90度(直视)
Yaw 沿 Y 轴旋转。它可以是负数和正数,具体取决于玩家转身的次数和方向。例如,玩家在 (yaw = 0
) 中生成并立即逆时针旋转 360 度。在这种情况下,yaw = -360
.
如问题中所述,我使用的是 OpenGL,因此当 yaw = 0
时,播放器向下看负 Z 轴。
如何仅使用具有上述限制的欧拉角生成方向向量(必须是单位向量)?
解决方法
根据您对 Pitch 和 Yaw 的描述,我假设您使用的是左手参考(pitch=0 和 yaw=0 给出了一个相机向量(0.0、0.0、1.0)。
Pitch 参数在 YZ 平面中移动相机矢量:
Y = cos(pitchInRadians)
Z = sin(pitchInRadians)
Yaw 参数在 XZ 平面中移动相机矢量:
X = sin(yawInRadians)
Z = cos(yawInRadians)
将两者结合起来可以为您提供最终的相机矢量:
Cv = (sin(yaw),cos(pitch),sin(pitch)*cos(yaw))
正如您应该注意到的,角度以弧度为单位。由于您的帖子以度为单位提到了角度,因此您必须先将度角转换为弧度:
radians = (degrees * PI) /180
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。