旋转矩阵

旋转矩阵

在三维空间中,旋转矩阵有一个等于单位1的实特征值。旋转矩阵指定关于对应的特征向量的旋转(欧拉旋转定理)。如果旋转角是 θ,则旋转矩阵的另外两个(复数)特征值是 exp(iθ) 和 exp(-iθ)。从而得出 3 维旋转的迹数等于 1 + 2 cos(θ),这可用来快速的计算任何 3 维旋转的旋转角。

3 维旋转矩阵的生成元是三维斜对称矩阵。因为只需要三个实数来指定 3 维斜对称矩阵,得出只用三个实数就可以指定一个 3 维旋转矩阵。

旋转

编辑

主条目:Tait-Bryan角

生成旋转矩阵的一种简单方式是把它作为三个基本旋转的序列复合。关于右手笛卡尔坐标系的 x-, y- 和 z-轴的旋转分别叫做 roll, pitch 和 yaw 旋转。因为这些旋转被表达为关于一个轴的旋转,它们的生成元很容易表达。

绕 x-轴的主动旋转定义为:

R

x

(

θ

x

)

=

[

1

0

0

0

cos

θ

x

sin

θ

x

0

sin

θ

x

cos

θ

x

]

=

exp

(

θ

x

[

1

0

0

0

0

1

0

1

0

]

)

{\displaystyle {\mathcal {R}}_{x}(\theta _{x})={\begin{bmatrix}1&0&0\\0&\cos {\theta _{x}}&-\sin {\theta _{x}}\\0&\sin {\theta _{x}}&\cos {\theta _{x}}\end{bmatrix}}=\exp \left(\theta _{x}{\begin{bmatrix}1&0&0\\0&0&-1\\0&1&0\end{bmatrix}}\right)}

这里的

θ

x

{\displaystyle \theta _{x}}

是 roll 角,和右手螺旋的方向相反(在yz平面顺时针)。

绕 y-轴的主动旋转定义为:

R

y

(

θ

y

)

=

[

cos

θ

y

0

sin

θ

y

0

1

0

sin

θ

y

0

cos

θ

y

]

=

exp

(

θ

y

[

0

0

1

0

1

0

1

0

0

]

)

{\displaystyle {\mathcal {R}}_{y}(\theta _{y})={\begin{bmatrix}\cos {\theta _{y}}&0&\sin {\theta _{y}}\\0&1&0\\-\sin {\theta _{y}}&0&\cos {\theta _{y}}\end{bmatrix}}=\exp \left(\theta _{y}{\begin{bmatrix}0&0&1\\0&1&0\\-1&0&0\end{bmatrix}}\right)}

这里的

θ

y

{\displaystyle \theta _{y}}

是 pitch 角,和右手螺旋的方向相反(在zx平面顺时针)。

绕 z-轴的主动旋转定义为:

R

z

(

θ

z

)

=

[

cos

θ

z

sin

θ

z

0

sin

θ

z

cos

θ

z

0

0

0

1

]

=

exp

(

θ

z

[

0

1

0

1

0

0

0

0

1

]

)

{\displaystyle {\mathcal {R}}_{z}(\theta _{z})={\begin{bmatrix}\cos {\theta _{z}}&-\sin {\theta _{z}}&0\\\sin {\theta _{z}}&\cos {\theta _{z}}&0\\0&0&1\end{bmatrix}}=\exp \left(\theta _{z}{\begin{bmatrix}0&-1&0\\1&0&0\\0&0&1\end{bmatrix}}\right)}

这里的

θ

z

{\displaystyle \theta _{z}}

是 yaw 角,和右手螺旋的方向相反(在xy平面顺时针)。

在飞行动力学中,roll, pitch 和 yaw 角通常分别采用符号

γ

{\displaystyle \gamma }

,

α

{\displaystyle \alpha }

, 和

β

{\displaystyle \beta }

;但是为了避免混淆于欧拉角这里使用符号

θ

x

{\displaystyle \theta _{x}}

,

θ

y

{\displaystyle \theta _{y}}

θ

z

{\displaystyle \theta _{z}}

任何 3 维旋转矩阵

M

R

3

×

3

{\displaystyle {\mathcal {M}}\in \mathbb {R} ^{3\times 3}}

都可以用这三个角

θ

x

{\displaystyle \theta _{x}}

,

θ

y

