#include #include #include #include float sa,x,y; void koch(int n, float ang, float leng); void linetheta(float ang,float l,float *x, float *y) { float rad=3.14159/180, k1, k2; k1=l*cos(rad*ang); k2=l*sin(rad*ang); *x+=k1; *y+=k2; lineto(*x,*y); delay(200); } void main() { int Driver, Mode, k; /* The Graphics device driver */ struct point { int x,y; } p1; float rr; p1.x=100, p1.y=200; rr=4; k=4; Driver = DETECT; /* Request auto-detection */ initgraph( &Driver, &Mode, "" ); sa=0; setcolor(14); x=p1.x; y=p1.y; moveto(x,y); koch(k,sa,rr); 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); } }