34 lines
680 B
C
34 lines
680 B
C
/*
|
|
* Copyright (c) 1980 Regents of the University of California.
|
|
* All rights reserved. The Berkeley software License Agreement
|
|
* specifies the terms and conditions for redistribution.
|
|
*/
|
|
|
|
#ifndef lint
|
|
static char sccsid[] = "@(#)circle.c 1.1 94/10/31 SMI"; /* from UCB 5.1 5/7/85 */
|
|
#endif not lint
|
|
|
|
#include "hp2648.h"
|
|
|
|
circle (xc,yc,r)
|
|
int xc,yc,r;
|
|
{
|
|
double costheta,sintheta,x,y,xn;
|
|
int xi,yi;
|
|
|
|
if(r<1){
|
|
point(xc,yc);
|
|
return;
|
|
}
|
|
sintheta = 1.0/r;
|
|
costheta = pow(1-sintheta*sintheta,0.5);
|
|
xi = x = r;
|
|
yi = y = 0;
|
|
do {
|
|
point(xc+xi,yc+yi);
|
|
xn = x;
|
|
xi = x = x*costheta + y*sintheta;
|
|
yi = y = y*costheta - xn*sintheta;
|
|
} while( ! (yi==0 && xi >= r-1));
|
|
}
|