第2章 基本图形生成算法
- 格式:ppt
- 大小:1.01 MB
- 文档页数:95
3基本图形生成算法由于绘图机传动机构的限制,绘图时绘图笔只能作四个基本方向及组合的运动(共8个方向)。
每送一个信号就会驱使绘图笔沿8个方向之一移动一个步距,经过多次移动(形成阶梯状折线),即可给出人们需要的由折线逼近的复杂图形。
在显示器中绘制图形时,由于图形显示器像元的点阵分布,只能在显示器所给定的有限个像素组成的矩阵中,确定最佳逼近于该图形的一组像素。
绘图机的移动步距及显示器的像素决定着绘图的精度。
3.1直线的生成3.1.1数值微分法直线的斜率:x y k ∆∆=/。
其中,),(),(,,11000101y x y x y y y x x x 和-=∆-=∆分别是直线的端点坐标。
然后,从直线的起点开始,确定最佳逼近于直线的y 坐标。
假定端点坐标均为整数,让x 从起点到终点变化,每步递增1,计算对应的y 坐标,y=kx+B ,并取像素(x ,round(y))。
用这种方法既直观,又可行,然而效率较低。
这因为每步运算都需要一个浮点乘法与一个舍入运算。
注意到 xk y xk B kx Bx x k Bkx y i i i i i ∆+=∆++=+∆+=+=++)(11因此,当1=∆x 时,又k y y i i +=+1,既当x 每递增1时,y 递增k (即直线斜率)。
一开始,直线起点(x 0,y 0注意上述分析和算法仅适用于|k|<=1的情形。
在这种情况下,x 每增加1,y 最多增加1,故在迭代过程的每一步,只要确定一个像素。
而当直线斜率k 的绝对值超过1时,必须把x,y 的地位交换,y 每增加1,x 相应增加1/k 。
数值微分法的本质,是用数值方法解微分方程,通过同时对x,y 各增加一个小增量,计算下一步的x,y 值。
在一个迭代算法中,如果每一步的x,y 值是用前一步的值加上个增量来获得的,那么,这种算法就成为增量算法。
在这个算法中,y 和k 必须用浮点数表示,而且每一步运算都必须对y 进行舍入取整。
2.6图形的剪裁内容提要(1)计算机是如何将几何图形显示到屏幕上的?(2)了解各种坐标系的定义及其作用;(3)熟悉二维观察流程;(4)掌握2维坐标变换的基本方法;(5)掌握常用的二维裁剪算法,并会编程实现。
在计算机图形显示的过程中,往往需要确定图形的哪些部分(包括点、线段、文字、多边形等)落在显示区域(即:视口或视区)之内,哪些部分落在显示区域之外,以便只显示位于显示区域内的那部分图形。
裁剪的实质就是决定图形中哪些部分位于指定的区域内。
这需要进行几何处理,以便去除落在指定区域之外的部分,保留位于指定区域以内的部分。
这个过程称为裁剪。
最直观的裁剪方法是把各种几何图素通过扫描转换等技术离散成为点的集合,再逐点判断其是否位于指定的区域内。
那样虽然简单,但是效率太低,一般不可取。
1、线段的裁剪对于一条给定的线段,其裁剪过程一般包括以下几个部分:首先测试和判断它是否完全落在裁剪区之内?如果不是,再判断它是否完全落在裁剪区之外?然后,对于既不能确定完全落在裁剪区之内又不能确定完全落在裁剪区之外的线段,要计算它与一个或多个裁剪边界的交点。
最后,对线段的端点进行测试,对于两个端点都落在裁剪区域内的线段就存储起来,否则就予以去除,即裁剪之。
一、C o h e n-S u t h e r l a n d裁剪算法这个算法的特点是:通过初始测试来快速判断线段与视区的关系,以便减少线段求交的次数,从而提高裁剪算法的速度。
C o h e n-S u t h e r L a n d裁剪算法的基本思想:对每条线段P1P2:1)判断端点在裁剪区域内、外:P1P2完全在视区内,保存之;P1P2完全在视区外,舍弃之;2)上述两条件均不满足,则计算图形与裁剪边界的交点,将该线段分为分别位于裁剪区域内、外的两段,再重复1)。
在分段时,依据端点的区域码分别计算线段与各条裁剪边界的交点,如图3.10所示,对P1就需要分别计算交点P3和P4;即只要按顺序检测端点区域码的每一位,当某位不为0时,才把线段与对应的裁剪边界进行求交。