import javax.swing.JFrame;


@SuppressWarnings("serial")
public class TurtleKochSnowflakeFractal extends TurtlePanel {

	private double degreeAngle = 60;
	private int depth = 5;
	private double size;

	private void line(int level, double size) {
		if (level > 0) {
			// Todd generalization of Koch and Taylor pentagonal sides - 12/3/15
			double sideSize = size / 3;
			line(level - 1, sideSize);
			left(degreeAngle);
			line(level - 1, sideSize);
			right(2 * degreeAngle);
			line(level - 1, sideSize);
			left(degreeAngle);
			line(level - 1, sideSize); 
		}
		else {
			forward(size);
		}
	}

	@Override
	public void turtleMain() {
		double margin = 15;
		size = Math.min(width - margin, height * Math.sin(Math.PI / 3) - margin);
		up();
		backward(size / 2);
		left(90);
		forward(size / 2 - (size * Math.sin(Math.PI / 3) / 4));
		right(90);
		down();
		for (int i = 0; i < 3; i++) {
			line(depth, size);
			right(120);
		}
	}

	public static void main(String[] args) {
		JFrame frame = new JFrame();
		frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
		frame.setSize(250, 250);
		frame.setTitle("Turtle Koch Curve Fractal");
		frame.add(new TurtleKochSnowflakeFractal());
		frame.setVisible(true);
	}

}
