计算几何论文.docVIP

  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文档。上传文档
查看更多
计算几何论文

基于凹凸顶点判定的简单多边形区域的三角剖分 信科0702 李双成 学号:25 1 引 言 三角形在计算几何, 计算机图形学, 曲面逼近, 科学计算可视化等领域都有广泛的应用. 简单多边形区域可以看成是由许多三角形拼凑而成, 对简单多边形区域的研究往往可以转化为对三角形的研究. 2 算法描述 2. 1 基本概念 定义1 T={tijk= △PiPjPkpi, pj, pk p} 是域 D 的一个三角剖分当且仅当满足以条件: 1) T 中的每一个三角形t ijk 除其三个顶点外, 不含任何其它点. 2) T 中的任意两个三角形互不交叠, 至多有一个公共顶点或一条公共边. 3) 域D 中的任意一点都包含在T 中. 定义2 简单多边形域 D 内挖去一块域T , 如果域T 也是简单多边形,那么域D 挖去域T 后剩下的部分称为一个简单多边形区域. 定理1 若顶点链表上连续三点可以构成剖分三角形, 则中间一点必为凸点. 定理2 由多边形三个连续顶点构成的剖分三角形, 如果还有其它的顶点在这个三角形内, 则这些点中必有一个是凹点. 定理3 凸顶点经过剖分后, 其凸性不变. 2. 2 基本算法 算法1: 1) 依一定次序( 顺时针或逆时针) 读入简单多边形顶点, 并建立双向循环链表. 2) 计算出顶点链表中每一个顶点的凹凸性, 保存到顶点链表内, 并另建双向凹顶点链表. 取Pi 为顶点链表的起点. 3) 判断凹顶点链表是否为空, 如为空转6) ; 4) 如Pi 不为凸点, 取Pi 的下一点, 直到Pi 为凸点为止. 5) 对凹顶点链表中的每一点, 判断是否在三角形Pi-1PiPi+ 1内, 如有任一点在三角形内, 取Pi 的下一点, 转4) ; 6) 连接Pi- 1 , Pi+ 1 , 从顶点链表中删除Pi , 顶点数减一. 对于Pi- 1 , Pi+ 1, 如为凹点则重新计算凹凸性, 如果发生改变, 则从凹顶点链表中删除该点. 7) 如果顶点数大于3, 取pi 的下一点, 转3) 顶点凹凸性的判定方法为: 设T 是顶点链表中X 值最大的点( 若有X 值相等的点则取Y 值较大的点) , 则点T 称为标志点. 取T 的前后两点分别为Ti, T j, 令U = Ti T ×T Tj,, 对于顶点链表中的每一点Pi, 令W= Pi-1 Pi×PiPi+ 1. 如果W·U ≥0, 则Pn 为凸点, 否则Pn 为凹点. 判定凹顶点Pj 是否在△Pi-1 Pi Pi+ 1内的方法: 对凹顶点链表中的每一点Pj , 令U1= Pi-1Pi ×PiPj; U 2= PiPi+ 1×Pi+ 1Pj; U 3= Pi+ 1Pi- 1×Pi- 1Pj; 如果U 1, U 2, U3 全都大于等于零或全都小于等于零, 则P 在△Pi-1 Pi Pi+ 1内, 否则P 在△Pi-1 Pi Pi+ 1外.下面是同一个多边形用三种算法剖分的结果图. 图1 文献[ 1] 的剖分结果图2  文献[ 2] 的剖分结果 图3 本文算法剖分结果 算法2: 1) 按一定顺序( 顺时针或逆时针) 读入简单多边形区域的顶点, 分别建立双向循环顶点链表. 2) 找出各链表的标志点Pi, 求出标志点处的向量积Wi= Pi- 1Pi×PiPi+ . 3) 对于最外层多边形的每一个顶点, 判断内层多边形是否有顶点与其相等. 如果有, 取其中两个相等点, 将两条顶点链表合并成一条, 仍记为外顶点链表. 记合并标志S=1. 4) 求出各顶点链表顶点的凹凸性, 记录在顶点链表上; 对于最外层的顶点建立相应的凹顶点 链表. 5) 如果S≠1, 判断凹顶点链表是否为空. 如果为空, 则在内顶点链表标志点处插入两点K1,K2, 令K1 坐标值等于外顶点链标志点的坐标值, K2 坐标值等于内顶点链表标志点的坐标值, 转3) ; 如果不为空, 在凹顶点链表点链表中取一点P, 在内顶点链表中取一凸顶点Q, 使得所有外层凹顶点与内层凸顶点的距离中PQ最短. 在点Q 处插入两点K1, K2; 令K1 的坐标值等于点P 的坐标值, K2 的坐标值等于点Q 坐标值, 转3) . 6)对最外层多边形顶点链表进行三角剖分. 合并两条链表的算法为: 记重合的内外两点分别为P1, P2, 记内外标志点处的向量积分别为W1, W2, 如果W1·W2 0, 如图4) 所示, 程序可写成: C1= P1→next ;       ∥C1 等于P1 下一点; P1→nex t= P2→next ; ∥P1 的下一点等于P2 的下一点; P2→nex t→ahead= P1; ∥P2 下一点的前接点等于P1; P2→nex t= C1;

文档评论(0)

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

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

1亿VIP精品文档

相关文档