prindle@nadc (10/21/86)
From: prindle@NADC /* Graphics Package - Part 2 ** Filename: grafpak2.c ** Author: Mark R. Rinfret ** Date: 12/14/85 ** Description: ** ** This is part 2 of a multi-part graphics package, written in C (C-Power) ** for the Commodore 64. The routines contained in this segment are: ** ** arc - draws arcs, line segments, circles, ellipses, polygons ** circle - simplified call to arc ** ** */ #include <stdio.h> #include <strings.h> #include <math.h> #include "grafpak.h" /* Plot an arc. ** Parameters: ** xorigin,yorigin - center point ** xrad,yrad - x and y radii ** start,end - starting, ending point for arc, in degrees ** angl - degrees of rotation (not used yet) ** incr - degrees between steps (FLOAT!); 120.0 yields a triangle ** pen - (0-3) pen number to draw with */ arc(xorigin,yorigin,xrad,yrad, start,end,angl,incr,pen) unsigned xorigin,yorigin,xrad,yrad,start,end,angl; float incr; unsigned pen; { register unsigned cnt,x,y,px,py; float arad,fstart,fend,fincr,fxrad,fyrad,xo,yo; cnt = 0; fincr = incr; /* copy to local */ fyrad = yrad; fxrad = xrad * aspect; /* adjust to aspect ratio */ xo = xorigin; yo = yorigin; for (fstart=start,fend=end;fstart<=fend;fstart += fincr) { arad = fstart/RADCON; x = xo + fxrad * cos(arad); y = yo + fyrad * sin(arad); if (!cnt) pset(x,y,pen); else line(px,py,x,y,pen); px=x; py=y; cnt++; } } /* Plot a circle */ circle(xorigin,yorigin,radius,pen) unsigned xorigin,yorigin,radius,pen; { arc(xorigin,yorigin,radius,radius, 0,360,0,1.0,1); }