用数值微分法(DDA法)绘制任意一条直线;(由键盘输入直线的两端点坐标)
#include<stdio.h>
#include<graphics.h>
void DDA(float x1,float y1,float x2,float y2){
float x,y,pp,m,n;
x=x2-x1;
y=y2-y1;
m=x1;
n=y1;
if(x>y)
pp=1/x;
else pp=1/y;
while(m<=x2&&n<=y2){
m=m+pp*x;
n=n+pp*y;
putpixel((int)(m+0.5),(int)(n+0.5),RED);
x1=m;
y1=n;
}
}
int main()
{
int gd=DETECT,gmode;
float x1,x2,y1,y2;
printf("输入端点坐标:\n");
printf("起点:");
scanf("%f%f",&x1,&y1);
printf("终点:");
scanf("%f%f",&x2,&y2);
initgraph(&gd,&gmode,"");
DDA(x1,y1,x2,y2);
getchar();
getchar();
closegraph();
}
(VC下)代码已经过编译,可直接使用。