三维变换及三维观察 三维基本几何变换(三维齐次坐标变换矩阵) 平移变换 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轴。