home *** CD-ROM | disk | FTP | other *** search
- /* ╟RAPHICS ╨ACKAGE - ╨ART 2
- ** ╞ILENAME: GRAFPAK2.C
- ** ┴UTHOR: ═ARK ╥. ╥INFRET
- ** ─ATE: 12/14/85
- ** ─ESCRIPTION:
- **
- ** ╘HIS IS PART 2 OF A MULTI-PART GRAPHICS PACKAGE, WRITTEN IN ├ (├-╨OWER)
- ** FOR THE ├OMMODORE 64. ╘HE 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"
-
- /* ╨LOT AN ARC.
- ** ╨ARAMETERS:
- ** 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 (╞╠╧┴╘!); 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/╥┴─├╧╬;
- 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++;
- ▌
- ▌
-
- /* ╨LOT A CIRCLE */
- CIRCLE(XORIGIN,YORIGIN,RADIUS,PEN)
- UNSIGNED XORIGIN,YORIGIN,RADIUS,PEN;
- █
- ARC(XORIGIN,YORIGIN,RADIUS,RADIUS,
- 0,360,0,1.0,1);
- ▌
-