📄 4.4.c
字号:
/* WIN-TC BGI 图形编程模板 */
#include "Conio.h"
#include "graphics.h"
#include "stdio.h"
#include "math.h"
#define closegr closegraph
#define xo 300
#define yo 250
#define DELTA 0.0
#define max 100
/*最大顶点数*/
typedef struct
{int x;
int y;
}Point;
typedef struct
{int pointNum;
Point *vertices;
}Polygon;
void initgr(void) /* BGI初始化 */
{
int gd = DETECT, gm = 0; /* 和gd = VGA,gm = VGAHI是同样效果 */
registerbgidriver(EGAVGA_driver);/* 注册BGI驱动后可以不需要.BGI文件的支持运行 */
initgraph(&gd, &gm, "");
}
/*控制线宽*/
void putpixels(int x,int y,int color,int n)
{ int i,j;
for(i=-n/2;i<=n/2;i++)
for(j=-n/2;j<=n/2;j++)
putpixel(x+j,y+i,color);
}
void putpixelsh(int x,int y,int color,int n)
{int i;
for(i=-n/2;i<=n/2;i++)
putpixel(x,y+i,color);
}
void putpixelx(int x,int y,int color,int n)
{int i;
for(i=-n/2;i<=n/2;i++)
putpixel(x+i,y,color);
}
/*画点*/
void EllipsePoints(int x,int y,int color,int n)/*y=x上方*/
{putpixelsh(xo+x,yo+y,color,n);
putpixelsh(xo-x,yo+y,color,n);
putpixelsh(xo+x,yo-y,color,n);
putpixelsh(xo-x,yo-y,color,n);
}
void EllipsePointx(int x,int y,int color,int n)/*y=x下方*/
{putpixelx(xo+x,yo+y,color,n);
putpixelx(xo-x,yo+y,color,n);
putpixelx(xo+x,yo-y,color,n);
putpixelx(xo-x,yo-y,color,n);
}
void CirclePoints(int x,int y,int color,int n)
{putpixels(xo+x,yo+y,color,n);
putpixels(xo+y,yo+x,color,n);
putpixels(xo-y,yo+x,color,n);
putpixels(xo-x,yo+y,color,n);
putpixels(xo+y,yo-x,color,n);
putpixels(xo+x,yo-y,color,n);
putpixels(xo-x,yo-y,color,n);
putpixels(xo-y,yo-x,color,n);
}
/*画圆*/
void MidPointCircle(int radius,int color,int n)
/*生成圆弧的中点算法*/
{int x,y;
float d;
x=0;
y=radius;
d=5.0/4-radius;
CirclePoints(x,y,color,n);
while(y>x)
{if(d<=0)
d+=2.0*x+3;
else
{d+=2.0*(x-y)+5;
y--;
}
x++;
CirclePoints(x,y,color,n);
}
}
void PositiveNegativeArc(int radius,int color,int n)
/* 正负法生成圆弧 */
{int x,y,d;
x=0;
y=radius;
EllipsePoints(x,y,color,n);
x=1;
EllipsePoints(x,y,color,n);
d=1;
while(y>=0)
{if(y>x)
{
if(d>=0)
{d=d-2*y+1;
y--;
}
else
{d=d+2*x+1;
x++;
}
EllipsePoints(x,y,color,n);
} /*end of if*/
else
{
if(d>=0)
{d=d-2*y+1;
y--;
}
else
{d=d+2*x+1;
x++;
}
EllipsePointx(x,y,color,n);
}
}/*end of while*/
}/*end*/
main()
{
initgr(); /* BGI初始化 */
MidPointCircle(200,2,10);
PositiveNegativeArc(150,4,10);
getch(); /* 暂停一下,看看前面绘图代码的运行结果 */
closegr(); /*恢复TEXT屏幕模式 */
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -