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