import static util.SVGUtil.*;

public class Peano {
	private static int color;
	private static int dcolor = 1;

	private static void forwardPlus(double d) {
	    forward(d);
	    stroke(color = rotateH360(color, dcolor));
	}

	private static void peanoA(int n, double d) {
	    if (n==0) {
	        return;
	    }  else {
	        int m = n-1;
	        peanoA(m, d);
	        forwardPlus(d);
	        peanoB(m, d);
	        forwardPlus(d);
	        peanoA(m, d);
	        turn(90);
	        forwardPlus(d);
	        turn(90); 
	        peanoB(m, d);
	        forwardPlus(d);
	        peanoA(m, d);
	        forwardPlus(d);
	        peanoB(m, d); 
	        turn(-90);
	        forwardPlus(d);
	        turn(-90);
	        peanoA(m, d);
	        forwardPlus(d);
	        peanoB(m, d);
	        forwardPlus(d);
	        peanoA(m, d);
	    }
	}

	private static void peanoB(int n, double d) {
	    if (n==0) {
	        return;
	    }  else {
	        int m = n-1;
	        peanoB(m, d);
	        forwardPlus(d);
	        peanoA(m, d);
	        forwardPlus(d);
	        peanoB(m, d); 
	        turn(-90);
	        forwardPlus(d);
	        turn(-90);
	        peanoA(m, d);
	        forwardPlus(d);
	        peanoB(m, d);
	        forwardPlus(d);
	        peanoA(m, d);
	        turn(90);
	        forwardPlus(d);
	        turn(90); 
	        peanoB(m, d);
	        forwardPlus(d);
	        peanoA(m, d);
	        forwardPlus(d);
	        peanoB(m, d);
	    }
	}

	public static void main(String[] args) {
	    start();
	    stroke(color = hsb360(0, 100, 100));
	    strokeWeight(0.5);
	    penUp();
	    turn(-90); forwardPlus(90); turn(90); forwardPlus(-90);
	    penDown();
	    peanoA(4, 2.4);
	    finish();
	}
}
