二维图形裁剪的课程设计

更新时间:2023-10-18 21:51:01 阅读量: 综合文库 文档下载

说明:文章内容仅供预览,部分内容可能不全。下载后的文档,内容与下面显示的完全一致。下载之前请确认下面内容是否您想要的,是否完整无缺。

华东交通大学

图形学课程设计

课程设计名称:各种二维图形裁剪技术研究 姓名: 学号:

学院:基础学院

班级:信息与计算科学2010-1 指导老师: 小组成员:

目录

1、摘要 ……………………………………………………………2 2、二维图形裁剪……………………………………………………2 2.1 裁剪的原理 …………………………………………………2 2.2 裁剪的分类…………………………………………………3 2.2.1.线段的裁剪………………………………………………3 2.2.2多边形的裁剪……………………………………………5 2.2.3.圆和曲线的裁剪…………………………………………6 3、算法 ……………………………………………………………6 3.1 裁剪算法………………………………………………………7 3.2 裁剪圆算法…………………………………………………9 3.3 裁剪窗口是圆算法…………………………………………… 11 4、心得体会…………………………………………………………12 5、参考文献…………………………………………………………12 6、功能实现效果的图片展示……………………………………13

- 1 -

1、摘要

近几十年来,计算机图形学有了引人瞩目的发展,它已广泛应用于计算机辅助设计、电视广告、动画和仿真等许多领域并发挥着重要作用。可以说计算机图形学已经发展成为一门成熟的学科。在各种实践应用中,计算机图形学的许多基础算法发挥着不可替代的重要作用,因此不断提高和完善图形学的基础算法至关重要。

计算机图形学是研究在计算机中如何构造图形,并把图形的描述数据(数学模型)通过指定的算法转化为图形显示的学科。目前,计算机图形学的主要研究对象包括:点、线、面——二维图形学:体——三维图形学以及场等的数学构造方法与其图形显示以及它们的变化情况。 2、二维图形裁剪

在使用计算机处理图形信息时,计算机内部存储的图形往往比较大,而屏幕显示的只是图的一部分。因此需要确定图形中哪些部分落在显示区之内,哪些落在显示区之外,以便只显示落在显示区内的那部分图形。

从数据集合中抽取所需信息即识别指定区域内或区域外的图形部分的过程称为裁剪算法,简称裁剪。它是计算机图形学中许多重要问题的基础。裁剪典型的用途是确定场景或画面中位于给定区域之内的部分。这一区域称为裁剪窗口。

最简单的裁剪方法是把各种图形扫描转换为点之后,再判断各点是否在窗口内。但那样太费时,一般不可取。这是因为有些图形组成部分全部在窗口外,可以完全排除,不必进行扫描转换。

所以,一般采用先裁剪再扫描转换的方法。

裁剪的应用包括:从定义的场景中抽取出用于观察的部分;在三维视图中标识出可见面:防止线段或对象的边界混淆;使用实体造型来创建对象;显示多窗口的环境;允许选择图形一部分进行复制、移动或删除等绘图操作。对于不同的应用,裁剪窗口可以是多边形或包含有曲线边界。 2.1裁剪的原理

裁剪的基本目的是判断图形元素是否部分或全部落在窗口区域之内,如果是,则进一步求出位于窗口内的部分。裁剪处理包括两个方面:判断图形元素是否在窗口内以及求图形元素与窗口的交。

一般把窗口定义为矩形,由上、下、左、右四条边围成,即:(xL,yB),(xR,yT)。裁剪的实质就是决定图形中哪些点、线段、

- 2 -

文字以及多边形在窗口之内。

对于点(x,y),只要判断两对不等式: xL≤x≤xR,yB≤y≤yT

若四个不等式均成立。则点在矩形窗口之内;否则,点在矩形窗口之外。 2.2 裁剪的分类

裁剪算法大致包括对以下图形的裁剪: ●线段的裁剪(线段) ●区域的裁剪(多边形) ●区域的裁剪(圆和曲线)

2.2.1线段的裁剪

线段与窗口的关系有如下三种:

(1)线段在窗口内,线段不需剪裁,完全可见;

(2)线段在窗口外,即线段不需剪裁,完全不可见;

(3)线段部分在窗口内,部分在窗口外,即需要求出线段与窗框的交点,并将窗口外的线段部分剪裁掉,只可见窗口内的直线部分。

线段的裁剪算法就是要找出位于窗口内部的起始点和终止点的坐标。因矢量裁剪法对寻找起点和终点坐标的处理方法相同,下面以求始点坐标为例来说明线段矢量裁剪方法。

在右图中,窗口的四条边界把XOY平面分成九个区域,分别用1到9对这九个窗口编号,设5号区域为相应的可见窗口区,窗口的左下角点坐标(minX,minY),右上角点坐标为(maxX,maxY)。有一条矢量线段S,其起、终点的坐标分别为(Xs,Ys)和(Xe,Ye),则对线段S按矢量裁剪的算法步骤如下: 1、若线段完全位于区域5以外的任意区域内或落在(1,2,3)(3,6,9)(7,8,9)(1,4,7)中任意一区域组内,即满足下述条件之一:

Xs

- 3 -

Xs>minX且Xe>minX, YsminY且Ye>minY

则线段S不在窗口内,不必作进一步的求交点处理,否则转下一步。

2、若线段S满足minX≤Xs≤maxX且minX≤Ys≤maxY ,则线段的起点在窗口内,新的起点坐标(X,Y)即为(Xs,Ys);否则,按以下各步判断S与窗口的关系以及解算其新起点坐标(X,Y)。 3、若Xs

(4-2-1)

此时要作以下判断:

(1) 若起点(minY≤Y≤maxY),则(X,Y)求解有效;

(2) 若起点(Xs,Ys)位于4区,且Xs>minY或Y>maxY,则线段S与窗口无交点;

(3) 若Y>maxY且Ys>maxY或者Y>minY且Ys

(a)当起点在1区且Ye>maxY或当起点位于7区且Ye< minY时,线段与窗口没有交点;否则还需作下面的判别; (b)若Ys

(4-2-2)

若Ys>maxY,则:

(4-2-3)

用(4-2-2)和(4-2-3)式求出的X若满足minX≤X≤maxX,则(X,Y)的求解有效,否则线段与窗口仍无交点。

4、当Xs>maxX ,即线段起点位于窗口右界的右边,可仿照上述过程求出线段与右边界的交点。

5、若起点(Xs,Ys)位于2或8区时,求解线段与窗口边界的交点公式为(4-2-4)和(4-2-5)式。

- 4 -

本文来源:https://www.bwwdw.com/article/hvxf.html

Top