在探究三维空间下的变换前,首先研究二位空间,因为比较直观,再推广到三维空间。
首先应该清楚的一点是:旋转、平移对于坐标系下的点
以及坐标系
本身而言都是相对的(运动的相对性)。
例如:
-
X
O
Y
XOY
XOY坐标系不动,点
P
(
x
,
y
)
P(x, y)
P(x,y)沿
顺时针
方向旋转 θ \theta θ,得到点 P ′ P' P′,此时点 P ′ P' P′在 X O Y XOY XOY坐标系的坐标为 ( x ′ , y ′ ) (x', y') (x′,y′); - 点
P
(
x
,
y
)
P(x, y)
P(x,y)不动,坐标轴
X
O
Y
XOY
XOY沿着
逆时针
方向旋转 θ \theta θ,得到坐标轴 X ′ O Y ′ X'OY' X′OY′,此时点 P P P在 X ′ O Y ′ X'OY' X′OY′下的坐标为 ( x ′ , y ′ ) (x', y') (x′,y′)。
这两条命题是等价的。
因此,仅讨论坐标系变换。
二维空间下的坐标系变换
平移:
旋转:
注:图片来源https://www.cnblogs.com/meteoric_cry/p/7987548.html
所以对于二维旋转来讲,旋转可描述为:设点
P
P
P在
X
O
Y
XOY
XOY坐标系下坐标为
[
x
y
]
\begin{bmatrix} x \\ y \end{bmatrix}
[xy],将坐标系
X
O
Y
XOY
XOY顺时针旋转
θ
\theta
θ后,
P
P
P点坐标为
[
x
′
y
′
]
\begin{bmatrix} x' \\ y' \end{bmatrix}
[x′y′],则有:
[
x
′
y
′
]
=
[
c
o
s
θ
−
s
i
n
θ
s
i
n
θ
c
o
s
θ
]
[
x
y
]
\begin{bmatrix} x' \\ y' \end{bmatrix} =\begin{bmatrix} cos\theta & -sin\theta \\ sin\theta & cos\theta \end{bmatrix} \begin{bmatrix} x \\ y \end{bmatrix}
[x′y′]=[cosθsinθ−sinθcosθ][xy]
旋转矩阵可记为:
Q
=
[
c
o
s
θ
−
s
i
n
θ
s
i
n
θ
c
o
s
θ
]
Q = \begin{bmatrix} cos\theta & -sin\theta \\ sin\theta & cos\theta \end{bmatrix}
Q=[cosθsinθ−sinθcosθ]
三维空间下的坐标系变换
平移:
旋转:
三维空间下,当固定轴选定后,旋转就等价于:其余两轴在其平面内的(二维)旋转。
假设以逆着固定轴正向
的方向看去的顺时针
为旋转的正向
。
-
绕 x x x轴旋转 α \alpha α(在 y z yz yz平面顺时针旋转):
则旋转前后的坐标变化可描述为:
[ x ′ y ′ x ′ 1 ] = [ 1 0 0 0 0 c o s α − s i n α 0 0 s i n α c o s α 0 0 0 0 1 ] [ x y x 1 ] \begin{bmatrix} x' \\ y' \\ x' \\ 1 \end{bmatrix} = \begin{bmatrix} 1 & 0 & 0 & 0 \\ 0 & cos\alpha & -sin\alpha & 0 \\ 0 & sin\alpha & cos\alpha & 0 \\ 0 &0 & 0& 1\end{bmatrix} \begin{bmatrix} x \\ y \\ x \\ 1 \end{bmatrix} x′y′x′1 = 10000cosαsinα00−sinαcosα00001 xyx1 -
绕 y y y轴旋转 β \beta β(在 x z xz xz平面顺时针旋转):
则旋转前后的坐标变化可描述为:
[ x ′ y ′ x ′ 1 ] = [ c o s β 0 s i n β 0 0 1 0 0 − s i n β 0 c o s β 0 0 0 0 1 ] [ x y x 1 ] \begin{bmatrix} x' \\ y' \\ x' \\ 1 \end{bmatrix} = \begin{bmatrix} cos\beta & 0 & sin\beta & 0 \\ 0 & 1 & 0 & 0 \\ -sin\beta & 0 & cos\beta & 0 \\ 0 &0 & 0& 1\end{bmatrix} \begin{bmatrix} x \\ y \\ x \\ 1 \end{bmatrix} x′y′x′1 = cosβ0−sinβ00100sinβ0cosβ00001 xyx1 -
绕 z z z轴旋转 γ \gamma γ(在 x y xy xy平面顺时针旋转):
则旋转前后的坐标变化可描述为:
[ x ′ y ′ x ′ 1 ] = [ c o s γ − s i n γ 0 0 s i n γ c o s γ 0 0 0 0 1 0 0 0 0 1 ] [ x y x 1 ] \begin{bmatrix} x' \\ y' \\ x' \\ 1 \end{bmatrix} = \begin{bmatrix} cos\gamma & -sin\gamma & 0 & 0 \\ sin\gamma & cos\gamma & 0 & 0 \\ 0 & 0 & 1 & 0 \\ 0 &0 & 0& 1\end{bmatrix} \begin{bmatrix} x \\ y \\ x \\ 1 \end{bmatrix} x′y′x′1 = cosγsinγ00−sinγcosγ0000100001 xyx1
综上,当坐标系沿着 X , Y , Z X,Y,Z X,Y,Z轴分别旋转 α , β , γ \alpha,\beta,\gamma α,β,γ后,旋转矩阵为3个沿单一坐标轴旋转的旋转矩阵的乘积,前后的坐标变化可描述为: