基于凸剖分的多边形窗口线裁剪算法-UniversityofMacau.PDFVIP

基于凸剖分的多边形窗口线裁剪算法-UniversityofMacau.PDF

  1. 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
  2. 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  3. 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
  4. 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
  5. 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们
  6. 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
  7. 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
基于凸剖分的多边形窗口线裁剪算法-UniversityofMacau

图形算法与技术 基于凸剖分的多边形窗口线裁剪算法(8122)修改稿 注:(1)只有图 3 出彩图,其他是黑白图。 * 基于凸剖分的多边形窗口线裁剪算法 1,3 1 1,2 李静 , 王文成 , 吴恩华 1 (中国科学院软件研究所计算机科学国家重点实验室 北京 100080) 2 (澳门大学科技学院计算机与信息科学系 澳门) 3 (中国科学院研究生院 北京 100049) 摘 要:本文方法首先以不增加新点的方式将多边形剖分为一些凸多边形,然后基于这 些多边形的边建立二叉树来管理这些凸多边形。裁剪计算时,根据二叉树快速找到与 被裁剪线有相交的凸多边形,然后再运用高效的凸多边形裁剪算法进行线裁剪。该方 法能自适应地降低裁剪计算的复杂度,使其在 O(log n)和 O(n)之间变化,并在大多数 情况下小于 O(n),这里 n 是多边形边数。虽然新方法需要进行预处理,但在许多应用 中,如多边形窗口对多边形的裁剪,新方法的总执行速度(包括预处理时间和裁剪时 间)依然要比已有的不要预处理的裁剪算法快很多。 关键词: 多边形窗口;线裁剪;凸剖分;二叉树;加速 中图法分类号:TP391 1.简介 * 基金项目:国家自然科学基金 ;国家重点基础研究发展规划项目(2002CB312102) ;澳门 大学科研基金 *联系作者 Email :lij@ios.ac.cn 关于凸多边形窗口的线裁剪问题,有比较深入的研究[1,2,3];而对于一般多边形 窗口的线裁剪问题的研究还不多。虽然[1]提出将一般多边形进行凸剖分,再基于凸多 边形进行线裁剪;但一般认为这样处理的效率不高[4]。所以,已有方法大多不进行预 处理,而直接检测多边形的每条边,以找到与被裁剪线所在直线(简称裁剪直线)相 交的边,再进行裁剪计算。为快速找到这些相交的边,[4,5,6]提出了一些方法以用简 单的运算来尽量排除那些不相交的边。其中[6]的方法是最快的,它对被裁剪线进行变 换,使其平行 X 轴,然后用同样的变换处理多边形的顶点;由此只需进行 Y 坐标的检 测就能得到相交的边。这些方法要处理每条边,复杂度为 O(n) 。 但是,我们知道,被裁剪线一般只与多边形的少数边相交。为此,我们提出一种 新的裁剪算法,以避免处理许多不相交的边,自适应地降低计算复杂度。它先将多边 形进行凸剖分,然后建立二叉树来管理这些凸多边形。与已有的基于凸剖分的算法[1] 不同,新方法对凸多边形进行了高效的管理。这样,裁剪计算时,先根据二叉树找到 与被裁剪线相交的凸多边形,再利用凸多边形线裁剪方法进行裁剪计算,可以避免处 理许多不相关边,因为没有被处理的凸多边形有许多原多边形的边,而利用高效的凸 多边形线裁剪方法也可避免处理一些边。 虽然新方法需要预处理,但它在许多应用中还是能发挥积极作用的,因为许多应 用中要相对于一个多边形进行很多的线裁剪计算,比如 3 维动态场景中的阴影线裁 剪。 2.基于凸剖分的裁剪算法 2.1 凸剖分及二叉树组织 我们使用[7]的算法将多边形剖分成相对于Y 轴的单调多边形,然后再用与[7]中 单调多边形三角化类似的方法将各个单调多边形凸剖分,即可完成多边形的凸剖分。 对于剖分的凸多边形,我们建立二叉树来管理,即:用与多边形的边共线的直线 分割直线)进行空间划分,使得凸多边形迭代地被分到分割直线的两边(与分 (称为 割直线相交的凸多边形要在左右两个子结点中都存在)。之所以这样选择分割直线, 是为了减少分割直线与凸多边形相交的情况,以利于裁剪计算。二叉树的中间结点存 储分割直线,而叶子结点存储各个凸多边形。如图 1 所示,图 1(a)为剖分的凸多边 形,图 1(b)(c)是为其生成的两个二叉树,在此,中间节点存放分割直线所在边,叶子 节点存放凸多边形,以编号表示。 A T HO S B U R HO TU KH C ② Q ⑥

文档评论(0)

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

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

1亿VIP精品文档

相关文档