Breshnham画圆法(计算机图形学)

#include <graphics.h>
#include <conio.h>
#include<stdio.h>

//Breshnham画圆法
void BresenhamCircle(int x0,int y0,int r,int color)
{
   int x,y,delta,delta1,delta2,direction;
   x=0;y=r;
   delta=2*(1-r);
   while(y>=0)
   {
	   // 利用圆的八分对称性画点
		putpixel(x0 + x, y0 + y, color);
		putpixel(x0 + x, y0 - y, color);
		putpixel(x0 - x, y0 + y, color);
		putpixel(x0 - x, y0 - y, color);
		putpixel(x0 + y, y0 + x, color);
		putpixel(x0 + y, y0 - x, color);
		putpixel(x0 - y, y0 + x, color);
		putpixel(x0 - y, y0 - x, color);

	   if(delta<=0)
	   {
	      delta1=2*(delta+y)-1;
		  if(delta1<=0) direction=1;
		  else direction=2;
	   }
	   else if(delta>0)
	   {
	      delta2=2*(delta-x)-1;
		  if(delta2<=0) direction=2;
		  else direction=3;
	   }
	   else 
		   direction=2;

   switch(direction)
   { 
   case 1:x++;
	      delta+=2*x+1;
		  break;
   case 2:x++;
	      y--;
	      delta+=2*(x-y+1);
	      break;
   case 3:y--;
	      delta+=(-2*y+1);
	      break;
   }/*switch*/
  }/*while*/
}/*BresenhamCircle*/

// 主函数
void main()
{

	//请输入圆心坐标和半径
	int x,y,r;
	printf("请输入圆心坐标和半径:\n");
	scanf("%d%d%d",&x,&y,&r);
	
	initgraph(640, 480);
	
	// 测试画圆

	BresenhamCircle(320,240,50,BLUE);
	
	
	// 按任意键退出
	getch();
	closegraph();
}

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值