图形的消隐技术机自6班艾纯财20112496消隐的概念与作用在使用显示设备描绘物体的图形时,必须把三维信息经过某种投影变换,在二维的显示表面上绘制出来。例如,轴测图和透视图,就是通过轴测变换或透视变换,求出所有顶点的投影点,再把各点连结起来。下图中第一个图形代表的是后边哪一个呢?消隐的概念由于投影变换失去了深度信息,往往导致图形的二义性。要消除二义性,就必须在绘制时消除实际不可见的线和面,习惯上称作消除隐藏线和隐藏面,或简称为消隐。消隐的作用提高物体投影图的真实感,使其只有唯一一种解释。消隐的任务就是利用适当的算法,确定哪些边或轮廓线是可见的,或哪些面是可见的,最后只显示可见的边或轮廓线,或可见的面。消隐算法的测试方法针对不同的显示对象和显示要求,会有不同消隐算法与之相适应。重叠测试许多物体的投影是由若干个多边形构成的,将这些多边形两两判别,看它们是否有重叠部分,如果不重叠,说明它们肯定不互相遮挡。这种方法就叫重叠测试。两个多边形不重叠的条件:A在左XAmax≤XbminA在右XAmin≥XBmaxA在下YAmax≤YBminA在上YAmin≥YBmax外接矩形YmaxYminXminXmaxXY重叠测试的几种典型情况(c)(b)Oyx(a)(d)包含性测试测试点与多边形的包含关系有两种方法:1.射线交点数算法2.夹角求和算法射线交点数算法A’P’B’C’D’E’A’P’B’C’D’E’(图A)(图B)由P’向任意方向作一条射线,求射线与多边形的交点数。交点为偶数则P’在多边形之外,交点为奇数则P’在多边形之内。通常,射线作成与坐标轴平行,例如平行于Y轴。射线过顶点(内、外部)射线与多边形的边重合夹角求和算法1P’分别与A’B’C’D’E’连线2令α1∠A’P’B’α2∠B’P’C’α3∠C’P’D’α4∠D’P’E’α5∠E’P’A’A’P’B’C’D’E’A’P’B’C’D’E’之外。在则:若''''''051EDCBAPii之内。在则:''''''251EDCBAPii深度测试深度测试是用来测试一个物体遮挡另一个物体的基本方法。常用的有优先级测试和物体空间测试。深度测试可见性测试可见性测试主要用来判别物体自身各部分哪些部分没有被其自身其它部分遮挡即可见的,哪些部分被其自身其它部分遮挡即不可见的。定义由观察点C至物体方向的视线矢量为S,通过计算物体表面某点的法矢N和视线矢量S的点积即可判别该点是否可见:N·S=|N|·|S|cosθ法矢N指向物体的外部,θ为N和S的夹角,则当N指向视点方向是积为正,即为可见。常用消隐算法经过上述测试方法,可以判断两个物体或物体自身各部分之间是否存在重叠或遮挡关系,如果存在重叠或遮挡关系,则无需消隐处理,否则需要进行消隐处理。在众多消隐技术中,到目前为止还没有哪一种算法能够适用于所有应用领域。Warnock算法(区域子分割算法)Warnock算法是针对平面多面体图形消隐显示的算法。应用该算法需满足两个前提条件:1、所显示的多面体已消除自隐藏面;2、多面体的顶点和边的坐标以及各点的深度已知。Warnock算法的基本思想是:把物体投影到全屏幕窗口上,然后递归分割窗口,直到窗口内目标足够简单,可以显示为止。首先,该算法把初始窗口取作屏幕坐标系的矩形,将场景中的多边形投影到窗口内。如果窗口内没有物体则按背景色显示;若窗口内只有一个面,则把该面显示出来。否则,窗口内含有两个以上的面,则把窗口等分成四个子窗口。对每个小窗口再做上述同样的处理。这样反复地进行下去。如果到某个时刻,窗口仅有象素那么大,而窗口内仍有两个以上的面,这时不必再分割,只要取窗口内最近的可见面的颜色或所有可见面的平均颜色作为该象素的值。窗口与多边形的覆盖关系有四种:1、多边形环绕窗口2、多边形与窗口相交3、窗口环绕多边形4、分离多边形多边形环绕窗口多边形与窗口相交窗口环绕多边形分离多边形下列情况之一发生时,窗口足够简单,可以直接显示:(1)所有多边形均与窗口分离,该窗口置背景色。(2)只有一个多边形与窗口相交,或该多边形包含在窗口中,则先整个窗口置背景色,再对窗口内部多边形扫描线算法填充。(3)窗口中存在一个或多个多边形,但其中离观察者最近的一个多边形包围了窗口,此时将整个窗口填上该多边形的颜色。除以上3种情况,则将窗口一分为四,分得窗口重复上述测试,出现以下情况之一,不再细分,否则继续细分:①该窗口属于上述情况之一时。②窗口的边长与像素宽度相等时,不能再细分,这个窗口对应的像素取最靠近观察者的多边形的颜色或取和这个窗口相交的多边形颜色的平均值。