计信学院 专业:
计科 班级:
计科 101 姓名 罗琳 学号 1008060016 实验组 实验时间 2013-3-27 指导教师 吴云 成绩 实验项目名称 直线生成算法 实验目的 通过本实验,了解并掌握在光栅显示系统中直线的生成和显示算法,熟悉相关开发平台。为后继实验打下基础。
实验要求 实现 dda 画线算法,中点画线算法和 bresenham 画线算法,并比较 实验原理 数值微分法(dda-digital differential analyzer)算法原理:
设直线两端点为:p1(x1,y1)及 p0(x0,y0), 则直线斜率为:
直线方程为:
当 | k |<=1,x 每增加 1,y 最多增加 1(或增加小于 1)。
当 | k |>1 ,y 每增加 1,x 最多增加 1(或增加小于 1)。
0 10 1x xy yxykb kx yi i 1 1111| | 1i i i ii ii iy kx b k x x b kx b k xy y k xlet xy y k k y i x i y i +1 x i +1 11111| | 1i iii iy y b b yxk k k k klet yx x kk
算法分析:
:
复杂度:加法+取整 优点:避免了 y=kx+b 方程中的浮点乘法,比直接用点斜式画线快。
缺点:需浮点数加法及取整运算,不利于硬件实现。
中点画线法 算法原理:
设 0 中点算法用整数加法及比较代替了dda 中的浮点数加法及取整运算,效率大大提高。假设直线的起点、终点分别为:(x 0 ,y 0),(x 1 ,y 1),直线将二维空间划分为三个区域: 直线方程: f(x,y)=ax+by+c=0 其中: a=-(y1-y0),b=(x1-x0),c=-b(x1-x0)如 f(x,y)=0, 则(x,y)在直线上 如 f(x,y)<0, 则(x,y)在直线下方 如 f(x,y)>0, 则(x,y)在直线上方 因此,可将中点 m 的坐标(xp+1,yp+0.5)代入直线方程,并判断其符号即可确定象素点的选取。
计算机绘图实验报告总结汇总
文件夹