aboutsummaryrefslogtreecommitdiff
path: root/engines/mortevielle/droite.h
blob: 7dd029e2ec3630974cb02be4e77c4d052cd05ca1 (plain)
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
35
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);*/
        }
   }