孤独的猫

  博客园 :: 首页 :: 博问 :: 闪存 :: 新随笔 :: 联系 :: 订阅 订阅 :: 管理 ::

/*曼陀罗式递归图像*/
#include "glib.h"
int n_rot=6;     /*旋转对称次数*/
int N=4;       /*递归次数*/
double ang,scale;
double r1=180.0;

void recurs(double r,int n)  /*递归图形描画函数*/
{
  int i;
  if (n<=N)
  {
    setcolor(n);
    circle(LPX,LPY,r);
    setfillstyle(1,n);
    floodfill(LPX,LPY,n);
    recurs(r*(1-2*scale),n+1);
    for (i=0;i<n_rot;i++)
    {
      turn(i*ang);
      warp(r*(1-scale));
      recurs(r*scale,n+1);
      turn(180.0);
      warp(r*(1-scale));
      turn(180-i*ang);
    }
  }
  setcolor(n-1);
}

void main()
{
  ginit();
  setbkcolor(15);
  ang=360/n_rot;
  scale=sin(PI/n_rot)/(1+sin(PI/n_rot));
  setlp(320.0,200.0);
  setangle(90.0);
  recurs(r1,0);
  gend();
}

posted on 2011-03-05 12:57  孤独的猫  阅读(320)  评论(0)    收藏  举报