使用角度向量的高效 3D 旋转
Posted
技术标签:
【中文标题】使用角度向量的高效 3D 旋转【英文标题】:Efficient 3D rotation using vector of angles 【发布时间】:2019-09-18 11:23:14 【问题描述】:我想知道是否有更好的方法来实现以下目标:
ModelMatrix = glm::rotate(ModelMatrix, glm::radians(rotationVec.x), glm::vec3(1.0f, 0.0f, 0.0f));
ModelMatrix = glm::rotate(ModelMatrix, glm::radians(rotationVec.y), glm::vec3(0.0f, 1.0f, 0.0f));
ModelMatrix = glm::rotate(ModelMatrix, glm::radians(rotationVec.z), glm::vec3(0.0f, 0.0f, 1.0f));
是否有更有效的方法来实现相同的计算,可能只需要一个函数调用?
rotationVec
是角度向量,类似于 Unity 引擎执行游戏对象旋转的方式。
【问题讨论】:
GLM_GTX_euler_angles
【参考方案1】:
感谢@meowgoesthedog 这可以通过以下方式实现。
ModelMatrix = ModelMatrix * glm::eulerAngleXYZ(glm::radians(rotation.x), glm::radians(rotationVec.y), glm::radians(rotationVec.z));
【讨论】:
以上是关于使用角度向量的高效 3D 旋转的主要内容,如果未能解决你的问题,请参考以下文章