xref: /csrg-svn/lib/libplot/t300/line.c (revision 61399)
148521Sbostic /*-
2*61399Sbostic  * Copyright (c) 1983, 1993
3*61399Sbostic  *	The Regents of the University of California.  All rights reserved.
448521Sbostic  *
548521Sbostic  * %sccs.include.proprietary.c%
648521Sbostic  */
748521Sbostic 
813316Ssam #ifndef lint
9*61399Sbostic static char sccsid[] = "@(#)line.c	8.1 (Berkeley) 06/04/93";
1048521Sbostic #endif /* not lint */
1113316Ssam 
1213316Ssam #include "con.h"
line(x0,y0,x1,y1)1313316Ssam line(x0,y0,x1,y1){
1413316Ssam 	iline(xconv(xsc(x0)),yconv(ysc(y0)),xconv(xsc(x1)),yconv(ysc(y1)));
1513316Ssam 		return;
1613316Ssam }
cont(x0,y0)1713316Ssam cont(x0,y0){
1813316Ssam 	iline(xnow,ynow,xconv(xsc(x0)),yconv(ysc(y0)));
1913316Ssam 	return;
2013316Ssam }
iline(cx0,cy0,cx1,cy1)2113316Ssam iline(cx0,cy0,cx1,cy1){
2213316Ssam 	int maxp,tt,j,np;
2313316Ssam 	char chx,chy;
2413316Ssam 	float xd,yd;
2557885Storek 	double dist2(),sqrt();
2613316Ssam 		movep(cx0,cy0);
2713316Ssam 		maxp = sqrt(dist2(cx0,cy0,cx1,cy1))/2.;
2813316Ssam 		xd = cx1-cx0;
2913316Ssam 		yd = cy1-cy0;
3013316Ssam 		if(xd >= 0)chx = RIGHT;
3113316Ssam 		else chx = LEFT;
3213316Ssam 		if(yd >= 0)chy = UP;
3313316Ssam 		else chy = DOWN;
3413316Ssam 		if(maxp==0){
3513316Ssam 			xd=0;
3613316Ssam 			yd=0;
3713316Ssam 		}
3813316Ssam 		else{
3913316Ssam 			xd /= maxp;
4013316Ssam 			yd /= maxp;
4113316Ssam 		}
4213316Ssam 		inplot();
4313316Ssam 		for (tt=0; tt<=maxp; tt++){
4413316Ssam 			j= cx0+xd*tt-xnow;
4513316Ssam 			xnow += j;
4613316Ssam 			j = abval(j);
4713316Ssam 			while(j-- > 0)spew(chx);
4813316Ssam 			j = cy0+yd*tt-ynow;
4913316Ssam 			ynow += j;
5013316Ssam 			j = abval(j);
5113316Ssam 			while(j-- > 0)spew(chy);
5213316Ssam 			spew ('.');
5313316Ssam 		}
5413316Ssam 		outplot();
5513316Ssam 		return;
5613316Ssam }
57