Надежда Это поможет вам:
Алгоритм:
1) Получить X и Y координаты начальной и конечной точек линии.
2) Найдите разницу в координатах X и Y как dx и dy.
3) Проверьте, больше ли dx от dy, и назначьте большее значение «шагам».
4) Регулярно увеличивайте значения X и Y путем деления разности соответствующих осей на этапы.
5) Выделите начальную точку с помощью синтаксиса PUTPIXEL.
6) Повторите шаг 4 «шагов» и отметьте конечную точку, используя синтаксис «PUTPIXEL».
7) Завершите программу.
Program:
#include"graphics.h"
#include"stdio.h"
#include"conio.h"
#include"math.h"
void linedraw(int,int,int,int);
int main()
{
int x1coeff,y1coeff,x2coeff,y2coeff;
printf("\Enter the x and y value for starting point:");
scanf("%d%d",&x1coeff,&y1coeff);
printf("\Enter the x and y value for end point:");
scanf("%d%d",&x2coeff,&y2coeff);
linedraw(x1coeff,y1coeff,x2coeff,y2coeff);
getch();
return 0;
}
void linedraw(int xa,int ya,int xb,int yb)
{
int dx,dy,steps,k;
int gdriver=DETECT,gmode;
float xinc,yinc,x,y;
initgraph(&gdriver,&gmode,""); //initialise graphics
dx=xb-xa;
dy=yb-ya;
x=xa;
y=ya;
if(abs(dx)>abs(dy))
{
steps=abs(dx);
}
else
{
steps=abs(dy);
}
xinc=dx/steps;
yinc=dy/steps;
putpixel(x,y,WHITE);
for(k=0;k
{
x+=xinc;
y+=yinc;
putpixel(x,y,WHITE);
}}
Output:
Enter the x and y value for starting point:100 100
Enter the x and y value for end point:200 200
The Line drawn is