Commit | Line | Data |
---|---|---|
145e852b | 1 | #ifndef lint |
0f4556f1 | 2 | static char sccsid[] = "@(#)line.c 4.1 (Berkeley) 6/27/83"; |
145e852b SL |
3 | #endif |
4 | ||
5 | #include "con.h" | |
6 | line(x0,y0,x1,y1){ | |
7 | iline(xconv(xsc(x0)),yconv(ysc(y0)),xconv(xsc(x1)),yconv(ysc(y1))); | |
8 | return; | |
9 | } | |
10 | cont(x0,y0){ | |
11 | iline(xnow,ynow,xconv(xsc(x0)),yconv(ysc(y0))); | |
12 | return; | |
13 | } | |
14 | iline(cx0,cy0,cx1,cy1){ | |
15 | int maxp,tt,j,np; | |
16 | char chx,chy,command; | |
17 | float xd,yd; | |
18 | float dist2(),sqrt(); | |
19 | movep(cx0,cy0); | |
20 | maxp = sqrt(dist2(cx0,cy0,cx1,cy1))/2.; | |
21 | xd = cx1-cx0; | |
22 | yd = cy1-cy0; | |
23 | command = COM|((xd<0)<<1)|(yd<0); | |
24 | if(maxp == 0){ | |
25 | xd=0; | |
26 | yd=0; | |
27 | } | |
28 | else { | |
29 | xd /= maxp; | |
30 | yd /= maxp; | |
31 | } | |
32 | inplot(); | |
33 | spew(command); | |
34 | for (tt=0; tt<=maxp; tt++){ | |
35 | chx= cx0+xd*tt-xnow; | |
36 | xnow += chx; | |
37 | chx = abval(chx); | |
38 | chy = cy0+yd*tt-ynow; | |
39 | ynow += chy; | |
40 | chy = abval(chy); | |
41 | spew(ADDR|chx<<3|chy); | |
42 | } | |
43 | outplot(); | |
44 | return; | |
45 | } |