math - 将四元数从右手坐标系转换为左手坐标系

标签 math graphics 3d

在我的 3d 程序中,对象的旋转由四元数表示,如 [0.130526, 0.0, 0.0, 0.991445] .该程序使用 Z 轴朝上的右手坐标系(如在 3ds max 中):

enter image description here

另一方面,我的应用程序使用 左撇子坐标系 Y 轴向上 :

enter image description here

我怎样才能将我的四元数从一个坐标系转换到另一个坐标系,尊重哪个轴是向上的?

最佳答案

绕轴 (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/

相关文章:

opencv - 测量图片中不规则形状的实际尺寸

math - 我怎样才能产生多点线性插值?

java - 使用 Java 的简单 2D 图形的最佳 API

ios - 如何将 uiimageview 保存在另一个 uiimageview 之上(swift3)

Java - 使用 repaint() 时闪烁

qt - 来自向量 x y z 分量的四元数 - 在 Qt 中

Matlab 3d体积可视化和3d叠加

从1到n计算5个区间点的算法

java - JavaFX 中的三次方程图。

html - html5 Canvas 中的重叠多边形