gpt4 book ai didi

c++ quaternion 澄清

转载 作者:行者123 更新时间:2023-11-28 06:42:56 31 4
gpt4 key购买 nike

我正在研究飞行模拟器。我读过一篇关于四元数的教程(这个:http://www.opengl-tutorial.org/intermediate-tutorials/tutorial-17-quaternions/),所以它对我来说很新。

据我了解,四元数应该使用方向 vector 旋转对象并使对象的方向与方向匹配,旋转四元数不应该移动 vector ,而只是让他自己转身。我是真的吗?

如果是,这是我的代码:

void Plane::Update()
{
m_matrix = GLM_GTX_quaternion::toMat4( GLM_GTX_quaternion::angleAxis( radians( m_angle ), normalize( m_planeDirection ) ) );
}

当我的平面模型指向 x vector 时,我的平面将围绕 x vector 以等于 0 的角度正确旋转,但如果我改变角度,它就不会正确旋转。那么如何找到角度呢?

最佳答案

是的,您是对的 - 四元数围绕方向 vector 旋转对象。在处理四元数时,您还应该使用 glm::quat typedef。

#include <glm/gtc/quaternion.hpp>
//...
glm::mat4 m = glm::mat4_cast(glm::angleAxis(glm::radians(m_angle), glm::normalize(m_planeDirection)));

glm::rotate 函数也适用于四元数

glm::mat4 m = glm::mat4_cast(glm::rotate(glm::quat(), 45.0f, glm::vec3(1.0f)));

关于c++ quaternion 澄清,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25606704/

31 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com