1 /*-
2 * Copyright (c) 1980, 1993
3 * The Regents of the University of California. All rights reserved.
4 *
5 * %sccs.include.proprietary.c%
6 */
7
8 #ifndef lint
9 static char sccsid[] = "@(#)subr.c 8.2 (Berkeley) 01/07/94";
10 #endif /* not lint */
11
12 #include "dumb.h"
13
14 /* Does not plot first point -- assumed that it is already plotted */
dda_line(ch,x0,y0,x1,y1)15 dda_line(ch, x0, y0, x1, y1)
16 char ch;
17 int x0, y0; /* already transformed to screen coords */
18 int x1, y1; /* untransformed */
19 {
20 int length, i;
21 double deltaX, deltaY;
22 double x, y;
23
24 scale(x1, y1);
25
26 length = abs(x1 - x0);
27 if (abs(y1 -y0) > length)
28 length = abs(y1 - y0);
29
30 if (length == 0)
31 return;
32
33 deltaX = (double) (x1 - x0)/(double) length;
34 deltaY = (double) (y1 - y0)/(double) length;
35
36 x = (double) x0 + 0.5;
37 y = (double) y0 + 0.5;
38
39 for (i=0; i < length; ++i) {
40 x += deltaX;
41 y += deltaY;
42 x0 = floor(x);
43 y0 = floor(y);
44 currentx = x0;
45 currenty = y0;
46 screenmat[currentx][currenty] = ch;
47 }
48 }
49