1、人们观察自然界的物体时,所得视觉映像同观察点、观察方向有关。同样,要用计算机生成一幅三维视图,也需要确定观察点、观察方向,还需要将观察范围以外的部分图形裁剪掉。而且,由于图形输出设备通常都是二维的,还必须将三维图形转换到输出设备的观察平面上,二维图形基元产生图形,从三维物体模型描述到二维图形描述的转换过程称为投影变换。 一、投影的概念一、投影的概念 投影变换分为平行投影和透视投影两种:1、透视投影变换:投影射线汇聚于投影中心,或者说投影中心在有限远处的投影。5.1 5.1 投影概念分类投影概念分类(a) 透视投影变换示意图即从空间选定的一个投影中心和物体上每点连直线从而构成了一簇射线,射线与选
2、定的投影平面的交点集便是物体的投影。见下图(a)。2、平行投影变换:平行投影可以看成投影中心在无限远处的投影。见下图(b)。(b) 平行投影变换示意图投影面投影面投影中心投影中心投影线投影线ABAB投影面投影面投影中心投影中心投影线投影线ABAB透视投影透视投影平行投影平行投影平行投影保持物体的有关比例不变,这是三维绘图中产生比例图画的方法。物体的各个面的精确视图可以由平行投影得到。另一方面,透视投影不保持相关比例,但能够生成真实感视图。对同样大小的物体,离投影面较远的物体比离投影面较近物体的投影图象要小,产生近大远小的效果。二、投影的分类二、投影的分类 平行投影可根据投影方向与投影面的夹角分
3、成两类:正平行投影和斜平行投影。当投影方向与投影面的夹角为90时,得到的投影为正平行投影,否则为斜平行投影, 如下图所示。5.2 5.2 正平行投影正平行投影正平行投影的投影中心是在无限远处,且投影射线与投影平面垂直。正平行投影根据投影面与坐标轴的夹角又可分成两类:正投影(三视图)和正轴测投影。当投影面与某一坐标轴垂直时,得到的投影为三视图,这时投影方向与这个坐标轴的方向一致。否则,得到的投影为正轴测投影,如下图所示。5.2.1 正投影正投影正投影的投影方向与用户坐标系的某个坐标轴方向平行,即投影方向与另外两个坐标轴组成的平面是垂直的。示意图中给出了立方体的各种正投影。在观察坐标系中进行正投影
4、很方便,因为是按Z方向投影,物体的投影图坐标便与它的Z值无关,所以去掉Z变量便是三维物体的二维投影描述。沿Z方向正投影的变换可表示成:其中,xo,yo,zo是投影点坐标,xo,yo,zo是物体上点的坐标。 由于在三视图上保持了有关比例的不变性,可以精确地测量长度和角度等量,因此常用于工程制图。下图是一个三视图投影的例子。5.2.2 正轴测投影正轴测投影正轴测投影的投影方向不与坐标轴方向平行。 为了达到投影要求,需在用户坐标系中安排恰当的观察坐标系位置。假设观察坐标系与用户坐标系重合。经将用户坐标系先绕y轴旋转角,再绕x轴旋转角的变换,形成观察坐标系与用户坐标系的新的位置关系,如上图所示。两坐标
5、系之间的变换矩阵为:在观察坐标系中的正投影是去掉它们的z分量,即可得到正轴测投影的图形。 常用的正轴测投影有:1、正等轴测投影正等轴测投影:投影方向与各坐标轴夹角相等的正轴测投影,此时物体中各边以相同比例缩小,如图所示。根据正轴测投影的变换公式(见正轴测投影示意图),在用户坐标系中,x轴上A点1 0 0 1变换后为:1 0 0 1H = coppinpin -pincop1 y轴上B点0 1 0 1变换后为:0 1 0 1H = 0 cop pin 1 z轴上C点0 0 1 1变换后为: 0 0 1 1H = pin -coppin copcop1 在观察坐标系中的正投影是去掉z分量,上述三点
6、到坐标原点的长度是 ,按正等轴测投影的要求,原用户坐标系中x、y和z方向单位长度的投影长度应相等:AO=BO、CO=BO 即解上述方程组: , , , ,所以正等轴测投影变换矩阵为: 2、正二轴测投影正二轴测投影:投影线与各坐标轴的夹角中有两个相等,使得物体中有两个与坐标轴平行的边等比例缩小的正轴测投影,如图所示。设投影线与x轴及y轴的夹角相等,则AO=BO 即另给一约束条件,设原用户坐标系中z方向单位长度的投影长度是k,即 解上述方程组: , , , 。从而可以确定投影变换矩阵H。 3、正三轴测投影正三轴测投影:投影线与各坐标轴夹角全不相等,使得物体中三个与坐标轴平行的三条边各以不同比例缩小
7、的正轴测投影,如图所示。5.3 5.3 斜平行投影斜平行投影斜平行投影:是指投影射线方向不与投影平面垂直的平行投影。若投影方向用矢量A,B,C表示,则点(Xo,Yo,Zo)的投影直线可用参数写成以Z=0(Zo=0)的平面作为投影平面时,射线与投影面的交点满足t=-Zo/C,所以投影点的坐标是:Xp=XoAZo/C和Yp=YoBZo/C。这些变换关系可写成:xp yp zp 1=xo yo zo 1Mob 其中投影方向不垂直于投影平面的平行投影称为斜平行投影,在斜平行投影中,投影平面一般取坐标平面。(A(A, ,B B, ,C C) )x xy yz z0 0(x xo o,y,yo o,z,z
8、o o) )(x xp p,y,yp p, , z zp p) )投影线的参数方程:投影线的参数方程:x xp p=x=xo o+ +A At ty yp p=y=yo o+ +B Bt tz zp p=z=zo o+ +C Ct t(z(zp p=0, t=-=0, t=-z zo o/C)/C) x xp p= = XoXoA AZo/CZo/Cyp=yp=YoYoB BZo/CZo/C常用的斜平行投影有:1、斜等测投影 斜等测投影:投影方向与投影平面成45的斜平行投影,它保持平行投影平面和垂直投影平面的线的投影长度不变。 2、斜二测投影 斜二测投影:与投影平面成arctg(1/2)角的斜
9、平行投影,它使垂直投影平面的线产生长度为原来1/2的投影线。5.4 5.4 透视投影透视投影透视投影:投影射线汇聚于投影中心,或者说投影中心在有限远处的投影。 透视投影变换的观察坐标系中(见上图所示),投影中心处于坐标系原点,投影平面与Z轴垂直并距原点距离为d。由相似三角形关系求得空间点P(x0,y0,z0)和投影平面上投影点P(xP,yP,zP)的坐标关系:xP=x0d/z0yP=y0d/z0zP=d 可见随着物距z0的增大,投影点的xP和yP将减小。在齐次坐标系中这个变换关系可写成如下所示: xp yp zp w=由上式得xp yp zp w=x0 y0 z0 z0/d,可见w=z0/d,
10、所以当三维图形用透视变换投影到投影面上,图形中与投影面平行的平行线投影后仍保持平行。不与投影面平行的任一组平行线投影后收敛于一点,此点称为灭点。每一组平行线都有其不同的灭点。一般说来,三维图形中有多少组平行线就有多少个灭点。平行于某一坐标轴方向的平行线在投影面上形成的灭点又称作主灭点。因为有X、Y和Z三个坐标轴,所以主灭点最多有三个。当某个坐标轴与投影面平行时,则该坐标轴方向的平行线在投影面上的投影仍保持平行,不形成灭点。投影中主灭点数目由与投影面相交的坐标轴数目来决定,并据此将透视投影分类为一点、二点或三点透视。一点透视有一个主灭点,即投影面与一个坐标轴正交,与另外两个坐标轴平行;两点透视有两个主灭点,即投影面与两个坐标轴相交,与另一个坐标轴平行;三点透视有三个主灭点,即投影面与三个坐标轴都相交。下图说明了一个立方体的一点透视投影和两点透视投影的情形。前面的公式推导假设投影中心在坐标原点及投影面与Z轴垂直,对于不符合这种假设情形的透视投影,其变换关系的推导方法类似,或首先利用几何变换方法对投影中心和投影面进行变换使其符合这种假定。