{\displaystyle \theta _{y}}

, 和

θ

z

{\displaystyle \theta _{z}}

来刻画,并且可以表示为 roll, pitch 和 yaw 矩阵的乘积。

M

{\displaystyle {\mathcal {M}}}

是在

R

3

×

3

{\displaystyle \mathbb {R} ^{3\times 3}\,}

中的旋转矩阵

θ

x

,

θ

y

,

θ

z

[

0

π

)

:

M

=

R

z

(

θ

z

)

R

y

(

θ

y

)

R

x

(

θ

x

)

{\displaystyle \Leftrightarrow \,\exists \,\theta _{x},\theta _{y},\theta _{z}\in [0\ldots \pi ):\,{\mathcal {M}}={\mathcal {R}}_{z}(\theta _{z})\,{\mathcal {R}}_{y}(\theta _{y})\,{\mathcal {R}}_{x}(\theta _{x})}

R

3

{\displaystyle \mathbb {R} ^{3}}

中所有旋转的集合,加上复合运算形成了旋转群 SO(3)。这里讨论的矩阵接着提供了这个群的群表示。更高维的情况可参见 Givens旋转。

角-轴表示和四元数表示

编辑

主条目:轴角和四元数和空间旋转

在三维中,旋转可以通过单一的旋转角

θ

{\displaystyle \theta }

和所围绕的单位向量方向

v

^

=

(

x

,

y

,

z

)

{\displaystyle {\hat {\mathbf {v} }}=(x,y,z)}

来定义。

M

(

v

^

,

θ

)

=

[

cos

θ

+

(

1

cos

θ

)

x

2

(

1

cos

θ

)

x

y

(

sin

θ

)

z

(

1

cos

θ

)

x

z

+

(

sin

θ

)

y

(

1

cos

θ

)

y

x

+

(

sin

θ

)

z

cos

θ

+

(

1

cos

θ

)

y

2

(

1

cos

θ

)

y

z

(

sin

θ

)

x

(

1

cos

θ

)

z

x

(

sin

θ

)

y

(

1

cos

θ

)

z

y

+

(

sin

θ

)

x

cos

θ

+

(

1

cos

θ

)

z

2

]

{\displaystyle {\mathcal {M}}({\hat {\mathbf {v} }},\theta )={\begin{bmatrix}\cos \theta +(1-\cos \theta )x^{2}&(1-\cos \theta )xy-(\sin \theta )z&(1-\cos \theta )xz+(\sin \theta )y\\(1-\cos \theta )yx+(\sin \theta )z&\cos \theta +(1-\cos \theta )y^{2}&(1-\cos \theta )yz-(\sin \theta )x\\(1-\cos \theta )zx-(\sin \theta )y&(1-\cos \theta )zy+(\sin \theta )x&\cos \theta +(1-\cos \theta )z^{2}\end{bmatrix}}}

这个旋转可以简单的以生成元来表达:

M

(

v

^

,

θ

)

=

exp

(

θ

[

0

z

y

z

0

x

y

x

0

]

)

{\displaystyle {\mathcal {M}}({\hat {\mathbf {v} }},\theta )=\exp \left(\theta {\begin{bmatrix}0&-z&y\\z&0&-x\\-y&x&0\\\end{bmatrix}}\right)}

在运算于向量 r 上的时候,这等价于Rodrigues旋转公式:

M

r

=

r

cos

(

θ

)

+

v

^

×

r

sin

(

θ

)

+

(

v

^

r

)

v

^

(

1

cos

(

θ

)

)

{\displaystyle {\mathcal {M}}\cdot \mathbf {r} =\mathbf {r} \,\cos(\theta )+{\hat {\mathbf {v} }}\times \mathbf {r} \,\sin(\theta )+({\hat {\mathbf {v} }}\cdot \mathbf {r} ){\hat {\mathbf {v} }}(1-\cos(\theta ))}

角-轴表示密切关联于四元数表示。依据轴和角,四元数可以给出为正规化四元数 Q:

Q

=

(

x

i

+

y

j

+

z

k

)

sin

(

θ

/

2

)

+

cos

(

θ

/

2

)

{\displaystyle Q=(xi+yj+zk)\sin(\theta /2)+\cos(\theta /2)\,}

这里的 i, j 和 k 是 Q 的三个虚部。

欧拉角表示

编辑

主条目:欧拉角

