1 /*- 2 * Copyright (c) 1983 The Regents of the University of California. 3 * All rights reserved. 4 * 5 * %sccs.include.proprietary.c% 6 */ 7 8 #ifndef lint 9 static char sccsid[] = "@(#)subr.c 4.2 (Berkeley) 04/22/91"; 10 #endif /* not lint */ 11 12 #include <stdio.h> 13 #include "con.h" 14 abval(q) 15 { 16 return (q>=0 ? q : -q); 17 } 18 19 xconv (xp) 20 { 21 /* x position input is -2047 to +2047, output must be 0 to PAGSIZ*HORZRES */ 22 xp += 2048; 23 /* the computation is newx = xp*(PAGSIZ*HORZRES)/4096 */ 24 return (xoffset + xp /xscale); 25 } 26 27 yconv (yp) 28 { 29 /* see description of xconv */ 30 yp += 2048; 31 return (yp / yscale); 32 } 33 34 inplot() 35 { 36 spew (ESC); 37 spew(PLOTIN); 38 } 39 40 outplot() 41 { 42 spew(ESC); 43 spew(PLOTOUT); 44 fflush(stdout); 45 } 46 47 spew(ch) 48 { 49 if(ch == UP){ 50 putc(ESC,stdout); 51 ch = DOWN; 52 } 53 putc(ch, stdout); 54 } 55 56 tobotleft () 57 { 58 move(-2048,-2048); 59 } 60 reset() 61 { 62 signal(2,1); 63 outplot(); 64 stty(OUTF,&ITTY); 65 exit(); 66 } 67 68 float 69 dist2 (x1, y1, x2, y2) 70 { 71 float t,v; 72 t = x2-x1; 73 v = y1-y2; 74 return (t*t+v*v); 75 } 76 77 swap (pa, pb) 78 int *pa, *pb; 79 { 80 int t; 81 t = *pa; 82 *pa = *pb; 83 *pb = t; 84 } 85 movep (xg,yg) 86 { 87 int i,ch; 88 if((xg == xnow) && (yg == ynow))return; 89 /* if we need to go to left margin, just CR */ 90 if (xg < xnow/2) 91 { 92 spew(CR); 93 xnow = 0; 94 } 95 i = (xg-xnow)/HORZRES; 96 if(xnow < xg)ch = RIGHT; 97 else ch = LEFT; 98 xnow += i*HORZRES; 99 i = abval(i); 100 while(i--)spew(ch); 101 i = abval(xg-xnow); 102 inplot(); 103 while(i--) spew(ch); 104 outplot(); 105 i=(yg-ynow)/VERTRES; 106 if(ynow < yg)ch = UP; 107 else ch = DOWN; 108 ynow += i*VERTRES; 109 i = abval(i); 110 while(i--)spew(ch); 111 i=abval(yg-ynow); 112 inplot(); 113 while(i--)spew(ch); 114 outplot(); 115 xnow = xg; ynow = yg; 116 } 117 118 xsc(xi){ 119 int xa; 120 xa = (xi - obotx) * scalex + botx; 121 return(xa); 122 } 123 ysc(yi){ 124 int ya; 125 ya = (yi - oboty) *scaley +boty; 126 return(ya); 127 } 128