在Cesium中的相机—旋转矩阵一文中,我们给出了对于绕某个轴旋转的旋转矩阵,并给出了两种旋转方式的区别。
本文讨论连续旋转的旋转矩阵,仍然给出两种旋转的区别。
下图中,原始坐标系 o − x y z o-xyz o−xyz为蓝色所示,经过三次欧拉旋转后得到最终的坐标系 o − X Y Z o-XYZ o−XYZ(图中红色)。
三次旋转为:
- 首先绕Z轴旋转 α \alpha α角度,此时X轴指向N;
- 然后绕新的坐标系的X轴(N方向)旋转 β \beta β角度,此时将原来的Z轴旋转至红色的Z轴方向;
- 最后再绕新的坐标系的Z轴(红色)旋转
γ
\gamma
γ角度,得到最终的坐标系
o
−
X
Y
Z
o-XYZ
o−XYZ(图中红色)。
则坐标系 o − x y z o-xyz o−xyz到坐标 o − X Y Z o-XYZ o−XYZ的旋转矩阵可由三次旋转矩阵相乘得到,每次旋转的角度称为欧拉角。
下面仍然分两种方式,分别给出,以便区别。
第一种旋转矩阵(仅坐标系旋转)
若以
[
x
,
y
,
z
]
T
\begin{bmatrix} x,y,z\end{bmatrix}^{T}
[x,y,z]T表示点P在原坐标系
o
−
x
y
z
o-xyz
o−xyz中的坐标分量,
[
x
′
,
y
′
,
z
′
]
T
\begin{bmatrix} x',y',z'\end{bmatrix}^{T}
[x′,y′,z′]T表示点P在旋转后的坐标系
o
−
X
Y
Z
o-XYZ
o−XYZ中的坐标分量,则有:
[
x
′
y
′
z
′
]
=
M
⋅
[
x
y
z
]
=
M
z
(
γ
)
⋅
M
x
(
β
)
⋅
M
z
(
α
)
⋅
[
x
y
z
]
(
1
)
\begin{bmatrix} {x}'\\{y}' \\{z}' \end{bmatrix}= M\cdot\begin{bmatrix} x \\y \\z \end{bmatrix}= M_z(\gamma)\cdot M_x(\beta)\cdot M_z(\alpha)\cdot\begin{bmatrix} x \\y \\z \end{bmatrix} (1)
⎣⎡x′y′z′⎦⎤=M⋅⎣⎡xyz⎦⎤=Mz(γ)⋅Mx(β)⋅Mz(α)⋅⎣⎡xyz⎦⎤(1)
旋转矩阵
M
M
M是将点P在原坐标系中的坐标分量转换到新坐标系中的坐标分量。
第二种旋转矩阵(点或矢量随坐标系一起旋转)
以
[
x
,
y
,
z
]
T
\begin{bmatrix} x,y,z\end{bmatrix}^{T}
[x,y,z]T表示点P在旋转后坐标系
o
−
X
Y
Z
o-XYZ
o−XYZ中的坐标分量(始终不变),
[
x
′
,
y
′
,
z
′
]
T
\begin{bmatrix} x',y',z'\end{bmatrix}^{T}
[x′,y′,z′]T表示点P旋转后在原坐标系
o
−
x
y
z
o-xyz
o−xyz中的坐标分量,则有:
[
x
′
y
′
z
′
]
=
M
⋅
[
x
y
z
]
=
M
z
(
α
)
⋅
M
x
(
β
)
⋅
M
z
(
γ
)
⋅
[
x
y
z
]
(
2
)
\begin{bmatrix} {x}'\\{y}' \\{z}' \end{bmatrix}= M\cdot\begin{bmatrix} x \\y \\z \end{bmatrix}= M_z(\alpha)\cdot M_x(\beta)\cdot M_z(\gamma)\cdot\begin{bmatrix} x \\y \\z \end{bmatrix} (2)
⎣⎡x′y′z′⎦⎤=M⋅⎣⎡xyz⎦⎤=Mz(α)⋅Mx(β)⋅Mz(γ)⋅⎣⎡xyz⎦⎤(2)
点P始终随坐标系
o
−
X
Y
Z
o-XYZ
o−XYZ一起旋转,因此坐标分量始终为
[
x
,
y
,
z
]
T
\begin{bmatrix} x,y,z\end{bmatrix}^{T}
[x,y,z]T
旋转矩阵
M
M
M是将点P在旋转后坐标系
o
−
X
Y
Z
o-XYZ
o−XYZ(也可看成体坐标系)中的坐标分量转换到旋转前的原坐标系中的坐标分量。
注意!上述两式中,基础旋转矩阵刚好互逆,即式(1)和式(2)中的 M z ( α ) M_z(\alpha) Mz(α)(其它类似)是不同的,刚好互为转置,详细形式参见Cesium中的相机—旋转矩阵。
Cesium中,采用第二种旋转矩阵的形式!