jblog
toc

Mandelbrot Set II

2017-01-14, post № 157

Java, mathematics, programming, #compiled, #filled Julia set, #generalized filled Julia set, #generalized Mandelbrot set, #Julia, #speed increase, #viewer

Over a year ago, I published my first Mandelbrot Set viewer, a Python program using Pygame. Since then, I have published a rather short program highlighting errors that can occur when calculating the set (Mandelbrot Set Miscalculations).
Since my first viewer was written in Python, which is an interpreted programming language, and I wanted to make my viewer faster, I decided to write one in Java. I was hoping for a speed increase since Java is compiled and thus should run at higher speeds. I was not disappointed. The new Java-based viewer runs noticeably faster and additionally I added a lot of new features, all listed below.

Controls

  • Left-clicking and dragging draws a zoom frame, single left-clicking removes the frame,
  • Right-clicking (and optionally dragging) moves the zoom frame,
  • ‘Space’ zooms into the zoom frame,
  • ‘F1’ moves one step back the zoom history,
  • ‘F2’ shows the path a complex number at the cursor’s position follows when the function is iteratively applied,
  • ‘F3’ shows the \mathbb{R} and i\,\mathbb{R} axis,
  • ‘F4’ displays the current cursor’s corresponding complex number,
  • ‘F5’ toggles between showing and hiding the menu (text in the left upper corner describing the viewer’s functions and current states),
  • ‘F6’ increments the exponent (going from f_c(z)=z^2+c to f_c(z)=z^5+c in whole-number steps),
  • ‘F7’ toggles between the Mandelbrot set and the filled Julia set,
  • ‘F8’ toggles between previewing a small filled Julia set at the cursor’s position based upon the cursor’s complex number,
  • ‘F9’ completely resets the zoom and zoom history,
  • ‘F11’ (or ‘F’) toggles between fullscreen and windowed mode,
  • ‘F12’ quits the application,
  • ‘L’ increases the color depth (starting at 𝟤𝟧𝟨 and increasing in steps of 𝟤𝟧𝟨),
  • ‘Q’ saves the current image to disk.

To use this application, you can either trust me and download the .jar-file or view the source code listed below, verify it and compile the program yourself.
The program will start in fullscreen mode, to change to windowed mode, just press ‘F11’ (as listed above).

mandelbrot-set-ii-0_mandelbrot_tl-3.5555555555555554-2.0i_br3.5555555555555554+2.0i.png
mandelbrot-set-ii-1_julia_-0.5629629629629629+0.47777777777777786i_tl-3.5555555555555554-2.0i_br3.5555555555555554+2.0i.png
mandelbrot-set-ii-2_mandelbrot_tl-3.5555555555555554-2.0i_br3.5555555555555554+2.0i.png
mandelbrot-set-ii-3_mandelbrot_tl0.732913241572962-0.151610056431476i_br0.7334855905959307-0.15128791342783118i.png
mandelbrot-set-ii-4_julia_0.7332134267115711+0.1514433175990339i_tl-3.5555555555555554-2.0i_br3.5555555555555554+2.0i.png
Source code: Main.java
Extra assets: mandelbrot-set-ii-5_mandelbrot_tl-3.5555555555555554-2.0i_br3.5555555555555554+2.0i.png, mandelbrot-set-ii_extra_00.png, mandelbrot-set-ii_extra_01.png, mandelbrot-set-ii_extra_02.png, mandelbrot-set-ii_extra_03.png, mandelbrot-set-ii_extra_04.png, mandelbrot-set-ii_extra_05.png, mandelbrot-set-ii_extra_05_a-half.png, mandelbrot-set-ii_extra_06.png, mandelbrot-set-ii_extra_06_a-half.png, mandelbrot-set-ii_extra_07.png, mandelbrot-set-ii_extra_07_a-half.png, mandelbrot-set-ii_extra_08.png, mandelbrot-set-ii_extra_09.png, mandelbrot-set-ii_extra_10.png, mandelbrot-set-ii_extra_11_Fractal-at-25fe8ea8.png, mandelbrot-set-ii_extra_12_mandelbrot_tl-1.8-1.2i_br1.8+1.2i.png, mandelbrot-set-ii_extra_13_mandelbrot_tl-1.8-1.2i_br_1.8+1.2i.png, mandelbrot-set-ii_extra_14_julia_c-0.4800000000000002+0.6366666666666666i_tl-1.8-1.2i_br1.8+1.2i.png, mandelbrot-set-ii_extra_15_mandelbrot_tl0.05333333333333323-0.6333333333333333i_br0.3599999999999999-0.4622222222222222i.png, mandelbrot-set-ii_extra_21_julia_c-0.5266666666666668+0.4033333333333333i_tl-1.8-1.2i_br1.8+1.2i.png, mandelbrot-set-ii_extra_22_julia_c-0.5466666666666666+0.2844444444444445i_tl-2.1333333333333333-1.2i_br2.1333333333333333+1.2i.png, mandelbrot-set-ii_extra_23_julia_c-0.5466666666666666+0.2844444444444445i_tl0.8800000000000003-0.046666666666666634i_br1.1911111111111112+0.1266666666666667i.png, mandelbrot-set-ii_extra_24_mandelbrot_tl-0.2174531103962005-0.7228248243121531i_br-0.21745053052484012-0.7228231210961094i.png, mandelbrot-set-ii_extra_25_mandelbrot_tl-0.21745176527993842-0.7228241924663124i_br-0.21745173948122481-0.7228241754341519i.png, mandelbrot-set-ii_extra_26_mandelbrot_tl-3.5555555555555554-2.0i_br3.5555555555555554+2.0i.png, mandelbrot-set-ii_extra_27.png, mandelbrot-set-ii_extra_28.png