42二维图形裁剪 ·裁剪是用于描述某一图形要素(如直线、圆等)是否 可一多边形窗口(如矩形窗口)相交的过程,其主要 用途是确定某些图形要素是否全部位于窗口之内,若 只有部分在窗口内又如何裁剪去窗口外的图形,从而 只显示窗口内的内容。 裁剪窗口可以为任意多边形,但在实际工作中大多是 矩形窗口,这里只讨论窗口为矩形的情况。 中阍她廣大学信息翟学院S教研室拱改有
4.2 二维图形裁剪 • 裁剪是用于描述某一图形要素(如直线、圆等)是否 与一多边形窗口(如矩形窗口)相交的过程,其主要 用途是确定某些图形要素是否全部位于窗口之内,若 只有部分在窗口内又如何裁剪去窗口外的图形,从而 只显示窗口内的内容。 • 裁剪窗口可以为任意多边形,但在实际工作中大多是 矩形窗口,这里只讨论窗口为矩形的情况
1、线段的矢量裁剪 在裁剪时不同的线段可能被窗口分成几段,但其中只有一段 位于窗口内可见 线段的裁剪算法就是要找出位于窗口内部的起始点和终止点 的坐标 因矢量裁剪法对寻找起点和终点坐标的处理方法相同,下面 以起始点坐标为例来说明线段矢量裁剪方法。 一窗口的四条边界把XOY平面分成九个区 域,分别用1到9对这九个窗编号 naxX, maxY) 具体参见电子教材 7 (minX, minY) 中阍她廣大学信息翟学院S教研改有
1、线段的矢量裁剪 • 在裁剪时不同的线段可能被窗口分成几段,但其中只有一段 位于窗口内可见。 • 线段的裁剪算法就是要找出位于窗口内部的起始点和终止点 的坐标。 • 因矢量裁剪法对寻找起点和终点坐标的处理方法相同,下面 以起始点坐标为例来说明线段矢量裁剪方法。 – 窗口的四条边界把XOY平面分成九个区 域,分别用1到9对这九个窗编号 – 具体参见电子教材
2、线段的编码裁剪法 这种方法将窗口的边界分成的 九个区按一定的规则用四位二 1001 1010 进制编码来表示。这样,当线 段的端点位于某一区时,该点 0001 0000 0010 的位置可以用其所在区域的四 B 位二进制码来唯一确定 101 0100 0110 通过对线段两端点的编码进行 逻辑运算,就可确定线段相对 于窗口的关系 中阍她廣大学信息翟学院S教研室拱改有
2、线段的编码裁剪法 • 这种方法将窗口的边界分成的 九个区按一定的规则用四位二 进制编码来表示。这样,当线 段的端点位于某一区时,该点 的位置可以用其所在区域的四 位二进制码来唯一确定, • 通过对线段两端点的编码进行 逻辑运算,就可确定线段相对 于窗口的关系
3、多边形的裁剪 多边形的裁剪比直线要复杂得多。因为经过裁剪后 多边形的轮廓线仍要闭合,而裁剪后的边数可能增加 当地插入窗口边界才能保持多边形的封闭性。 对于多边形的裁剪,人们研究出多了多种算法,其中 萨瑟兰德一霍奇曼( Sutherland- Hodgman)算法根据相 对于一条边界线裁剪多边形比较容易这一点,把整个 多边形先相对于窗口的第一条边界裁剪,然后再把形 成的新多边形相对于窗口的第二条裁剪,如此进行到 窗口的最后一条边界,从而把多边形相对于窗口的全 部边界进行了裁剪。 中阍她廣大学信息翟学院S教研室拱改有
3、多边形的裁剪 • 多边形的裁剪比直线要复杂得多。因为经过裁剪后, 多边形的轮廓线仍要闭合,而裁剪后的边数可能增加, 也可能减少,或者被裁剪成几个多边形,这样必须适 当地插入窗口边界才能保持多边形的封闭性。 • 对于多边形的裁剪,人们研究出多了多种算法,其中 萨瑟兰德-霍奇曼(Sutherland-Hodgman)算法根据相 对于一条边界线裁剪多边形比较容易这一点,把整个 多边形先相对于窗口的第一条边界裁剪,然后再把形 成的新多边形相对于窗口的第二条裁剪,如此进行到 窗口的最后一条边界,从而把多边形相对于窗口的全 部边界进行了裁剪
4、圆和曲线的裁剪 对圆的裁剪思路是,首先通过圆的外接矩形判断来确 定圆是否全部位于窗口的外边,若全部位于窗口外边, 则裁剪过程结束。否则,将圆分解成一组短线段,然 后按照直线裁剪的方法来进行。 由于曲线在实际绘制时是采用短直线来逼近曲线的方 法实现,故曲线的裁剪也采用一般直线裁剪方法对每 一短线段进行裁剪,从而实现对整个曲线的裁剪。 中阍她廣大学信息翟学院S教研室拱改有
4、圆和曲线的裁剪 • 对圆的裁剪思路是,首先通过圆的外接矩形判断来确 定圆是否全部位于窗口的外边,若全部位于窗口外边, 则裁剪过程结束。否则,将圆分解成一组短线段,然 后按照直线裁剪的方法来进行。 • 由于曲线在实际绘制时是采用短直线来逼近曲线的方 法实现,故曲线的裁剪也采用一般直线裁剪方法对每 一短线段进行裁剪,从而实现对整个曲线的裁剪