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

35 lines
1011 B
C

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