基本图形生成算法直线圆弧

合集下载
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

第二象限 第四象限
走笔 +Y 走笔 -Y Fk+1=Fk-|xA |
走笔 -X 走笔 +X Fk+1=Fk+|yA |
逐点比较法绘制直线.doc
广东工业大学机电学院图学与数字媒体工程系
计算机图形学基础:基本图形生成算法——直线及圆弧的扫描转换
【注】递推公式的作用: 意义:简化计算过程,提高效率。 原则:尽可能以加减法代替乘除法。 方法:用当前点的偏差推算出走笔方向,并计算出下一
四、画线速度尽可能快,即算法效率要高。பைடு நூலகம்
广东工业大学机电学院图学与数字媒体工程系
计算机图形学基础:基本图形生成算法——直线及圆弧的扫描转换 直线的扫描转换
常用的直线生成算法有逐点比较法、正负法、数值微分 法和Bresenham算法等。
简介逐点比较法
详细介绍数值微分法和Bresenham算法。
广东工业大学机电学院图学与数字媒体工程系
广东工业大学机电学院图学与数字媒体工程系
计算机图形学基础:基本图形生成算法——直线及圆弧的扫描转换 直线的扫描转换——数值微分法
需要注意的是:由于在光栅化过程中,绘制点的最小单位 是1,因此对求出的xi+1和yi+1的值需要进行四舍五入。
xi 1 int( xi 1 0.5) yi 1 int( yi 1 0.5)
xi 1 xi x yi 1 yi y
式中,i=0, 1, 2 … , n-1,
x0 X 0 , y0 Y0 , xn X 1 , yn Y1
广东工业大学机电学院图学与数字媒体工程系
计算机图形学基础:基本图形生成算法——直线及圆弧的扫描转换 直线的扫描转换——数值微分法 当精度无限高的情况下,绘制出的直线无限接近理想 直线。这种理想情况不可能出现(因为设备的精度有 限)也没必要追求,因此通常增量系数的取值为:
即第i+1点的偏差判别式为:
xA ( yi 1) y A xi Fi x A
广东工业大学机电学院图学与数字媒体工程系
计算机图形学基础:基本图形生成算法——直线及圆弧的扫描转换 直线的扫描转换——逐点比较法
各象限的判别式
直线段 位置 第一象限 第三象限 偏差值FkP0 走笔 +X 走笔 -X Fk+1=Fk-|yA | 偏差值Fk<0 走笔 +Y 走笔 -Y Fk+1=Fk+|xA |
设当前位置为Mi(xi,yi),则计算偏差的函数为
F x y y x i A i A i
从偏差函数可知,光标每移动一个点,就要与理想直线的终 点坐标进行计算、比较,然后确定下一步走笔的方向和步长 的增量,这样绘制直线效率必然会很低,因此要对偏差函数 进行简化。
有效的方法是利用前一个点的偏差来推算下一个点的偏差值, 这种方法称为递推法。
广东工业大学机电学院图学与数字媒体工程系
计算机图形学基础:基本图形生成算法——直线及圆弧的扫描转换 直线的扫描转换——数值微分法
情况二:当 max( x , y ) y ,即 k 1 时,有:
1 1 xi 1 xi x xi y x xi k yi 1 yi y yi 1 y yi 1 y
要确定画线时光标移动的方向,必须要知道当前光 标点与理想直线的位置关系。位置关系通过坐标的 偏差来决定。 以第一象限为例分析逐点比较法的偏差计算过程。
广东工业大学机电学院图学与数字媒体工程系
计算机图形学基础:基本图形生成算法——直线及圆弧的扫描转换 直线的扫描转换——逐点比较法
设要绘制的直线为OA(即理想直 线),当前点为M,当前点与理想直 线的相对位置(即点M在OA的上方 或下方)用偏差值 的正负来判断。
偏差与走笔的关系分析:
当 <0时,角 < ,点M在理想直 线下方,按约定,画笔应向上(+y) 走一步; 当P0时,角P ,点M在理想直线 上方或在直线上,按约定,画笔应 向右(+x)走一步。
广东工业大学机电学院图学与数字媒体工程系
计算机图形学基础:基本图形生成算法——直线及圆弧的扫描转换 直线的扫描转换——逐点比较法 从计算偏差值的公式
则有xi+1= xi+1(其中1为步长) yi+1= yi,
Fi 1 x A yi 1 y A xi 1 x A yi y A ( xi 1) x A yi y A xi y A Fi y A
第i+1点的偏差判别式为:
广东工业大学机电学院图学与数字媒体工程系
广东工业大学机电学院图学与数字媒体工程系
计算机图形学基础:基本图形生成算法——直线及圆弧的扫描转换 直线的扫描转换——逐点比较法
例如已知前一个点的偏差值FiP0,说明点在理想直线的 上方,画笔应该沿+x方向移动一个步长;反之,则应该 沿+y向移动一个步长。 开始绘制直线时,光标位于理想直线的起点,因此始终 有F0=0。
广东工业大学机电学院图学与数字媒体工程系
计算机图形学基础:基本图形生成算法——直线及圆弧的扫描转换 直线的扫描转换——逐点比较法
将递推法用数学的方法表示为: 设当前位置为Mi(xi,yi), 下一个点位置为Mi+1(xi+1,yi+1)
求偏差的基本公式:
Fi x yi y xi A A
若FiP0,表示第i点在直线上方,
广东工业大学机电学院图学与数字媒体工程系
计算机图形学基础:基本图形生成算法——直线及圆弧的扫描转换
“发现最佳逼近直线的像素序列”就是发现直线生成的 算法。不同的算法有不同的效率,但各种算法的核心都 是围绕着判别和生成x、y增量的过程和方法(走笔规则)
展开研究的。
广东工业大学机电学院图学与数字媒体工程系
计算机图形学基础:基本图形生成算法——直线及圆弧的扫描转换 直线的扫描转换——逐点比较法
求偏差的基本公式:
将递推法用数学的方法表示为: 若Fi<0,表示第i点在直线下方, 则有xi+1= xi yi+1= yi +1 (其中1为步长),
Fi x yi y xi A A
Fi 1 xA yi 1 y A xi 1
DDA算法是一种增量算法,优点是直观、易于实现;
缺点是要做浮点运算和舍入取整,不利于硬件实现。
广东工业大学机电学院图学与数字媒体工程系
计算机图形学基础:基本图形生成算法——直线及圆弧的扫描转换 直线的扫描转换——数值微分法
斜率<=1时,以x为基本步 进方向,x方向每次步进 增量为1。
斜率>1时,以y为基 本步进方向,y方向 每次步进增量为1。
通常设:
当直线斜率小于或等于1,x方向为基本步进方向,即x=1, y的值由直线的斜率决定。
当直线斜率大于1,y为基本步进方向,即y=1,x的值由 直线的斜率决定。
广东工业大学机电学院图学与数字媒体工程系
计算机图形学基础:基本图形生成算法——直线及圆弧的扫描转换 直线的扫描转换——数值微分法
计算机图形学基础:基本图形生成算法——直线及圆弧的扫描转换 直线的扫描转换——逐点比较法
算法的判断规则——在绘图过程中,画笔每走一步,就要
与理想图形进行比较,然后决定下一步的走向,用步步逼 近的方法画出指定起止点间的直线段。
广东工业大学机电学院图学与数字媒体工程系
计算机图形学基础:基本图形生成算法——直线及圆弧的扫描转换 直线的扫描转换——逐点比较法
广东工业大学机电学院图学与数字媒体工程系
计算机图形学基础:基本图形生成算法——直线及圆弧的扫描转换 直线的扫描转换——数值微分法
void dda_line(float x0,float y0,float x1,float y1) { int i,epsl; float xincre,yincre,x,y; epsl=max(abs(x1-x0),abs(y1-y0)); xincre=(x1-x0)/epsl; yincre=(y1-y0)/epsl; x=x0; y=y0; for(i=1;i<=epsl;i++) { drawPoint(int(x+0.5),int(y+0.5)); //四舍五入取整 x=x+xincre; y=y+yincre; } 广东工业大学机电学院图学与数字媒体工程系 }
dy x Y1 Y0 k dx y X 1 X 0
广东工业大学机电学院图学与数字媒体工程系
计算机图形学基础:基本图形生成算法——直线及圆弧的扫描转换 直线的扫描转换——数值微分法
DDA算法的原理:由于直线的一阶导数是连续的,且x和y 是成比例的,因此可以通过在当前位置( xi , yi)分别加上两个 小增量 Hx 和 H y(其中为无穷小的正数)来求出下一个 点( xi+1, yi+1)的坐标。
计算机图形学基础:基本图形生成算法——直线及圆弧的扫描转换
通常认为,基本二维图形包括点、直线、圆、椭圆、 多边形域和字符串等。复杂曲线及各种复杂图形均可 由直线段和圆弧来拟合,因此研究直线和圆弧的生成 算法是二维图形生成技术的基础。
广东工业大学机电学院图学与数字媒体工程系
计算机图形学基础:基本图形生成算法——直线及圆弧的扫描转换 在光栅显示器生成一个对象,实质上是往帧缓冲区的 相应单元中写入数据;如画一条直线,实质上是发现 最佳逼近直线的像素序列、并填入相应颜色的过程, 这个过程称为直线的光栅化,或者称为直线的扫描转 换。
走笔约定——以第一象限为例。 当画笔(光标当前位置)位于 理想直线上方,则横向走笔, 即画笔沿x方向移动一个单位; 当画笔位于理想直线下方时, 则纵向走笔,即画笔沿y方向 移动一个单位。
广东工业大学机电学院图学与数字媒体工程系
计算机图形学基础:基本图形生成算法——直线及圆弧的扫描转换 直线的扫描转换——逐点比较法
步的偏差;再以画笔的当前位置重复上述过程,推算出画笔 下一步的动作。
广东工业大学机电学院图学与数字媒体工程系
计算机图形学基础:基本图形生成算法——直线及圆弧的扫描转换 直线的扫描转换——数值微分法
数值微分法(Digital Differential Analyzer)
简称DDA法,利用直线的微分方程生成直线的方法。 设直线的端点坐标为(X0,Y0)和(X1,Y1),直线的参 数方程为:
的计算公式为:
y M x y xM A A A tan tan xM x xM x A A yM y
tan函数在是单调递增函数,因此 的正负体现 和 的大小。
广东工业大学机电学院图学与数字媒体工程系
计算机图形学基础:基本图形生成算法——直线及圆弧的扫描转换 直线的扫描转换——逐点比较法
1 / max( x , y )
广东工业大学机电学院图学与数字媒体工程系
计算机图形学基础:基本图形生成算法——直线及圆弧的扫描转换 直线的扫描转换——数值微分法
绘制直线时,要确定一个方向的增量为单位增量,即确定 画线的基本步进方向,另一个方向的增量由直线的斜率决
定。确定基本步进方向的依据是理想直线的斜率k。
计算机图形学基础:基本图形生成算法——直线及圆弧的扫描转换
通常从以下四方面评价直线扫描转换算法的质量: 一、显示像素点应尽量靠近理想直线,直线要直,走样小; 二、直线端点准确,且绘制无定向性,即以哪一个端点为绘 制起点得到的线段应重合; 三、直线的亮度和色泽要均匀,避免造成视觉上一段亮一段
暗的感觉。这通过所绘制的像素点密度保持均匀来实现;
DDA算法的坐标迭代公式: 情况一:当 max( x , y ) x , 即 k 1 时,有:
1 xi 1 xi x xi x x xi 1 yi 1 yi y yi 1 y yi k x
y x y x tg tg M xA x A M M A
可知,分子的正负决定 的正 负,因此将公式简化如下:
F y x y x M M A A M
广东工业大学机电学院图学与数字媒体工程系
计算机图形学基础:基本图形生成算法——直线及圆弧的扫描转换 直线的扫描转换——逐点比较法
相关文档
最新文档