将四元数旋转展平为3个单位轴旋转

时间:2017-08-07 21:27:59

标签: c# math xna monogame

嗨我有一个任意的旋转四元数,它由用户完成的一系列操作构成(他们选择对象,围绕从摄像机视图方向构造的平面旋转,然后可以从另一个角度旋转它等)

然后,我需要将此旋转对象分解为围绕X,Y和Z轴的旋转。请注意,它不一定是那个顺序。用户界面允许用户以任何顺序将旋转块连接在一起,因此他们可以将它们链接起来:

enter image description here

在代码中,我循环遍历每个块并执行:

finalRotation *= Quaternion.CreateFromAxisAngle(blockAxis, toRadians(blockAngle))

那么如何将任意四元数转换回此块表示?我已经尝试按照这个答案将四元数投影到X,Y和Z平面上:

Component of a quaternion rotation around an axis

然后以[X][Y][Z]顺序连接块,但到目前为止结果似乎不正确。有人能够解释我应该如何解决这个问题吗?注意我被限制为每个块一次围绕一个轴旋转。

编辑:澄清我使用的是MonoGame框架,而不是Unity。

0 个答案:

没有答案