diff options
Diffstat (limited to 'Week11 Mandelbrot/src/fractals/Mandelbrot.java')
-rw-r--r-- | Week11 Mandelbrot/src/fractals/Mandelbrot.java | 57 |
1 files changed, 54 insertions, 3 deletions
diff --git a/Week11 Mandelbrot/src/fractals/Mandelbrot.java b/Week11 Mandelbrot/src/fractals/Mandelbrot.java index fa68372..74b522e 100644 --- a/Week11 Mandelbrot/src/fractals/Mandelbrot.java +++ b/Week11 Mandelbrot/src/fractals/Mandelbrot.java @@ -5,12 +5,63 @@ package fractals; * @author Sjaak Smetsers
* @version 1.0, 14-03-2013
*/
-public class Mandelbrot
-{
- public static void main(String args[]) {
+public class Mandelbrot {
+
+ public final static int MAX_MANDEL_NUMBER = 100; // infinity will be this + 1
+
+ public Mandelbrot() {
MainWindow fractal_win = new MainWindow ();
GridFiller filler = new GridFiller (fractal_win.getGrid());
filler.fill();
+
+ System.out.println(Integer.toString(mandelNumber(0,0)));
+ }
+
+ public static void main(String args[]) {
+ Mandelbrot mandelbrot = new Mandelbrot();
+ }
+
+ public static int mandelNumber(double x, double y) {
+ double x_n = x, y_n = y;
+ int n = 0;
+
+ while (x_n * x_n + y_n * y_n <= 4 && n <= MAX_MANDEL_NUMBER) {
+ double new_x_n = x_n * x_n - y_n * y_n + x;
+ y_n = 2 * x_n * y_n + y;
+ x_n = new_x_n;
+ n++;
+ }
+
+ return n;
+ }
+
+ private class GridFiller {
+ private Grid grid; // the grid to be filled
+
+ /**
+ * The constructor
+ * @param grid to be filled
+ */
+ public GridFiller (Grid grid) {
+ this.grid = grid;
+ }
+
+ private final double MIN_X = -2.5, MAX_X = 2.5, MIN_Y = -2.5, MAX_Y = 2.5;
+
+ /**
+ * fills the whole grid with some arbitrarily chosen color
+ *
+ */
+ public void fill () {
+ int grid_w = grid.getWidth(), grid_h = grid.getHeight();
+ for (float i = 0; i < grid_w; i++) {
+ for (float j = 0; j < grid_h; j++) {
+ int grayscale = mandelNumber(MIN_X + (i / grid_w) * (MAX_X - MIN_X), MIN_Y + (j / grid_h) * (MAX_Y - MIN_Y)) * 256 / MAX_MANDEL_NUMBER;
+ int[] color = {grayscale, grayscale, grayscale};
+ grid.setPixel((int) i, (int) j, color);
+ }
+ }
+ }
}
}
\ No newline at end of file |