我对四元数有一些理解问题。
为了让我的世界对象以正确的方式旋转,我需要在刷新对象世界矩阵时反转它们的四元数旋转。
我使用以下代码创建对象旋转:
Rotation = Quaternion.RotationMatrix(
Matrix.LookAtRH(Position,
Position + new Vector3(_moveDirection.X, 0, _moveDirection.Y),
Vector3.Up)
);
并且可以通过以下方式刷新对象的世界矩阵:
Object.World = Matrix.RotationQuaternion(Rotation)
* Matrix.Translation(Position);
这个不起作用,它使物体的旋转方向与应该的相反!
这是使我的物体正确旋转的方法:
Object.World = Matrix.RotationQuaternion(Quaternion.invert(Rotation))
* Matrix.Translation(Position);
为什么我需要反转对象旋转?