欢迎您访问 最编程 本站为您分享编程语言代码,编程技术文章!
您现在的位置是: 首页

四元插值、二元四元插值、DQB/DLB

最编程 2024-06-28 10:29:11
...

一、四元数与对偶四元数(双四元数)

传送门:四元数,对偶四元数,三维旋转,平移

二、四元数插值

四元数插值 与 向量插值(传送门:[插值算法 - Lerp, NLerp, SLerp])非常类似,
只需要把其中向量换成四元数即可:
L e r p ( q 1 , q 2 ; t ) = ( 1 − t ) q 1 + t q 2 (1) Lerp(\boldsymbol q_1, \boldsymbol q_2; t) = (1-t)\boldsymbol q_1 + t\boldsymbol q_2 \tag 1 Lerp(q1,q2;t)=(1t)q1+tq2(1)

N L e r p ( q 1 , q 2 ; t ) = ( 1 − t ) q 1 + t q 2 ∥ ( 1 − t ) q 1 + t q 2 ∥ (2) NLerp(\boldsymbol q_1, \boldsymbol q_2; t) = \frac{(1-t)\boldsymbol q_1 + t\boldsymbol q_2}{\Vert(1-t)\boldsymbol q_1 + t\boldsymbol q_2\Vert} \tag 2 NLerp(q1,q2;t)=(1t)q1+tq2(1t)q1+tq2(2)

S L e r p ( q 1 , q 2 ; t ) = sin ⁡ ( ( 1 − t ) θ ) sin ⁡ θ q 1 + sin ⁡ ( t θ ) sin ⁡ θ q 2 = ( q 2 q 1 ∗ ) t q 1 (3) SLerp(\boldsymbol q_1, \boldsymbol q_2; t) = \frac{\sin((1-t)\theta)}{\sin\theta}\boldsymbol q_1 + \frac{\sin(t\theta)}{\sin\theta}\boldsymbol q_2=(\boldsymbol q_2\boldsymbol q_1^*)^t\boldsymbol q_1 \tag 3 SLerp(q1,q2;t)=sinθsin((1t)θ)q1+sinθsin()q2=(q2q1)tq1(3)

这里主要说一下 ( 3 ) (3) (3) 式:

式中, θ \theta θ q 1 , q 2 \boldsymbol q_1, \boldsymbol q_2 q1,q2 之间的夹角,定义为: θ = arccos ⁡ ( q 1 ⋅ q 2 ) \theta = \arccos(\boldsymbol q_1 \cdot \boldsymbol q_2) θ=arccos(q1q2)

不难看出,
q 1 \boldsymbol q_1 q1 q 2 \boldsymbol q_2 q2 之间插值 ⇔ \Leftrightarrow 1 1 1 q 2 q 1 ∗ \boldsymbol q_2\boldsymbol q_1^* q2q1 之间插值
q 2 q 1 ∗ \boldsymbol q_2\boldsymbol q_1^* q2q1 表示了从 q 1 \boldsymbol q_1 q1 q 2 \boldsymbol q_2 q2 的变化
显然 q 2 q 1 ∗ \boldsymbol q_2\boldsymbol q_1^* q2q1 是单位四元数,那么 q 2 q 1 ∗ \boldsymbol q_2\boldsymbol q_1^* q2q1 可以表示为:
q 2 q 1 ∗ = cos ⁡ θ 2 + u sin ⁡ θ 2 \boldsymbol q_2\boldsymbol q_1^* = \cos \frac{\theta}{2}+\boldsymbol u\sin\frac{\theta}{2} q2q1=cos2θ+usin2θ


( q 2 q 1 ∗ ) t = cos ⁡ ( t θ 2 ) + u sin ⁡ ( t θ 2 ) (\boldsymbol q_2\boldsymbol q_1^*)^t = \cos (\frac{t\theta}{2})+\boldsymbol u\sin(\frac{t\theta}{2}) (q2q1)t=cos(2)+usin(2)

可以看出 四元数的 Slerp 是角速度匀速的。

三、对偶四元数插值

3.1 沙勒定理(Chasles Theorem)

沙勒定理是欧拉旋转定理的一个推论。
根据沙勒定理,刚体的最广义位移等价于一个平移加上一个旋转。
因此,刚体运动可分为平移运动与旋转运动。
沙勒定理

而这个移动可以合成为 通过绕某根轴的螺旋运动。

3.2 螺旋运动(Screw motion) 与 ScLerp

沙勒定理描述的螺旋运动 (Screw) 如下:

在这里插入图片描述
物体经过 O A ⌢ \textcolor{#0088EE}{\overset{\frown}{OA}} OA A O ′ \textcolor{#BB0000}{AO'} AO ⇔ \Leftrightarrow 物体直接经过 O O ′ ⌢ \textcolor{#88FF88}{\overset{\frown}{OO'}} OO

这条浅绿色的螺旋(Screw)路径可以使用对偶四元数来描述 [ 附 B . 1 ] ^{[附B.1]} [B.1]

q ^ = cos ⁡ θ