实验三 图形裁剪算法实现.doc

实验三 图形裁剪算法实现.doc

ID:55704540

大小:234.50 KB

页数:13页

时间:2020-05-25

实验三 图形裁剪算法实现.doc_第1页
实验三 图形裁剪算法实现.doc_第2页
实验三 图形裁剪算法实现.doc_第3页
实验三 图形裁剪算法实现.doc_第4页
实验三 图形裁剪算法实现.doc_第5页
资源描述:

《实验三 图形裁剪算法实现.doc》由会员上传分享,免费在线阅读,更多相关内容在应用文档-天天文库

1、实验三图形裁剪算法实现实验学时:2学时实验类型:验证型实验要求:必修在使用计算机处理图形信息时,计算机内部存储的图形往往比较大,而屏幕显示的只是图的一部分。因此需要确定图形中哪些部分落在显示区之内,哪些落在显示区之外,以便只显示落在显示区内的那部分图形。这个选择过程称为裁剪。最简单的裁剪方法是把各种图形扫描转换为点之后,再判断各点是否在窗内。但那样太费时,一般不可取。这是因为有些图形组成部分全部在窗口外,可以完全排除,不必进行扫描转换。所以一般采用先裁剪再扫描转换的方法,多边形裁剪示意图,如图1-1所示。(a

2、)裁剪前(b)裁剪后图1-1多边形裁剪示意图直线裁剪1.直线和窗口的关系直线和窗口的关系如图1-2所示,可以分为如下3类:图1-2直线与窗口的关系(1)整条直线在窗口内。此时,不需剪裁,显示整条直线。(2)整条直线在窗口外,此时,不需剪裁,不显示整条直线。(3)部分直线在窗口内,部分直线在窗口外。此时,需要求出直线与窗框的交点,并将窗口外的直线部分剪裁掉,显示窗口内的直线部分。直线剪裁算法有两个主要步骤。首先将不需剪裁的直线挑出,即删去在窗外的直线。然后,对其余直线,逐条与窗框求交点,并将窗口外的部分删去。2

3、.Cohen-Sutherland直线剪裁算法以区域编码为基础,将窗口及其周围的8个方向以4bit的二进制数进行编码。如图1-3所示的编码方法将窗口及其邻域分为5个区域。(1)内域:区域(0000)。(2)上域:区域(1001,1000,1010)。(3)下域:区域(0101,0100,0110)。(4)左域:区域(1001,0001,0101)。图1-3窗口及其邻域的5个区域及与直线的关系(5)右域:区域(1010,0010,0110)。当线段的两个端点的编码的逻辑“与”非零时,线段显然为不可见的。对某线段

4、的两各端点的区号进行位与运算,可知这两个端点是否同在视区的上、下、左、右。算法的主要思想是,对每条直线,如P1P2利用以下步骤进行判断:①对直线两端点P1、P2编码分别记为C1(P1)={a1,b1,c1,d1},C2(P2)={a2,b2,c2,d2}其中,ai、bi、ci、di取值范围为 {1,0},i∈{1,2}。②如果ai=bi=ci=di=0,则显示整条直线,取出下一条直线,返回步骤①;否则,进入步骤③。③如果

5、 a1–a2 

6、=1,则求直线与窗上边(y=yw–max)的交点,并删去交点以上部分。如

7、果

8、 b1–b2 

9、=1,

10、 c1–c2 

11、=1,

12、 d1–d2 

13、=1,进行类似处理。④返回步骤①判断下一条直线。多边形裁剪多边形裁剪算法的关键在于,通过剪裁,要保持窗口内多边形的边界部分,而且要将窗框的有关部分按一定次序插入多边形的保留边界之间,从而使剪裁后的多边形的边仍然保持封闭状态,以便填色算法得以正确实现,多边形裁剪原理示意图,如图1-4所示。(a)剪裁的多边形(b)按直线剪裁的多边形(c)按多边形剪裁后的多边形图1-4多边形裁剪原理示意图1(1)Sutherland-Hodgman算法思路:将多边

14、形的各边先相对于窗口的某一条边界进行裁剪,然后将裁剪结果再与另一条边界进行裁剪,如此重复多次,便可得到最终结果。(2)实现方法:①设置两个表。输入顶点表(向量)——用于存放被裁剪多边形的顶点p1–pm。输出顶点表(线性链表)——用于存放裁剪过程中间结果的顶点q1–qn。②输入顶点表中各顶点要求按一定顺序排列,一般可采用顺时针或逆时针方向。③相对于裁剪窗口的各条边界,按顶点表中的顺序,逐边进行裁剪。(3)具体操作步骤如下:①Pi若位于边界线的可见一侧,则Pi送给输出顶点表。②Pi若位于边界线的不可见一侧,则将其

15、舍弃。③除第一个顶点外,还要检查每一个Pi和前一顶点Pi–1是否位于窗口边界的同一侧,若不在同一侧,则需计算出交点送给输出顶点表。④最后一个顶点Pn则还要与P1一起进行同样的检查。如下图1-6所示,是上述多边形裁剪的原理示意图。图1-6多边形裁剪原理示意图2图形裁剪编程1.程序设计功能说明如图1-7所示为图形裁剪的实用程序运行时的主界面,首先根据界面提示,在用户区双击,出现所需要裁剪的各种线段,再单击菜单中“图形裁剪”,可选择其下拉菜单的各图形裁剪选项完成各种图形裁剪(在窗口中红矩形框外的线段或多边形被裁减掉

16、)。图1-7“图形裁剪”程序主界面2.程序设计步骤程序“图形裁剪”的设计步骤如下:(1)创建工程名称为“图形裁剪”单文档应用程序框架(参看上面单文档应用程序框架的建立)。(2)编辑菜单资源。图1-8图形裁剪切界面设计如图1-8所示的菜单项。在工作区的ResourceView标签中,单击Menu项左边“+”,然后双击其子项IDR_MAINFRAME,并根据表1-9中的定义编辑菜单资源。表1-9菜单资源

当前文档最多预览五页,下载文档查看全文

此文档下载收益归作者所有

当前文档最多预览五页,下载文档查看全文
温馨提示:
1. 部分包含数学公式或PPT动画的文件,查看预览时可能会显示错乱或异常,文件下载后无此问题,请放心下载。
2. 本文档由用户上传,版权归属用户,天天文库负责整理代发布。如果您对本文档版权有争议请及时联系客服。
3. 下载前请仔细阅读文档内容,确认文档内容符合您的需求后进行下载,若出现内容与标题不符可向本站投诉处理。
4. 下载文档时可能由于网络波动等原因无法下载或下载错误,付费完成后未能成功下载的用户请联系客服处理。