#define DMAX 0.005 gopen(640, 400, gcolor("green"), 1); gwindow(0, 1.25, 2, 0); gflush(False); costbl = new real[6]; sintbl = new real[6]; for(a = 0; a < 6; a++) { costbl[a] = cos(a * M_PI / 3); sintbl[a] = sin(a * M_PI / 3); } gpset(0, 0); x = y = 0.0; d = 2.0; a = 0; koch(); gpause(); function koch() { if(d <= DMAX) { x += d * costbl[a % 6]; y += d * sintbl[a % 6]; gline(x, y); } else { d /= 3.0; koch(); a++; koch(); a += 4; koch(); a++; koch(); d *= 3.0; } }