四元数 vs 轴角表示法

10

我一直试图找到这两者之间的区别,但无济于事,除了下面这句话:

两种表示法最主要的区别在于四元数的旋转轴被旋转角度的正弦值所缩放,而不是将角度存储在向量的第四个分量中,我们将半角的余弦值存储下来。

我不知道

旋转角度的正弦值

或者

半角的余弦值

是什么意思?


可能适合发布在数学SE上。 - Aaron Franke
2个回答

13

四元数和轴角都是三维旋转/方向的表示方法,两者都有优缺点。

轴角:通过其角度a和旋转轴n来表示旋转。例如,绕Y轴旋转180度将表示为a=180,n={0,1,0}。该表示法非常直观,但实际应用旋转时需要另一种表示法,如四元数或旋转矩阵。

四元数:通过4D向量表示旋转。需要更多的数学知识,不太直观,但是它是一种更强大的表示法。四元数很容易进行插值(混合),并且很容易在3D点上应用它们。这些公式可以在网上轻松找到。给定一个关于归一化轴na弧度旋转,四元数4D向量将为{cos a/2,(sin a/2) n_x,(sin a/2) n_y,(sin a/2) n_z}。这就是半角的正弦和余弦所在之处。


出于好奇,是否有任何强大的表示方法可以使用更少的数学但可能使用更多的数字?我假设您可以堆叠Axis-Angle表示来模拟欧几里得表示法。 - Aaron Franke
1
@Aaron Franke 我有时使用向量表示法,其中向量的方向是旋转轴,向量的范数是旋转角度。我相信这有时被称为“指数映射”或“四元数对数”。如果其中两个接近,您实际上可以欧几里得地在它们之间进行插值。 - Ben
好的,但四元数仍然表示绕轴旋转n度(或弧度),那么区别在哪里?四元数之间的插值吗? - Phil
1
轴角可以用仅有的三个参数表示,例如轴线的高度角和方位角,以及旋转角度。 - Karl Rosaen
这里的第一行是错误的,轴角只有3D! - Ben
这里的第一行是错误的,轴角只有三维! - Ben

4
这意味着,如果你想绕Z轴(0,0,1)旋转180度,那么四元数的实部将是 cos(180度/2)=0,虚部将是 sin(180度/2)*(0,0,1)=(0,0,1)。这是 q=0+0i+0j+1k。90度旋转将给出 q=cos(90度/2)+sin(90度/2)*(0i+0j+1k)=sqrt(2)/2+0i+0j+sqrt(2)/2*k,以此类推。
另一方面,如果你想知道正弦和余弦是什么,可以查看你所用的语言是否提供 sin()cos() 函数(它们的参数可能是弧度),并查看http://en.wikipedia.org/wiki/Sine

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接