Fractals/mandelbrot-perturbator

m-perturbator is the fractal software: Mandelbrot set explorer GUI by Claude Heiland-Allen with:
 * annotation
 * efficient deep zooming ( perturbation)

=Versions=
 * mandelbrot-book GUI porgram - old version
 * m-perturbator-colourize
 * m-perturbator-glfw3
 * m-perturbator-gtk ( annotations)

=Install=
 * see README.md from repo

From parent dir : make -C mandelbrot-perturbator/c/lib install make -C mandelbrot-perturbator/c/bin install

dependecies

 * mandelbrot symbolics
 * mandelbrot numerics
 * GTK
 * GLEW
 * GLFW

apt-get install libsndfile-dev sudo apt-get install build-essential libgtk-3-dev sudo apt-get install libglfw3-dev sudo apt-get install libglew-dev

Installs into ~/opt by default, you can change that with make options (e.g. `make -C c/lib install prefix=~/fantastic-software/`).

sudo apt install git build-essential libpari-dev libmpc-dev libgtk-3-dev libsndfile-dev libglfw3-dev libglew-dev mkdir -p ~/opt/src cd ~/opt/src/ git clone https://code.mathr.co.uk/mandelbrot-symbolics.git git clone https://code.mathr.co.uk/mandelbrot-numerics.git git clone https://code.mathr.co.uk/mandelbrot-perturbator.git cd ~/opt/src/mandelbrot-symbolics make -C c/lib/ install make -C c/bin/ install cd ~/opt/src/mandelbrot-numerics make -C c/lib/ install make -C c/bin/ install cd ~/opt/src/mandelbrot-perturbator make -C c/lib/ install make -C c/bin/ install cd LD_LIBRARY_PATH=~/opt/lib ~/opt/bin/m-perturbator-gtk

update
git pull

=Run=
 * m-perturbator-gtk
 * m-perturbator-glfw3
 * m-perturbator-offline
 * m-perturbator-automorph

Example: export LD_LIBRARY_PATH=${HOME}/opt/lib export PATH=${HOME}/opt/bin:${PATH} ./m-perturbator-gtk

= Menu =

N
N*2 and N/2 change the iteration count limit of the image (you may need to increase it when zooming deeper)

Filaments
Filaments traces rays to prune filaments from minibrots and embedded Julia sets. See https://mathr.co.uk/blog/2013-10-02_islands_in_the_hairs.html and https://post.lurk.org/@mathr/102922605930156945 (the embedded Julia set rays are found by prepending the periodic block of the central island rays to periodic blocks of the influencing island rays)

Mu-unit

 * definition from Mu-Ency by R Munafo

Steps:
 * select nucleus
 * first click on the menu
 * then using mouse left click and hold make a circle over a space where nucleus is. Number showing period of the nucleus is shown on the image and on the Annotations panel on the right
 * mark the nucleus number on the Annotations panel and click Mu-Unit menu item

Nucleus
Nucleus of a Mu-Atom = center of hyperbolic component of the Mandelbrot set

Steps:
 * select nucleus
 * first click on the menu
 * then using mouse left click and hold make a circle over a space where nucleus is. Number showing period of the nucleus is shown on the image and on the Annotations panel on the right

Ray in
Draw parameter ray from infinity toward Mandelbrot set boundary

Options
 * external angle ( binary fraction),
 * preperiod ( positive int )
 * period ( positive int )
 * depth ( positive int)

Example of acceptable values of external angle ( without zero from the the whole-number ) :
 * periodic : .(1)
 * preperiodic: .01(0110)
 * ? .1(0)

Bad (non acceptable) values are
 * .1

One can chack it also in the web interface

wake
to highlight a wake you need two rays (must both be Ray In) with equal (pre)periods landing at the same point (or close enough in screen-space). select one of them, then chose the wake left/right depending if the other ray is anticlockwise or clockwise from the selected ray.

=Files=
 * mp extension is used by mandelbrot-perturbator for the parameter files

=Doc=
 * fractalforums post : m-perturbator-gtk demo-screencasts
 * a small user manual
 * Perturbator uses GTK for GUI, implemented in C. Pro: native language of GTK is C so documentation applies directly; C inner loops are fast. Con: manual memory management is a pain.
 * video on diode : Parallel Evolution with m-perturbator-gtk

=Problems=

run
m-perturbator-glfw3 result :

m-perturbator-glfw3: command not found solution :

~/mandelbrot-perturbator/c/bin/m-perturbator-glfw3

error while loading shared libraries: libmandelbrot-perturbator.so: cannot open shared object file: No such file or directory
Check ldconfig path:

ldconfig -p>l.txt If there is no libmandelbrot-perturbator.so library file in that path, find where the library file is placed if you don't know it:

sudo find / -name libmandelbrot-perturbator.so The result :

/home/a/opt/lib/libmandelbrot-perturbator.so

Check for the existence of the dynamic library path environment variable(LD_LIBRARY_PATH):

echo $LD_LIBRARY_PATH So the solution :

export LD_LIBRARY_PATH=${HOME}/opt/lib

=References=