The multibrot and multi-Julia generator


Multibrot:
×1 | zoom out | reset | redraw  
 
Julia:
×1 | zoom out | reset | redraw  
 
degree: 
oversample: 


go go


palette:  (color, percentile)

#ff0000

redraw palette


stretch:  0

interior: 

redraw multibrot | redraw Julia
max iterations:    (may slow down the script)
bailout: 


The equations


The canvas on the left displays the eighth-degree multibrot set, the set of complex numbers c for which the function

f(z) = z8 + c

does not diverge when iterated from z = 0.  The canvas on the right displays a corresponding Julia set, the set of complex numbers z for which the function does not diverge when iterated from a constant c.  Right-click a point on the multibrot set to select c and draw the resulting Julia set.  The interesting ones come from points in the lighter areas just outside the black interior, especially near the cusps of the larger shapes.  Zoom in to the multibrot canvas for better results.  The mouse coordinates are displayed beneath the multibrot set, and the coordinates of c used to generate the image are displayed beneath the Julia set.

Click and drag on either canvas, and the view will zoom into the resulting square.  The relative magnification level is displayed beneath each canvas.  A characteristic feature of fractals is complex self-similarity at different scales; you will see that as you zoom in to either image, the intricate patterns repeat, all the way down.  At some magnification level (trillions) the images will deteriorate due to the limits of floating-point math.  Click zoom out to reduce the magnification by a factor of 5, or reset to return to the original level.  Use the degree selector to display multibrot sets of degree 2-7 as well.

Oversampling starts with an enlarged array of image points, then reduces it to the size of the final image.  The net effect is the recording of points at the subpixel level for increased resolution.  This comes at the expense of processing time and computer memory; oversampling by 4 means 16 times as many points.  (Note that JavaScript is not as fast as lower-level programming languages.)  It may be best to explore the images without oversampling (set the value to 1), then oversample when you find an image of special note, or that you want to save; click redraw to apply the oversampling.  It may also help to sharpen oversampled images in your favorite image editor.

Each canvas has a ten-pixel border inside the right and bottom where you can right-click to save the image.

The image parameters are displayed in the text fields below each image.  You may save these parameters to a text file, then reload them by pasting them into the appropriate field (multibrots start with m, Julias start with j) and pressing go.  If the degree changes, you will have to reload the other image before working with it.

The featureless interior of the image is the actual multibrot or Julia set; it is customarily colored black.  The surround is colored based on how many iterations it took for the equation to exceed a specified limit; this part is what makes the images interesting.  Several sample color palettes are provided.  Make your own by entering hex color and percentile pairs, one per line; then press redraw palette.  A color picker is provided to find hex color values.  To apply the palette, redraw the image.

(The position numbers do not have to be percentiles; use any numbers and they will be normalized to 0-100.  Omit the number and the color will be skipped.  The entries do not have to be in order; you can reverse the numbers to reverse colors.)

A given palette may need to be stretched in either direction for the best results, especially at higher magnifications.

The max iterations and bailout fields are provided for the curious.  The equation is iterated until either the absolute value of the result exceeds the bailout value, or the maximum number of iterations is reached.  Fewer iterations will expand the surround coloring at the expense of fine detail; it may be interesting at low magnification.  More iterations will slow down the script.  The bailout value should be at least 2; increasing it has little effect unless max iterations is small.

russellcottrell.com