#include #include #include #include float sa,x,y; void koch(int, float, float); void linetheta(float ang,int l,float *x, float *y) { float rad=3.14159/180, k1, k2; k1=l*cos(rad*ang); k2=l*sin(rad*ang); line(*x,*y,*x+k1,*y+k2); *x+=k1; *y+=k2; delay(70); } void main() { int Driver, Mode, j, i, k; /* The Graphics device driver */ struct point { int x,y; } p1; float rr; p1.x=150, p1.y=300; rr=4; k=4; Driver = DETECT; /* Request auto-detection */ initgraph( &Driver, &Mode, "" ); j=12; sa=0; setcolor(j++); x=p1.x; y=p1.y; moveto(x,y); for (i=0; i<3; i++) { koch(k,sa,rr); sa=fmod(sa-120,360); getche(); setcolor(j++); } getche(); closegraph(); /* Return the system to text mode */ } void koch(int n, float ang, float leng) { if (n == 0) linetheta(ang,leng,&x,&y); else { koch(n-1,sa,leng); sa=fmod(sa+60,360); koch(n-1,sa,leng); sa=fmod(sa-120,360); koch(n-1,sa,leng); sa=fmod(sa+60,360); koch(n-1,sa,leng); } }