Compare commits
3
Commits
5fa619a73a
...
main
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
8fbceda7d2 | ||
|
|
2aa0484d00 | ||
|
|
fda18ef058 |
@@ -197,7 +197,7 @@ z_1z_2&=(a_1a_2-b_1b_2)+(a_1b_2+a_2b_1)i
|
|||||||
$$
|
$$
|
||||||
|
|
||||||
#### 3.4.2 四元数定义
|
#### 3.4.2 四元数定义
|
||||||
四元数([Quaternion](https://en.wikipedia.org/wiki/Quaternion))可以视为对复数的扩充。 四元数有1个实部,3个虚部,形式如下
|
四元数([Quaternion](https://en.wikipedia.org/wiki/Quaternion))可以视为对复数的扩充,有1个实部,3个虚部,形式如下
|
||||||
$$
|
$$
|
||||||
q=s+xi+yj+zk
|
q=s+xi+yj+zk
|
||||||
$$
|
$$
|
||||||
@@ -231,14 +231,14 @@ q_1-q_2&=[s_1-s_2,\quad \vec{v_1}-\vec{v_2}]\\
|
|||||||
q_1q_2&=[s_1s_2-\vec{v_1}\cdot\vec{v_2},\quad s_1\vec{v_2}+s_2\vec{v_1}+\vec{v_1}\times\vec{v_2}]
|
q_1q_2&=[s_1s_2-\vec{v_1}\cdot\vec{v_2},\quad s_1\vec{v_2}+s_2\vec{v_1}+\vec{v_1}\times\vec{v_2}]
|
||||||
\end{aligned}
|
\end{aligned}
|
||||||
$$
|
$$
|
||||||
四元数的乘法满足满足结合律,但不满足交换律
|
四元数的乘法满足结合律,但不满足交换律
|
||||||
$$
|
$$
|
||||||
\begin{aligned}
|
\begin{aligned}
|
||||||
(q_1q_2)q_3&=q_1(q_2q_3)\\
|
(q_1q_2)q_3&=q_1(q_2q_3)\\
|
||||||
q_1q_2&\neq q_2q_1
|
q_1q_2&\neq q_2q_1
|
||||||
\end{aligned}
|
\end{aligned}
|
||||||
$$
|
$$
|
||||||
但如果$q_1,q_2$中的两个向量部分平行,由于$\vec{v_1}\times\vec{v_2}=0$,易证
|
但如果$q_1,q_2$中的向量部分平行,由于$\vec{v_1}\times\vec{v_2}=0$,易证
|
||||||
$$
|
$$
|
||||||
q_1q_2=q_2q_1\quad(when\quad \vec{v_1}\parallel\vec{v_2})
|
q_1q_2=q_2q_1\quad(when\quad \vec{v_1}\parallel\vec{v_2})
|
||||||
\tag{3.4.3.1}
|
\tag{3.4.3.1}
|
||||||
@@ -268,11 +268,18 @@ $$
|
|||||||
q^{-1}=\frac{\overline{q}}{\|q\|^2}\tag{3.4.4.2}
|
q^{-1}=\frac{\overline{q}}{\|q\|^2}\tag{3.4.4.2}
|
||||||
$$
|
$$
|
||||||
四元数的逆满足如下运算
|
四元数的逆满足如下运算
|
||||||
|
$$\begin{aligned}
|
||||||
|
(q_1q_2)^{-1}&=q_2^{-1}q_1^{-1}\\
|
||||||
|
(q_1q_2\ldots q_n)^{-1}&=q_n^{-1}\ldots q_2^{-1}q_1^{-1}
|
||||||
|
\end{aligned}\tag{3.4.4.3}
|
||||||
$$
|
$$
|
||||||
(q_1q_2)^{-1}=q_2^{-1}q_1^{-1}
|
易知,如果是单位四元数
|
||||||
$$
|
$$
|
||||||
|
\overline{q_1q_2\ldots q_n}=\overline{q_n}\ldots \overline{q_2}\,\overline{q_1}\tag{3.4.4.4}
|
||||||
|
$$
|
||||||
|
|
||||||
#### 3.4.5 四元数与向量
|
#### 3.4.5 四元数与向量
|
||||||
如果一个四元数的实部为0,那么称之为纯四元数(Pure Quaternion),由于纯四元数仅有3个虚部,可以将一个3D向量转换为一个纯四元数。设$q_v=[0,\vec{v}]$,那么
|
如果一个四元数的实部为0,那么称之为纯四元数(Pure Quaternion),由于纯四元数仅有3个虚部,可以将一个3D向量转换为一个纯四元数。记$q_v=[0,\vec{v}]$,那么
|
||||||
$$\begin{aligned}
|
$$\begin{aligned}
|
||||||
\lambda q_v&=[0, \lambda\vec{v}]\\
|
\lambda q_v&=[0, \lambda\vec{v}]\\
|
||||||
q_{u}\pm q_{v}&=[0, \vec{u}\pm\vec{v}]
|
q_{u}\pm q_{v}&=[0, \vec{u}\pm\vec{v}]
|
||||||
@@ -305,7 +312,7 @@ $$\begin{aligned}
|
|||||||
$$
|
$$
|
||||||
R_n(\vec{\boldsymbol{v}}_2)=\vec{\boldsymbol{v}}_2\cos(\theta)+(\vec{\boldsymbol{n}}\times\vec{\boldsymbol{v_2}})\sin(\theta)\tag{3.4.6.1}
|
R_n(\vec{\boldsymbol{v}}_2)=\vec{\boldsymbol{v}}_2\cos(\theta)+(\vec{\boldsymbol{n}}\times\vec{\boldsymbol{v_2}})\sin(\theta)\tag{3.4.6.1}
|
||||||
$$
|
$$
|
||||||
设两个纯四元数$q_n, q_v$
|
设两个纯四元数$q_n, q_{v2}$
|
||||||
$$\begin{aligned}
|
$$\begin{aligned}
|
||||||
q_n&=[0, \vec{n}]\\
|
q_n&=[0, \vec{n}]\\
|
||||||
q_{v2}&=[0, \vec{v_2}]
|
q_{v2}&=[0, \vec{v_2}]
|
||||||
@@ -319,8 +326,7 @@ q_nq_{v2}&=[-\vec{n}\cdot\vec{v_2},\quad\vec{n}\times\vec{v_2}]\\
|
|||||||
所以$q_nq_{v2}$是一个纯四元数
|
所以$q_nq_{v2}$是一个纯四元数
|
||||||
由于3.4.6.1中都是线性计算,将3.4.6.2和3.4.6.3代入其中,可以得到$R_n(\vec{\boldsymbol{v}}_2)$的四元数形式
|
由于3.4.6.1中都是线性计算,将3.4.6.2和3.4.6.3代入其中,可以得到$R_n(\vec{\boldsymbol{v}}_2)$的四元数形式
|
||||||
$$\begin{aligned}
|
$$\begin{aligned}
|
||||||
R_n(\vec{\boldsymbol{v}}_2)&=\vec{\boldsymbol{v}}_2\cos\theta+(\vec{\boldsymbol{n}}\times\vec{\boldsymbol{v_2}})\sin\theta\\
|
\quad[0, R_n(\vec{\boldsymbol{v}}_2)]&= q_{v2}\cos\theta+q_nq_{v2}\sin\theta\\
|
||||||
&= q_v\cos\theta+q_nq_{v2}\sin\theta\\
|
|
||||||
&=(\cos\theta+q_n\sin\theta)q_{v2}\\
|
&=(\cos\theta+q_n\sin\theta)q_{v2}\\
|
||||||
&=[\cos\theta, \vec{n}\sin\theta]q_{v2}\\
|
&=[\cos\theta, \vec{n}\sin\theta]q_{v2}\\
|
||||||
&=q(\theta, \vec{n})q_{v2}
|
&=q(\theta, \vec{n})q_{v2}
|
||||||
@@ -340,7 +346,7 @@ $$
|
|||||||
将3.4.6.4带入3.3.2.4中,可以得到罗德里格旋转公式的四元数形式为
|
将3.4.6.4带入3.3.2.4中,可以得到罗德里格旋转公式的四元数形式为
|
||||||
$$\begin{aligned}
|
$$\begin{aligned}
|
||||||
R_n(\vec{\boldsymbol{v}})&=\vec{\boldsymbol{v}}_1+R_n(\vec{\boldsymbol{v}}_2)\\
|
R_n(\vec{\boldsymbol{v}})&=\vec{\boldsymbol{v}}_1+R_n(\vec{\boldsymbol{v}}_2)\\
|
||||||
&=q_{v1}+q(\theta, \vec{n})q_{v2}\\
|
\quad[0,R_n(\vec{\boldsymbol{v}})]&=q_{v1}+q(\theta, \vec{n})q_{v2}\\
|
||||||
&=p\overline{p}q_{v1}+ppq_{v2}
|
&=p\overline{p}q_{v1}+ppq_{v2}
|
||||||
\end{aligned}\tag{3.4.6.6}
|
\end{aligned}\tag{3.4.6.6}
|
||||||
$$
|
$$
|
||||||
@@ -354,7 +360,7 @@ q_{v2}\overline{p}&=[0, \vec{v_2}][\cos\frac{\theta}{2},-\vec{n}\sin\frac{\theta
|
|||||||
\end{aligned}$$
|
\end{aligned}$$
|
||||||
带入3.4.6.6,可以得到
|
带入3.4.6.6,可以得到
|
||||||
$$\begin{aligned}
|
$$\begin{aligned}
|
||||||
R_n(\vec{\boldsymbol{v}})&=pq_{v1}\overline{p}+pq_{v2}\overline{p}\\
|
\quad[0,R_n(\vec{\boldsymbol{v}})]&=pq_{v1}\overline{p}+pq_{v2}\overline{p}\\
|
||||||
&=p(q_{v1}+q_{v2})\overline{p}\\
|
&=p(q_{v1}+q_{v2})\overline{p}\\
|
||||||
&=pq_v\overline{p}
|
&=pq_v\overline{p}
|
||||||
\end{aligned}\tag{3.4.6.7}
|
\end{aligned}\tag{3.4.6.7}
|
||||||
@@ -362,4 +368,92 @@ $$
|
|||||||
也就是说,对于向量$\vec{v}$,围绕单位向量$\vec{n}$旋转$\theta$,只需要构造四元数$[\cos\frac{\theta}{2}, \vec{n}\sin\frac{\theta}{2}]$,可以利用下面的等式计算旋转后的向量$\vec{v'}$
|
也就是说,对于向量$\vec{v}$,围绕单位向量$\vec{n}$旋转$\theta$,只需要构造四元数$[\cos\frac{\theta}{2}, \vec{n}\sin\frac{\theta}{2}]$,可以利用下面的等式计算旋转后的向量$\vec{v'}$
|
||||||
$$
|
$$
|
||||||
[0, \vec{v'}]=[\cos\frac{\theta}{2}, \vec{n}\sin\frac{\theta}{2}][0,\vec{v}][\cos\frac{\theta}{2}, -\vec{n}\sin\frac{\theta}{2}]
|
[0, \vec{v'}]=[\cos\frac{\theta}{2}, \vec{n}\sin\frac{\theta}{2}][0,\vec{v}][\cos\frac{\theta}{2}, -\vec{n}\sin\frac{\theta}{2}]
|
||||||
$$
|
$$
|
||||||
|
|
||||||
|
#### 3.4.7 四元数组合
|
||||||
|
使用四元数表达旋转有一个好处就是可以实现组合、插值等计算,例如一个向量$v$经过两次旋转变化,用四元数表示分别是$q_1,q_2$,那么
|
||||||
|
$$\begin{aligned}
|
||||||
|
q'&=q_2(q_1q_v\overline{q_1})\overline{q_2}\\
|
||||||
|
&=(q_2q_1)q_v(\overline{q_1}\,\overline{q_2})\\
|
||||||
|
\end{aligned}$$
|
||||||
|
根据公式3.4.4.4,可知
|
||||||
|
$$
|
||||||
|
q'=(q_2q_1)q_v(\overline{q_2q_1})
|
||||||
|
$$
|
||||||
|
#### 3.4.7 四元数转换为旋转矩阵
|
||||||
|
两个四元数相乘,可以转换为同等效果的矩阵,设两个四元数
|
||||||
|
$$\begin{aligned}
|
||||||
|
p=a+bi+cj+dk\\
|
||||||
|
q=s+xi+yj+zk
|
||||||
|
\end{aligned}$$
|
||||||
|
那么
|
||||||
|
$$\begin{aligned}
|
||||||
|
pq=&(a+bi+cj+dk)(s+xi+yj+zk)\\
|
||||||
|
=&(as−bx−cy−dz)+ \\
|
||||||
|
&(bs+ax−dy+cz)i+\\
|
||||||
|
&(cs+dx+ay−bz)j+\\
|
||||||
|
&(ds−cx+by+az)k\\
|
||||||
|
\end{aligned}$$
|
||||||
|
可以将左乘四元数$p$视作左乘矩阵$L(p)$
|
||||||
|
$$
|
||||||
|
L(p)=\begin{bmatrix}
|
||||||
|
a&-b&-c&-d \\
|
||||||
|
b&a&−d&c \\
|
||||||
|
c&d&a&−b \\
|
||||||
|
d&−c&b&a \\
|
||||||
|
\end{bmatrix}
|
||||||
|
$$
|
||||||
|
而右乘四元数$p$视作左乘矩阵$R(q)$
|
||||||
|
$$
|
||||||
|
Q(q)=\begin{bmatrix}
|
||||||
|
a&−b&−c&−d \\
|
||||||
|
b&a&d&-c \\
|
||||||
|
c&-d&a&b \\
|
||||||
|
d&c&-b&a \\
|
||||||
|
\end{bmatrix}
|
||||||
|
$$
|
||||||
|
那么旋转一个向量$\vec{v}$对应的四元数$q_v$的过程可以写作
|
||||||
|
$$
|
||||||
|
pq_v\overline{p}=L(p)R(\overline{p})q_v
|
||||||
|
$$
|
||||||
|
或者
|
||||||
|
$$
|
||||||
|
pq_v\overline{p}=R(\overline{p})L(p)q_v
|
||||||
|
$$
|
||||||
|
容易证明,这两个结果是一样的,经计算
|
||||||
|
$$\begin{aligned}
|
||||||
|
L(p)R(\overline{p})q_v&=\begin{bmatrix}
|
||||||
|
a&-b&-c&-d \\
|
||||||
|
b&a&−d&c \\
|
||||||
|
c&d&a&−b \\
|
||||||
|
d&−c&b&a \\
|
||||||
|
\end{bmatrix}\begin{bmatrix}
|
||||||
|
a&b&c&d \\
|
||||||
|
-b&a&-d&c \\
|
||||||
|
-c&d&a&-b \\
|
||||||
|
-d&-c&b&a \\
|
||||||
|
\end{bmatrix}\begin{bmatrix}0\\v_x\\v_y\\v_z\end{bmatrix}\\
|
||||||
|
&=\begin{bmatrix}
|
||||||
|
1&0&0&0\\
|
||||||
|
0&1-2c^2-2d^2&2bc-2ad&2ac+2bd\\
|
||||||
|
0&2bc+2ad&1-2b^2-2d^2&2cd-2ab\\
|
||||||
|
0&2bd-2ac&2ab+2cd&1-2b^2-2c^2
|
||||||
|
\end{bmatrix}\begin{bmatrix}0\\v_x\\v_y\\v_z\end{bmatrix}
|
||||||
|
\end{aligned}
|
||||||
|
$$
|
||||||
|
忽略掉四元数中为0的实数部分,可以将一个旋转四元数转换为旋转矩阵
|
||||||
|
$$
|
||||||
|
v'=\begin{bmatrix}
|
||||||
|
1-2c^2-2d^2&2bc-2ad&2ac+2bd\\
|
||||||
|
2bc+2ad&1-2b^2-2d^2&2cd-2ab\\
|
||||||
|
2bd-2ac&2ab+2cd&1-2b^2-2c^2
|
||||||
|
\end{bmatrix}\begin{bmatrix}v_x\\v_y\\v_z\end{bmatrix}
|
||||||
|
$$
|
||||||
|
其中
|
||||||
|
$$\begin{aligned}
|
||||||
|
a&=\cos(\theta/2)\\
|
||||||
|
b&=\sin(\theta/2)n_x\\
|
||||||
|
c&=\sin(\theta/2)n_y\\
|
||||||
|
d&=\sin(\theta/2)n_z
|
||||||
|
\end{aligned}
|
||||||
|
$$
|
||||||
|
|||||||
@@ -14,7 +14,7 @@ $$
|
|||||||
笛卡尔坐标$[x,y]$,等同于齐次坐标$[kx,ky,k]$,所以称作该坐标是"齐次",Homogeneous一词有“同质”的含义,译作同质坐标可能更准确一些
|
笛卡尔坐标$[x,y]$,等同于齐次坐标$[kx,ky,k]$,所以称作该坐标是"齐次",Homogeneous一词有“同质”的含义,译作同质坐标可能更准确一些
|
||||||
|
|
||||||
#### 4.1.3 点和矢量
|
#### 4.1.3 点和矢量
|
||||||
在图形学中,一般用$[x,y,0]$表示一个二维矢量,用$[x,y,z,1]$表示一个二维点。 这样可以保证矢量的“平移不变性”,也就是一个矢量经过平移变换,仍然保持和原先一致。
|
在图形学中,一般用$[x,y,0]$表示一个二维矢量,用$[x,y,1]$表示一个二维点。 这样可以保证矢量的“平移不变性”,也就是一个矢量经过平移变换,仍然保持和原先一致。
|
||||||
$$
|
$$
|
||||||
\begin{bmatrix}
|
\begin{bmatrix}
|
||||||
1&0&t_x\\
|
1&0&t_x\\
|
||||||
|
|||||||
Reference in New Issue
Block a user