网站大量收购独家精品文档,联系QQ:2885784924

地图开窗算法设计.pdf

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

实验四地图开窗算法设计()

重点:掌握二维图形点、线段、多边形和字符的裁剪算法。

难点:理解二维裁剪算法思想并且用C语言进行算法的实现。

课时安排:授课4学时(线段裁剪:2学时;多边形裁剪:2学时);

上机4学时(多边形裁剪)。

一、裁剪的意义

为了描述图形对象,我们必须存储它的全部信息,但有时为了达到分区描述或重点描述某一

部分的目的,往往将要描述的部分置于一个窗口内,而将窗口外的部分“剪掉”,这个处理过程叫

做裁剪,裁剪在计算机图形处理中具有十分重要的意义。

裁剪实质上是从数据集合中抽取信息的过程,这个过程是通过一定的计算方法来实现。

裁剪就是将指定窗口作为图形边界,将窗口内的图形保留,而窗口外的图形则被舍弃。

二、裁剪的目的

裁剪的基本目的是判断某个图形元素是否落在窗口之内,如落在窗口之内则进一步求出位于

窗口内的部分。

三、裁剪处理涉及

1、图元在窗口内外的判别;

2、图形元素与窗口的求交。

3.3多边形的裁剪

前面讨论了线段的裁剪,多边形的裁剪是以线段裁剪为基础的,但又不同于线段的裁剪。通

常有一种错觉,认为只要把多边形的每条边用直线裁剪方法裁剪后,就完成了对多边形的裁剪。

其实不然,在计算机图形学中,多边形定义了一个封闭的二维区域,它把平面分成多边形内

区和外区,一个多边形的裁剪结果仍应该是封闭的多边形,而不是一些孤立的线段。

如图中所示,裁剪后的多边形仍应保留原多边形各边的连接顺序并加入一些新顶点(交点、

窗口顶点)及删除界外顶点;一个凹多边形裁剪后,可能分裂为几个多边形。

多边形裁剪的常用算法

1.Sutherland-Hodgeman多边形裁剪

2.Weiler-Atherton任意多边形裁剪

3.3.1Sutherland-Hodgeman多边形裁剪

Sutherland-Hodgman算法也叫逐边裁剪法,该算法是萨瑟兰德(I.E.Sutherland)和霍德

曼(Hodgman)在1974年提出的。这种算法采用了分割处理、逐边裁剪的方法。

一、Sutherland-Hodgeman多边形裁剪算法思想:

每次用窗口的一条边界(包括延长线)对要裁剪的多边形进行裁剪,裁剪时,顺序地测试多边

形各顶点,保留边界内侧的顶点,删除外侧的顶点,同时,适时地插入新的顶点:即交点和窗口

顶点,从而得到一个新的多边形顶点序列。

然后以此新的顶点序列作为输入,相对第二条窗边界线进行裁剪,又得到一个更新的多边形

顶点序列。

依次下去,相对于第三条、第四条边界线进行裁剪,最后输出的多边形顶点序列即为所求的

裁剪好了的多边形。如下图所示。

新的多边形顶点序列产生规则:

在用窗口一条边界及其延长线裁剪一个多边形时,该边界线把平面分成两个部分:一部分称

为边界内侧;另一部分称为边界外侧。

如下图所示,依序考虑多边形的各条边。假设当前处理的多边形的边为SP(箭头表示顺序关

系,S为前一点,P为当前点),边SP与裁剪线的位置关系只有下面四种情况:

1、S在外侧,P在内侧。则交点Q、当前点P保存到新多边形中。

2、S、P均在内侧,则当前点P保存到新多边形中。

3、S在内侧,P在外侧。则交点Q保存到新多边形中。

4、S、P均在外侧。则没有点被保存到新多边形中。

二、Sutherland-Hodgeman多边形裁剪算法实现:

1、已知:多边形顶点数组p[][2],顶点个数n,

裁剪边界xmin(假设对左边界进行裁剪),

定义新多边形顶点数组q[][2]。

2、赋初值:被裁多边形顶点数组的下标变量i=0;

新多边形顶点数组的下标变量j=-1;

前一个点S的x方向分量s[0]=p[n-1][0];

S的y方向分量s[1]=p[n-1][1];

前一个点S的内外标志,用变量flag来标识:

0表示在内侧,1表示在外侧。

文档评论(0)

霞光满天 + 关注
实名认证
内容提供者

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

1亿VIP精品文档

相关文档