第七章 消除隐藏线与隐藏面.pptVIP

  1. 1、本文档共91页,可阅读全部内容。
  2. 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
  5. 5、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
  6. 6、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们
  7. 7、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
  8. 8、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
第七章 消除隐藏线和隐藏面的算法 消隐 面消隐 线消隐 三维形体表示为多边形表面形集合 投影约定为沿着z轴正向的正交投影 消除隐藏面算法: 图象空间算法 客体空间算法 图象空间算法对显示设备上每一个可分辨象素进行判断,看组成物体的多个多边形表面中哪一个在该象素上可见,即要对每一象素检查所有的表面。 客体空间算法把注意力集中在分析要显示形体各部分之间的关系上,这种算法对每一个组成形体的表面,都要与其它各表面进行比较,以便消去不可见的面或面的不可见部分。 第一节 线面比较法消除隐藏线 多面体的面可见性 凸多面体的可见面就是朝向观察位置的面 设观察方向由指向观察位置的一个方向向量k给出,所考查的面的外法向量是n,则这两个向量的夹角 ? 满足0? ? ? ?/2时,所考查面是可见的,否则就是不可见的 把n和k记作 则 设空间有一个四面体,顶点A,B,C,D的坐标依次是(0,0,0),(2,0,1),(4,0,0),(3,2,1)从z轴正向无穷远处观察,求各面的可见性 观察方向向量是k=(0,0,1),三角面DAB的法向量是: 因此, ,面DAB为可见面.类似计算可知,面DBC是可见面,面ADC是不可见面,面ACB退化为线。 利用外法线就可以判断凸多面体上各表面的可见性,由此就能解决对单个凸多面体的隐藏线和隐藏面的消除问题。对非凸多面体(如凹多面体),可首先利用外法线去掉不可见面.再处理可能可见面. 消除隐藏线的线面比较法的最先一步就是利用外法线判断出所有可能的可见面,可能可见面上的线段是可能可见线。要依次用每一条可能可见线,与每一个可能可见面比较,从而确定出可见线、隐藏线及可见线上的隐藏部分。 可能可见线和可能可见面 空间任一线段,只有其投影与多边形表面的投影范围发生交迭时,才可能与多边形表面有遮挡关系 范围检查也称为最大最小检验,即通过比较有关的最大或最小值来判定范围的交迭情形。 按Xv方向对投影范围的检查,可分别计算出投影线段和多边形表面投影范围X坐标的最大值和最小值,设分别是 zv方向的范围检查是沿zv方向观察时粗略的深度检验。 在此范围检查中若多边形表面投影的最大z坐标 小于线段投影最小的z坐标 ,则线段完全在表面前面,根本不发生遮挡现象,可以不必再往下做精确的深度检验。 精确深度检验 求交点 若t≥0,则Z1≤ ,若t<0,则Z1 。 空间一条线段可能被一个多边形表面遮挡的消除隐藏线的算法的步骤如下: xv方向和yv方向的范围检查;若不能判断,则接着做zv方向的范围检查即粗略的深度比较;若还不能判断就再进行精确的深度比较,比较时应计算线段两端点在可能遮挡它的平面上的投影点,比较相应的坐标。这时可能出现线段与平面相交需要用交点,这些交点把线段的投影分成两部分考虑的情况。 判断得知线段确实被平面遮挡了哪些部分做精确计算,计算是求出线段的投影与遮挡平面上多边形表面边框投影的所有交点,这些交点把线段的投影分成可见和不可见的一些子线段。对子线段的可见性,先取上面一点做点的包含性检验来进行判断。 考虑到一条线段被多个多边形表面遮挡,而产生需要解决消除隐藏线的情况,可依次判断被每个多边形表面遮挡产生的隐藏部分。只有每一个多边形都不能遮挡的部分才需要显示。线消隐中,最基本的处理和运算是判断面和线的遮挡关系。三维形体都可分解为面,在判断面和线的遮挡关系。具体线面遮挡判断算法如下: 1) 视点和线段在给定平面的同侧,线段不被给定平面遮挡。 2)线段的投影与平面投影的包围盒不相交,线段不被平面遮挡。 3)计算线段和平面是否相交。若无相交转4);否则交点在线段内部或外部。若交点在线段内部,则交点将线段分成两段,与视点同侧的一段不被遮挡,另一段在视点异侧,转4);若交点在线段外部,转4)。 4)求所剩线段的投影和平面边界投影的所有交点,根据交点在原直线参数方程中的参数值求出Z值。若无交点,转7)。 5)所求的各交点将线段的投影分为若干段,求出第一段中点。 6)若第一段中点在平面的投影内,则相应的段被遮挡,否则不被遮挡。其他段依次交替取值进行判断。 7)显示不被遮挡的线段,算法结束。 第二节 曲面隐藏线消除的浮动水平线算法 建立M个象素,则建立M个内存单元yu(j)称之为上浮水平线数组,在这些单元中先放上初值,初值应取成小于 设 第三节 深度排序算法 深度排序算法的主要步骤: 1.?把所有的多边形按顶点最大z坐标值进行排序。

文档评论(0)

kehan123 + 关注
实名认证
文档贡献者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档