#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();
}

浙公网安备 33010602011771号