当前位置:
文档之家› 计算机图形学DDA画线算法及具体程序实现
计算机图形学DDA画线算法及具体程序实现
y1 y0 . x1 x0
画线过程:从 x 的左端点 x0 开始,向 x 右端点步进,步长=1(像 素) ,计算 y=ax+b,取像素点(x,round(y))作为当前点的坐标, 计算 若令
yi 1 kxi 1 b kxi b kx ; x 1 ,则 yi 1 yi k ,即当 x 每递增 1,y 递增 k。
dy = (y1-y0)/length; int i = 1; x = x0; y = y0; while(i<=length) { pDC->SetPixel((int)(x+0.5),(int)(y+0.5),color); x = x + dx; y = y + dy; i++; }
} }
4.程序结果:
class DDA { public: void DDALine(int x0,int y0,int x1,int y1,COLORREF color, CDC *pDC) {
float dx, dy, length, x, y; if(abs(x1-x0) >= abs(y1-y0)) length = abs(x1-x0); else length = abs(y1-y0); dx = (x1-x0)/length;
数学与软件科学学院 实验报告
学期: 2010 至 2011 第 一 学期 2010 年 9 月 20 日 课程名称: 计算机图形学 专业:信息与计算科学 2007 级 5 班 实验编号: 01 实验项目: DDA 画线 指导教师 庞朝阳 姓名: 学号:200706005 实验成绩:
一、实验目的及要求 1) 理解直线的生成算法; 2) 掌握直线生成算法——数值微分(DDA)法,并用 C++程序实现; 二、实验内容 1) 用 C++实现 DDA 画线程序; 2) 用 C++实现按 y=ax+b 画直线; 3) 每个取 10 万次循环,对比运行时间。 三、主要仪器设备及软件环境 1) 计算机; 2) Vc++6.0。 四、具体实验内容: 1.算法的基本思想: 已知过端点 P0 ( x0 , y0 )和 P1 x1, y1 的直线段 L( P0 , P1 ),斜率为 k=
综上,DDA 算法的本质在于利用数值方法解微分方程,通过同时 对 x 和 y 各增加一个小增量,计算下一步的 x,y 值。 2. DDA 算法的优缺点
优点: 与基本算法相比, 在扫描过程中减少了浮点运算, 提高了效率。 缺点:由于 x 与 d x ,y 与 d y 必须用浮点来表示,且每一步都要进行四 舍五入取整,不利于硬件实现,故效率有待提高。 3.程序代码 #include <iostream> #include "math.h" #define TRUE 1 usin