6.字符的表示与裁剪
1.字符的表示方法
点阵字符——每个字符用一个位图(掩膜) 来表示,位图存的就是表示这个字符的每个像素点的(点亮或不亮)信息。其大小由位图的尺寸来确定,如7×9,9×16,16×24等。某一位取1表示1所在的像素点点亮,某一位取0表示0所在像素点不要点亮。
矢量字符—— 用几何坐标表示字符,保存端点的几何坐标。选一个正方形网格,作为字符的局部坐标空间。网格的大小可选16 × 16,32 × 32,64 × 64等。每个字符由构成它的笔画组成,每个笔画可以看做直线段又由其两端确定。每个端点保存它的坐标值及连线标志。连线标志表示当前端点和前一端点是否存在连线(1表示连线)。用-1表示结束标志。特点:除用直线段表示笔画外,还可采用二次三次曲线段。对矢量字符的变换是对其端点进行图形的几何变换。
2.字符的裁剪方法
简单裁剪方法:用点阵字符的掩膜或矢量字符的网格大小作为字符的包围框,若该包围框在窗口内,则显示字符;否则,不予显示。(字符的一部分在窗口内,一部分在窗口外,也完全不显示)
精确裁剪方法:对于点阵字符,判断组成其笔画的每个像素点是否位于窗口内。对于矢量字符,对组成其笔画的每条线段进行裁剪,保留位于窗口内的可见线段。
7.扫描表示法
1.基本原理
空间的点、线、面沿着某一路径扫描时,所形成的轨迹可用来定义一个一维的、二维的或三维的物体。
在三维形体表示中,主要采用平移扫描法和旋转扫描法。用扫描表示法表示一个三维形体需要两个要素:做扫描移动的面、面进行移动的轨迹。
2.平移扫描法
将一个二维的面沿着一个指定的方向平行(如可以斜向上)移动,其轨迹便形成了一个三维形体。特点:采用这种方法得到的形体具有相同的截面。
3. 旋转扫描法
将一个二维的面绕一条母线(旋转轴)旋转,其轨迹便形成了一个三维形体。特点:得到的物体都是轴对称物体。
4. 广义扫描法
若在平移扫描的过程中可改变截面的大小和形状,甚至改变移动的方向,便可形成复杂的三维形体。
8.正投影
正投影的投影面与某一坐标轴垂直,而投影方向与该坐标轴的方向一致。
形成正投影时必须满足的条件:1.投影中心到投影面距离无限(形成平行投影)。2.投影线和投影面垂直(正平行投影)。3.投影面和坐标轴垂直(正投影)。正投影的图形在长宽高三个方向上的比例与实物保持一致,不具有透视投影透视缩小效应,能够精确反映物体实际尺寸。因此,常用于工程制图。
给出投影线方向,投影线与投影面垂直,与另一个轴平行。对于线画图形,把每条边求出来,就能把投影面求出来。边由端点确定,只需要把每一条边的端点在投影面上投影求出,按点的拓扑关系(连接关系)把边连出来,即可以绘制主视图。
得到投影图的关键在于得到构成这些投影图的特征点的坐标,根据投影变换矩阵进行计算点坐标。在坐标系中把点确定后按照原始拓扑关系重新连点,把投影图画出来。投影就是一种几何变换。把每个点的规格化坐标乘上投影变换矩阵得到投影点坐标。
正投影的投影变换矩阵根据投影前后坐标变换关系得到。
主视图投影面与x轴垂直,正面投影面,可以在yOz平面得到
侧视图投影面与y轴垂直,侧面投影面,可以在xOz平面得到
俯视图投影面与z轴垂直,水平投影面,可以在xOy平面得到
9.消隐算法常用的技术
1.排序
在一个三维场景中,离观察者越近的物体被遮挡概率越小,被观察者看到的概率越大,可见性越大。
确定物体间遮挡关系的要素:视点位置、视线方向(z值)。即距离观察者的远近程度。
按观察方向上离视点(投影参考点)的远近(深度坐标)(通常用 z 值来表示)排序,在uvn坐标系中是n坐标。建立观察坐标系后,得到每一个物体对于观察者的深度,才能进行排序。要按照三个坐标进行排序后才能真正确定与观察者之间的遮挡关系,但先按深度坐标排序。
2.测试
判断物体自己构成要素(点线面)之间的遮挡关系。用以判断点与面、线与面、面与面之间的关系。
包含测试:测试空间点的投影是否在某个空间多边形的投影内(点面关系),若在,则可能存在遮挡关系;若不在,则不存在遮挡关系。测试方法:从空间点的投影开始向与 -y 轴平行的方向作射线,计算该射线与空间多边形的投影的交点个数,若为奇数,则点的投影在多边形的投影内;若为偶数,则点的投影不在多边形的投影内。(若恰好经过多边形顶点,左闭右开,只计算左边,右边不计数)
重叠测试:测试两个空间多边形的投影是否重叠,若重叠,则可能存在遮挡关系;若不重叠,则不存在遮挡关系。测试方法:用包围框方法来测试,最常用的是包围某个多边形的最小矩形。在图形包围框彼此重叠的情况下,用边的包围框进行重叠测试。
10.提高消隐算法效率的方法
1.利用相关性(连贯性)
相关性定义:所考察的物体或视图区内图像局部的性质保持不变或缓慢变化,像素点近似保持不变。(1)物体的相关性:用于判断物体之间遮挡关系。若物体 A 与物体 B 是完全相互分离的,消隐时只需比较 A 、 B 两物体之间的遮挡关系,而不需对其表面多边形逐一进行测试。物体面的遮挡关系决定于物体之间的遮挡关系。
(2)面的相关性:一个面内的各种属性值(坐标值、灰度值等)一般都是缓慢变化的,可采用简单增量方式进行计算。
(3)区域相关性:一个区域是指屏幕上一组相邻的像素,它们通常属于同一个可见面。区域相关性表现在一条扫描线上时,即为扫描线上的每个区间内只有一个面可见。
(4)扫描线相关性:在相邻的两条扫描线上,可见面的分布情况相似。
(5)深度相关性:物体的同一表面上的相邻部分深度是相近的。
2.包围盒技术
对物体间的某些关系进行比较和测试,(由于物体不规则)从而可避免盲目的求交运算,减少计算量,提高效率。
二维图形 ----- 包围框(重叠测试);
三维物体 ----- 包围盒、包围球。
3.背面剔除
一个平面多面体的表面由若干个平面多边形构成,若一个多边形表面的外法线(从内指向外的法线)方向与投影方向(观察方向)的夹角为钝角,则该面为前向面;若其夹角为锐角,则为后向面或背面。被保留下的前向面被称为潜在可见面。
4.活化表技术 ( active list )
设置活化表,用于存放与当前的处理相关的信息,从而可最大限度地缩小处理范围,提高算法的率。