目录
消隐算法的概念与分类
平面外法线法消除隐藏线
线消隐算法的基本概念
消隐基本原则
凸多面体的消隐算法
消隐算法的概念与分类
消隐:消除形体视图中隐藏线(面)的处理过程。
1) 根据消隐对象:
①线消隐:消除物体上不可见的轮廓线。
②面消隐:消除物体上不可见的表面。
2) 根据消隐算法空间:
①物体空间消隐算法,也称对象空间消隐算法:物体空间是指规范化的投影空间,即用户域。该算法通过分析物体之间的空间几何关系,来确定物体的可见性。
②图像空间消隐算法:图像空间是指物体投影后的二维空间,即屏幕域。该算法是将物体的投影分解为像素,通过分析像素的可见性,来确定物体的可见性。
3.物体空间常用的消隐算法
算法分三类:
1)外法线消隐算法:用于平面立体消隐处理;
2)浮动水平线算法:用于标准曲面立体消隐处理;
3)离散消隐算法:用于构造曲面立体消隐处理。
平面外法线法消除隐藏线
线消隐算法的基本概念
隐藏线(面):根据投影几何的理论,形体上的看不见的图线或(平面)。
由于投影变换失去了深度信息,往往导致图形的二义性。要消除二义性,就必须在绘制时消除被遮挡的不可见的线或面,习惯上称作消除隐藏线和隐藏面(或可见线判定、可见面判定),或简称为消隐。经过消隐得到的投影图称为物体的真实感图形。
消隐基本原则
1 排序
判别消隐对象与观察点之间的距离远近;对其按x、y、z三个坐标方向进行排序;确定对象之间的遮挡关系。
2 连贯性
从一个对象到另一个对象,其属性值是或连续的。
连贯性:
1)实体对象的连贯性;
2)实体属性的连贯性;
3)扫描线的连贯性;
4)深度的连贯性。
凸多面体的消隐算法
平面立体=凸多面体+凹多面体
1 凸多边形判定:
多边形任意两点连线均位于多边形内部。
2 凸多面体特点:
①由多个平面凸多边形组成;
②在投影关系上,体的表面要么完全可见,要么完全不可见;
③各朝前表面不发生相互重叠现象。
3 凸多面体隐藏线的相关概念:
形体表面的外法线方向:由形体内部指向外部,或由形体表面指向外部空间。
表面外法线的方向角:据投影几何的规定,视方向一般取v={0,1,0},该方向和Y轴的负方向相同。用表面外法线在Y轴上的分量的值,作为判断表面可见性的标准。设表面的外法线分量围为:N=Ai+Bj+Ck,与坐标轴的方向角分别为α、β和γ,方向余弦为cosα、cosβ和cosγ。
显然|NI恒为正值,cosβ的值由B值来决定。
形体表面的外法线方向:由形体内部指向外部,或由形体表面指向外部空间。
4 凸多面体隐藏线的消隐算法:
1) 表面外法线与可见性
①当0≤α≤90°时,表示表面法线朝前(即朝前面),该表面可见;
②当90°<α≤180°时,表示表面法线向后,(即背向面)该表面不可见;
③当α=90°时,表面法线和视方向垂直,该表面积聚为一条线。
2) 表面外法线的表示
N=ABXBC或N=ACXBD
外法线N的代数形式:
AB={(xB-xA)(yB-yA)(zB-zA)}
BC={(xC-xB)(yC-yB)(zC-zB)}
若N在X、Y、Z方向的单位矢量用i、j、k表示,则有:
其中
注:
①面的外环应按逆时针排序,以保证表面的外法线方向指向表面的外部。
②顶点的选择按顺序选择就能确保外法线的方向,与选择的具体位置无关。
5 算法实现的一般步骤:
①根据表面的数据结构,取顶点数据,计算表面的外法线矢量;
②计算外法线在投影方向上的分量的值;
③根据分量的值判断表面的可见性;
④当B>0时,90°≤β≤180°,表面面向观察者可见。
⑤若表面可见画出该表面,否则处理下一个表面。
平面立体消隐算法的数据结构
1)采用三表结构,即点面表、棱边表和顶点表。
2)面表第一列为该表面的棱边总数;
3)面表第二列为该表面中内环数目,无内环时取为0;
4)棱边表中记录表面点环的顶点编号,内环顺时针排序,而外环则按逆时针排序;
5)不论内环还是外环,其都是封闭的;
6)内外环的分隔符通常采用0。