/*曼陀罗式递归图像*/
#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();
}

浙公网安备 33010602011771号