计算机图形学消隐
计算机图形学消隐算法

图9-1 区间扫描线算法原理
算法首先为各多边形建立一张边表和一张多边形表。边表需包含的内容有:进行消隐的场景中所有线段的端点坐标、线段斜率的倒数、指向多边形表中对应多边形的指针。多边形表需包含的内容有:各多边形的平面方程系数、各多边形的颜色值、指向边表的指针。在消隐算法执行的过程中,从边表和多边形表中提取信息,构造一张有效边表。有效边表中包含与当前扫描线相交的边,按x的升序进行排列。排列后这些边将扫描线分成一个个的子区间[xi, xi+1],如图9-2,可将扫描线上的子区间分为三种类型:
递归进行上述空间剖分和景物分类过程,直至每一子空间中所含景物少于给定的阈值为止,可表示成一棵BSP树,图9-14(b)示出了图9-14(a)的分割过程和形成的分类景物。对于由多边形组成的场景,常选择与某一多边形重合的平面作为分割平面。一旦构造完BSP树,即可依据当前视点所在的位置,对场景中每一分割平面所生成的两个子空间进行分类,其中包含视点的子空间标记为“front”,位于分割平面另一侧的子空间标记为“back”。然后,递归搜索场景的BSP树,优先绘制标识为“back”的子空间中所含景物。
c. 判别B上平面A与B的重叠平面是否完全位于A之前,若是,将A按先进先出原则加入N中,转(2);否则继续。
d. 判别多边形A和B在xoy平面上的投影有无重叠,若无重叠,则A、B在队列中的顺序无关紧要,将A按先进先出原则加入N中,转(2);否则在A与B投影的重叠区域中任取一点,分别计算出A、B在该点处的z值,若A的z值小,说明A距视点远,优先级低,将A按先进先出原则加入N中,转(2);若A的z值大,则交换A和B的关系,即将B看作是当前处理对象,转(3)进行M中其它多边形的判别。
深度缓存器算法最大的优点是算法原理简单,不过算法的复杂度为O(N),N为物体表面采样点的数目。另一优点是便于硬件实现。现在许多中高档的图形工作站上都配置有硬件实现的Z-buffer算法,以便于图形的快速生成和实时显示。
《计算机图形学》08消隐技术

A B
D
C
投影方向
其夹角为锐角,则为后向面或背面。
剔除依据: 物体表面是封闭的,背面总是被前向面所遮挡,从 而始终是不可见的。
4. 将透视投影转换成平行投影 消隐与透视关系密切,体现有: 1)消隐必须在投影之前完成; 2)物体之间的遮挡关系与投影中心(视点)的选 取有关; 3)物体之间的遮挡关系与投影方式有关
ai + bj + d c
若 c = 0,则多边形Fk的法线方向与 Z 轴垂直, Fk在投影面
上的投影为一条直线,可不予考虑。
4. 算法的特点 ① 简单 不需要将所有的多边形按离视点的远近排序,其算法的复
杂度只与多边形的个数成正比。
② 需要有一个较大容量的 Z—Buffer 。
5. 算法的改进
① 采用包围框技术,提高算法的效率。 ② 采用硬件 Z—Buffer 来实现。
视点位置
视线方向
z值
视点
按观察方向上离视点(投影参考点) 的远近(通常用 z 值来表示)排序。
u(x)
2. 测试 用以判断点与面、线与面、面与面之间的关系。
包含测试: 测试空间点的投影是否在某个空间多边形的投影内,若在, 则可能存在遮挡关系;若不在,则不存在遮挡关系。 测试方法: 从空间点的投影开始向与 -y 轴平行的方向作射线,计算 该射线与空间多边形的投影的交点个数,若为奇数,则点的投
假定场景中有 k 个物体,平均每个物体的表面由 h 个多 边形构成,其计算复杂度为 O((kh)2)。
算法描述如下:
for (场景中的每一个物体) { 将该物体与场景中的其它物体进行比较,确定其表面的可 见部分; 显示该物体表面的可见部分;
}
第二种方法是以窗口内的每个像素为处理单元,确定在每
计算机图形学——隐藏线和隐藏面的消除(消隐算法)

