BrownianBridge.java
Below is the syntax highlighted version of BrownianBridge.java
from §2.7 Recursion.
/*************************************************************************
* Compilation: javac BrownianBridge.java
* Execution: java BrownianBridge variance
* Dependencies: StdDraw.java
*
* Plots Brownian motion trajectory using the midpoint displacement
* method.
*
*************************************************************************/
import java.awt.Color;
public class BrownianBridge {
public static void midpoint(double x0, double y0, double x1, double y1, double var) {
if (x1 - x0 < 1) return;
double displacement = MyMath.gaussian(0, Math.sqrt(var));
double xmid = 0.5 * (x0 + x1);
double ymid = 0.5 * (y0 + y1) + displacement;
midpoint(x0, y0, xmid, ymid, var / 2);
StdDraw.go(xmid, ymid);
midpoint(xmid, ymid, x1, y1, var / 2);
}
public static void main(String[] args) {
double var = Double.parseDouble(args[0]);
int WIDTH = 800, HEIGHT = 600;
StdDraw.create(WIDTH, HEIGHT);
StdDraw.clear(Color.lightGray);
StdDraw.setScale(0, -2, WIDTH, 2);
// draw axes
StdDraw.go(0, 0);
StdDraw.penDown();
StdDraw.go(WIDTH, 0);
StdDraw.penUp();
// draw fractal
StdDraw.go(1, 0);
StdDraw.penDown();
// to make Brownian motion (instead of bridge),
// change (WIDTH, 0) to (WIDTH, Gaussian(0, stddev))
midpoint(0, 0, WIDTH, 0, var / Math.sqrt(2));
StdDraw.show();
}
}
Last updated: Thu Sep 30 11:32:36 EDT 2004
.
Copyright © 2004, Robert Sedgewick and Kevin Wayne.