2、.h>#definerad0.0174532925#defineNUMBER24main(){inti,r,xx[41],yy[41],x0,y0;floatt=360/40*3.14/180;intgdriver=DETECT,gmode;initgraph(&gdriver,&gmode,"");cleardevice();setbkcolor(RED);setcolor(YELLOW);x0=300;y0=250;r=200;for(i=0;i<41;i++){xx[i]=x0+r*cos(i*t);yy[i]=y0-r*sin(i*t
3、);}for(i=0;i<40;i++)line(xx[i],yy[i],xx[i+1],yy[i+1]);settextstyle(1,0,3);outtextxy(300,220,"C");line(300,250,500,250);getch();7closegraph();return0;}运行结果见文件夹:HUAYUAN2、由已有矩形四条边为直径画出四个圆的算法;#include#includevoidmain(){intgdrver=VGA,gmode=2;intx0=320,y0=24
4、0,r=60;initgraph(&gdrver,&gmode,"");/*图形模式驱动函数*/cleardevice();setcolor(2);rectangle(x0-r,y0-r,x0+r,y0+r);/*画矩形*/circle(x0,y0-r,r);/*画圆*/circle(x0,y0+r,r);circle(x0-r,y0,r);circle(x0+r,y0,r);getch();/*从键盘输入任意字符*/closegraph();}运行结果见文件夹:HUAYUAN23.生成圆弧的中点算法3.1算法思想为了生成圆弧,只需要计算出从
5、x=0到x=y分段内的像素点即可,其余的像素位置利用圆的八对称性即可得出。设圆的半径是R,从初始坐标点(0,R)开始递推,假设已计算出象素P(x,y),那么,下一个与圆弧最近的像素只能是正右方的P1(x+1,y),或右下方的P2(x+1,y-1)两者之一。令M为P1和P2的中点,易知M的坐标为(x+1,y-1/2)。显然,若M在圆内,则P1离圆弧近,应取为下一个像素;否则应取P2。判断M位置的递推公式如下:3.2程序:#include"Conio.h"#include"graphics.h"7#include"stdio.h"#include
6、"math.h"#defineclosegrclosegraph#definexo300#defineyo250#defineDELTA1.0#definemax100/*最大顶点数*/typedefstruct{intx;inty;}Point;typedefstruct{intpointNum;Point*vertices;}Polygon;voidinitgr(void)/*BGI初始化*/{intgd=DETECT,gm=0;/*和gd=VGA,gm=VGAHI是同样效果*/registerbgidriver(EGAVGA_drive
7、r);/*注册BGI驱动后可以不需要.BGI文件的支持运行*/initgraph(&gd,&gm,"");}/*控制线宽*/voidputpixels(intx,inty,intcolor,intn){inti,j;for(i=-n/2;i<=n/2;i++)for(j=-n/2;j<=n/2;j++)putpixel(x+j,y+i,color);}voidputpixelt(intx,inty,intcolor,inti){inta[8]={1,1,1,1,0,0,0,0};if(a[i%8])putpixel(x,y,color);}/
8、*画点*/voidEllipsePoints(intx,inty,intcolor){putpixel(xo+x,yo+y,color);putpixel(xo-x