1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
|
void droite(integer x, integer y, integer xx, integer yy, integer coul) {
integer step, i;
real a, b;
real xr, yr, xro, yro;
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)) {
a = (real)((x - xx)) / (y - yy);
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 {
a = (real)((y - yy)) / (x - xx);
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);*/
}
}
|