k>1
1.输入直线的两端点P0(x0,y0)和P1(x1,y1)。
2.x=x0、y=y0。
3。绘制点(round(x),y),x=x+1/k,y=y+1。
4.重复步骤3直到y=y1为止。
k<-1
1.输入直线的两端点P0(x0,y0)和P1(x1,y1)。
2.x=x0、y=y0。
3.绘制点(round(x),y),x=x-1/k,y=y-1。
4.重复步骤3直到y=y1为止。
#include <graphics.h>
#include <iostream>
#include<sstream>
using namespace std;
int DDA_Line(int x0,int y0, int x1, int y1)
{
float x,y;
float dx,dy,k,k_inv;
dx=x1-x0;
dy=y1-y0;
k=dy/dx;
k_inv=dx/dy;
if (k<=1&k>=-1)
for(x=x0,y=y0;x<=x1;x++)
{
putpixel(x,int(y+0.5),GREEN);
y=y+k;
}
else if (k>1)
for(y=y0,x=x0;y<=y1;y++)
{
putpixel(int(x+0.5),y,GREEN);
x=x+k_inv;
}
else
for(y=y0,x=x0;y>=y1;y--)
{
putpixel(int(x+0.5),y,GREEN);
x=x-k_inv;
}
return 0;
}
int main()
{
initgraph(1000,700,INIT_RENDERMANUAL);
setbkcolor(WHITE);
int x0,y0,x1,y1;
stringstream str;
char st1[50];
inputbox_getline("input","Input X0 Y0 X1 Y1", st1,50);
str<<st1;
str>>x0>>y0>>x1>>y1;
DDA_Line(x0,y0,x1,y1);
getch();
closegraph();
return 0;
}