一、背景
计算机图形学中,坐标变换一个重要的内容。在三维坐标空间中,使用齐次坐标可以达到对空间中点进行缩放(Scale)、平移(Translation)和旋转(Rotate)的效果。三维空间中的点可以使用
p
=
[
x
,
y
,
z
,
1
]
⊤
p = [x,y,z,1]^\top
p=[x,y,z,1]⊤表示,三维空间中向量可以使用
v
=
[
x
,
y
,
z
,
0
]
⊤
v=[x,y,z,0]^\top
v=[x,y,z,0]⊤表示。
本文根据games101第4节课程的内容,主要讨论在旋转变换中,旋转矩阵的逆为何等于旋转矩阵的转置。
二、问题描述
在games101第4节中闫老师介绍了空间中坐标的转换。其中第16张ppt如下:
其中旋转矩阵 R v i e w − 1 R_{view}^{-1} Rview−1表示从坐标系统 T v i e w T_{view} Tview转换到坐标系统 M v i e w M_{view} Mview,相应的 R v i e w R_{view} Rview为从坐标系统 M v i e w M_{view} Mview转换到坐标系统 T v i e w T_{view} Tview。同时可以得知 R v i e w − 1 = R v i e w ⊤ R_{view}^{-1}=R_{view}^\top Rview−1=Rview⊤,那么为什么这么巧合 R v i e w − 1 = R v i e w ⊤ R_{view}^{-1}=R_{view}^\top Rview−1=Rview⊤?(就是ppt中的蓝色的WHY),本文接下来将证明 R v i e w − 1 = R v i e w ⊤ R_{view}^{-1}=R_{view}^\top Rview−1=Rview⊤。
三、证明
1. 证明
原文中使用的是齐次坐标,为了便于计算,接下来将使用绝对坐标,那么
R
R
R和
R
⊤
R^\top
R⊤分别为:
R
v
i
e
w
=
[
x
g
×
t
x
t
x
−
g
y
g
×
t
y
t
y
−
g
z
g
×
t
z
t
z
−
g
]
R_{view}= \begin{gathered} \begin{bmatrix} x_{g\times t} & x_{t} & x_{-g} &\\ y_{g\times t}&y_{t}&y_{-g} \\ z_{g\times t}&z_{t} & z_{-g} \end{bmatrix} \end{gathered}
Rview=
xg×tyg×tzg×txtytztx−gy−gz−g
R
v
i
e
w
⊤
=
[
x
g
×
t
y
g
×
t
z
g
×
t
x
t
y
t
z
t
x
−
g
y
−
g
z
−
g
]
R_{view}^\top= \begin{gathered} \begin{bmatrix} x_{g\times t} & y_{g\times t} & z_{g\times t} &\\ x_{t}&y_{t}&z_{t} \\ x_{-g}&y_{-g} & z_{-g} \end{bmatrix} \end{gathered}
Rview⊤=
xg×txtx−gyg×tyty−gzg×tztz−g
即:
R
v
i
e
w
=
[
X
Y
Z
]
R_{view}= \begin{gathered} \begin{bmatrix} X&Y&Z \end{bmatrix} \end{gathered}
Rview=[XYZ]
R
v
i
e
w
⊤
=
[
X
⊤
Y
⊤
Z
⊤
]
R_{view}^\top= \begin{gathered} \begin{bmatrix} X^\top\\ Y^\top\\ Z^\top \end{bmatrix} \end{gathered}
Rview⊤=
X⊤Y⊤Z⊤
那么
R
v
i
e
w
⊤
⋅
R
v
i
e
w
=
[
X
⊤
⋅
X
X
⊤
⋅
Y
X
⊤
⋅
Z
Y
⊤
⋅
X
Y
⊤
⋅
Y
Y
⊤
⋅
Z
Z
⊤
⋅
X
Z
⊤
⋅
Y
Z
⊤
⋅
Z
]
R_{view}^\top\cdot R_{view}= \begin{gathered} \begin{bmatrix} X^\top\cdot X & X^\top\cdot Y&X^\top\cdot Z\\ Y^\top\cdot X & Y^\top\cdot Y&Y^\top\cdot Z\\ Z^\top\cdot X & Z^\top\cdot Y&Z^\top\cdot Z \end{bmatrix} \end{gathered}
Rview⊤⋅Rview=
X⊤⋅XY⊤⋅XZ⊤⋅XX⊤⋅YY⊤⋅YZ⊤⋅YX⊤⋅ZY⊤⋅ZZ⊤⋅Z
因为
X
,
Y
,
Z
X,Y,Z
X,Y,Z三个向量模长都为1,并且相互垂直,因此可以得到:
X
⊤
⋅
X
=
Y
⊤
⋅
Y
=
Z
⊤
⋅
Z
=
1
X^\top\cdot X=Y^\top\cdot Y=Z^\top \cdot Z = 1
X⊤⋅X=Y⊤⋅Y=Z⊤⋅Z=1
X
⊤
⋅
Y
=
X
⊤
⋅
Z
=
0
X^\top\cdot Y=X^\top\cdot Z=0
X⊤⋅Y=X⊤⋅Z=0
Y
⊤
⋅
Z
=
Y
⊤
⋅
Z
=
0
Y^\top\cdot Z=Y^\top\cdot Z=0
Y⊤⋅Z=Y⊤⋅Z=0
Z
⊤
⋅
X
=
Z
⊤
⋅
Y
=
0
Z^\top\cdot X=Z^\top\cdot Y=0
Z⊤⋅X=Z⊤⋅Y=0
那么
R
v
i
e
w
⊤
⋅
R
v
i
e
w
=
[
1
0
0
0
1
0
0
0
1
]
R_{view}^\top\cdot R_{view}= \begin{gathered} \begin{bmatrix} 1&0&0\\ 0&1&0\\ 0&0&1 \end{bmatrix} \end{gathered}
Rview⊤⋅Rview=
100010001
说明
R
v
i
e
w
⊤
=
R
v
i
e
w
−
1
R_{view}^\top=R_{view}^{-1}
Rview⊤=Rview−1,即求证
R
v
i
e
w
−
1
=
R
v
i
e
w
⊤
R_{view}^{-1}=R_{view}^\top
Rview−1=Rview⊤得证。
同时,也可以得到:
R
v
i
e
w
⋅
R
v
i
e
w
⊤
=
R
v
i
e
w
⊤
⋅
R
v
i
e
w
R_{view}\cdot R_{view}^\top=R_{view}^\top \cdot R_{view}
Rview⋅Rview⊤=Rview⊤⋅Rview
2. 正交矩阵
其实旋转矩阵
R
R
R和
R
−
1
R^{-1}
R−1都为正交矩阵。根据维基百科的定义,正交矩阵为是一个方块矩阵
Q
Q
Q,其元素为实数,而且行向量和列向量皆为正交的单位向量,使得该矩阵的转置矩阵为其逆矩阵:
Q
⊤
=
Q
−
1
<
=
>
Q
⊤
Q
=
Q
Q
⊤
=
I
Q^\top=Q^{-1}<=>Q^\top Q=QQ^\top=I
Q⊤=Q−1<=>Q⊤Q=QQ⊤=I
其中
I
I
I为单位矩阵。
3. 旋转矩阵是正交矩阵的证明
其实根据1.证明和2.正交矩阵的定义可以看出矩阵 R v i e w R_{view} Rview和矩阵 R v i e w R_{view} Rview都为正交矩阵。
四、总结
坐标转换在计算机图形学中是一个重要的内容,可以使用变换矩阵对空间点进行变换。变换可以分为缩放、平移和旋转,其中旋转矩阵 R R R是一个正交矩阵,因此满足 R − 1 = = R ⊤ R^{-1}==R^\top R−1==R⊤。假如从空间 B B B旋转变换到 A A A空间的旋转矩阵为 R B − > A R_{B->A} RB−>A那么,从空间 A A A旋转变换到 B B B空间的旋转矩阵即为 R A − > B = R B − > A ⊤ R_{A->B}=R_{B->A}^\top RA−>B=RB−>A⊤。
五、参考
[1]. Lecture 4Transformation Cont.
[2]. 旋转矩阵(Rotate Matrix)的性质分析
[3]. 理解旋转矩阵的逆等于旋转矩阵的转置