图形算法13.裁剪.pptxVIP

  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文档。上传文档
查看更多
裁剪;裁剪算法;1.点裁剪;2.线段裁剪;图示;(1)cohen-sutherland编码算法;线段的裁剪cohen-sutherland算法;编码的含义;;;线段的编码;算法;图示的线段;交点的计算;结论;如何求交点;算法流程;算法实现;编码;编码;编码;(2)梁友栋-Barsky直线裁剪算法;一维裁剪;梁友栋-Barsky裁剪算法;其中Δx,Δy把窗口边界的四条边分成两类,一类称为 始边,另一类称为终边。 当Δx≥0(Δy≥0)时,称x=xwmin(y=ywmin)为始边, x=xwmax(y=ywmax)为终边。 当Δx0(Δy0)时,称x=xwmin (y=ywmin)为终边, x=xwmax (y=ywmax)为始边。 求出P0P1和两条始边的交点的参数u0’和u0’’,令 u0 = max(u0’,u0’’,0)则u0就是图中A、B和P0三点中 最靠近P1的点的参数。求出P0P1和两条终边的交点的参数 u1’,u1’’ ,令u1 = min(u1’,u1’’,1)则u1就是图中C、D和P1三点中最靠近P0的点的参数。当u1u0时,方程中参数u∈[u0, u1]的线段就是P0P1的可见部分。当u0u1时, 整个直线段为不可见。 ;分析;;分析;分析;;与前一种Cohen-Sutherland算法一样首先对线段端点进行编码,并把线段与窗口的关系分为三种情况:全在、完全不在、线段和窗口有交。 对前两种情况,进行一样的处理。 对于第三种情况,用中点分割的方法求出线段与窗口的交点。 ;在计算交点的时候采用中点分割法,分别求出离两个端点最近的可见点。;1)如果P1可见,则自身就是离P1最近的可见点,结束; 2)如果P1P2显然完全不可见,那么不存在离P1最近的点,结束; 3)求线段P1P2的中点Pm,如果P1Pm的长度小于指定的数,那么Pm就是离P1最近的可见点,结束; 4)如果P1Pm完全不可见,那么就需要求线段PmP2上离P2最近的可见点,即用Pm代替P1,重新回到步骤2;否则,就需要求P1Pm上离P1最近的可见点,即用Pm代替P2,重新回到步骤2。 一般而言,指定的数取值为一个象素的宽度。;P1可见?;(4)Cyrus-Beck算法;点积;;交点;;(5)利用斜率对直线裁剪;;;Else { //斜率为负或者零的情况 if y1yb or y2 yt then stop; if x1 =x2 then goto 2 ; m = (y2+y1)/(x2-x1); if x1 xl then { y1 = m *(xl +x1) + y1; x1 = xl; if y1 yb then stop; } if x2 xr then { y2 = m *(xr-x1) + y1; x2 = xr; if y2 yt then stop;};If y1 = y2 then goto 3 2: if y2 yb then { x2 = (yb-y1)/m + x1; y2 = yb;} if y1 yt then { x1 = (yt + y1)/m +x1 y1 = yt; }} 3: line (x1,y1)(x2,y2) Stop;;2、多边形的裁剪;;Sutherland-Hodgman 算法;c;多边形各顶点的处理规则分析如下:;分析;逐次裁剪多边形的流程;;;算法程序;clip_single_edge(edge, type, nin, xin, yin, nout, xout, yout) int edge, type, nin, *xin, *yin, *nout, *xout, *yout; { int i, k, yes, is_in; int x, y, x_intersect, y_intersect; x=xin[nin]; y=yin[nin]; k=0; for(i=0

文档评论(0)

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

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

版权声明书
用户编号:8001056127000014

1亿VIP精品文档

相关文档