孤独的猫

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

#include "glib.h"
int n_br=5;          /*分支数*/
int n_st=3;          /*分支上小图形数*/
double k,r0=180.0;   /*r0:外园半径*/
double scale=0.5;
int ang=30.0;

/*分形图形描画函数*/
void fractal(double leng)
{
  int i,j;
  if (leng<=k/2 || k<=1.0)
    putpixel(LPX,LPY,15);
  else
  {
  for (i=0;i<n_br;i++)
  {
 if (!i)
 {
   turn(-ang/2);
   fractal(leng/k);
   turn(ang/2);
 }
 for (j=1;j<=n_st;j++)
 {
   warp(leng*pow(scale,(double)j-1)/k);
   warp(leng*pow(scale,(double)j)/k);
   turn(ang/2);
   fractal(leng*pow(scale,(double)j)/k);
   turn(ang/2);
 }
 turn(180.0);
 for (j=n_st;j>=1;j--)
 {
   turn(-ang);
   warp(leng*pow(scale,(double)j)/k);
   warp(leng*pow(scale,(double)j-1)/k);
 }
      turn(180.0);
      turn(360.0/n_br);
     }
  }
}

void main()
{
  int i;
  double a,b;
  ginit();
  for (i=1;i<=n_st;i++)
  {
 warp(pow(scale,(double)i-1));
 a=pow(scale,(double)i);
 warp(a);
 b=sqrt(LPX*LPX+LPY+LPY);
 if (k<a+b)
   k=a+b;
 turn(ang);
  }
  setlp(320.0,200.0);
  setangle(90.0);
  fractal(r0);
  gend();
}

posted on 2011-03-02 21:57  孤独的猫  阅读(155)  评论(0)    收藏  举报