在我的 3d 程序中,对象的旋转由四元数表示,如 [0.130526, 0.0, 0.0, 0.991445]
.该程序使用 Z 轴朝上的右手坐标系(如在 3ds max 中):
另一方面,我的应用程序使用 左撇子坐标系 Y 轴向上 :
我怎样才能将我的四元数从一个坐标系转换到另一个坐标系,尊重哪个轴是向上的?
最佳答案
绕轴 (u,v,w) 旋转角度 x 可以用实部 cos(x/2) 和虚部 sin(x/2)*(u,v,w) 的四元数表示。
如果轴坐标在原始三面体中为 (u,v,w),则它们将在您的三面体中为 (u,w,v)。
因此,如果原始四元数是 (a,b,c,d) - a+ib+jc+kd - 四元数必须在您的三面体中转换为 (a,b,d,c)。
编辑
但是因为你的三面体是左手的,角度也必须反转,所以同样的旋转最终可以用你的三面体中的四元数 (a,-b,-d,-c) 来表达。
关于math - 将四元数从右手坐标系转换为左手坐标系,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28673777/