/* WIN-TC BGI 图形编程模板 */
#include "dos.h"
#include "Conio.h"
#include "graphics.h"
#define closegr closegraph
#define Locate 300
#define R1 50
#define R2 80
#define R3 110
#define R4 140
void initgr(void) /* BGI初始化 */
{
int gd=DETECT,gm=0; /* 和gd=VGA,gm=VGAHI是同样效果 */
registerbgidriver(EGAVGA_driver);/* 注册BGI驱动后可以不需要.BGI文件的支持运行 */
initgraph(&gd,&gm,"");
}
void MidpointCircle(int r,int color,int flag)
{
int x,y,d;
x=0;
y=r;
d=1-r;
putpixel(y,x,color);
while(x<y)
{
if(d<0)
{
d+=2*x+3;
x++;
}
else
{
d+=2*(x-y)+5;
x++;
y--;
}
if(flag==0)
{
putpixel(Locate-x,Locate-y,color);
delay(1000);
putpixel(Locate+x,Locate-y,color);
delay(1000);
}
else
{
putpixel(Locate-y,Locate+x,color);
delay(1000);
putpixel(Locate+y,Locate+x,color);
delay(1000);
}
}
d=x*x+y*y+x-2*y+1.25-r*r;
while(y>0)
{
if(d<0)
{
d+=2*x-2*y+5;
x++;
y--;
}
else
{
d+=3-2*y;
y--;
}
if(flag==0)
{
putpixel(Locate-x,Locate-y,color);
delay(1000);
putpixel(Locate+x,Locate-y,color);
delay(1000);
}
else
{
putpixel(Locate-y,Locate+x,color);
delay(1000);
putpixel(Locate+y,Locate+x,color);
delay(1000);
}
}
}
void FillCircle(int x0,int y0,int color)
{
int x,y;
float d1,d2,d3,d4;
for(y=y0-R4;y<=y0+R4;y++)
for(x=x0-R4;x<=x0+R4;x++)
{
d1=(x-x0)*(x-x0)+(y-y0)*(y-y0)-R4*R4;
d2=(x-x0)*(x-x0)+(y-y0)*(y-y0)-R3*R3;
d3=(x-x0)*(x-x0)+(y-y0)*(y-y0)-R2*R2;
d4=(x-x0)*(x-x0)+(y-y0)*(y-y0)-R1*R1;
if(d1<=0&&d2>=0)
putpixel(x,y,color);
if(d3<=0&&d4>=0)
putpixel(x,y,color);
delay(100);
}
}
void main()
{
initgr(); /* BGI初始化 */
printf("计算0512 2005810049 ");
MidpointCircle(R1,1,0);
MidpointCircle(R1,1,1);
MidpointCircle(R2,2,0);
MidpointCircle(R2,2,1);
MidpointCircle(R3,3,0);
MidpointCircle(R3,3,1);
MidpointCircle(R4,4,0);
MidpointCircle(R4,4,1);
getch();
FillCircle(Locate,Locate,5);
getch(); /* 暂停一下,看看前面绘图代码的运行结果 */
closegr(); /* 恢复TEXT屏幕模式 */
}
#include "dos.h"
#include "Conio.h"
#include "graphics.h"
#define closegr closegraph
#define Locate 300
#define R1 50
#define R2 80
#define R3 110
#define R4 140
void initgr(void) /* BGI初始化 */
{
int gd=DETECT,gm=0; /* 和gd=VGA,gm=VGAHI是同样效果 */
registerbgidriver(EGAVGA_driver);/* 注册BGI驱动后可以不需要.BGI文件的支持运行 */
initgraph(&gd,&gm,"");
}
void MidpointCircle(int r,int color,int flag)
{
int x,y,d;
x=0;
y=r;
d=1-r;
putpixel(y,x,color);
while(x<y)
{
if(d<0)
{
d+=2*x+3;
x++;
}
else
{
d+=2*(x-y)+5;
x++;
y--;
}
if(flag==0)
{
putpixel(Locate-x,Locate-y,color);
delay(1000);
putpixel(Locate+x,Locate-y,color);
delay(1000);
}
else
{
putpixel(Locate-y,Locate+x,color);
delay(1000);
putpixel(Locate+y,Locate+x,color);
delay(1000);
}
}
d=x*x+y*y+x-2*y+1.25-r*r;
while(y>0)
{
if(d<0)
{
d+=2*x-2*y+5;
x++;
y--;
}
else
{
d+=3-2*y;
y--;
}
if(flag==0)
{
putpixel(Locate-x,Locate-y,color);
delay(1000);
putpixel(Locate+x,Locate-y,color);
delay(1000);
}
else
{
putpixel(Locate-y,Locate+x,color);
delay(1000);
putpixel(Locate+y,Locate+x,color);
delay(1000);
}
}
}
void FillCircle(int x0,int y0,int color)
{
int x,y;
float d1,d2,d3,d4;
for(y=y0-R4;y<=y0+R4;y++)
for(x=x0-R4;x<=x0+R4;x++)
{
d1=(x-x0)*(x-x0)+(y-y0)*(y-y0)-R4*R4;
d2=(x-x0)*(x-x0)+(y-y0)*(y-y0)-R3*R3;
d3=(x-x0)*(x-x0)+(y-y0)*(y-y0)-R2*R2;
d4=(x-x0)*(x-x0)+(y-y0)*(y-y0)-R1*R1;
if(d1<=0&&d2>=0)
putpixel(x,y,color);
if(d3<=0&&d4>=0)
putpixel(x,y,color);
delay(100);
}
}
void main()
{
initgr(); /* BGI初始化 */
printf("计算0512 2005810049 ");
MidpointCircle(R1,1,0);
MidpointCircle(R1,1,1);
MidpointCircle(R2,2,0);
MidpointCircle(R2,2,1);
MidpointCircle(R3,3,0);
MidpointCircle(R3,3,1);
MidpointCircle(R4,4,0);
MidpointCircle(R4,4,1);
getch();
FillCircle(Locate,Locate,5);
getch(); /* 暂停一下,看看前面绘图代码的运行结果 */
closegr(); /* 恢复TEXT屏幕模式 */
}