#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();
}
Breshnham画圆法(计算机图形学)
最新推荐文章于 2024-07-03 22:11:06 发布