计算机图形学——隐藏线和隐藏⾯的消除(消隐算法)⼀、概述由于投影变换失去了深度信息,往往导致图形的⼆义性。
要消除⼆义性,就必须在绘制时消除被遮挡的不可见的线或⾯,习惯上称作消除隐藏线和隐藏⾯(或可见线判定、可见⾯判定),或简称为消隐。
经过消隐得到的投影图称为物体的真实感图形。
下⾯这个图就很好体现了这种⼆义性。
消隐后的效果图:消隐算法的分类所有隐藏⾯消隐算法必须确定:在沿透视投影的投影中⼼或沿平⾏投影的投影⽅向看过去哪些边或⾯是可见的两种基本算法1、以构成图像的每⼀个像素为处理单元,对场景中的所有表⾯,确定相对于观察点是可见的表⾯,⽤该表⾯的颜⾊填充该像素.适于⾯消隐。
算法步骤:a.在和投影点到像素连线相交的表⾯中,找到离观察点最近的表⾯;b.⽤该表⾯上交点处的颜⾊填充该像素;2、以三维场景中的物体对象为处理单元,在所有对象之间进⾏⽐较,除去完全不可见的物体和物体上不可见的部分.适于⾯消隐也适于线消隐。
算法步骤:a.判定场景中的所有可见表⾯;b.⽤可见表⾯的颜⾊填充相应的像素以构成图形;提醒注意1.假定构成物体的⾯不能相互贯穿,也不能有循环遮挡的情况。
2.假定投影平⾯是oxy平⾯,投影⽅向为z轴的负⽅向。
如果构成物体的⾯不满⾜该假定,可以把它们剖分成互不贯穿和不循环遮挡的情况。
例如,⽤图b中的虚线便可把原来循环遮挡的三个平⾯,分割成不存在循环遮挡的四个⾯。
⼆、可见⾯判断的有效技术1、边界盒指能够包含该物体的⼀个⼏何形状(如矩形/圆/长⽅体等),该形状有较简单的边界。
边界盒技术⽤于判断两条直线是否相交。
进⼀步简化判断2、后向⾯消除(Back-face Removal)思路:把显然不可见的⾯去掉,减少消隐过程中的直线求交数⽬如何判断:根据定义寻找外(或内)法向,若外法向背离观察者,或内法向指向观察者,则该⾯为后向⾯。
注意:如果多边形是凸的,则可只取⼀个三⾓形计算有向⾯积sp。
如果多边形不是凸的,只取⼀个三⾓形计算有向⾯积sp可能会出现错误,即F所在的⾯为前向⾯也可能出现sp≥0的情况,因此,需按上式计算多边形F的有向⾯积。
计算机图形学 消隐

?基本概念 ?提高消隐算法效率的常见方法 ?画家算法 ?Z缓冲器算法 ?扫描线Z缓冲器算法 ?区域子分算法 ?光线投射算法
-
基本概念
产生真实感的方法之一: 反映三维场景中的相互遮挡关系
面消隐与线消隐
表面模型与线框模型 物体表面:平面与曲面 面消隐对象: 由平面多边形构成的多面体
-
基本概念
2)然后按照从表头到表尾的顺序逐个绘制物 体。
-
画家算法
关键:如何对场景中的物体按深度(远 近)排序,建立深度优先级表? 一种针对多边形的排序算法如下:
假定在规范化投影坐标系uvn中,投影方向是n 轴的负向,因而n坐标大距观察者近。记nmin(P) nmax(P)分别为多边形P的各个顶点n坐标的最小 值和最大值,算法步骤如下:
-
提高消隐算法效率的常见方法 1
利用连贯性
物体连贯性 面的连贯性 区域连贯性 扫描线的连贯性 深度连贯性
-
提高消隐算法效率的常见方法 2
将透视投影转换成平行投影 消隐与透视关系密切,体现有:
1)消隐必须在投影之前完成; 2)物体之间的遮挡关系与投影中心(视点)的选 取有关; 3)物体之间的遮挡关系与投影方式有关
-
提高消隐算法效率的常见方法 3
图12.3 加入面消隐步骤的三维图形显示 流程图 p285 (参见图8.30 p162)
图12.4 先将透视投影转换成平行投影,南 后再消隐 p285 (参见图8.33 p167)。 (避免除法,提高了效率)
-
提高消隐算法效率的常见方法 4
包围盒技术
定义:一个形体的包围盒指的是包围它的简单形体。
-
提高消隐算法效率的常见方法 6
复杂度比较:
计算机图形学-第7章-消除隐藏线和隐藏面

