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.