scummvm/engines/mortevielle/droite.cpp
2012-04-06 08:18:20 +02:00

35 lines
811 B
C++

void droite(int x, int y, int xx, int yy, int coul) {
int step, i;
float a, b;
float 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 = (float)((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 = (float)((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);*/
}
}