我有一个点,比如说 p(0.0, 0.0, 20.0) 我想在 XZ 平面上绕点 a(0.0, 0.0, 10.0) 旋转。最简单的方法是什么?我将 Qt 与 QVector3D 和 QMatrix4x4 一起使用来执行转换。我能想到的一切都是这样的:
QVector3D p(0.0, 0.0, 20.0);
QVector3D a(0.0, 0.0, 10.0);
QMatrix4x4 m;
m.translate(-a.x(), -a.y(), -a.z());
p = m*p;
m.setToIdentity();
m.rotate(180, 0.0, 1.0, 0.0);
p = m*p;
m.setToIdentity();
m.translate(a.x(), a.y(), a.z());
p = m*p;
但这对我来说似乎非常复杂,我想知道是否有任何更简单或更优雅的解决方案?