精品课件-计算机操作系统(姜柳)-计算机图形学基础-第5章
合集下载
相关主题
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
5.1.3 凹多面体的隐藏线消除 注意到凹多面体的表面也都是多边形,因此,一条边是否
为隐藏线的判断,实质上是这样一个问题:空间一条线段AB和 一个多边形π,判断线段是否被多边形遮挡。如果线段全被遮 挡,则是隐藏线;若部分遮挡,则求出隐藏部分。以视点为投 影中心,把线段与多边形顶点投影到投影面上,将各对应投影 点连线的方程与线段方程联立求解,即可求得线段与多边形投 影的交点。这样,线段AB与多边形投影的关系可能有两种:线 段AB与多边形的任何边都不相交;线段AB与投影多边形有交 点。下面分别进行讨论。
另外一种减少直线求交的方法是用边界盒排除不相交的线 段。把点vi在oxy平面上的投影记成Qi,其坐标为(xi,yi)。直 线段Q1Q2(见图5-3)的边界盒是一个包含这条直线的、边平行 于坐标轴的最小矩形,这个矩形由以下四个参数来确定:
xmin=min(x1,x2),ymin=min(y1,y2) xmax=max(x1,x2),ymax=max(y1,y2)
1 L1
Sp 2 (
(v1vk ) (v1vk1))z
wenku.baidu.com
k2
L1
1 2
((xk x1)( yk1 y1) (xk1 x1)( yk y1))
k2
第5章 隐藏线与隐藏面的消除
如果Sp≥0,则F所在的面为后向面。在实际计算时,条件 Sp≥0可放宽成Sp>-k×Sp,k为适当小的正数。这样做的目的 是为了消除误差的影响,虽然这样也可能把某些前向面误认为 后向面,但不会影响显示结果。
第5章 隐藏线与隐藏面的消除
线框结构模型是将立体对象用轮廓线和小的元素面来描述 的,这种对象模型的数据输入方式简单,容易操作,可以实现 描述的快速性,经常被人们使用。但是由于线框表示会出现错 误理解(如图5-1所示,立方体可能有两种不同的理解),因此 在计算机图形的生成中,要求避免出现这种情况。对比一下图 5-1(a)和图5-1(b)、(c)不难发现,图(a)把应当遮挡的线也 在图中表现出来了,而图(b)、(c)中,有些被遮挡的线就在 图中被消除了。因而为了避免多义性,应将被遮挡的线和面消 除掉,这样产生的图更富有立体感,也更便于使用。
第5章 隐藏线与隐藏面的消除 如果两个边界盒的参数为xmini、ymini、xmaxi、ymaxi,i=1,2, 当它们满足 (xmin1>xmax2)或(ymin1>ymax2) (xmin2>xmax1)或(ymin2>ymax1) 时,这两个边界盒不相交,因而原来的两条边也不会相交。
图5-3 边的边界盒
第5章 隐藏线与隐藏面的消除
5.1 多面体的隐藏线消除 5.1.1 减少直线求交
设有多个互不相交的多面体,它们的消隐问题和它们的显 示方式有关。讨论隐藏线消除问题,总假设它们是用线框结构 模型来表示的。在这种方式下多面体用棱来表示,这时隐藏线 便是某些不可见的棱或棱的一部分。如果能把各棱上可见和不 可见部分的分界点找到,消隐问题也就迎刃而解。这些分界点 都是多面体的各棱在oxy平面上投影间的交点。这样问题就转 化成了在oxy平面上求很多直线的交点的计算。假设消隐对象 有N条棱,用两两求交的方法求所有交点的复杂度为O(N2),当 N很大时,这个工作量是很可观的。
第5章 隐藏线与隐藏面的消除 图5-1 立体出现的不同理解
第5章 隐藏线与隐藏面的消除
隐藏线和隐藏面的消除所讨论的对象是一个三维图形,并 要求消隐后在二维空间中表示,因此消隐后显示的图形将和三 维空间到二维空间的投影方式有关。本章讨论的消隐算 法都假定投影平面就是xoy平面,投影方向为负z 轴方向的 垂直投影。如果不是这种情况,可对消隐的对象先作变换,变 成这种情况,然后再作消隐计算。此外,本章说明的各种消隐 方法都假定构成对象的不同面不能互相贯穿,也不能有循环遮 挡的情况。
第5章 隐藏线与隐藏面的消除
上式仅是判断边相交的一个充分条件。图5-3中Q1Q2和Q3Q4 虽然不相交,但它们不满足上式的要求。不过大量的不相交线 段是可以用这个方法判断出来的,所以这个方法在计算机图形 学中常常被采用。此外,边界盒方法还可以用于判断两个多边 形或两个多面体是否相交。
第5章 隐藏线与隐藏面的消除
5.1.2 凸多面体的隐藏线消除 凸多面体是由若干个平面围成的物体,这些平面的方程设
aix+biy+ciz+di=0 (i=1, 2, …,n) 平面的法向量n为(ai,bi,ci)或(-ai,-bi,-ci),即 -aix-biy-ciz-di=0也是这些平面的方程。为了方便下面的 讨论,规定n的选取满足下列条件:对物体内一点P0(x0,y0, z0),使得n·(x0,y0,z0)T+di>0,这样规定的法向量n指向 了物体内部。
第5章 隐藏线与隐藏面的消除
于是,视点与第i个面上一点的连线方向为(li,mi,ni), 则第i
(ai, bi, ci)×(li, mi, ni)<0 对于任意凸多面体,可先求出所有隐藏面,然后检查每条 边,若此边为两隐藏面的交线,则此边是隐藏线,用虚线表示 或消除。
第5章 隐藏线与隐藏面的消除
第5章 隐藏线与隐藏面的消除 第5章 隐藏线与隐藏面的消除
5.1 多面体的隐藏线消除 5.2 曲面的隐藏线消除 5.3 隐藏面的消除 习题5
第5章 隐藏线与隐藏面的消除
三维计算机图形学方法中,利用计算机处理立体对象,所 使用的表示立体对象的模型称为立体模型。主要的立体模型有 线框结构模型(wire frame model)、表面模型(surface model)、实体模型(solid model),此外还有断层图像数据的 重构、八叉树描述的分层表示模型等。
第5章 隐藏线与隐藏面的消除 图5-2 棱间交点只有5个
第5章 隐藏线与隐藏面的消除
设多边形F的顶点为v1,v2,…vl,顶点vi坐标为(xi,yi, zi)。顶点的次序要求这样排列:使观察者在多面体外沿着 v1→v2→…→vl走时,多边形的内部始终在他的右侧。为了确 定多边形的内法线方向,可以计算多边形在oxy平面上投影的 有向面积Sp,计算方法如下:
第5章 隐藏线与隐藏面的消除
所以要提高算法的效率,就要减少求交的工作量。实际上交点 的个数远小于O(N2),这说明有很多棱在oxy平面上的投影相互 并不相交,问题在于如何把它们排除在求交的计算之外。
把内法线方向背向视点的面称为前向面,例如图5-2中的 IJFGH、FABG、HCDI和IDEJ所在的面为前向面,其余为后向面。
为隐藏线的判断,实质上是这样一个问题:空间一条线段AB和 一个多边形π,判断线段是否被多边形遮挡。如果线段全被遮 挡,则是隐藏线;若部分遮挡,则求出隐藏部分。以视点为投 影中心,把线段与多边形顶点投影到投影面上,将各对应投影 点连线的方程与线段方程联立求解,即可求得线段与多边形投 影的交点。这样,线段AB与多边形投影的关系可能有两种:线 段AB与多边形的任何边都不相交;线段AB与投影多边形有交 点。下面分别进行讨论。
另外一种减少直线求交的方法是用边界盒排除不相交的线 段。把点vi在oxy平面上的投影记成Qi,其坐标为(xi,yi)。直 线段Q1Q2(见图5-3)的边界盒是一个包含这条直线的、边平行 于坐标轴的最小矩形,这个矩形由以下四个参数来确定:
xmin=min(x1,x2),ymin=min(y1,y2) xmax=max(x1,x2),ymax=max(y1,y2)
1 L1
Sp 2 (
(v1vk ) (v1vk1))z
wenku.baidu.com
k2
L1
1 2
((xk x1)( yk1 y1) (xk1 x1)( yk y1))
k2
第5章 隐藏线与隐藏面的消除
如果Sp≥0,则F所在的面为后向面。在实际计算时,条件 Sp≥0可放宽成Sp>-k×Sp,k为适当小的正数。这样做的目的 是为了消除误差的影响,虽然这样也可能把某些前向面误认为 后向面,但不会影响显示结果。
第5章 隐藏线与隐藏面的消除
线框结构模型是将立体对象用轮廓线和小的元素面来描述 的,这种对象模型的数据输入方式简单,容易操作,可以实现 描述的快速性,经常被人们使用。但是由于线框表示会出现错 误理解(如图5-1所示,立方体可能有两种不同的理解),因此 在计算机图形的生成中,要求避免出现这种情况。对比一下图 5-1(a)和图5-1(b)、(c)不难发现,图(a)把应当遮挡的线也 在图中表现出来了,而图(b)、(c)中,有些被遮挡的线就在 图中被消除了。因而为了避免多义性,应将被遮挡的线和面消 除掉,这样产生的图更富有立体感,也更便于使用。
第5章 隐藏线与隐藏面的消除 如果两个边界盒的参数为xmini、ymini、xmaxi、ymaxi,i=1,2, 当它们满足 (xmin1>xmax2)或(ymin1>ymax2) (xmin2>xmax1)或(ymin2>ymax1) 时,这两个边界盒不相交,因而原来的两条边也不会相交。
图5-3 边的边界盒
第5章 隐藏线与隐藏面的消除
5.1 多面体的隐藏线消除 5.1.1 减少直线求交
设有多个互不相交的多面体,它们的消隐问题和它们的显 示方式有关。讨论隐藏线消除问题,总假设它们是用线框结构 模型来表示的。在这种方式下多面体用棱来表示,这时隐藏线 便是某些不可见的棱或棱的一部分。如果能把各棱上可见和不 可见部分的分界点找到,消隐问题也就迎刃而解。这些分界点 都是多面体的各棱在oxy平面上投影间的交点。这样问题就转 化成了在oxy平面上求很多直线的交点的计算。假设消隐对象 有N条棱,用两两求交的方法求所有交点的复杂度为O(N2),当 N很大时,这个工作量是很可观的。
第5章 隐藏线与隐藏面的消除 图5-1 立体出现的不同理解
第5章 隐藏线与隐藏面的消除
隐藏线和隐藏面的消除所讨论的对象是一个三维图形,并 要求消隐后在二维空间中表示,因此消隐后显示的图形将和三 维空间到二维空间的投影方式有关。本章讨论的消隐算 法都假定投影平面就是xoy平面,投影方向为负z 轴方向的 垂直投影。如果不是这种情况,可对消隐的对象先作变换,变 成这种情况,然后再作消隐计算。此外,本章说明的各种消隐 方法都假定构成对象的不同面不能互相贯穿,也不能有循环遮 挡的情况。
第5章 隐藏线与隐藏面的消除
上式仅是判断边相交的一个充分条件。图5-3中Q1Q2和Q3Q4 虽然不相交,但它们不满足上式的要求。不过大量的不相交线 段是可以用这个方法判断出来的,所以这个方法在计算机图形 学中常常被采用。此外,边界盒方法还可以用于判断两个多边 形或两个多面体是否相交。
第5章 隐藏线与隐藏面的消除
5.1.2 凸多面体的隐藏线消除 凸多面体是由若干个平面围成的物体,这些平面的方程设
aix+biy+ciz+di=0 (i=1, 2, …,n) 平面的法向量n为(ai,bi,ci)或(-ai,-bi,-ci),即 -aix-biy-ciz-di=0也是这些平面的方程。为了方便下面的 讨论,规定n的选取满足下列条件:对物体内一点P0(x0,y0, z0),使得n·(x0,y0,z0)T+di>0,这样规定的法向量n指向 了物体内部。
第5章 隐藏线与隐藏面的消除
于是,视点与第i个面上一点的连线方向为(li,mi,ni), 则第i
(ai, bi, ci)×(li, mi, ni)<0 对于任意凸多面体,可先求出所有隐藏面,然后检查每条 边,若此边为两隐藏面的交线,则此边是隐藏线,用虚线表示 或消除。
第5章 隐藏线与隐藏面的消除
第5章 隐藏线与隐藏面的消除 第5章 隐藏线与隐藏面的消除
5.1 多面体的隐藏线消除 5.2 曲面的隐藏线消除 5.3 隐藏面的消除 习题5
第5章 隐藏线与隐藏面的消除
三维计算机图形学方法中,利用计算机处理立体对象,所 使用的表示立体对象的模型称为立体模型。主要的立体模型有 线框结构模型(wire frame model)、表面模型(surface model)、实体模型(solid model),此外还有断层图像数据的 重构、八叉树描述的分层表示模型等。
第5章 隐藏线与隐藏面的消除 图5-2 棱间交点只有5个
第5章 隐藏线与隐藏面的消除
设多边形F的顶点为v1,v2,…vl,顶点vi坐标为(xi,yi, zi)。顶点的次序要求这样排列:使观察者在多面体外沿着 v1→v2→…→vl走时,多边形的内部始终在他的右侧。为了确 定多边形的内法线方向,可以计算多边形在oxy平面上投影的 有向面积Sp,计算方法如下:
第5章 隐藏线与隐藏面的消除
所以要提高算法的效率,就要减少求交的工作量。实际上交点 的个数远小于O(N2),这说明有很多棱在oxy平面上的投影相互 并不相交,问题在于如何把它们排除在求交的计算之外。
把内法线方向背向视点的面称为前向面,例如图5-2中的 IJFGH、FABG、HCDI和IDEJ所在的面为前向面,其余为后向面。