这一章我们将介绍消除隐藏面的方 法。
7.1 概述
第一章我们曾将输出的图形分为线条图和具 有明暗效果的真实感图形(面图),在绘制 或显示三维图形时,无论采用那种图形表示 三维形体,都要消除不可见的线或面,即消 除隐藏线或隐藏面(简称消隐),它是计算 机图形学的重要内容,其算法有很多种,本 章只介绍隐藏面的消除。
对于某一个面片,a/c是常数,故沿扫描线 的后续点的深度值,可由上式仅执行一次 加法计算即可求出。
对于每条扫描线,首先计算出与其相交的多 边形最左边的交点所对应的深度值,然后, 该线上所有后续点由式(7.14)计算。
计算每个面片左边界的深度值
如图所示,由最上方顶点出发,沿多边形 的左边递推地计算各点的z坐标
7.2.1 平面多边形的外法矢量
为了判别物体上各表面是朝前面还是朝后
面,需求出各表面(平面多边形)指向体外
的法矢量。设物体在右手坐标系中,多边
形顶点按逆时针排列。当多边形为凸多边
形时,则其法矢可取成多边形相邻两边矢
量的叉积。
P3
n
n p1 p2 p2 p3 P1
P2
这种算法虽然简单,但当多边形为凹多边形 时,则可能出现错误,即所求的多边形法矢 量指向体内。这时可采用如下的计算方法。
设n={A,B,C},而
n
A ( yi y j )(zi z j ) i 1 n
B (zi z j )(xi x j ) i 1 n
C (xi x j )( yi y j ) i 1
式中若 i n,则j=i+1;否则i=n,j=1。 以上算法适合任何平面多边形。
非平面但接近平面的多边形的最佳逼近平面 的法矢量也可用此算法求出。为避免在程序 中出现两种计算平面外矢量的方法,建议凸 多边形也采用该算法计算外法矢量。多边形 所在平面的方程可写成
计算机图形学课件:第9章消隐

