直线绘制的方法有很多,下面介绍常用的两种,DDA算法和中点Bresenham算法
DDA算法的原理是,由于直线的一阶导数是连续的,而且Δx和Δy是成比例的,因此可以通过在当前位置(xi,yi)分别加上两个小增量ε*Δx和ε*Δy来求出下一点的x,y坐标
该方法在精度无限高的情况下可绘出无误差的直线,但设备的精度是有限的,因此通常选择
ε=1/max(|Δx|,|Δy|)
下面模拟实现DDA算法,需要给出直线的起点和终点
#include<stdio.h>
#include<string.h>
#include<conio.h>
#include<math.h>
#include<graphics.h>
void DDALine(int x0,int y0,int x1,int y1,COLORREF color)
{
int dx,dy,eps1,k;
float x,y,xIncre,yIncre;
dx=x1-x0;
dy=y1-y0;
x=x0;
y=y0;
if(abs(dx)>abs(dy))
eps1=abs(dx);
else
eps1=abs(dy);
xIncre=(float)dx/(float)eps1;
yIncre=(float)dy/(float)eps1;
for(k=0;k<=eps1;k++)