#include<stdio.h>
#include<stdlib.h>
#include<math.h>
#include<conio.h>
#include<graphics.h>
void circ(float x1,float y1,float r)
{
void clrscr(void);
float x,y,n,m,i,j,x2,y2;
n=(int)(0.5*r+20); /*圆n等份*/
m=2*3.1415926535898/n; /*步进角度增量*/
x=(int)(x1-r+0.5);y=(int)(y1+0.5); /*起始坐标(x,y)*/
i=cos(m);j=sin(m);
putpixel(x,y,YELLOW);
for(;n>=1;n--)
{
x2=(int)(x*i-y*j); /*步进规律*/
y2=(int)(y*i+x*j);
putpixel(x2,y2,YELLOW);
x=x2;y=y2;
}
}
main()
{
float x1,y1,r;
int driver=DETECT, mode=0;
initgraph(&driver, &mode,"");
printf("inser the centre of a circle x1: \n");
scanf("%f",&x1);
printf("y1:\n");
scanf("%f",&y1);
printf("enter radius:\n");
scanf("%f",&r);
circ(x1,y1,r);
getch();
}
此题为圆的微分算法 只是不知道为什么圆心总是以(0,0)为中心 有时候只有几个点 而且只能看到圆的四分之一???????
[此贴子已经被作者于2006-10-25 12:30:01编辑过]