【发布时间】:2022-10-17 19:01:28
【问题描述】:
所以我一直在尝试仅使用 Qt 四元数类提供的函数来旋转我的对象:
在绘制对象之前,我输入了以下代码行:
quaternion.setScalar(w);
quaternion.setX(x);
quaternion.setY(y);
quaternion.setZ(z);
QMatrix3x3 rot;
quaternion=quaternion.normalized();
rot=quaternion.toRotationMatrix();
然后我就卡住了。我在文档中搜索,发现了这个功能:QMatrix3x3 QQuaternion::toRotationMatrix() const
它创建一个对应于四元数的旋转矩阵。获得该矩阵后,我该怎么做才能执行旋转。起初我用四元数旋转了我的对象,但没有使用 Qt 函数。我使用 glMultMatrixf 将旋转矩阵与当前矩阵(模型视图矩阵)相乘。 请,如果有人可以提供帮助,我将不胜感激。
【问题讨论】:
-
您使用的是 QtWidgets 还是 QtQuick (QML)?
-
可以 f.ex.由Qt3D module 使用
-
@m7913d 我正在使用 Qt 小部件
-
问题是我现在不能使用 glMultMatrixf 因为旋转矩阵是 3*3 并且 glMultMatrix 将旋转矩阵与当前的旋转矩阵相乘,模型视图矩阵是 4*4
-
您可以使用
Qt3DCore::QTransform将3*3 的旋转矩阵转换为4*4 的转换矩阵,也可以自己动手。如果你知道/理解这些矩阵背后的数学,这应该很简单。但是,请注意,我不熟悉glMultMatrix(或一般的 gl)。
标签: c++ qt matrix rotation quaternions