OpenGL中的3D旋转
Posted
技术标签:
【中文标题】OpenGL中的3D旋转【英文标题】:3D rotation in OpenGL 【发布时间】:2014-07-15 14:51:38 【问题描述】:所以我试图根据四元数信息对openGL中的图像进行一些旋转操作,我想知道,有没有办法通过向量定义我的图像的位置(比方说(001)) ,然后将四元数应用于该向量以围绕任意原点旋转我的图像?我一直在使用 GLM 进行所有数学工作。 (使用 C++)
或者有没有更好的方法来做到这一点,我还没有想出来?
【问题讨论】:
你确定你做了一些研究吗?谷歌搜索rotation about arbitrary point 会产生大量结果。 该网站上至少有一个搜索结果正确:***.com/questions/23442499/…。 【参考方案1】:如果你想绕点P = x, y, z
旋转,那么你可以简单地平移-P
,绕原点旋转,然后平移回P
。
【讨论】:
【参考方案2】:应用转换的顺序是:
scale -> translation to point of rotation -> rotation -> translation
所以你的最终矩阵应该被计算出来:
glm::mat4 finalTransform = translationMat * rotationMat * translationToPointOfRotationMat * scaleMat;
【讨论】:
以上是关于OpenGL中的3D旋转的主要内容,如果未能解决你的问题,请参考以下文章
使用 C++ 在 OpenGL 中移动自动旋转的 3d 多边形