(1) 修改例1的代码,改变顶点个数(要求50个顶点),使得得到的图形更逼近于正圆,在实验报告中给出完整的代码和对应的运行结果截图
#include<graphics.h>
#include<math.h>
main()
{
int i,j,r,xx[51],yy[51],x0,y0;
float st=360.0/50*3.14/180;
x0=300;y0=250;r=200;
initgraph(800,600);
setbkcolor(BLUE);setcolor(YELLOW);
for(i=0;i<51;i++)
{ xx[i]=x0+r*cos(i*st);yy[i]=y0-r*sin(i*st); }
for(i=0;i<50;i++)
line(xx[i],yy[i],xx[i+1],yy[i+1]);
getch();closegraph();
}
(2)自行编程实现图1-2的绘制。(提示:求圆的各分点坐标,利用画直线函数从圆的最低点向各分点绘直线。)
#include<graphics.h>
#include<math.h>
main()
{
int i,j,r,xx[25],yy[25],x0,y0;
float st=360.0/25*3.14/180;
x0=300;y0=250;r=200;
initgraph(800,600);
for(i=0;i<25;i++)
{ xx[i]=x0+r*cos(i*st+3*3.14/2);yy[i]=y0-r*sin(i*st+3*3.14/2); }
for(i=0;i<24;i++)
line(xx[i],yy[i],xx[i+1],yy[i+1]);
for(j=0;j<25;j++)line(xx[0],yy[0],xx[j],yy[j]);
getch();closegraph();
}
(3)绘制一个正五边形图形
#include<graphics.h>
#include<math.h>
main()
{
int i,j,r,xx[6],yy[6],x0,y0;
float st=360.0/5*3.14/180;
x0=300;y0=250;r=200;
initgraph(800,600);
setbkcolor(BLUE);setcolor(YELLOW);
for(i=0;i<6;i++)
{ xx[i]=x0+r*cos(i*st+3.14/2);yy[i]=y0-r*sin(i*st+3.14/2); }
for(i=0;i<5;i++)
line(xx[i],yy[i],xx[i+1],yy[i+1]);
getch();closegraph();
};
(4)绘制一个五角星图形(两种方法)
#include<graphics.h>
#include<math.h>
main()
{
int i,j,r,xx[10],yy[10],x0,y0;
float st=360.0/10*3.14/180;
x0=300;y0=250;r=200;
initgraph(800,600);
for(i=0;i<10;i++)
{
if(i%2==0)
{xx[i]=x0+r*cos(i*st+3.14/2);yy[i]=y0-r*sin(i*st+3.14/2);}
else
{xx[i]=x0+0.4*r*cos(i*st+3.14/2);yy[i]=y0-0.4*r*sin(i*st+3.14/2);}
}
for(i=0;i<10;i++){
line(xx[i],yy[i],xx[(i+1)%10],yy[(i+1)%10]);
}
getch();closegraph();
}
2.第二种五角星
#include<graphics.h>
#include<math.h>
main()
{
int i,j,r,xx[5],yy[5],x0,y0;
float st=360.0/5*3.14/180;
x0=300;y0=250;r=200;
initgraph(800,600);
for(i=0;i<5;i++)
{ xx[i]=x0+r*cos(i*st+3.1/2);yy[i]=y0-r*sin(i*st+3.14/2); }
line(xx[0],yy[0],xx[2],yy[2]);
line(xx[2],yy[2],xx[4],yy[4]);
line(xx[4],yy[4],xx[1],yy[1]);
line(xx[1],yy[1],xx[3],yy[3]);
line(xx[3],yy[3],xx[0],yy[0]);
getch();closegraph();
};