DDA(Digital Differential Analyzer)是计算机图形学中常用的画线方法,比直接套用直线方程的效率要高
#include<stdlib.h>
#include<math.h>
inline int round(const float a){return int(a+0.5);}
void lineDDA(int x0,int y0,int x1,int y1)
{
int dx=x1-x0
int dy=y1-y0;
int steps;//执行的步数
//将长的那端作为步数
if(fabs(dx)>fab(dy))
{
steps=fabs(dx);
}
else
{
steps=fab(dy);
}
//算出增量
x_increment=float(dx)/steps;
y_increment=float(dy)/steps;
float x=x0,y=y0;
setPixel(round(x),round(y));
//根据增量逐个画出像素点
for(int k=0;k<steps;++k)//迭代绘制每个对应的点
{
x+=x_increment;
y+=y_increment;
setPixel(round(x),round(y));
}
}