我有四元数的数据,我试图从一个右手Y向上的坐标空间切换到一个左撇子的Z向上坐标空间。从阅读到这一点,我需要做的是switch the chirality。
我唯一能找到的信息就是这
我不能把头绕在这上面。
说我的四元数是:
public static float[] quat= new float[4](0.70711,0.70711,0,0);在c#码中,如何切换手性?
我尝试过否定轴,只需交换Z和Y值。我试着把四元数乘以另一个等于90度的四元数,就像那个链接中所建议的那样。还会看到不正确的旋转。
谢谢。
发布于 2016-08-24 23:19:47
假设你原来的坐标系A有X对,Y向上,Z对着相机。新的坐标系B有X对,Y对相机和Z向上。所以基本上你需要交换Y和Z轴。到目前为止?你有一个四元数q,它描述了系统A中的一些旋转,你想要找到一个四元数r,它描述了系统B中相同的旋转。
最好在将角度和轴转换为四元数的上下文中考虑这一点。在维基百科中,您可以读到用单位方向向量(x,y,z)以θ角描述轴的旋转。
Q= cos(θ/2) + sin(θ/2)(xi + yj + zk)
改变坐标系对你的角度和轴有什么作用?嗯,轴坐标和你的点交换的坐标是一样的,角度改变了它的符号。所以你有
cos(−θ/2) + sin(−θ/2)(xi + zj + yk)
与上述相比,真实部分没有变化(因为cos(x)=cos(−x)),而是虚部改变了它们的符号,除了顺序上的变化。由此推广,描述旧坐标系旋转的四元数a + bi + cj + dk将在新坐标系中转化为a - bi - dj - ck。
https://stackoverflow.com/questions/39098154
复制相似问题