c语言中点算法生成圆,圆生成算法(中点画圆、Bresenham画圆)

#include

#include

void MidPointCircle(int r, int color);

void CirclePoints(int x,int y,int color);

void BresenhamCircle(int xc,int yc,int r,int color);

void plot_cicle_point(int xc,int yc,int x,int y,int color);

main()

{

int gdriver=DETECT,gmode;

initgraph(&gdriver,&gmode," ");

cleardevice();

setbkcolor(2);

MidPointCircle(100,4);

getch();

cleardevice();

BresenhamCircle(100,100,50,5);

getch();

closegraph();

}

void MidPointCircle(int r,int color)

{

int x,y;

float d;

x=0;y=r;

d=1.25-r;

CirclePoints(x,y,color);

while(x<=y)

{

if(d<0)

d+=2*x+3;

else

{

d+=2*(x-y)+5;

y--;

}

x++;

CirclePoints(x,y,color);

}

}

void CirclePoints(int x,int y,int color)

{

putpixel(x,y,color);

putpixel(y,x,color);

putpixel(-x,y,color);

putpixel(y,-x,color);

putpixel(x,-y,color);

putpixel(-y,x,color);

putpixel(-x,-y,color);

putpixel(-y,-x,color);

}

void plot_circle_point(int xc,int yc,int x,int y,int color)

{

putpixel(xc+x,yc+y,color);

putpixel(xc-x,yc+y,color);

putpixel(xc+x,yc-y,color);

putpixel(xc-x,yc-y,color);

putpixel(xc+y,yc+x,color);

putpixel(xc-y,yc+x,color);

putpixel(xc+y,yc-x,color);

putpixel(xc-y,yc-x,color);

}

void BresenhamCircle(int xc,int yc,int r,int color)

{

int x,y,d;

x=0;y=r;

d=3-2*r;

while(x

{

plot_circle_point(xc,yc,x,y,color);

if(d<0)

d=d+4*x+6;

else

{

d=d+4*(x-y)+10;

y--;

}

x++;

}

if(x==y)

plot_circle_point(xc,yc,x,y,color);

}

  • 1
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值