# 2.11BSD#431 - /usr/src/usr.lib/libplot/imagen/arc.c

##### Functions

    abs               X
    arc               X
    quad              X
    step              X

##### Variables

    del               X

       1: /*
       2:  * Copyright (c) 1985 Regents of the University of California.
       3:  * All rights reserved.  The Berkeley software License Agreement
       4:  * specifies the terms and conditions for redistribution.
       5:  */
       6:
       7: #ifndef lint
       8: static char sccsid[] = "@(#)arc.c	5.1 (Berkeley) 9/21/85";
       9: #endif not lint
      10:
      11: int del = 20;
      12: step(d){
      13:     del = d;
      14: }
      15: arc(x,y,x0,y0,x1,y1){
      16:     double pc;
      17:     double sqrt();
      18:     int flg,m,xc,yc,xs,ys,qs,qf;
      19:     float dx,dy,r;
      20:     char use;
      21:     dx = x-x0;
      22:     dy = y-y0;
      23:     r = dx*dx+dy*dy;
      24:     pc = r;
      25:     pc = sqrt(pc);
      26:     flg = pc/4;
      27:     if(flg == 0)step(1);
      28:     else if(flg < del)step(flg);
      29:     xc = xs = x0;
      30:     yc = ys = y0;
      31:     move(xs,ys);
      32:     if(x0 == x1 && y0 == y1)flg=0;
      33:     else flg=1;
      34:     qs = quad(x,y,x0,y0);
      35:     qf = quad(x,y,x1,y1);
      36:     if(abs(x-x1) < abs(y-y1)){
      37:         use = 'x';
      38:         if(qs == 2 || qs ==3)m = -1;
      39:         else m=1;
      40:     }
      41:     else {
      42:         use = 'y';
      43:         if(qs > 2)m= -1;
      44:         else m= 1;
      45:     }
      46:     while(1){
      47:         switch(use){
      48:         case 'x':
      49:             if(qs == 2 || qs == 3)yc -= del;
      50:             else yc += del;
      51:             dy = yc-y;
      52:             pc = r-dy*dy;
      53:             xc = m*sqrt(pc)+x;
      54:             if((x < xs && x >= xc) || ( x > xs && x <= xc) ||
      55:                 (y < ys && y >= yc) || ( y > ys && y <=  yc) )
      56:             {
      57:                 if(++qs > 4)qs=1;
      58:                 if(qs == 2 || qs == 3)m= -1;
      59:                 else m=1;
      60:                 flg=1;
      61:             }
      62:             cont(xc,yc);
      63:             xs = xc;
      64:             ys = yc;
      65:             if(qs == qf && flg == 1)
      66:                 switch(qf){
      67:                 case 3:
      68:                 case 4:
      69:                     if(xs >= x1)return;
      70:                     continue;
      71:                 case 1:
      72:                 case 2:
      73:                     if(xs <= x1)return;
      74:                 }
      75:             continue;
      76:         case 'y':
      77:             if(qs > 2)xc += del;
      78:             else xc -= del;
      79:             dx = xc-x;
      80:             pc = r-dx*dx;
      81:             yc = m*sqrt(pc)+y;
      82:             if((x < xs && x >= xc) || ( x > xs && x <= xc ) ||
      83:                 (y < ys && y >= yc) || (y > ys && y <= yc) )
      84:             {
      85:                 if(++qs > 4)qs=1;
      86:                 if(qs > 2)m = -1;
      87:                 else m = 1;
      88:                 flg=1;
      89:             }
      90:             cont(xc,yc);
      91:             xs = xc;
      92:             ys = yc;
      93:             if(qs == qf && flg == 1)
      94:                 switch(qs){
      95:                 case 1:
      96:                 case 4:
      97:                     if(ys >= y1)return;
      98:                     continue;
      99:                 case 2:
     100:                 case 3:
     101:                     if(ys <= y1)return;
     102:                 }
     103:         }
     104:     }
     105: }
     106: quad(x,y,xp,yp){
     107:     if(x < xp)
     108:         if(y <= yp)return(1);
     109:         else return(4);
     110:     else if(x > xp)
     111:         if(y < yp)return(2);
     112:         else return(3);
     113:     else if(y < yp)return(2);
     114:     else return(4);
     115: }
     116: abs(a){
     117:     if(a < 0)return(-a);
     118:     return(a);
     119: }

#### Defined functions

abs defined in line 116; used 2 times

- in line 36(2)

arc defined in line 15; used 1 times

- in /usr/src/usr.lib/libplot/imagen/circle.c line 12

quad defined in line 106; used 2 times

- in line 34-35(2)

step defined in line 12; used 2 times

- in line 27-28(2)

#### Defined variables

del defined in line 11; used 6 times

- in line 13, 28, 49-50(2), 77-78(2)

sccsid defined in line 8; never used

Last modified: 1987-02-18 Generated: 2016-12-26 | Generated by src2html V0.67 page hit count: 837 |