DDA算法
虽然是大家不以为然的小算法,但对于我这个大一学生来看还是蛮新鲜的。
我所做的是C++中的openGL实现的,仅仅是换了个环境实现,所以就不多解释了,下面将代码贴出来。
//digital differential analyzer //取整int round(const float a){ return int(a + 0.5);};void DAA (int x0, int y0, int xEnd, int yEnd){ int dx = xEnd - x0; int dy = yEnd - y0; int steps; int rx = 0; int ry = 0; int k = 0; float xIncrement; float yIncrement; float x = x0; float y = y0; if(fabs((float)dx) > fabs((float)dy)) { steps = fabs((float)dx); } else { steps = fabs((float)dy); } //取增量 xIncrement = float(dx) / float(steps); yIncrement = float(dy) / float(steps); glVertex2f(round(x),round(y)); for(k = 0;k < steps;k++) { x += xIncrement; y += yIncrement; rx = round(x); ry = round(y); glVertex2f( rx, ry ); }}