# 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 :

## dependecies

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

## update
# Run

* m-perturbator-gtk
* m-perturbator-glfw3
* m-perturbator-offline
* m-perturbator-automorph
Example:

# 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

result :
solution :

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

Check ldconfig path:
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:
The result :
Check for the existence of the dynamic library path environment variable(LD_LIBRARY_PATH):
So the solution :

# References

* ↑ Mu-unit from the Mandelbrot Set Glossary and Encyclopedia, by Robert Munafo, (c) 1987-2018.
* ↑ Nucleus From the Mandelbrot Set Glossary and Encyclopedia, by Robert Munafo, (c) 1987-2018
* ↑ floating_constant in cpp ref
* ↑ stackoverflow question: error-while-loading-shared-libraries-cannot-open-shared-object-file-no-such-fi
* ↑ stackoverflow question: linux-error-while-loading-shared-libraries-cannot-open-shared-object-file-no-s