微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

欧拉角到OpenGL方向向量?

如何解决欧拉角到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 举报,一经查实,本站将立刻删除。