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