
A
⊥
= A − (A · P )P
与 P 平行的部分不会发生变化, 因而只需要考虑 A
⊥
的旋转. 为了确定旋转所在的平面, 还需要找到另一
个与 P 垂直的向量, 注意到向量的外积与两个向量垂直
Q = A ×P
另外, 如果注意力足够集中, 不难发现
|A
⊥
| = |A| sin 𝜃 = |A × P | = |Q|
这两个向量构成了一个理想的基! 因而可以直接进行线性组合得到旋转后的向量
A
′
⊥
= cos 𝜃A
⊥
+ sin 𝜃Q
全部代入后即可得到旋转后的向量
A
′
= (A · P )P +cos 𝜃
[
A − (A · P )P
]
+ sin 𝜃
(
A × P
)
也就是
A
′
= cos 𝜃A + sin 𝜃A × P + (1 − cos 𝜃)(A · P )P
3.2 四元数的表示
注意到四元数的乘法规则
(𝑠
1
+ v
1
)(𝑠
2
+ v
2
) = (𝑠
1
𝑠
2
− v
1
· v
2
) + 𝑠
1
v
2
+ 𝑠
2
v
1
+ v
1
× v
2
考虑到四元数三个虚部的特殊性, 令三个虚部代替三维空间中的三个基矢, 那么三维坐标就可以对应
(𝑥, 𝑦, 𝑧) ↔ 𝑥𝑖 + 𝑦 𝑗 + 𝑧𝑘
这样令乘法规则里的 𝑠
1
= 0, 就可以得到
A(𝑠 + v) = −A · v + A × v + 𝑠A
v
1
就是待旋转的向量.P ·v 是实数, 而旋转后的四元数应当也表示坐标, 因而是一个纯虚数, 这并不对. 注
意到
(𝑠 − v)A(𝑠 + v) = (𝑠
2
− v
2
)A + 2𝑠A × v + 2(A · v)v
旋转不应改变向量的模长, 因而 𝑠 + v 应当是单位四元数, 即
𝑠
2
+
|
v
|
2
= 1
重新写出旋转后的向量
A
′
= cos 𝜃A + sin 𝜃A × P + (1 − cos 𝜃)(A · P )P