Annotation of researchv10no/libplot/lib4014/arc.c, revision 1.1

1.1     ! root        1: #include <stdio.h>
        !             2: #include <math.h>
        !             3: #include "tek.h"
        !             4: /*             arc plotting routine            */
        !             5: /*             from x1,y1 to x2,y2             */
        !             6: /*     with center xc,yc and radius rr */
        !             7: /*     integrates difference equation          */
        !             8: /*     negative rr draws counterclockwise      */
        !             9: #define PI4 0.7854
        !            10: arc(x1, y1, x2, y2, xc, yc, rr)
        !            11: double x1, x2, y1, y2, xc, yc, rr;
        !            12: {
        !            13:        register double dx, dy, a, b;
        !            14:        double  ph, dph, rd, xnext;
        !            15:        register int    n;
        !            16:        dx = x1 - xc;
        !            17:        dy = y1 - yc;
        !            18:        rd = sqrt(dx * dx + dy * dy);
        !            19:        if (rd / e1->quantum < 1.0) { 
        !            20:                move(xc, yc); 
        !            21:                vec(xc, yc); 
        !            22:                return(0);
        !            23:        }
        !            24:        dph = acos(1.0 - (e1->quantum / rd));
        !            25:        if (dph > PI4) 
        !            26:                dph = PI4;
        !            27:        ph=atan2((y2-yc),(x2 - xc)) - atan2(dy, dx);
        !            28:        if (ph < 0) 
        !            29:                ph += 6.2832; 
        !            30:        if (rr < 0) 
        !            31:                ph = 6.2832 - ph;
        !            32:        if (ph < dph) 
        !            33:                line(x1, y1, x2, y2);
        !            34:        else {
        !            35:                n = ph / dph; 
        !            36:                a = cos(dph); 
        !            37:                b = sin(dph); 
        !            38:                if (rr < 0) 
        !            39:                        b = -b;
        !            40:                move(x1, y1);
        !            41:                while ((n--) >= 0) {
        !            42:                        xnext = dx * a - dy * b; 
        !            43:                        dy = dx * b + dy * a; 
        !            44:                        dx = xnext;
        !            45:                        vec(dx + xc, dy + yc);
        !            46:                }
        !            47:        }
        !            48: }

unix.superglobalmegacorp.com

This archive runs on limited infrastructure. Preserving old code on modern bandwidth. Automated agents are requested to crawl responsibly.