aboutsummaryrefslogtreecommitdiff
path: root/engines/mortevielle/droite.h
diff options
context:
space:
mode:
Diffstat (limited to 'engines/mortevielle/droite.h')
-rw-r--r--engines/mortevielle/droite.h35
1 files changed, 35 insertions, 0 deletions
diff --git a/engines/mortevielle/droite.h b/engines/mortevielle/droite.h
new file mode 100644
index 0000000000..7dd029e2ec
--- /dev/null
+++ b/engines/mortevielle/droite.h
@@ -0,0 +1,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);*/
+ }
+ } \ No newline at end of file