scummvm/engines/mortevielle/droite.cpp

35 lines
811 B
C++
Raw Normal View History

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
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);
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);
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
}