圆形窗口对流水线快速剪切算法.docxVIP

  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文档。上传文档
查看更多
圆形窗口对流水线快速剪切算法 切割算法是计算机可视化的基本方法。更快的算法一直是研究人员的持续追求。在经典的Cohen-Sutherland线段裁剪算法提出之后又出现了许多好的裁剪方法,它们在本质上有两个共同点:一是尽量避免无效的操作,二是尽量用简单快捷的加、减等基本操作代替复杂、耗时的乘、除及开方等操作。例如,Liang-Barsky方法通过正确选择相对于待裁剪线段的窗口矩形始、终边来简化判定;Nicholl–Lee-Nicholl方法通过比较待裁剪线段的斜率和始点到矩形窗口各顶点连线斜率,来确定需求交的窗口边,以便避免无效的求交操作;Devai方法对Nicholl–Lee-Nicholl方法作了一定的改进;Duvanenko-RobbinsGyurcsik方法通过优化算法、减少冗余比较与浮点数运算等来提高裁剪效率;Wang-Wu-Cai方法通过将待裁剪线段简单变换,使其始点位于特定区域,从而明确应求交的窗口边来加速处理;Lu-Wu-Peng提出了基于待裁剪线段位置和方向的排除方法;针对圆形窗口也提出了一些裁剪方法。但对于圆形窗口如何在排除性测试和线-圆求交等环节避免或减少大量的复杂操作,仍然是有待进一步研究的问题。 圆形窗口对线段的裁剪有众多应用需求,如在智能CAD系统的交互式图形界面中,需要实时移动“圆形放大镜”或“鹰眼”作快速图元检查或检索;在图形识别与理解等复杂图形应用系统中,需要快速计算圆与其它各图元间的精确几何或拓扑约束;以及在实时绘制时需对图元进行消除隐藏线的处理等。在上述系统中,图元数量一般比较大、图元间几何或拓扑关系分析的计算复杂度较高,且实时交互与绘制的要求高,因此设计新的快速圆形窗口裁剪算法显得尤为重要。 一个好的圆形窗口裁剪方法应该尽快、尽多地快速排除完全在圆外的线段;有效地保留完全在圆内的线段;对必须与圆求交的线段应快速求出交点。本文给出圆形窗口对线段的一种快速裁剪算法。该算法由基于适应性切线分隔的圆外线段快速测试方法、基于最小范围的圆内线段测试方法和基于点斜式查表的线段与窗口圆快速求交方法组成。基于适应性切线分隔的圆外线段快速测试方法利用待裁剪线段相对于圆的位置,选择相关切线进行外侧测试,以决定是否排除该线段;基于最小范围的圆内线段测试方法仅对位于窗口圆包围盒之内的线段实施包含性测试;基于点斜式查表的直线与圆的快速求交方法利用“从不同半径圆的坐标轴上离原点按半径比例位置的点出发的相同斜率的两条直线,与各自的圆的交点坐标也成比例”这样一个规律,将二元二次方程组求解改用直线与坐标轴的一次特殊求交及查表来实现。 1 基于割线分离的圆形导线段的快速测试规则 1.1 圆直线段的判定 定义1 线段上所有点均在圆外的线段称为圆外线段。 因为不可能穷尽测试每一个点,所以不能直接按定义1进行圆外线段的判定。但由于垂足是圆心到线段所在直线的最近点,只要垂足在圆外就能保证线段为圆外线段。当垂足在线段的延长线上时,离垂足近的端点是线段上离圆心最近的点。因此,这两类圆外线段分别用下列2个条件来判定: 条件1 圆心到线段的距离大于圆的半径; 条件2 两端点都在圆外且圆心到线段的垂足在线段延长线上。 由于上述2个条件涉及的二次方程组求解操作过于耗时,其中第1类圆外线段的判定时间为6Tbas+5Tmul+1Tdiv,第2类的判定时间为18Tbas+11Tmul+3Tdiv(Tbas、Tmul、Tdiv分别为一次加减、乘法、除法的操作时间)。因此,作为好的裁剪算法必需寻找更快的判定方法。 实际上,圆外线段还可以这样定义: 定义2 如果存在一条直线,它可将线段和圆分隔在它的两侧,则该线段为圆外线段。 判定圆是否在某直线一侧的问题实际上也是圆外线段判定问题。而如果某直线是圆的切线,则“圆在该直线的一侧”自然成立。剩下的只需判定待裁剪线段(的两个端点)是否在该切线的外侧。 因此,上述两个判别条件可以合并成1个: 条件如果两端点都在圆的某一切线的外侧,则该线段完全在圆外。 1.2 基于割线外侧测试的圆形导线段排除规则 为了便于叙述,本文设线段两端点为P1(x1,y1),P2(x2,y2),约定坐标原点在裁剪窗口圆的圆心。 1.2.1 圆直线段的排除规则 垂直或水平切线的外侧测试是最简单的操作,每边仅需进行2次坐标比较,且可排除的线段在所有待裁剪线段中占有较大比例。有下列圆外线段排除规则: 规则1 如果x1=R∧x2=R,则可排除该线段,(图1-a)。 规则2 如果x1=-R∧x2=-R,则可排除该线段(图1-b)。 规则3 如果y1=R∧y2=R,则可排除该线段(图1-c)。 规则4 如果y1=-R∧y2=-R,则可排除该线段(图1-d)。 1.2.2 圆外侧段的排除规则 斜率为±1的切线外侧排除测试也是较简单的操作,且可排除的情况也占

文档评论(0)

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

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

1亿VIP精品文档

相关文档