在三维空间中,旋转可以通过三个欧拉角

(

α

,

β

,

γ

)

{\displaystyle (\alpha ,\beta ,\gamma )}

来定义。有一些可能的欧拉角定义,每个都可以依据 roll, pitch 和 yaw 的复合来表达。依据 "x-y-z" 欧拉角,在右手笛卡尔坐标中的旋转矩阵可表达为:

M

(

α

,

β

,

γ

)

=

R

z

(

γ

)

R

y

(

β

)

R

x

(

α

)

{\displaystyle {\mathcal {M}}(\alpha ,\beta ,\gamma )={\mathcal {R}}_{z}(\gamma ){\mathcal {R}}_{y}(\beta ){\mathcal {R}}_{x}(\alpha )}

进行乘法运算生成:

M

(

α

,

β

,

γ

)

=

[

cos

γ

sin

γ

0

sin

γ

cos

γ

0

0

0

1

]

[

cos

β

0

sin

β

0

1

0

sin

β

0

cos

β

]

[

1

0

0

0

cos

α

sin

α

0

sin

α

cos

α

]

=

[

cos

γ

cos

β

sin

γ

cos

γ

sin

β

sin

γ

cos

β

cos

γ

sin

γ

sin

β

sin

β

0

cos

β

]

[

1

0

0

0

cos

α

sin

α

0

sin

α

cos

α

]

=

[

cos

γ

cos

β

sin

γ

cos

α

+

cos

γ

sin

β

sin

α

sin

γ

sin

α

+

cos

γ

sin

β

cos

α

sin

γ

cos

β

cos

γ

cos

α

+

sin

γ

sin

β

sin

α

cos

γ

sin

α

+

sin

γ

sin

β

cos

α

sin

β

cos

β

sin

α

cos

β

cos

α

]

{\displaystyle {\begin{aligned}{\mathcal {M}}(\alpha ,\beta ,\gamma )&={\begin{bmatrix}\cos \gamma &-\sin \gamma &0\\\sin \gamma &\cos \gamma &0\\0&0&1\end{bmatrix}}{\begin{bmatrix}\cos \beta &0&\sin \beta \\0&1&0\\-\sin \beta &0&\cos \beta \end{bmatrix}}{\begin{bmatrix}1&0&0\\0&\cos \alpha &-\sin \alpha \\0&\sin \alpha &\cos \alpha \end{bmatrix}}\\&={\begin{bmatrix}\cos \gamma \cos \beta &-\sin \gamma &\cos \gamma \sin \beta \\\sin \gamma \cos \beta &\cos \gamma &\sin \gamma \sin \beta \\-\sin \beta &0&\cos \beta \end{bmatrix}}{\begin{bmatrix}1&0&0\\0&\cos \alpha &-\sin \alpha \\0&\sin \alpha &\cos \alpha \end{bmatrix}}\\&={\begin{bmatrix}\cos \gamma \cos \beta &-\sin \gamma \cos \alpha +\cos \gamma \sin \beta \sin \alpha &\sin \gamma \sin \alpha +\cos \gamma \sin \beta \cos \alpha \\\sin \gamma \cos \beta &\cos \gamma \cos \alpha +\sin \gamma \sin \beta \sin \alpha &-\cos \gamma \sin \alpha +\sin \gamma \sin \beta \cos \alpha \\-\sin \beta &\cos \beta \sin \alpha &\cos \beta \cos \alpha \end{bmatrix}}\end{aligned}}}

对称保持 SVD 表示

编辑

对旋转轴

q

{\displaystyle q}

和旋转角

θ

{\displaystyle \theta }

,旋转矩阵

M

=

q

q

T

+

Q

G

Q

T

{\displaystyle {\mathcal {M}}=qq^{T}+QGQ^{T}}

这里的

Q

=

[

q

1

,

q

2

]

{\displaystyle Q={\begin{bmatrix}q_{1},&q_{2}\end{bmatrix}}}

的纵列张开正交于

q

{\displaystyle q}

的空间而

G

{\displaystyle G}

θ

{\displaystyle \theta }

度 Givens 旋转,就是说

G

=

[

cos

θ

sin

θ

sin

θ

cos

θ

]

{\displaystyle G={\begin{bmatrix}\cos \theta &\sin \theta \\-\sin \theta &\cos \theta \end{bmatrix}}}

相关推荐