其中的关键是将多边形按深度进行排序。
排序步骤: 1.将所有多边形按Zmin由小到大的顺序存入队列M中, 并初始化一空队列N。 2.取M中第一个多边形(A)与其他多边形进行深度重叠 比较,若无重叠关系,A入N;否则作重叠处理。 3.将已处理的多边形从M中删除,转2.,直到M为空。
图象空间消隐算法:有深度缓冲器算法、A缓冲 器算法、区间扫描线算法等。 景物空间消隐算法:BSP算法、多边形区域排序 算法。 介于二者之间:深度排序算法、区域细分算法、 光线投射算法等。
9.1 深度缓存器算法
算法的原理:
使用两块缓冲区: Z缓存:存深度 帧缓存:存颜色。
y
(x,y) 0
R P2 P1
算法特点: ①算法简单。 ②需较大的存储空间。 ③处理反走样、透明和半透明效果困难。
对于③ ,可以使用A缓冲器算法克服。
9.2 区间扫描线算法
算法原理:
避免对被遮挡 区域的采样是 进一步提高扫 描线算法计算 效率的关键。
y B2 A2
0
A1 B1
AB
A3
B3
C2
扫描线1 C1
扫描线2 扫描线3
B4 C C4 C3 x
图9-3 区间扫描线算法原理
算法: 三张表:边表、多边形表、有效边表。 算法关键:分割子区间,确定子区间上的唯一可见面。 特殊情形:贯穿情形、循环遮挡情形。
12 3
45
12 3 4 5
z
xz
x
(a)
(b)
1
2
3 45
z
x
(c)
图9-4 扫描线子区间
贯穿情形:
为了使算法能处理互相贯穿的多边形,扫描线上 的分割点不仅应包含各多边形的边与扫描线的交点, 而且应包含这些贯穿边界与扫描线的交点。
计算机图形学-消隐
共四十四页
1. 消除 自隐线、面 (xiāochú)
对于多面体的任一个面,可以根据其外法向
E
n和视矢量E的夹角θ来进行可见性检测。
法向n:规定每个多边形的法向都是指向物 体外部(wàibù)的。
前向面: θ∈(-90°,90°)时,表示该表 E 面可见,称为前向面。
后向面: θ∈[90°, -90°]时,表示该表 面不可见,称为后向面 。
θn
n 前向面 n
后向面
剔除依据:后向面总是被前向面所遮挡,从而不可见。不会 由于后向面的遮挡,而使别的棱成为不可见的。因此计算时, 可以把这些后向面全部去掉,这并不影响消隐结果。
17
共四十四页
1. 消除 自隐线、面 (xiāochú)
图中的JFAE、HCBG和 DEABC所在(suǒzài)的面均 为后向面。其它为前向 J
也称表优先级算法。
30
共四十四页
1. 画家 算法 (huàjiā)
关键:如何对场景中的物体表面按深度(远近(yuǎnjìn))排序,建立深 度优先级表?
先讨论在深度优先级排序中两个多边形P和Q之间的关系。多边形可以 按其最大或最小z值徘序,不妨假设按多边形的最大z值进行预排序,即
zmax(P)>zmax(Q)。
消隐(xiāo yǐn)
1
共四十四页
消隐(xiāo yǐn)
1 概述(ɡài shù) 2 线消隐 3 提高消隐算法的效率 4 面消隐
2
共四十四页
1 概述(ɡài shù)
什么叫做“消隐”?为什么要进行(jìnxíng)“消隐”?
将三维场景绘制在计算机二维显示屏上必须经过投影变换,投影 变换将三维信息变换到二维平面上,这个过程中深度信息被丢失, 生成的图形往往具有二义性。
计算机图形学第八章
2. 包围盒技术 用于对物体间的某些关系进行比较和测试,从而可避免盲
目的求交运算,减少计算量,提高效率。 二维图形 ----- 包围框(重叠测试); 三维物体 ----- 包围盒、包围球。
3. 背面剔除 一个平面多面体的表面由若干个
平面多边形构成,若一个多边形表面 的外法线方向与投影方向(观察方向) 的夹角为钝角,则该面为前向面;若 其夹角为锐角,则为后向面或背面。
后续各点的深度值。
jz
o
i i+1
x
③ 计算多边形边界上(对应于边的投影与扫描线交点处)的深
度值
设 L 为多边形 Fk的一条边,与扫描线 j 的交点为 Xj ,
则多边形 Fk 在交点( Xj ,j )处的深度为:
axj + bj + d
Zj =—
c
当扫描线向上移动一条,即 y=j+1 时,边 L 与扫描线的交
扫描线数相同。
4
3
根据各边两端点中较 2
Ⅰ
Ⅰ
∧
1
小的 y 坐标,将其放入
ⅡYmaxΔX X z
Ⅱ
∧
相应的桶内。
④ 有效边表 AET(边活化表) 记录多边形边界与当前扫描线相交的各个边对的信息。 xl:左交点的x坐标值;
Δxl:左交点所在边和相邻扫描线交点的x坐标之差; ylmax:左侧边两端点中较大的 y 值; xr,Δxr, yrmax :右交点对应的三个量; zl:左交点处多边形所在平面的深度值; Δzx:沿扫描线向右走过一个象素时,多边形所在平面深度的增
D
C
A
B
投影方向
4. 活化表技术 ( active list ) 设置活化表,用于存放与当前的处理相关的信息,从而可
计算机图形学-第7章-消除隐藏线和隐藏面
可能的四种形体
隐藏线和隐藏面
不可见的线和面分别称为隐藏线和隐藏面。 隐藏线和面不仅仅有形体自身的,而且还 有形体之间互相遮挡的。消除它们即称为 消除隐藏线和消除隐藏面。
形体之间互相遮挡的隐藏线
当我们显示线条图或用笔式绘图仪或其 它线画设备绘制线条图形时,要解决的 主要是消除隐藏线的问题。而当用光栅 扫描显示器显示物体的明暗图形时,就 必须要解决消除隐藏面的问题。
设n={A,B,C},而
n
A ( y j )(zi z j ) i 1 n
B (zi z j )(xi x j ) i 1 n
C (xi x j )( yi y j ) i 1
式中若 i n,则j=i+1;否则i=n,j=1。 以上算法适合任何平面多边形。
非平面但接近平面的多边形的最佳逼近平面 的法矢量也可用此算法求出。为避免在程序 中出现两种计算平面外矢量的方法,建议凸 多边形也采用该算法计算外法矢量。多边形 所在平面的方程可写成
Ax By Cz D 0
其中 D ( Ax0 By0 Cz0 ,)
(x0 , y0 , z0 ) 为平面上任意一点。
7.2.2 深度检验
深度检验是比较位于同一条投射线的若干 个点的深度坐标(一般为z坐标),以确定 哪个点是可见的,将可见点表示出来。消 隐时必须进行深度检验。一般将需要比较 的各点的z坐标按递增或递减排序,也可从 中选出最大或最小的z坐标。至于选最大或 最小与所选的坐标系有关。
7.2.1 平面多边形的外法矢量
为了判别物体上各表面是朝前面还是朝后
面,需求出各表面(平面多边形)指向体外
的法矢量。设物体在右手坐标系中,多边
形顶点按逆时针排列。当多边形为凸多边
形时,则其法矢可取成多边形相邻两边矢
第九讲 消隐
2 . 遍历BSP树,优先绘制标为Back的区域;
P1
front
P2
back
P3
front
back
back front
A
B
C
D
绘制的顺序:D C
B
A
四. 深度缓冲器算法( Z-Buffer算法) 帧缓冲器:用来存储图像中每个象素属性(颜色); Z缓冲器:用来存储图像空间中每一个可见象素所对应 物体的深度(或Z坐标),是一个独立的深度缓冲器。
1. 将场景中的多边形序列按其z坐标的最小值zmin (物体上离视点最远的点)进行排序
2.当物体间 的z值范围不 x 重叠时:假设多边形P的 P zmin在上述排序中最小, Pzmax 如果多边形P的z值范围 与Q的z值范围不重叠, Qzmin Q 即Pzmax< Qzmin,此时 z 可以断定多边形P的优先 物体间的z值范围不重叠 级最低
3.当物体间的z值范围重叠时: 进一步判断多边形P是否遮挡场景中多边形Q
x P Q z
物体间的z值范围重叠
作如下5个判别步骤
• • • • • 多边形P和Q的x坐标范围是否不重叠 多边形P和Q的y坐标范围是否不重叠 从视点看去,多边形P是否完全位于Q的背面 从视点看去,多边形Q是否完全位于P的正面 多边形P和Q在xy平面上的投影是否不重叠
使用BSP树对场景中的对象进行排序
P3 C
D P1
P1
front
P2
back
P3
B P2 A
front
back
back front
A
B
C
D
1. 构建场景的BSP树 依据当前视点所在位置,对场景中的每个分割面 所生成的两个子空间进行分类 包含视点的标为Front,后面的标为Back 被分割面穿过的物体,被划分成两个部分,例如: 上图中的C物体被分割面P1划分成C,B两部分
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
第7章 消 隐
第7章 消 隐
• • • • • • 消隐的概述 多面体的消隐算法 深度缓冲器算法 扫描线算法 画家算法 光线追踪算法(Ray Casting)
消隐概述
• 什么是消隐? • 消隐的分类有哪些? • 消隐的基本原则有哪些?
消隐的概述
• 绘制线框图时应消除隐藏线,绘制真实感图 形时应消除隐藏面。 • 未经消除隐藏线和隐藏面的立体图往往存在
图7-9 任意多面体的隐藏情况
深度缓冲器算法
• • • • 算法基本思想是什么? 算法是怎样描述的? 深度值如何计算? 深度缓冲器算法特点是什么?
多面体的消隐算法
• 算法实现的一般步骤 • 根据表面的数据结构,取顶点数据,计算表面 的外法线矢量。 • 计算外法线在投影方向上的分量的值。 • 根据分量的值判断表面的可见性。 • 若表面可见画出该表面,否则处理下一个表面。
多面体的消隐算法
• 任意多面体的消隐 • 对于任意平面立体必须寻求适当的消隐算法。 因为任意平面立体则不同,除了有全部可见和 全部不可见的棱边外,还有部分可见的棱边如 图7-9 。
消隐的概述
• 图像空间消隐算法 图像空间是物体显示时所在的屏幕坐标空 间。 • 算法描述如下: for(窗口中的每一个像素) { 确定距视点最近的物体,以该物体表面的 颜色来显示像素; }
消隐的概述
• 消隐基本原则
―排序
排序的目的主要是判别消隐对象的体、面、边和点与观察 点几何距离的远近。如果一个物体离观察点越远,越有可能被 离观察点近的物体所遮挡,如图7-4所示。但这不是绝对的,例 如,不在同一观察线方向的两个物体不会有遮挡关系,如图7-5 所示。
• 凸多面体消隐的基本原理是什么 • 凸多面体消隐的算法思想是什么 • 任意多面体的消隐算法是什么
多面体的消隐算法
• 凸多面体的特点 • 由多个平面凸多边形组成 • 在投影关系上,体的表面要么完全可见,要么 完全不可见 • 各朝前表面不发生相互重叠现象
多面体的消隐算法
• 凸多面体消隐的基本原理
– 表面外法线与其可见性的关系 设平面Pi上任一点的外法矢ni与该点的视线矢量vi的数量 积:
二义性,如图7-2所示。
(a)
(b)
(c)
消隐的概述
• 这种消除隐藏线或隐藏面的过程称为消隐处理, 简称消隐。 • 经过消隐得到的图形称为消隐图。
消隐的概述
• 消隐不仅与消隐对象有关,还与观察者的位置 有关。如图7-3所示,由于视点的位置不同, 物体的可见部分也不同:
D
C
B
E2
A
E1
图7-3 消隐与观察者的位置关系
A B C
m
(y
i 1 m
i
y j )( z i z j ) z j )( xi x j ) x j )( yi y j )
(z
i 1 m i 1
(7-4)
i
(x
i
式中:m为顶点号,若i≠n,则j=i+1;否则i=m,j=1。
多面体的消隐算法
• 为避免在程序中出现两种计算外法矢量的方法, 建议凸多边形也采用该算法进行计算。多边形 所在的平面方程可写成: • ( 7-5 ) Ax By Cz D 0 • 其中:D ( Ax0 By0 Cz0 ) , ( x0 , y0 , z 0 ) 为平面 上任意一点。
• 面消隐(Hidden-surface)
消隐对象是物体上不可见的面,一般用于 填色图。当用光栅扫描显示器绘制图形时,主 要使用这种算法。
消隐的概述
• 物体空间消隐算法 物体空间是需要消隐的物体所在的三维空间。 • 算法描述如下: for(场景中的每一个物体) { 将该物体与场景中的其它物体进行比较,确 定其表面的可见部分; 显示该物体表面的可见部分; }
P2
P1 P2 P1 观察点
观察点
图7-4 P2被P1遮挡
图7-5 P2未被P1遮挡
消隐的概述
• 连贯性 连贯性是指从一个事物到另一个事物,其 属性值(如颜色值、空间位置)通常是平缓过 渡的性质。 常讨论的连贯性有如下几种: 物体连贯性 面(边)连贯性 扫描线连贯性 深度连贯性
• • • • •
多面体的视线矢量平行Z轴时,有
C C cos n A2 B 2 C 2
(7-3)
• 同理,若视线矢量平行X轴时,某平面的可见 性由该平面外法矢量n在X轴的方向分量A所决 定。 • 若视线矢量平行y轴时,某平面的可见性由该 平面外法矢量n在Y轴的方向分量B所决定。
多面体的消隐算法
消隐的概述
• 按消隐的对象分类
― 线消隐(Hidden-line) ― 面消隐(Hidden-surface)
•
按消隐空间分类
― 物体空间消隐算法 ― 图像空间消隐算法
消隐的概述
• 线消隐(Hidden-line) 消隐对象是物体上不可见的线,一般用于 线框图。当用笔式绘图仪或其它画线设备绘制 图形时,主要使用这种算法。
Z X Y
平面P θ N V
图7-7 视方向与外法线的关
多面体的消隐算法
• 视线矢量平行于某一基本坐标轴时夹角的计算 当视线矢量vi平行于某一基本坐标轴时, 那么平面的外法矢量n{A,B,C}与视线矢量的 夹角就是外法矢量n与某一基本坐标轴的夹角, 分别用α、β、γ表示视线矢量平行X、Y、Z轴时 平面的外法矢量n{A,B,C}与坐标轴的夹角。
• 平面多边形的外法矢量的计算 为了判别物体上各表面是朝前面还是朝后 面,需求出各表面(平面多边形)指向物体外 侧的法矢量。如图7-8中所示 。
图7-8 物体表面外法矢量
多面体的消隐算法
• 在图7-8中,平面P1P2P3的外法矢量
n1 p1p2 p2 p3
• 任意多边形法矢量的算法方法如下: • 设法矢量 ,三个方向分量为:
(7-1)
从而有
ni v i cos i ni v i
(7-2)
其中θi为ni与vi之间的夹角,i=1,2,…,m,这里m为平面数。
多面体的消隐算法
• 当 cosi 0 时,Pi为朝前面,为可见的,应该画 2 出; cos 0 • 当 ,即 2 i 时,Pi为朝后面,不可见,不画出或 i 用虚线表示。 视线方向与外法线的关系如图7-7。 ,即 0 i