三维变换及三维观察
三维基本几何变换(三维齐次坐标变换矩阵)
平移变换
Tt=⎡⎣⎢⎢⎢⎢100Tx010Ty001Tz0001⎤⎦⎥⎥⎥⎥
T
t
=
[
1
0
0
0
0
1
0
0
0
0
1
0
T
x
T
y
T
z
1
]
一般比例变换:
Ts=⎡⎣⎢⎢⎢a0000e0000j00001⎤⎦⎥⎥⎥
T
s
=
[
a
0
0
0
0
e
0
0
0
0
j
0
0
0
0
1
]
整体比例变换:
Ts=⎡⎣⎢⎢⎢100001000010000s⎤⎦⎥⎥⎥
T
s
=
[
1
0
0
0
0
1
0
0
0
0
1
0
0
0
0
s
]
旋转变换:
绕z轴旋转:
TRZ=⎡⎣⎢⎢⎢cosθ−sinθ00sinθcosθ0000100001⎤⎦⎥⎥⎥
T
R
Z
=
[
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轴旋转:
TRX=⎡⎣⎢⎢⎢10000cosθ−sinθ00sinθcosθ00001⎤⎦⎥⎥⎥
T
R
X
=
[
1
0
0
0
0
c
o
s
θ
s
i
n
θ
0
0
−
s
i
n
θ
c
o
s
θ
0
0
0
0
1
]
绕y轴旋转:
TRY=⎡⎣⎢⎢⎢cosθ0sinθ00100−sinθ0cosθ00001⎤⎦⎥⎥⎥
T
R
Y
=
[
c
o
s
θ
0
−
s
i
n
θ
0
0
1
0
0
s
i
n
θ
0
c
o
s
θ
0
0
0
0
1
]
关于坐标平面对称:
关于XOY平面对称:
TFXY=⎡⎣⎢⎢⎢1000010000−100001⎤⎦⎥⎥⎥
T
F
X
Y
=
[
1
0
0
0
0
1
0
0
0
0
−
1
0
0
0
0
1
]
关于YOZ平面对称:
TFYZ=⎡⎣⎢⎢⎢−1000010000100001⎤⎦⎥⎥⎥
T
F
Y
Z
=
[
−
1
0
0
0
0
1
0
0
0
0
1
0
0
0
0
1
]
关于ZOX平面对称:
TFZX=⎡⎣⎢⎢⎢10000−10000100001⎤⎦⎥⎥⎥
T
F
Z
X
=
[
1
0
0
0
0
−
1
0
0
0
0
1
0
0
0
0
1
]
关于坐标轴的对称变换:
关于x轴的对称:
TFx=⎡⎣⎢⎢⎢10000−10000−100001⎤⎦⎥⎥⎥
T
F
x
=
[
1
0
0
0
0
−
1
0
0
0
0
−
1
0
0
0
0
1
]
关于y轴的对称:
TFy=⎡⎣⎢⎢⎢−1000010000−100001⎤⎦⎥⎥⎥
T
F
y
=
[
−
1
0
0
0
0
1
0
0
0
0
−
1
0
0
0
0
1
]
关于z轴的对称:
TFz=⎡⎣⎢⎢⎢−10000−10000100001⎤⎦⎥⎥⎥
T
F
z
=
[
−
1
0
0
0
0
−
1
0
0
0
0
1
0
0
0
0
1
]
关于原点的对称:
TFz=⎡⎣⎢⎢⎢−10000−10000−100001⎤⎦⎥⎥⎥
T
F
z
=
[
−
1
0
0
0
0
−
1
0
0
0
0
−
1
0
0
0
0
1
]
相对于任一参考点的几何变换:(1)将参考点平移到原点 (2)针对原点进行几何变换 (3)进行反平移
绕任意轴的三维旋转变换:
(1) 使任意方向轴的起点与坐标原点重合, 此时进行平移变换 。
(2) 使方向轴与某一坐标轴重合,此时需进行旋转变换,且旋转变换可能不止一次 。
(3) 针对该坐标轴完成变换 。
(4) 用逆旋转变换使方向轴回到其原始方向 。
(5) 用逆平移变换使方向轴回到其原始位置 。
例如:
(1)将坐标原点平移到A点
TA=⎡⎣⎢⎢⎢⎢100−Tx010−Ty001−Tz0001⎤⎦⎥⎥⎥⎥
T
A
=
[
1
0
0
0
0
1
0
0
0
0
1
0
−
T
x
−
T
y
−
T
z
1
]
(2) 将O’BB’绕x’轴逆时针旋转α 角,则O’B旋转到X’OZ’平面上。
TRx=⎡⎣⎢⎢⎢10000cosα−sinα00sinαcosα00001⎤⎦⎥⎥⎥
T
R
x
=
[
1
0
0
0
0
c
o
s
α
sin
α
0
0
−
s
i
n
α
c
o
s
α
0
0
0
0
1
]
(3)将O’B绕y’轴顺时针旋转β 角,则O’B旋转到z’轴上。
TRy=⎡⎣⎢⎢⎢⎢cos(−β)0sin(−β)00100−sin(−β)0cos(−β)00001⎤⎦⎥⎥⎥⎥
T
R
y
=
[
c
o
s
(
−
β
)
0
−
s
i
n
(
−
β
)
0
0
1
0
0
s
i
n
(
−
β
)
0
c
o
s
(
−
β
)
0
0
0
0
1
]
(4) 经以上三步变换后,AB 轴与z‘ 轴重合,此时绕AB 轴的旋转转换为绕z 轴的旋转
(5) 最后,求
TA,TRx,TRy
T
A
,
T
R
x
,
T
R
y
的逆变换,回到AB原来的位置。
T=TA⋅TRx⋅TRy⋅TR⋅T−1Ry⋅T−1Rx⋅T−1A
T
=
T
A
⋅
T
R
x
⋅
T
R
y
⋅
T
R
⋅
T
R
y
−
1
⋅
T
R
x
−
1
⋅
T
A
−
1
投影变换
平面几何投影变换:投影变换就是把三维立体(或物体)投射到投影面上得到二维平面图形的过程。
平面几何投影主要指平行投影、透视投影以及通过这些投影变换而得到的三维立体的常用平面图形:三视图、轴测图。
观察投影是指在观察空间下进行的图形投影变换。
平行几何投影可分为两大类:
透视投影的投射中心到投射面之间的距离是有限的;平行投影的投射中心到投射面之间的距离是无限的。
平行投影可分为正投影和斜投影,正投影又分为三视图和正轴侧。当投影面与任一坐标轴垂直的时候,得到的投影是三视图;否则得到的就是正轴侧图。
三视图包括主视图、侧视图和俯视图三种,投影面分别与y轴、x轴和z轴垂直。
计算方式:
(1)确定三维形体上各点的位置坐标。
(2)引入齐次坐标,求出所做变换相应的变换矩阵。
(3)将所做变换用矩阵表示,求出变换点的坐标。
(4)画出三视图。
主视图:将三维形体向xoz面(又称V面)作垂直投影( 即正平行投影),得到主视图。
主视图投影矩阵:
Tv=⎡⎣⎢⎢⎢1000000000100001⎤⎦⎥⎥⎥
T
v
=
[
1
0
0
0
0
0
0
0
0
0
1
0
0
0
0
1
]
俯视图:将三维形体向xoy面(又称为H面)作垂直投影得到俯视图。
(1)投影变换
Txoy=⎡⎣⎢⎢⎢1000010000000001⎤⎦⎥⎥⎥
T
x
o
y
=
[
1
0
0
0
0
1
0
0
0
0
0
0
0
0
0
1
]
(2)使H面绕x轴负转
90∘
90
∘
TRx=⎡⎣⎢⎢⎢⎢10000cos(−90∘)−sin(−90∘)00sin(−90∘)cos(−90∘)00001⎤⎦⎥⎥⎥⎥=⎡⎣⎢⎢⎢100000100−1000001⎤⎦⎥⎥⎥
T
R
x
=
[
1
0
0
0
0
c
o
s
(
−
90
∘
)
s
i
n
(
−
90
∘
)
0
0
−
s
i
n
(
−
90
∘
)
c
o
s
(
−
90
∘
)
0
0
0
0
1
]
=
[
1
0
0
0
0
0
−
1
0
0
1
0
0
0
0
0
1
]
(3)使H面沿z方向平移一段距离
−z0
−
z
0
Ttz=⎡⎣⎢⎢⎢10000100001−z00001⎤⎦⎥⎥⎥
T
t
z
=
[
1
0
0
0
0
1
0
0
0
0
1
0
0
0
−
z
0
1
]
俯视图投影矩阵:
T=Txoy⋅TRx⋅Ttz=⎡⎣⎢⎢⎢100000000−10−z00001⎤⎦⎥⎥⎥
T
=
T
x
o
y
⋅
T
R
x
⋅
T
t
z
=
[
1
0
0
0
0
0
−
1
0
0
0
0
0
0
0
−
z
0
1
]
侧视图:将三维形体向yoz面(侧面W)做垂直投影。
(1)侧视图的投影变换:
Tyoz=⎡⎣⎢⎢⎢0000010000100001⎤⎦⎥⎥⎥
T
y
o
z
=
[
0
0
0
0
0
1
0
0
0
0
1
0
0
0
0
1
]
(2)使W面绕z轴正转90^
∘
∘
:
TRZ=⎡⎣⎢⎢⎢⎢cos(90∘)−sin(90∘)00sin(90∘)cos(90∘)0000100001⎤⎦⎥⎥⎥⎥
T
R
Z
=
[
c
o
s
(
90
∘
)
s
i
n
(
90
∘
)
0
0
−
s
i
n
(
90
∘
)
c
o
s
(
90
∘
)
0
0
0
0
1
0
0
0
0
1
]
(3)使W面沿x轴负方向平移一段距离
x0
x
0
Ttx=⎡⎣⎢⎢⎢100−x0010000100001⎤⎦⎥⎥⎥
T
t
x
=
[
1
0
0
0
0
1
0
0
0
0
1
0
−
x
0
0
0
1
]
侧视图投影矩阵:
T=Tyoz⋅TRZ⋅Ttx=⎡⎣⎢⎢⎢0−10−x0000000100001⎤⎦⎥⎥⎥
T
=
T
y
o
z
⋅
T
R
Z
⋅
T
t
x
=
[
0
0
0
0
−
1
0
0
0
0
0
1
0
−
x
0
0
0
1
]
正轴侧图:
(1)先绕y轴旋转
α
α
角,使AC与x轴重合。
TRY=⎡⎣⎢⎢⎢⎢cos(−α)0sin(−α)00100−sin(−α)0cos(−α)00001⎤⎦⎥⎥⎥⎥
T
R
Y
=
[
c
o
s
(
−
α
)
0
−
s
i
n
(
−
α
)
0
0
1
0
0
s
i
n
(
−
α
)
0
c
o
s
(
−
α
)
0
0
0
0
1
]
(2)再绕x轴旋转
β
β
角,使之与xoy平面重合。
TRX=⎡⎣⎢⎢⎢10000cosβ−sinβ00sinβcosβ00001⎤⎦⎥⎥⎥
T
R
X
=
[
1
0
0
0
0
c
o
s
β
s
i
n
β
0
0
−
s
i
n
β
c
o
s
β
0
0
0
0
1
]
(3)将三维物体向xoy平面作正投影。
Txoy=⎡⎣⎢⎢⎢1000010000000001⎤⎦⎥⎥⎥
T
x
o
y
=
[
1
0
0
0
0
1
0
0
0
0
0
0
0
0
0
1
]
正等轴侧图投影矩阵:
T=TRY⋅TRX⋅Txoy=⎡⎣⎢⎢⎢cosα0−sinα0−sinα⋅sinβcosβ−cosα⋅sinβ000000001⎤⎦⎥⎥⎥
T
=
T
R
Y
⋅
T
R
X
⋅
T
x
o
y
=
[
c
o
s
α
−
s
i
n
α
⋅
s
i
n
β
0
0
0
c
o
s
β
0
0
−
s
i
n
α
−
c
o
s
α
⋅
s
i
n
β
0
0
0
0
0
1
]
透视投影:变换矩阵:
⎡⎣⎢⎢⎢100001000000001/d1⎤⎦⎥⎥⎥
[
1
0
0
0
0
1
0
0
0
0
0
1
/
d
0
0
0
1
]
透视缩小效应:物体的透视投影的大小与物体到投影中心的z方向距离成反比.
透视投影特征:
透视投影的深度感更强,更加具有真实感,但透视投影不能够准确反映物体的大小和形状。
透视投影的大小与物体到投影中心的距离有关。
一组平行线若平行于投影平面时,它们的透视投影仍然保持平行。
只有当物体表面平行于投影平面时,该表面上的角度在透视投影中才能被保持。
三维观察变换:
观察平面,即投影平面。
观察坐标系:通过改变观察参考点的位置或改变N的方向可以使用户在不同距离和角度观察三维物体。
观察空间:将观察窗口沿投影方向做平移运动产生的三维物体。
观察空间的大小和形状依赖于窗口的大小和投影方向。
三维观察流程:
用户坐标系到观察坐标系的变换:
(1) 平移观察参考点到用户坐标系原点
(2) 进行旋转变换分别让
xv
x
v
、
yv
y
v
和
zv
z
v
轴对应到用户坐标系中的x、y和z轴。