package sample.svg;
import static util.SVGUtil.*;

public class Sierpinski {
	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 zig(int n, double d) {
	    if (n==1) {
	        turn(90);
	        forwardPlus(d);
	        turn(90);
	        forwardPlus(d);
	    } else {
	        zig(n/2, d);
	        zag(n/2, d);
	        zig(n/2, d);
	        zag(n/2, d);
	    }
	}

	private static void zag(int n, double d) {
	    if (n==1) {
	        turn(-90);
	        forwardPlus(d);
	        turn(-90);
	        forwardPlus(d);
	        turn(90);
	        forwardPlus(d);
	    } else {
	        zag(n/2, d);
	        zag(n/2, d);
	        zig(n/2, d);
	        zag(n/2, d);
	    }
	}

	public static void main(String[] args) {
	    double d = 2.5;
	    int n = 32;
	        
	    start();
	    stroke(color = hsb360(0, 100, 100));
	    strokeWeight(0.5);
	    penUp();
	    forwardPlus((n-0.5)*d);
	    turn(-90);
	    forwardPlus((n-0.5)*d);
	    turn(90);
	    penDown();
	    zig(n, d);
	    zig(n, d);
	    finish();
	}
}
