Cap*_*ash 10 3d rotation matrix quaternions
我有一个Y轴为UP的坐标系.我需要将它转换为Z为UP的坐标系.我将旋转存储在四元数中,所以我的问题是:如果我有一个四元数X,Y,Z我可以用Z切换Y并获得Z实际上是UP的结果吗?
只需在四元数中打开两个轴?不,这不起作用,因为这会颠覆手性.然而,如果你翻转手性并否定四元数的真实部分,那么你就会恢复原始的手性.一般来说,你可以写这个
Q '(Q,i'j'k')=ε i'j'k" Q 瓦特 _w + Q 我 _i + Q Ĵ _j + Q ķ _K
哪里

是完全反对称的张量,被称为Levi-Cevita符号.
这不应该是一个惊喜,因为四元数的i²,j²,k²规则也由相同的完全反对称张量定义.
我正在改编这篇文章中的答案,因为这里的答案是较旧的且可能更通用的。
\n\n最好在如何将角度和轴转换为四元数的背景下考虑这一点。在维基百科中,您可以读到您描述了围绕单位方向向量 (x,y,z) 的轴旋转角度 \xce\xb8 使用
\n\n\n\n\nq = cos(\xce\xb8/2) + sin(\xce\xb8/2)(xi + yj + zk)
\n
你的帖子只告诉我们Y \xe2\x86\xa6 Z,即旧的Y方向是新的Z方向。那么其他方向呢?您可能想保留 X \xe2\x86\xa6 X,但这仍然给我们留下了两种选择。
\n\n首先考虑第一种情况。更改坐标系对角度和轴有何影响?嗯,轴坐标经历与点相同的坐标交换,并且角度改变其符号。所以你有了
\n\n\n\n\ncos(\xe2\x88\x92\xce\xb8/2) + sin(\xe2\x88\x92\xce\xb8/2)(xi + zj + yk)
\n
与上面相比,实部没有改变(因为 cos( x )=cos(\xe2\x88\x92 x )),但虚部除了顺序改变之外,还改变了符号。由此概括,a + bi + cj + dk描述旧坐标系中旋转的四元数将被转换a \xe2\x88\x92 bi \xe2\x88\x92 dj \xe2\x88\x92 ck为新坐标系中的四元数。或者其中\xe2\x88\x92a + bi + dj + ck是相同旋转的不同描述(因为它将 \xce\xb8 更改为 360\xc2\xb0,但将 \xce\xb8/2 更改为 180\xc2\xb0)。
与此相比,第二种情况 Z \xe2\x86\xa6 \xe2\x88\x92Y 保持 \xce\xb8 的符号,因此只需调整轴即可。新的Z坐标是旧的Y坐标,新的Y坐标是旧的Z坐标的负值。因此a + bi + cj + dk被转换为a + bi \xe2\x88\x92 dj + ck(或其负数)。请注意,这只是四元数乘以i或\xe2\x88\x92i,具体取决于您乘以它的哪一侧。如果你想把它写成共轭,你有 \xce\xb8=\xc2\xb145\xc2\xb0 这样你就可以得到表达坐标系变化的四元数的平方根。