我正在使用四元数,我有一点问题。
我有一个对象(紫色线)和一个四元数相对于旋转轴(黑线),我想转换 局部空间中的此四元数,以便旋转轴成为对象。
我需要计算物体的滚动(我将转换为轴角度的局部空间中的Y旋转),然后计算轴中的X和Z旋转角
这是一个让我更好地理解这个问题的方案:
要理解你可以想到你的肩膀,当你移动你的手臂时你有X和Z将确定前臂的位置,Y将确定你的手肘的旋转。
请不要犹豫要求澄清,因为我很难理解我在寻找什么。
我可以使用这样的公式或算法吗?
是否有3D程序员使用四元数并且可以用算法或单词来澄清我的主题?
答案 0 :(得分:1)
您正在寻找四元数q,使得qjq'= n,其中n是表示对象轴的虚数单位四元数。就产品jn而言,这有一个标准的解决方案,基本上是平方根。
如果
jn=c+s*e, e imaginary unit, c²+s²=1, s>=0
然后
q = sqrt(0.5*(1+c)) + sqrt(0.5*(1-c))*e
所以计算
p=j*n // condition is n is imaginary unit
c=real(p)
e=imag(p)
s=abs(e)
if(s>0) e=e/s else e=j
s=sqrt(0.5*(1-c))
c=sqrt(0.5*(1+c))
q=c+s*e