Koch.java


Below is the syntax highlighted version of Koch.java from §3.2 Creating Data Types.


/*************************************************************************
 *  Compilation:  javac Koch.java
 *  Execution:    java Koch N
 *  Dependencies: Turtle.java 
 *  
 *  Plot an order N Koch curve.
 *
 *  % java Koch 5
 *
 *************************************************************************/


public class Koch {

    // plot Koch curve of order n, with given step size
    public static void koch(int n, double step, Turtle turtle) {
        if (n == 0) {
            turtle.goForward(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);
    } 
 
    public static void main(String[] args) {
       int n = Integer.parseInt(args[0]);
       double step = 1.0 / Math.pow(3.0, n); 
       Turtle turtle = new Turtle(0.0, 0.0, 0.0); 
       koch(n, step, turtle); 
    } 
} 


Copyright © 2007, Robert Sedgewick and Kevin Wayne.
Last updated: Tue Sep 29 16:17:41 EDT 2009.