2011-12-26 17:57:54 +00:00
|
|
|
void droite(int x, int y, int xx, int yy, int coul) {
|
|
|
|
int step, i;
|
2011-12-26 18:18:34 +00:00
|
|
|
float a, b;
|
|
|
|
float xr, yr, xro, yro;
|
2011-12-23 19:02:50 +00:00
|
|
|
|
2011-12-23 22:15:35 +00:00
|
|
|
xr = x;
|
|
|
|
yr = y;
|
|
|
|
xro = xx;
|
|
|
|
yro = yy;
|
|
|
|
/*writeln(le_file,'(',x:4,',',y:4,') ==> (',xx:4,',',yy:4,')');*/
|
|
|
|
if (abs(y - yy) > abs(x - xx)) {
|
2011-12-26 18:18:34 +00:00
|
|
|
a = (float)((x - xx)) / (y - yy);
|
2011-12-23 22:15:35 +00:00
|
|
|
b = (yr * xro - yro * xr) / (y - yy);
|
|
|
|
i = y;
|
|
|
|
if (y > yy) step = -1;
|
|
|
|
else step = 1;
|
|
|
|
do {
|
|
|
|
putpix(gd, trunc(a * i + b), i, coul);
|
|
|
|
i = i + step;
|
|
|
|
} while (!(i == yy));
|
|
|
|
/*writeln(le_file,'X == ',a:3:3,' * Y + ',b:3:3);*/
|
|
|
|
} else {
|
2011-12-26 18:18:34 +00:00
|
|
|
a = (float)((y - yy)) / (x - xx);
|
2011-12-23 22:15:35 +00:00
|
|
|
b = ((yro * xr) - (yr * xro)) / (x - xx);
|
|
|
|
i = x;
|
|
|
|
if (x > xx) step = -1;
|
|
|
|
else step = 1;
|
|
|
|
do {
|
|
|
|
putpix(gd, i, trunc(a * i + b), coul);
|
|
|
|
i = i + step;
|
|
|
|
} while (!(i == xx));
|
|
|
|
/*writeln(le_file,'Y == ',a:3:3,' * X + ',b:3:3);*/
|
|
|
|
}
|
2011-12-26 17:57:54 +00:00
|
|
|
}
|