将单位矢量转换为四元数

时间:2011-01-08 21:51:25

标签: vector axis angle quaternions

所以我对四元数很新,但我理解如何用它们操作东西的基础知识。我目前要做的是将已知的四元数与空间中的两个绝对点进行比较。我希望我能做的只是将点转换成第二个四元数,让我有一个简单的方法来比较两者。

到目前为止,我所做的是将这两个点转换为单位向量。从那里我希望我可以直接将i j k插入四元数的虚部,标量为零。从那里我可以将一个四元数乘以另一个四元数,得到第三个四元数。第三个四元数可以转换为轴角度,给出原始两个四元数相差的程度。

这个思维过程是否正确?所以它应该只是[0 i j k]。之后我可能需要对四元数进行标准化,但我不确定。

我有一种不好的感觉,它不是从向量到四元数的直接映射。我试着将单位矢量转换为轴角度,但我不确定这会起作用,因为我不知道将什么角度作为输入。

1 个答案:

答案 0 :(得分:1)

<强>符号

四元数在四个空间中定义,基数为{1,i,j,k}。汉密尔顿将这种基本关系刻画成都柏林Brougham桥的石头:

i 2 = j 2 = k 2 = i j k = -1。

有许多等效的四元数参数化,但在这里我将使用{标量,向量}形式。

1。)A = {a0, a },B = {b0, b },其中A和B是四元数,a0和b0是标量, a b 是三向量。

2.)X = {0, x }是向量四元数

3.)(非交换)四元数乘积直接来自上面的i,j和k的属性,A⊗B= {a0 b0 - a b ,a0 b + b0 a + a x b }

4.。)四元数共轭是A * = {a0, - a }

5.)四元数产品的共轭物是反义词的相反产物。
 (A⊗B) * = B * ⊗A *

6。)矢量四元数共轭是负的。 X * = {0, - x } = -X

7。)四元数范数是| A | =√(A⊗A * )=√(a0²+ a a

8。)单位四元数是一个标准为1的单位。

9.)单位三向量 x = {x 1 ,x 2 ,x 3 } x x = 1可表示为单位向量四元数 X = {0, x },| X | = 1。

10。)四元数矢量X的球面旋转是一个关于单位矢量轴 n 的角度θ是Q⊗X⊗Q * , 其中Q是四元数{cos(θ/ 2),sin(θ/ 2) n }。注意| Q | = 1。

注意四元数向量积的形式。给定向量四元数X 1 = {0, x 1 )和X 2 = {0, x 2 },四元数乘积为X 2 ⊗X 1 * = { x 1 x 2 x 1 ×< strong> x 2 }。四元数将点积重新作为标量部分,并将交叉积作为矢量部分,在一百多年前离婚。这些产品都不是可逆的,但四元数的方式如下所述。

<强>反演

找到球形变换四元数Q 12 以旋转矢量X 1 以与矢量X 2 对齐。

从上面

X 2 = Q 12 ⊗X 1 ⊗Q 12 *

将双方乘以X 1 *

X 2 ⊗X 1 * = Q 12 ⊗X 1 ⊗(Q <子> 12 * ⊗X<子> 1 *

请记住,旋转轴 n 来自叉积 x 1 × x 2 ,所以 n x 1 = 0.且Q * ⊗X * =(X⊗Q) * < / sup> = X * ⊗Q,离开

X 2 ⊗X 1 * = Q 12 ⊗X 1 ⊗X 1 * ⊗Q 12 = Q 12 ⊗Q 12

因此,四元数变换可以直接解决为

Q 12 =√(X 2 ⊗X 1 *

您可以自己选择四元数平方根。有很多方法可以做到,最好的将取决于你的应用,考虑速度和稳定性。

- HTH,
弗雷德克林格纳