我正在尝试制作一个简单的 QML 组件,该组件将项目旋转给定的四元数。
我从 ArUco 获得 OGRE 四元数类型的四元数,并将其应用于 QMatrix4x4。然后我从矩阵中获取 QTransform 并尝试将其应用于画家。不幸的是,效果完全不同:
void Marker::paint(QPainter *painter)
{
QMatrix4x4 mat;
QQuaternion q = QQuaternion(0.883290,-0.128302,0.436779,-0.112081);
mat.rotate(q);
QRect rect = QRect(width()/4,height()/4,width()/2,height()/2);
painter->setTransform(mat.toTransform());
painter->fillRect(rect, Qt::red);
}
结果是:
它应该看起来像这样:
UPDATE#1:我认为问题在于我用方向四元数旋转矩阵,而我可能应该以其他方式应用该方向?我不完全理解四元数,如果这是一个错误,有人可以解释一下吗?
更新#2:我阅读了更多关于它的内容,结果证明方向是相对于参考位置的旋转。我确实认为我有这样的职位,我不知道如何申请。