CG电子教案.ppt

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

例如: ?特点:? 2. 中点分割算法 基本思想: 当对直线段不能简取也不能简弃时,简单地把线段等分为二段,对两段重复上述测试处理,直至每条线段完全在窗口内或完全在窗口外。? 算法步骤: (1)输入直线段的两端点坐标:p1(x1,y1)、p2(x2,y2),以及窗口的四条边界坐标:wyt、wyb、wxl和wxr。 (2)对p1、p2进行编码:点p1的编码为code1,点p2的编码为code2。 (3)若code1|code2=0,对直线段应简取之,保留当前直线段的端点坐标,转(5);否则,若code1code2≠0,对直线段可简弃之,转(5);当上述两条均不满足时,进行步骤(4)。 (4)求出直线段的中点M,将p1M、p2M入栈。 (5)当栈不空时,从栈中弹出一条直线段,取为p1p2,转(2)进行处理。否则,继续(6)。 (6)当栈为空时,合并保留的直线段端点,得到窗口内的直线段p1p2。用直线扫描转换算法画出当前的直线段p1p2,算法结束。 中点分割算法的核心思想是通过二分逼近来确定直线段与窗口的交点。 重新构造算法步骤: (1)若code1|code2=0,对直线段应简取之,结束;否则,若code1code2≠0,对直线段可简弃之,结束;当这两条均不满足时,进行步骤(2)。 (2)找出该直线段离窗口边界最远的点和该直线段的中点。判中点是否在窗口内:若中点不在窗口内,则把中点和离窗口边界最远点构成的线段丢掉,以线段上的另一点和该中点再构成线段求其中点;如中点在窗口内,则又以中点和最远点构成线段,并求其中点,直到中点与窗口边界的坐标值在规定的误差范围内相等,则该中点就是该线段落在窗口内的一个端点坐标。 (3)如另一点在窗口内,则经(2)即确定了该线段在窗口内的部分。如另一点不在窗口内,则该点和所求出的在窗口上的那一点构成一条线段,重复步骤(2),即可求出落在窗口内的另一点。 例如: ?特点:? 3. Liang-Barsky算法 ?分析? ?推导? 特殊处理: 算法步骤: (1)输入直线段的两端点坐标:(x1,y1)和(x2,y2),以及窗口的四条边界坐标:wyt、wyb、wxl和wxr。 (2)若Δx=0,则p1=p2=0。此时进一步判断是否满足q10或q20,若满足,则该直线段不在窗口内,算法转(7)。否则,满足q10且q20,则进一步计算u1和u2。算法转(5)。 (3)若Δy=0,则p3=p4=0。此时进一步判断是否满足q30或q40,若满足,则该直线段不在窗口内,算法转(7)。否则,满足q10且q20,则进一步计算u1和u2。算法转(5)。 (4)若上述两条均不满足,则有pk≠0(k=1,2,3,4)。此时计算u1和u2。 (5)求得u1和u2后,进行判断:若u1u2,则直线段在窗口外,算法转(7)。若u1u2,利用直线的参数方程求得直线段在窗口内的两端点坐标。 (6)利用直线的扫描转换算法绘制在窗口内的直线段。算法结束。 4. 其它裁剪算法简介 Cohen-Sutherland算法、中点分割算法和Liang-Barsky算法 Cyrus-Beck算法 Nicholl-Lee-Nicholl算法 6.5.3 多边形的裁剪 问题的提出:? 1. Sutherland-Hodgeman多边形裁剪 基本思想 算法实施策略: 为窗口各边界裁剪的多边形存储输入与输出顶点表。在窗口的一条裁剪边界处理完所有顶点后,其输出顶点表将用窗口的下一条边界继续裁剪。 窗口的一条边以及延长线构成的裁剪线把平面分为两个区域,包含有窗口区域的一个域称为可见侧;不包含窗口区域的域为不可见侧。 沿着多边形依次处理顶点会遇到四种情况: 特点: 2. Weiler-Atherton多边形裁剪 假定按顺时针方向处理顶点,且将用户多边形定义为Ps,窗口矩形为Pw。算法从Ps的任一点出发,跟踪检测Ps的每一条边,当Ps与Pw相交时(实交点),按如下规则处理: (1)若是由不可见侧进入可见侧,则输出可见直线段,转(3); (2)若是由可见侧进入不可见侧,则从当前交点开始,沿窗口边界顺时针检测Pw的边,即用窗口的有效边界去裁剪Ps的边,找到Ps与Pw最靠近当前交点的另一交点,输出可见直线段和由当前交点到另一交点之间窗口边界上的线段,然后返回处理的当前交点; (3)沿着Ps处理各条边,直到处理完Ps的每一条边,回到起点为止。 下图示了Weiler-Atherton算法裁剪凹多边形的过程和结果。 6.5.4 其它裁剪 1. 曲线边界对象的裁剪 曲线边界对象与矩形窗口和多边形窗口的裁剪 加速方法 2. 文字裁剪 文字裁剪的策略包括几种: 串精度裁剪 字符精度裁剪 笔划、象素精度裁剪? 3. 外部裁剪 保留落在裁剪区域外的图形部分、去

文档评论(0)

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

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

1亿VIP精品文档

相关文档