嗨我有一个任意的旋转四元数,它由用户完成的一系列操作构成(他们选择对象,围绕从摄像机视图方向构造的平面旋转,然后可以从另一个角度旋转它等)
然后,我需要将此旋转对象分解为围绕X,Y和Z轴的旋转。请注意,它不一定是那个顺序。用户界面允许用户以任何顺序将旋转块连接在一起,因此他们可以将它们链接起来:在代码中,我循环遍历每个块并执行:
finalRotation *= Quaternion.CreateFromAxisAngle(blockAxis, toRadians(blockAngle))
那么如何将任意四元数转换回此块表示?我已经尝试按照这个答案将四元数投影到X,Y和Z平面上:
Component of a quaternion rotation around an axis
然后以[X][Y][Z]
顺序连接块,但到目前为止结果似乎不正确。有人能够解释我应该如何解决这个问题吗?注意我被限制为每个块一次围绕一个轴旋转。
编辑:澄清我使用的是MonoGame框架,而不是Unity。