138.正方形螺旋拼块图案

简介: 138.正方形螺旋拼块图案
#include <graphics.h>
#include <math.h>
void polygonc();
void block();
void main()
{
  int i,j,a,length,n,theta,x=100,y=350;
  int gdriver=DETECT,gmode;
  printf("input length, n theta:");
  scanf("%d%d%d",&length,&n,&theta);
  initgraph(&gdriver,&gmode,"c:\\tc");
  cleardevice();
  setbkcolor(9);
  setcolor(4);
  a=length/4;
  for(i=1;i<=4;i++)
  {
    for(j=1;j<=4;j++)
    {
      block(x,y,a,n,theta);
      theta=-theta;
      x=x+a;
    }
    x=100;
    y=y-a;
    theta=-theta;
  }
  getch();
  closegraph();
}
void polygonc(x0,y0,r,n,af)
int x0,y0,n,r;
float af;
{
  int x,y,xs,ys,i;
  float dtheta,theta;
  if(n<3)
    return;
  dtheta=6.28318/n;
  theta=af*0.0174533;
  xs=x0+r*cos(theta);
  ys=y0+r*sin(theta);
  moveto(xs,ys);
  for(i=1;i<n;i++)
  {
    theta=theta+dtheta;
    x=x0+r*cos(theta);
    y=y0+r*sin(theta);
    lineto(x,y);
  }
  lineto(xs,ys);
}
void block(x,y,a,n,theta)
int x,y,a,n,theta;
{
  int x0,y0,i,r;
  float t,f,af=45.;
  t=fabs(theta*0.0174533);
  f=1.0/(cos(t)+sin(t));
  r=a/1.414;
  x0=x+0.5*a;
  y0=y+0.5*a;
  for(i=1;i<=n;i++)
  {
    polygonc(x0,y0,r,4,af);
    r=r*f;
    af=af-theta;
  }
}
相关文章
|
1月前
创建三角形图案
【10月更文挑战第24天】创建三角形图案。
17 3
|
2月前
一个最优美的图案
一个最优美的图案。
39 4
wustojc5006菱形图案
wustojc5006菱形图案
41 0
牛客网——空心正方形图案
牛客网——空心正方形图案
122 0
143.Mandelbrot分形图案
143.Mandelbrot分形图案
94 0
下一篇
DataWorks