1、第第6 6章章 三维图形学基础三维图形学基础三维图形几何变换三维图形几何变换1三维图形的投影三维图形的投影2三维裁剪三维裁剪3坐标系统坐标系统4三维图形的输出流程三维图形的输出流程5本章知识结构图本章知识结构图6.1 6.1 三维图形的几何变换三维图形的几何变换内容内容研究内容三维坐标系的建立三维坐标系的建立三维图形几何变换三维图形几何变换 三维坐标系变换三维坐标系变换 三维图形的平移、比例及旋转变换是对二维变换的扩展,即三维情况下应附加考虑Z坐标的变换。三维平移是由一个三维平移向量规定平移距离;三维比例变换用来指定三个比例因子。而三维旋转一般不能直接由二维变换扩展得到,因为三维旋转可围绕空间
2、任何方位的轴进行。像二维变换情况一样,三维几何变换方程也可以用变换矩阵表示。任何一个变换序列均可用一个矩阵表示,此矩阵是把序列中的各个矩阵级联到一起而得到的。2 2比例变换比例变换 设空间一点P(x,y,z)以原点为中心,在三根轴上分别放大或缩小Sx、Sy、Sz倍,变换矩阵为:000000(,)0000001xxyyxyzzzSSS SSSS 3 3旋转变换旋转变换 三维空间的旋转可以有绕x、y、z轴的旋转以及绕空间一条任意轴的旋转等,在此先讨论前面三种,绕空间一条任意轴的旋转在后面章节讨论。(1)绕x轴的旋转 当点P(x,y,z)绕x轴做角度为的旋转到P(x,y,z)时,点的x坐标值不变,如
3、下图6.2示,即cossinsincosxxyyzzyz 变换矩阵为10000cossin0()0sincos00001xR (2)(2)绕绕y y轴的旋转轴的旋转 当点P(x,y,z)绕y轴做角度为 的旋转到P(x,y,z)时,点的y坐标值不变,即cossinsincosxxzyyzxz 变换矩阵为如下图6.3所示:cos0sin00100()sin0cos00001yRcossin00sincos00()00100001zR (3)绕z轴的旋转 当点P(x,y,z)绕z轴做角度为的旋转到P(x,y,z)时,点的z坐标值不变,即如下图6.4所示cossinsincosxxyyxyzz 变换矩
4、阵为 4.4.反射变换反射变换 如果要对于x y平面进行变换,此变换实际上是改变z坐标的符号而保持x、y坐标不变,一点相对于x y平面反射变换矩阵为1000010000100001xyRF 同样可定义相对于y z平面或x z平面进行变换的矩阵。1000010000100001yzRF1000010000100001zxRF 如果要实现对其他平面的反射,可把上述对于坐标平面的反射与旋转组合起来建立变换矩阵,这就与二维情况下绕任意直线反射的情况一样。5 5错切变换错切变换 三维错切变换是指对定义一个点的三个坐标值中的两个进行变换,使三维形体发生错切变形的变换。下面是以z轴为依赖轴(z值不变)产生三
5、维错切的变换矩阵:100010(,)00100001xyzxyshshSHsh sh 其中,参数shx及shy可取任意实数。上述变换矩阵的效果是把x及y 坐标改变成一个与z坐标成正比的量,而z 坐标值不变。这样就使垂直于z轴的平面边界偏移一个与z成正比的量。对x轴及y轴进行错切变换的矩阵可相似地定义。6 6围绕任意轴的旋转变换围绕任意轴的旋转变换 在给定旋转轴的特征及旋转角之后,可用以下五步完成对任意轴的旋转。(1)平移通物体使旋转轴过坐标原点。(2)旋转物体使旋转轴与某一坐标轴重合。(3)进行规定的旋转。(4)进行反旋转使旋转轴回到原来的方位。(5)进行反平移使旋转轴回到原来的位置。在进行上
6、述变换时,可使旋转轴与三个坐标轴的任一个重合。7 7三维几何变换的一般形式三维几何变换的一般形式 设图形上一点的坐标为P(x,y,z),经过三维几何变换后的坐标为P(x,y,z),变换矩阵一般可写为100011xabcdxyefghyzijklz 即xaxbyczdyexfygzhzixjykzl 6.1.3 三维坐标系变换三维坐标系变换 实现图形变换可采用两种思想,第一种就是在同一个坐标系中实现图形的平移、旋转等变换,变换后的图形与变换前的图形在同一个坐标系中;另一种等效的方法是把变换看成是坐标系的变动,变换前和变换后的图形在不同的坐标系中。6.2 6.2 三维图形的投影三维图形的投影6.2
7、.1 投影与投影变换的定义投影与投影变换的定义 投影是将n维的点变成小于n维的点。投影变换就是把三维立体(或物体)投射到投影面上得到二维平面图形。在三维空间中,选择一个点,记这个点为投影中心;不经过该点再定义一个平面,记这个平面为投影面;从投影中心向投影面引任意多条射线,记这些射线为投影线。穿过物体的投影线将于投影面相交,在投影面上形成物体的像,这个像记为三维物体在二维投影面上的投影。图6.6表示了同一直线段AB的两种不同的投影。由于直线的平面投影本身仍是一条直线,所以对直线AB作投影变换时,只需对线段的两个端点A和B作投影变换,连接两个端点在投影面上的投影A和B就可以得到整个直线段的投影AB
8、。6.2.2 6.2.2 平面几何投影的分类平面几何投影的分类 根据投影中心和投影面的距离远近,平面几何投影可以分为两大类,即平行投影和透视投影。在平行投影中,投影中心到投影面的距离是无限的;而在透视投影中,投影中心到投影面的距离是有限的,如图6.6所示。当投影中心在无限远时,投影线互相平行,所以定义平行投影时,只需给出投影线的方向,而定义透视投影时,需要明确给出投影中心的位置。下图6.7给出了各类投影之间的逻辑关系,它们共同的特点是有一个投影面和一个投影中心或者投影方向。6.2.3 6.2.3 透视投影透视投影 透视投影和我们用眼睛观看现实世界所得到的景象很相近。同样的物体,离视点近则看起来
9、比较大,离视点远则看起来比较小,即物体透视投影的大小与物体到投影中心的距离成反比,这就是所谓的透视缩小效应。因此透视投影更具有立体感和真实感,但透视投影不能真实地反映物体的精确尺寸和形状。三维物体进行透视变换时,物体中不平行与投影面的任意一组平行线的投影汇聚成一点,这个点称为灭点,坐标抽上的灭点称为主灭点。灭点可以看作是无限远处的一点在投影面上的投影。透视投影的灭点有无限多个,不同方向的平行线在投影面上就能形成不同的灭点。由于有x、y和z三个坐标轴,所以主灭点最多有三个。根据主灭点的个数,也即按投影面与坐标轴的夹角来分,透视投影可以分为一点透视、二点透视和三点透视。一点透视有一个主灭点,即投影
10、面与一个坐标轴正交,与另外两个坐标轴平行。二点透视有两个主灭点,即投影面与两个坐标轴相交,与另一个坐标轴平行。三点透视有三个主灭点,即投影面与三个坐标轴都相交。透视的类型如下图6.8示:6.2.4 6.2.4 平行投影平行投影 平行投影可根据投影方向与投影面的夹角分成两类:正投影和斜投影。当投影方向与投影面的夹角为90时,得到的投影为正投影,否则为斜投影,如下图6.9示。1 1正投影正投影 正投影根据投影面与坐标轴的夹角又可分为两类:三视图和正轴测图。当投影面与某坐标轴垂直时,得到的投影为三视图,这时投影方向与这个坐标铀的方向一致;否则,得到的投影为正轴测图,如图6.10所示。通常说的三视图包
11、括主视图、侧视图和俯视图三种,投影面分别与x轴、y轴和z轴垂直。下图6.11显示了一个三维形体及其三视图。正轴测有等轴测、正二测和正三测三种。当投影面与三个坐标轴之间的夹角都相等时为正等测;当投影面与两个坐标轴之间的夹角相等时为正二测;当投影面与三个坐标轴之间的夹角都不相等时为正三测,如下6.12图所示。2 2斜投影斜投影 斜投影是第二类平行投影,与正投影的区别在于投影方向与投影面不垂直。斜投影将正投影的三视图和正轴测的特性结合起来,既能像三视图那样在主平面上进行距离和角度的测量,又能像正轴测那样同时反映物体的多个面,具有立体效果。通常选择投影面垂直于某个主轴,这样,对于平行于投影面的物体表面
12、可进行距离和角度的测量,而对物体的其他面,可沿这根主轴测量距离。常用的两种斜投影是斜等测和斜二测。如下图6.13示:下图表示的是一个单位立方体在xoy平面上的几种斜投影:6.3 6.3 三维裁剪三维裁剪在齐次坐标中在齐次坐标中裁剪裁剪用三维规范视见用三维规范视见体进行裁剪体进行裁剪三维裁剪三维裁剪由齐次坐标表示的图形进行裁剪有两种方法:一种方法是将由齐次坐标表示的图形进行裁剪有两种方法:一种方法是将齐次坐标转化为三维坐标,在三维空间中关于视见体裁剪;齐次坐标转化为三维坐标,在三维空间中关于视见体裁剪;另一种方法是直接在齐次坐标空间中裁剪。另一种方法是直接在齐次坐标空间中裁剪。6.3.1 6.3
13、.1 用三维规范视见体进行裁剪用三维规范视见体进行裁剪 视见体就是三维裁剪窗口,规范视见体就是三维空间中的一个固定位置和大小的裁剪窗口。有了27个区域的编码后,就可以得到三维直线段裁剪的编码算法,具体步骤如下所述。1.取线段两端点的编码为其所在区域的编码。2.如果线段两个端点的编码都为零,则该线段完全落在视见体内,显示该线段,裁剪结束;否则进入步骤3。3.如果线段两个端点的编码按位逻辑与为非零,则该线段完全落在视见体外侧,该线段显然不可见,舍弃,裁剪结束;否则进入步骤4。4.线段必然和视见体的某个面相交,求出该交点,该交点将线段分成两段。丢弃落在视见体外侧的一段,对另一段线段重复步骤1到步骤4
14、,直到裁剪结束。和二维逐边裁剪一样,求交测试需要对视见体的六个面按一定的顺序进行。6.3.2 6.3.2 在齐次坐标中裁剪在齐次坐标中裁剪 规范视见体的六个平面可以写成 -1u1,-1v1,-1n0 设空间点 所对应的齐次坐标为,其中 将它们代入六个平面的表达式得 -huhh,-hvhh,-hnh0 上式表明,在齐次坐标空间中,裁剪窗口的六个面为:有了齐次坐标系中的裁剪窗口,就可以将许多二维图形的裁剪推广过来,不过此时的裁剪是在四维空间内进行的。/,/,/.hhhuuhvvhnnh,0,hhhhhhuhuhvhvhnnh 6.4 6.4 坐标系统坐标系统坐标系世界坐标系世界坐标系局部坐标系局部
15、坐标系观察坐标系观察坐标系 三维空间中,最常用的坐标系有模型坐标系、世界坐标系、观察坐标系和屏幕坐标系,由于屏幕坐标系也就是二维中的屏幕坐标系,所以下面只对前三个坐标系给予简单介绍。1 1世界坐标系世界坐标系世界坐标系就是物体所在的坐标系,常常采用右手坐标系,如下图所示。2 2局部坐标系局部坐标系由于物体在世界坐标系中表示得比较复杂,如图6.15所示,为了简化这种表示,人们又经常在物体之上定义一个坐标系,这个坐标系叫局部坐标系,又叫模型坐标系(Modeling Coordinate),如图下图所示。由于模型坐标系是建立在物体的上面,所以物体表示起来比较简单,易于描述。3 3观察坐标系观察坐标系
16、 在对物体进行投影时,需要在世界坐标系定义投影平面和投影中心,由于投影的角度是任意的,有时得到的投影平面和投影中心很复杂,导致投影变换也很复杂。这时候我们可以以投影平面作为一个坐标面来建立一个三维坐标系uvn,称为观察坐标系(View Reference Coordinate,VRC)。图图 6.15观察坐标系如下图6.16所示:6.5 6.5 三维图形的输出流程三维图形的输出流程 物体首先是定义在自己的模型坐标系中,经过模型变换,得到在世界坐标系中的表示方式,再经过世界坐标系到观察坐标系的观察变换,进一步得到在观察坐标系中的描述。观察坐标系中的视见体(三维裁剪窗口)规定了物体的可见范围,裁剪后得到的物体被投影到投影平面上的窗口内,再由窗口到视区的变换变换到屏幕坐标系中,扫描转换后显示出来。综上所述,得到三维图形的输出流程,如下图6.17所示。