Sausage.java


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


/*************************************************************************
 *  Compilation:  javac Sausage.java
 *  Execution:    java Sausage N
 *  Dependencies: StdDraw.java
 *  
 *  Plot an order N Minkowski sausage.
 *
 *  % java Sausage 5
 *
 *************************************************************************/


public class Sausage {
    private Turtle turtle;
    private double size;

    public Sausage(int N) {
        size = 1.5 / Math.pow(4.0 / Math.sqrt(3), N + 1);
        turtle = new Turtle(90/512.0, 150/512.0, 0.0);
        sausage(N);
        turtle.turnLeft(90);
        sausage(N);
        turtle.turnLeft(90);
        sausage(N);
        turtle.turnLeft(90);
        sausage(N);
        turtle.turnLeft(90);
    }


    private void sausage(int n) {
        if (n == 0) turtle.goForward(size);
        else {
            turtle.turnLeft(-30);
            sausage(n-1);
            turtle.turnLeft(90);
            sausage(n-1);
            turtle.turnLeft(-90);
            sausage(n-1);
            turtle.turnLeft(30);
        }
    }



    public static void main(String[] args) {
        int N = Integer.parseInt(args[0]);
        new Sausage(N);
    }
}


Copyright © 2000–2010, Robert Sedgewick and Kevin Wayne.
Last updated: Wed Feb 9 09:07:43 EST 2011.