(计算机图形学)Triangul_monotone.ppt

  1. 1、本文档共8页,可阅读全部内容。
  2. 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
(计算机图形学)Triangul_monotone

Triangulating a monotone polygon, introduction The algorithm to triangulate a monotone polygon depends on its monotonicity. Developed in 1978 by Garey, Johnson, Preparata, and Tarjan, it is described in both Preparata pp. 239-241 (1985) and Laszlo pp. 128-135 (1996). The former uses y-monotone polygons, the latter uses x-monotone. Initialization Sort the N vertices of monotone polygon P in order by decreasing y coordinate. (Here N is the number of vertices of P, not S.) The sort can be done in O(N) time, not O(N log N), by merging the two monotone chains of P. Let u1, u2, …, uN be the sorted sequence of vertices, so y(u1) > y(u2) > … > y(uN). Because of the regularization process and the monotonicity of P, for every ui 1 ? i < N there exists uj 1 < j ? N such that edge uiuj is an edge of P. Triangulation of Monotone Polygon Description of the processing The algorithm processes one vertex at a time in order of decreasing y coordinate, creating diagonals of polygon P. Each diagonal bounds a triangle, and leaves a polygon with one less side still to be triangulated. Stack The algorithm uses a stack to store vertices that have been visited but not yet connected with a diagonal. The stack content is v1, v2, …, vi, where v1 is the bottom and vi the top of the stack. At any time during the execution, there are two invariants: 1. The vertices v1, v2, …, vi on the stack from a chain on the boundary of P, where y(v1) > y(v2) > … > y(vi). 2. If i ? 3, angle vjvj+1vj+2 ? ? for 1 ? j ? i - 2. Proximity Constrained triangulation Algorithm By “adjacent” we mean connected by an edge in P. Recall that v1 is the bottom of the stack, vi is the top. 1. Push u1 and u2 on the stack. 2. j = 3 /* j is index of current vertex */ 3. u = uj 4. Case (i): u is adjacent to v1 but not vi. add diagonals uv2, uv3, …, uvi. pop vi, vi-1, …, v1 from stack. push vi, u on stack. Case (ii): u is adjacent to vi but not v1. while i > 1 and angle uvivi-1 < ? add diagonal uvi-1 pop vi

文档评论(0)

skvdnd51 + 关注
实名认证
内容提供者

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

1亿VIP精品文档

相关文档