当前位置:首页 > 成教学院毕业论文格式(A4纸型)
如图3.1-2所示。
B
C
图3.1-1
没有消隐的图形具有二义性:(a) 立方体的线框图;(b) 顶点B离视点最近时的消隐;(c) 顶点C离视点最近时的消隐
线消隐:输出线框图 面消隐:输出着色图 图3.1-2
5
3.2消隐算法的分类
消隐处理是计算机绘图中一个引人注意的问题,目前已经提出了多种算法,
按照操作对象的不同表达方式,消隐算法分为两大类:
(1)对象空间算法(Object Space Method)。这种算法是在描述物体的坐标系空间中进行,通过分析对象的三维特性之间的关系来确定其是否可见。 算法描述:
for(坐标系中的每一个物体) {
}
确定未被遮挡的物体或者部分物体; 用恰当的颜色绘制出可见部分;
这种算法的特点是:算法精度高,与显示器的分辨率无关,适合于对精密要求较高的CAD工程领域。比较常用的对象空间算法主要有:平面公式法、背面消除法、径向预排序法、径向排序法、深度排序法等。而比较常用的是前面的四种,它们都是基于背面消隐的原理,也就是对观察点来说朝向后面的物体表面是不可见的,应该进行消隐处理。
(2)图像空间算法(Image Space Method)。这种算法是将图像投影后分解为像素,然后在二维空间内对每一个像素位置,按照一定的规律比较像素之间的Z值,从而确定其是否可见。
算法描述:
for(图像中每一个像素) {
}
确定由投影点与像素连线穿过的距离观察点最近的物体; 用适当的颜色绘制该像素;
6
这种算法的特点是:它是在屏幕坐标系中进行的,生成的图像一般受限于显示器的分辨率。比较常用的几种算法有:Z—Buffer算法、射线踪迹算法、扫描线算法。
从理论上说,对于对象空间算法,一个对象必须和画面中其他对象进行比较,才能确定其可见性。如果画面还有n个对象,则比较操作的计算量为n2次。对于图像空间算法,每个对象都分解为像素,像素之间进行比较。如果每个对象投影后含有N个像素,则比较计算量为N?n次,N虽然很大,但像素之间的比较甚为简单,而且可以利用相邻像素之间的性质连贯性(Coherence)简化计算。因此,在光栅扫描显示系统中实现,有时效率较高。目前,实用的消隐算法常将对象空间算法和图形空间算法结合起来使用:首先,使用对象空间算法删除对象中一部分不可见的面;然后,对剩余面再利用图像空间算法加以分析。 从应用的角度看,有两类消隐问题,即线消隐(Hidden-Line)和面消隐(Hidden—Surface)。前者用于线框图,后者用于填色图。
4. 消隐算法的数学知识
图形学在很大程度上就直接把数学表达式转换成代码,数学表达得越清晰,对应的代码就越容易被理解。所以在正式用到消隐算法之前,有必要对相关的数学知识进行一下梳理,这里只对后面经常用到的相关知识进行给出,不做详细的分析。
4.1向量的叉积
叉积a?b常用于三维向量,它返回的是一个三维向量,该向量与另外两个向量a和b都是正交的,也就是说当a和b相交且不重合的时候,它们的叉积其实就是这两个向量所在平面的法向量,叉积结果得到的向量,其长度与sin?相关:
a?b?a b sin?
既然a?b返回的是一个三维向量,那么它就也有方向,它的方向是用右手坐标系法则确定的,具体来说:假设把你的右手掌底部放在a和b箭尾相交的地方,然后将箭头以最小的角度推向箭头b,这个时候大拇指的指向就是叉积a?b的方向。
4.2线性代数 4.2.1行列式
7
我们通常认为行列式是在研究线性方程组解法的时候被提出来的。然而,从图像学的角度看,行列式是向量相乘的另一种方法。对于二维向量a和b,行列式|ab|表示由a和b形成的平行四边形的面积(见图4.2-1)。这个面积是有符号的,如果a和b符合右手法则,则面积为正,否则为负。对于三个三维向量a、b和c,行列式|abc|表示由这三个向量形成的平行六边形的体积,这个体积也是有正负的(见图4.2-2)。有关行列式和矩阵的计算问题,这里也不做详述。 a b b c a 图4.2-1 图4.2-2
4.2.2矩阵
矩阵就是由遵循一定算术法则的数字元素所组成的阵列,在图形学中,会因为各种目的频繁用到矩阵,例如空间变换等。
在解析几何中,点可以用向量表示。在二维空间中可用(x,y)表示平面上的一点,在三维空间中则用(x,y,z)表示空间一点。因此,可以用点的集合(简称点集)来表示一个平面图形或三维立体,写成矩阵形式为:
?x1y1?
?x2y2??? , ?x3y3??? ????? ?xnyn???x1?x2??x3??...??xny1z1?y2z2??y3z3??......?ynzn??这样就建立了平面图形和空间立体的几何模型。
在计算机绘图中,常常要进行诸如比例、对称、旋转、平移、投影等各种变
换,既然图形学可以用点集来表示。也就是点集定了,则图形学也就确定了。那么,如果点的位置改变了,图形也就随之改变。因此,要对图形进行变换,只要变换点就可以了。
8
共分享92篇相关文档