xref: /original-bsd/lib/libplot/t300s/line.c (revision 3109f15a)
1 #ifndef lint
2 static char sccsid[] = "@(#)line.c	4.1 (Berkeley) 06/27/83";
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 }
46