m-perturbator-gtk

Graphical user interface for Mandelbrot set exploration and annotation.

https://mathr.co.uk/mandelbrot/perturbator/gtk/

screenshot

Overview

There is a menu bar at the top, with File, Explore, Feature menus, followed by Period, n-Fold, Depth entry boxes. Then there are widgets that control the appearance of annotations: line dash combo box, fill pattern combo box and colour selection button.

Below the menu bar on the top left is the fractal display.

Below the fractal display is the log panel, which displays information. The default size of the fractal display is optimized for 16:9 display aspect. The aspect ratio is designed for printing on landscape A4 paper with a 2cm border on all sides.

The top right has the annotation list, which can be sorted by clicking on its header. The appearance widgets control the current annotation and future annotations, the widgets are updated on selecting an annotation. Selecting an annotation highlights it in the fractal display.

Bottom right is the task queue, which displays progress of computations and allows them to be cancelled.

The program version is displayed in the title bar and is also saved in parameter files (if you need to copy/paste for bug reports).

To quit the program use the window close button.

File menu

Open

Load parameters from a file. Existing annotations are deleted first.

Save

Save parameters to a file. The format is a line-based text file. Annotations are saved as specifications so (for example) rays will be recalculated on load.

Save Image

Save image as displayed to a PNG file. Parameters are not yet saved to image metadata, so save the parameters too if you want to be able to reload.

Dark / Light

Switch overall theme between dark on light and light on dark. Colours should be value-inverted when changing theme (so light and dark are swapped fully) but this is not yet implemented. Recommend using greys instead of black or white until this is finished.

Monochrome / Low Colour / Full Colour

Switch colour theme between three levels. The lower colour levels may be useful for economical low-ink printing.

Explore menu

Home

Reset view to the initial top level view.

Zoom Out

Zoom out by a factor of 10.

Zoom

Activate zoom tool. When zoom tool is active, dragging with the left mouse button on the fractal marks a rectangle which will be zoomed to when the left button is released. Press the right mouse button before releasing the left mouse button to cancel the action.

Zoom To

When a nucleus annotation is selected, activating this menu item opens a dialog to enter a power and multiplier for the size of the atom. Power 0.75 is usually near the embedded Julia set (though the Zoom To Domain tool described below may be more appropriate), 1.0 is at the mu-atom. The multiplier provides a convenient way to fine-tune the size of the target region.

Zoom To Domain

When a nucleus or Misiurewicz annotation is selected, activating this menu item opens a dialog to enter a power and multiplier for the size of the domain. Power 1.0 is at the domain. The multiplier provides a convenient way to fine-tune the size of the target region.

Info

Activate info tool. When info tool is active, clicking with the left mouse button on the fractal prints information about the point in the log pane at the bottom of the window.

Pixel

Pixel coordinates, origin top left.

Real / Imag

Fractal coordinates.

Dwell N

Integer part of the iteration count, or the period of the containing component when negative. Note: deep zooms don’t yet have interior checking, so Dwell N and the other values will be 0 instead of a finite negative number.

Dwell F

Fractional part of the iteration count, or the radius within the containing component when Dwell N is negative.

Angle F

Argument of the final iterate, or the internal angle within the containing component when Dwell N is negative.

Distance

Distance estimate in pixels. Positive for exterior distance estimate, negative for interior distance estimate. The boundary of the Mandelbrot set is within a factor of two of this distance, approximately.

Domain N

Atom domain index, the iteration count that minimizes |Z_n|.

Domain X, Domain Y

Atom domain coordinates (0 at the center, magnitude 1 at the boundary of the atom domain).

Select

Activate select tool. When select tool is active, clicking on an annotation in the fractal display will select it in the annotation list.

Increase / Decrease Iterations

Adjust the maximum iteration count used to calculate the fractal. Deeper zooms typically need more iterations.

Feature menu

Nucleus

Activate nucleus tool. When nucleus tool is active, dragging with the left mouse button in the fractal display marks a circle. On releasing the button, the lowest period atom in the circle is found and annotated. If no atom could be found then nothing happens. Press the right button before releasing the left button to cancel the action.

Bond

Activate bond tool. When bond tool is active, clicking on a child bulb (a circle-like component) will annotate its root with the internal angle from its parent.

Misiurewicz

Activate Misiurewicz point tool. When Misiurewicz point tool is active, dragging with the left button in the fractal display marks a square. On releasing the button, the lowest (pre)period Misiurewicz point in the square is found and annotated. The Period entry box in the menu bar can be used to limit the search. If no Misiurewicz point is found nothing happens. Press the right button before releasing the left button to cancel the action.

Ray Out

Activate ray out tool. When ray out tool is active, clicking in the fractal display traces an external ray outwards towards infinity. The ray is listed in the annotation list as a string of binary digits.

Ray In

Opens a dialog where an angle can be entered in binary form, for example .(01) for a periodic ray or .001100(001) for a pre-periodic ray. Alternatively a string of binary digits can be entered with the pre-period and period entered in decimal in the boxes below. This latter form is useful when combined with the ray out tool, as any annotation selected when the ray in menu is activated will be copied to the angle entry box, so only the pre(periods) need to be entered. The depth of the ray can be adjusted if desired.

Extend Ray

When a ray in annotation is selected, open a dialog to give a new depth. If the new depth is higher than the current depth, the ray will be extended.

Wake ← / →

When a ray in annotation is selected, and another ray in annotation with the same pre(period) lands at the same point, annotate the wake between them. The second ray is the next ray in the anti-clockwise direction from the selected ray for Wake ←, clockwise for Wake →.

Atom

When a nucleus or annotation is selected, annotate the corresponding atom by tracing its boundary and filling the resulting polygon.

Domain

When a nucleus or Misiurewicz annotation is selected, annotate the corresponding domain by tracing its boundary, resulting in a polygon. Atom domains are typically much bigger than atoms for cardioid-like atoms, around four times the size for circle-like atoms. Misiurewicz domains are typically around the size where the spiralling starts to dominate.

Domain Estimate

When a nucleus or Misiurewicz annotation is selected, annotate the corresponding domain size estimate as a circle.

Mu-Unit

When a nucleus annotation is selected, annotate the nuclei in its tuned mu-unit up to a certain period multiplier. It works by tracing rays and finding nuclei relative to the top level cardioid, then using atom coordinates (based on the derivative of the multiplier) to translate to the desired nucleus. The process is not perfect, so some nuclei may be marked incorrectly.

Filaments

When a nucleus annotation is selected, annotate its filaments (when the Period entry box in the menu bar has its period) or the filaments of its embedded Julia set (when the Period entry box in the menu bar has the period of its influencing island). The n-Fold entry box in the menu bar selects how deep towards the central island the rays should go (it increases by 1 for each factor of 2 of rotational symmetry). The Depth entry box in the menu bar sets how many ray pairs to draw (it increases by 1 for each doubling of ray count).

Delete

Delete the currently selected annotation. There is no undo.

Copyright (c) 2015-2020 Claude Heiland-Allen mailto:claude@mathr.co.uk

Free Software under GNU AGPL3+. When (re)distributing binaries or providing access to them as a service, you must also provide the corresponding source code (including any modifications).

https://mathr.co.uk