public void treblih(T turtle, int n) { if (n == 0) return; turtle.turnLeft(-90); hilbert(turtle, n - 1); turtle.Forward(10.0); turtle.turnLeft(90); treblih(turtle, n - 1); turtle.Forward(10.0); treblih(turtle, n - 1); turtle.turnLeft(90); turtle.Forward(10.0); hilbert(turtle, n - 1); turtle.turnLeft(-90); } private void hilbert(T turtle, int n) { if (n == 0) return; turtle.turnLeft(90); treblih(turtle, n - 1); turtle.Forward(10.0); turtle.turnLeft(-90); hilbert(turtle, n - 1); turtle.Forward(10.0); hilbert(turtle, n - 1); turtle.turnLeft(-90); turtle.Forward(10.0); treblih(turtle, n - 1); turtle.turnLeft(90); } public void Rosetta(int n) { T turtle = new T(400.0, 400.0, 180.0, g, pen);//30 double length = 400 / n; double angle = 360 / n; for (int j = 0; j < 20; j++) { for (int i = 0; i < n; i++) { turtle.Forward(length); turtle.turnLeft(angle); } turtle.turnLeft(18); } } public static void koch(int n, double step, T turtle) { if (n == 0) { turtle.Forward(step); return; } koch(n - 1, step, turtle); turtle.turnLeft(60.0); koch(n - 1, step, turtle); turtle.turnLeft(-120.0); koch(n - 1, step, turtle); turtle.turnLeft(60.0); koch(n - 1, step, turtle); } private void Serpinsky(T t, int order, double size) { if (order == 0) { t.Forward(size); t.turnLeft(120); t.Forward(size); t.turnLeft(120); t.Forward(size); t.turnLeft(120); } else { Serpinsky(t, order - 1, size / 2); t.Forward(size / 2); Serpinsky(t, order - 1, size / 2); t.Forward(size / 2); t.turnLeft(120); t.Forward(size); t.turnLeft(120); t.Forward(size / 2); t.turnLeft(120); Serpinsky(t, order - 1, size / 2); t.turnRight(120); t.Forward(size / 2); t.turnLeft(120); }