- 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
计算机图形学7(中文)
* 内侧 S P I 内侧 S P 内侧 S P I 凸多边形裁剪的S-H算法(3) ?S在内,P在外,输出与边界交点I ? SP同位于内侧,输出P ? S在外,P在内,输出与边界交点I及P S P 内侧 外侧 ?SP同位于外侧,无输出 * * 流程: 第一步:输入多边形:顶点序列;选择四边框线之一作为裁剪线 第二步:处理顶点序列中的第一点P0: 边框线内侧,则可见,该点输出到新顶点序列中;否则不可见; 第三步:对多边形各边界线段逐条判别,确定输出顶点: 若两顶点在边框线同侧,则Pi+1点可见性与Pi点同,输出或不输出Pi+1 否则,相邻点可见性不同,此时线段与边框线相交,输出交点,若Pi+1可见则输出该点; 第四步:第三步循环进行,至多边形线段判别完毕。此时裁剪得到的顶点表组成新多边形; 第五步:若存在未作为裁剪线的边框线则进入第一步。 凸多边形裁剪的S-H算法(4) * * Example xl :I0,I1,C,I3, I4,E,F,G,A,I0 在Xl裁剪基础上再进行其它边界的裁剪,最终将得到结果多边形。 A C B D E F G I0 I1 I3 I4 I5 I6 I7 I8 I2 输入顶点序列: A,B,C,D,E,D,F,G,A 先用Xl边裁剪: 1)AB线段:起点A在内侧,终点B在外侧,属于2的情形,输出交点I0到本次裁剪的结果多边形顶点表。 2)BC属于4类,输出I1和C 依次类推可得Xl边的裁剪结果: * * 并行实现: 流水线算法 多处理器:顶点序列顺序进入各个处理器 缺陷: 不适用于凹多边形裁剪 凸多边形裁剪的S-H算法(5) * * 名词: 主多边形:被裁剪的多边形 裁剪多边形:窗口多边形 进点与出点: 交点类型 成对出现 主多边形在该点处进入或者离开裁剪多边形的点 思想: 按某种原则沿两多边形的边交替前进,构建裁剪后的多边形. (凹)多边形裁剪的Weiler-Atherton算法(1) * * P1 P2 P3 I1 I2 I3 I4 I5 I6 Q1 Q2 Q4 Q3 起点(终点) Weiler-Atherton Algorithm(2) * * P1 P2 P3 I1 I2 I3 I4 I5 I6 Q1 Q2 Q4 Q3 起点(终点) Weiler-Atherton Algorithm(3) * * P1 P2 P3 I1 I2 I3 I4 I5 I6 Q1 Q2 Q4 Q3 起点(终点) Weiler-Atherton Algorithm(4) * * Weiler-Atherton Algorithm(5) 方法: 若存在未被跟踪过的交点,以其为起点。每遇到 一个交点,跟踪方向改变一次,直至回到起点。 原则:若交点是入点,先跟踪主多边形边界; 否则,先跟踪裁剪多边形边界。 * * Weiler-Atherton Algorithm(6) P1 P2 P3 I1 I2 I3 I4 I5 I6 Q1 Q2 Q4 Q3 主多边形顶点表 裁剪多边形顶点表 P1 P1 P3 P2 I1 I2 I3 I4 I5 I6 I5 I6 I1 I2 I3 I4 Q1 Q3 Q2 Q4 Q1 约定:多边形外部边界的顶点按逆时针排列,内环的顶点按顺时针排列。 * * Weiler-Atherton Algorithm(7) P1 P2 P3 I1 I2 I3 I4 I5 I6 Q1 Q2 Q4 Q3 起点(终点) 主多边形顶点表 裁剪多边形顶点表 P1 P1 P3 P2 I1 I2 I3 I4 I5 I6 I5 I6 I1 I2 I3 I4 Q1 Q3 Q2 Q4 Q1 起点 输出顶点: I1 I4 I2 I5 I6 I1 I3 I1、 I3、I5 I2、 I4、I6 进点: 出点: * * I0 I1 I2 I3 I4 I5 I6 I7 I8 I9 I10 I11 P1 P2 P3 P4 P5 P6 P0 P0 Q2 Q1 q0 Q0 Q3 q2 q3 q1 Q0 q0 I4 I5 I11 I3 I10 I6 I9 I2 I8 I7 I1 I0 P0 P1 P4 P5 P6 Q0 Q1 Q2 Q3 q0 q1 q2 q3 I0 I11 I1 I2 I3 I4 I5 I6 I7 I8 I9 I10 P2 P3 … * * I0 I1 I2 I3 I4 I5 I6 I7 I8 I9 I10 I11 P1 P2 P3 P4 P5 P6 P0 P0 Q2 Q1 q0 Q0 Q3 q2 q3 q1 Q0 q0 I4 I5 I11 I3 I10 I6 I9 I2 I8 I7 I1 I0 输出顶点:I0,I1,q0,I8,I9,I10,I11,I0; P0 P1 P4 P5
文档评论(0)