Chaos.java


This is the syntax highlighted version of Chaos.java from 2.4 Input and Output of
Introduction to Computer Science by Robert Sedgewick and Kevin Wayne.

/*************************************************************************
 *  Compilation:  javac Chaos.java
 *  Execution:    java Chaos N S
 *  Dependencies: StdDraw.java
 *
 *  Play chaos game on triangle to produce Sierpinski gasket.
 *  Plot N points of size S.
 *
 *  % java Chaos 10000 5
 *
 *************************************************************************/

import java.awt.Color;

public class Chaos {

   public static void main(String args[]) {
      int N = Integer.parseInt(args[0]);             // number of points
      double size = Double.parseDouble(args[1]);     // size to draw points

      double SQRT3 = Math.sqrt(3);
      double x = 0.0, y = 0.0;
      double x0, y0;

      StdDraw.create(512, 512);

      // draw triangle boundary
      StdDraw.go(0, 0);
      StdDraw.penDown();
      StdDraw.goForward(512);
      StdDraw.rotate(120);
      StdDraw.goForward(512);
      StdDraw.rotate(120);
      StdDraw.goForward(512);
      StdDraw.rotate(120);
      StdDraw.penUp();
      
      // play the triangle chaos game
      for (int i = 0; i < N; i++) {
         double r = Math.random();
         if      (r < 0.333) { x0 =   0.0; y0 = 0.0;           StdDraw.setColor(Color.red);   }
         else if (r < 0.667) { x0 = 512.0; y0 = 0.0;           StdDraw.setColor(Color.green); }
         else                { x0 = 256.0; y0 = 256.0 * SQRT3; StdDraw.setColor(Color.blue);  }
         x = (x0 + x) / 2;
         y = (y0 + y) / 2;
         StdDraw.go(x, y);
         StdDraw.spot(size);
         StdDraw.pause(10);
      }
      StdDraw.show();
   }

   
}


Last updated: Mon Jul 26 16:33:49 EDT 2004 .
Copyright © 2004, Robert Sedgewick and Kevin Wayne.