我使用带有轴角度表示法的vec4表示渲染引擎中actor的旋转。前三个分量(x,y,z)表示(标准化的)旋转轴,最后一个分量(w)表示我们围绕该轴旋转的角度(以弧度表示)。
例如,
我目前的解决方案(不起作用),如下所示:
// glm::vec4 Movable::getOrientation();
// glm::vec3 FORWARD(0.0f, 0.0f, -1.0f);
glm::vec3 Movable::getForward() {
return glm::vec3(glm::rotate(
this->getOrientation().w, glm::vec3(this->getOrientation())) *
glm::vec4(FORWARD, 1.0f));
}
我已将向上方向定义为与旋转轴相同,但我无法计算任意轴的前向方向向量。最简单的方法是什么?我希望尽可能利用glm功能。
答案 0 :(得分:1)
关于轴角度要记住的一点是,对于角度为0的所有旋转,“向上”应该意味着相同的事情,因为无论轴指向哪个方向都表示没有旋转...你可以只是说是朝向轴的方向。计算前向和上行的正确方法是从表示它们的两个向量开始,比如说(1,0,0)表示向前,(0,1,0)表示向上,然后将旋转应用于这两个矢量以获得新的前进和上升。