[理学]第六章裁剪.pptVIP

  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文档。上传文档
查看更多
[理学]第六章裁剪

第六章 二维裁剪 ? 直线段裁剪 ? 多边形裁剪 ? 字符裁剪 6.1.5 中点分割算法 分为两个平等的过程: (1)从P0点出发找出距P0最近的可见点 (2)从P1点出发找出距P1点最近的可见点 6.1.6 梁友栋-Barsky算法 梁友栋和Barsky将待裁剪线段P0P1及矩形窗口均看作点集,那么裁剪结果即为两点集的交集。 一维诱导窗口: 讨论一维裁剪问题。在一维数轴上,P0P1与Q0Q1的关系。 设 。则P0P1与Q0Q1的关系可分为四类,相应P0 ,P1,Q0 ,Q1坐标间的关系如表。 第一种情况( P0P1 可见) 第二种情况( P0P1 部分可见) 第三种情况( P0P1 不可见) 第四种情况( P0P1 部分可见) 综合上述关系,可以得出一维裁剪问题的解:P0P1 至少部分可见的充分必要条件是 且可见部分的参数区间为 生成诱导窗口Q0Q1 : 利用参数方程 : P0P1 的参数方程为 根据窗口四条边与有向线段 P0P1 的相交的顺序,将它们分成两类,一类称为始边,一类称为终边。 对于左右两条边,当 时,x=xmin称为始边,x=xmax称为终边。 当 时,x=xmax称为始边,x=xmin称为终边 同样,当 时,y=ymin称为始边,y=ymax称为终边.当 时,y=ymax称为始边,y=ymin称为终边 始边与终边。 得出结论:当 时,P0P1有可见部分且其对应的参数区间为[t0,t1];否则,P0P1完全不可见 ?当Qi0,对应的ti必是P0P1和始边交点的参数。 当Qi 0,对应的ti必是P0P1和终边交点的参数。 当Qi ≠0,可以计算出线段与边界的交点的t值:t=Di/Qi。 ? 任何平行于裁剪边界之一的直线 Qi=0,如果还满足Di0,则线段完全在边界外,舍弃该线段。如果Di≥0,则该线段平行于裁剪边界并且在裁剪线内部。 void LiangBarskyLineClip(float x0,float y0,float x1,float y1, Rectangle *rect) { float deltax,deltay,t0,t1; t0=0;t1=1; delatx =x1-x0; if(ClipT(-deltax,x0-rect-xmin,t0,t1) if(ClipT(deltax,rect-xmax-x0, t0,t1) {delaty=y1-y0; if(ClipT(-deltay,y0-rext-ymin, t0,t1) if(ClipT(deltay,rect-ymax-y0, t0,t1) { Line(x0+t0*deltax,y0+t0*deltay, x0+t1*deltax,y0+t1*deltay); return; } } bool ClipT(float q, float d, float *t0, float *t1) { float r; if(q0) %(q0) { r=d/q; if(rt1)return FALSE; %(rt1) else if(rt0) %(r=t1,rt0) { t0=r; return TRUE; } } else if(q0) %(q0) { r=d/q; if(rt0)return FALSE; %(rt0) else if(rt1) %(r=t0,rt1) { t1=r;return TRUE;} } else if(q0) return FALSE; %(q=0) return TRUE; } (1)建立主多边形和裁剪多边形各自的环形顶点表,外边界顶点顺时针次序存放.内边界顶点逆时针次序存放,并且每个边界顶点表中最后一个是第一个的重复。 (2)计算主多边形各边和裁剪多边形各边的交点,对每个交点标号,并插入到两个多边形的顶点表中。对同一交点.在主多边形和裁剪多边形的顶点表之间建立双向指针。 (3)裁剪 a.建立空的裁剪结果多边形的顶点表。 b.选取任意没有被跟踪过的交点为起点,将其输出到结果多边形顶点表中。 c.如果该交点为进点,则跟踪主多边形边界,否则,跟踪裁剪多边形边界。 d.跟踪多边形边界,每遇到多边形顶点,将其输出到结果多边形顶点表中,直到遇到新

文档评论(0)

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

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

1亿VIP精品文档

相关文档