xref: /csrg-svn/lib/libplot/hp2648/circle.c (revision 19975)
1 /*
2  * Copyright (c) 1980 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[] = "@(#)circle.c	5.1 (Berkeley) 05/07/85";
9 #endif not lint
10 
11 #include "hp2648.h"
12 
13 circle (xc,yc,r)
14 int xc,yc,r;
15 {
16 	double costheta,sintheta,x,y,xn;
17 	int xi,yi;
18 
19 	if(r<1){
20 		point(xc,yc);
21 		return;
22 	}
23 	sintheta = 1.0/r;
24 	costheta = pow(1-sintheta*sintheta,0.5);
25 	xi = x = r;
26 	yi = y = 0;
27 	do {
28 		point(xc+xi,yc+yi);
29 		xn = x;
30 		xi = x = x*costheta + y*sintheta;
31 		yi = y = y*costheta - xn*sintheta;
32 	} while( ! (yi==0 && xi >= r-1));
33 }
34