# Fractals/Iterations in the complex plane/Algorithms
## Worlflow for 2D static image

Workflow
* the calculation phase: The first program calculates the actual iterations, or other pixel parameters using representation functions
* saves raw pixel data into a file
* the colouring phase: the other program is then used for colorizing the results to the image
* use different drawing algorithms and compose images ( layers)
Examples:
* kallesfraktaler
Image Magic using CLUT
PFract program:
* Sobel filter, LSM and BDM composition

## dictionary

* space ( 2D plane)
** plane description
** plane scanning
** plane transformations
* pixel
** pixel features: complex potential ( external/internal angle and real potential), distance estimate, mean z, basins, orbit traps, textures, fibers
* coloring ( color gradient)
* lightning ( lighting effects to bring the 2D fractals into 3D ) = heightfields
* Computer-generated imagery (CGI) is a specific-technology or application of computer graphics for creating or improving images in art, printed media, simulators, videos and video games
* Special effects (often abbreviated as SFX, F/X or simply FX) are illusions or visual tricks used in the theatre, film, television, video game, amusement park and simulator industries to simulate the imagined events in a story or virtual world. Modern graphics processing units (GPUs) provide specialised fixed function units called texture samplers, or texture mapping units, to perform texture mapping, usually with trilinear filtering or better multi-tap anisotropic filtering and hardware for decoding specific formats such as DXTn. As of 2016, texture mapping hardware is ubiquitous as most SOCs contain a suitable GPU.

## Algorithm general types

* numerical algorithms ( compute feature)
** points ( coordinate)
*** compute c from multiplier, period and center (inverse multiplier map)
*** compute multiplier from c ( multiplier map)
* dynamics or representation functions: $T:pixelCoordinate\to numericalFeatureValue$
** escape time: LSM, BDM
*** for Mandelbrot set
*** for Julia_set
** complex potential ( internal or external)
*** real potential CPM/M CPM/J
*** angle
** DEM/M and DEM/J
** Discrete Velocity of non-attracting Basins and Petals by Chris King
** atom domains
** average distance between random points
* coloring algorithms ( feature of the pixel -> color ): $T:scalarvalue\to colorvalue$
* plane algorithms : $T:pixelCoordinate\to pixelCoordinate$
* combinatorial : tuning
** wake
** principle Misiurewicz points for the wake k/r of main cardioid
** subwake, tuning and internal address
** roots, islands and Douady tuning
** Julia morphing - to sculpt shapes of Mandelbrot set parts ( zoom ) and Show Inflection

### general computer graphic algorithms

* Texture mapping
* lightning
* coloring
* Special effect

#### coloring algorithms

* general coloring algorithms: ( feature of the pixel -> color ): $T:scalarvalue\to colorvalue$
** discrete gradient
** continous gradient: takes normalised position (floating point number in [0.0, 1.0] range) as an input and gives color as an output, not related with fractals, but used in general computer graphic; $T:scalarvalue\to colorvalue$
Pages
* coloring the paramater plane and the Mandelbrot set
* coloring the dynamic plane and the Julia sets

### plane

* coordinate
* transformations ( maps )
* quality of the image
** graphic files
** parameter files
** formula files
** lightning files
** Size and resolution of the image
* Scanning, sampling and decomposition
** types
** transformations
*** Exponential mapping or Mercator projection or log-polar mapping
*** zoom ( shallow and deep)
**** deep zoom and Perturbation_theory

### representation functions

Algorithms: Algorithms, methods of drawing/computing or representation functions ( for space transformations see here)
* escape and attracting time for (level sets method (LSM), level curves method (LCM)
** the Julia sets
*** Target sets, trap and bailout tests
**** Decomposition of the target set: Binary Decomposition Method ( BDM) which in parabolic case gives: zeros of Qn or parabolic checkerboard ( chessboard)
**** Esher like tilings
**** orbit trap
** Boolean_escape_time for the Mandelbrot set
*** BDM/M
* Inverse iteration method ( IIM) for drawing:
** Julia set = IIM/J
* complex potential
** on the parameter plane
** on the dynamic plane
* atom domains
* bof60
* The_Lyapunov_exponent
* True shape
* Discrete Langrangian Descriptors
* curves
** boundary - scanning
** unroll a closed curve and then stretch out into an infinite strip
** equipotential curve
** external ray ( parameter and dynamic) trace
*** Parameter Ray
*** dynamic ray
** internal ray
** path: escape route
* DEM = Distance Estimation Method
** DEM/M- for Mandelbrot set
** DEM/J for Julia set
* Maping component to the unit disk ( Riemann map ):
** Multiplier map and internal ray
*** on the parameter plane
*** on the dynamic plane
** Boettcher map, complex potential and external ray
*** on the parameter plane
**** parameter ray = field lines
**** complex potential , external angle
*** on the dynamic plane
* histogram colorings: "The main idea is to use histogram to distribute the color gradients more effectively to used indexes instead of uniformly wasting many colors on unused indexes. Also it uses a specific visually pleasing gradient function" (Spektre)
* Average Colorings "are a family of coloring functions that use the decimal part of the smooth iteration count to interpolate between average sums." Jussi Harkonen
** Triangle Inequality Average Coloring = TIA and curvature average algorithm ( CAA)
** Stripe Average Coloring = SAC
** Discrete Velocity of non-attracting Basins and Petals by Chris King
** Average distance
* 2D to 3D : bump maping
** heightmap
** slope
** Embossing and Lighting
** lighting
* Parameter plane: combinatorial algorithms
** wake : How to find angles of external rays that land on the root point of the wake ( = angles of the wake)?
** principle Misiurewicz points of the wake k/r , tuning: How to find angles of external rays landing on the principle Misurewicz point of the wake ?
** branches and tips
** subwake, tuning and internal address
** roots, islands and Douady tuning - How to find the angles of external rays that land on the root point of any Mandelbrot set's component which is not accessible from main cardioid ( M0) by a finite number of boundary crossing ?
** Period doubling cascade and the Myrberg-Feigenbaum point in the 1/2 family. Escape route 1/2
* Zoom
** on the parameter plane
*** (shallow or normal) zoom
*** Deep zoom and Perturbation method
**** Julia morphing - to sculpt shapes of Mandelbrot set parts ( zoom ) and Show Inflection
*** Exponential mapping or Mercator projection or log-polar mapping
Parameter plane ( with Mandelbrot set it's components, islands, decorations, ...)
* plane types
* plane transformations
* plane parts
** interior
** boundary
** exterior
Dynamic plane (with Julia and Fatou sets)
* exterior
** Boettcher coordinate, complex potential and external ray on the dynamic plane
* boundary
* interior

### Algorithms by Claude Heiland-Allen

* Graphical Algorithms or coloring algorithms or representation functions
** Membership
** Escape Time
** Binary Decomposition
** Continuous Dwell
** Exterior Coordinates
** Dwell Gradient
** Exterior Distance
** Atom Domains
** Misiurewicz Domains
** Interior Coordinates
** Interior Distance
* Numerical Algorithms
** Nucleus
** Attractor
** Interior Point
** Misiurewicz Point (“Naive”)
** Misiurewicz Point (“Full”)
** Child Size
** Size Estimate
** Shape Estimate
** Domain Size
** External Ray In ( curve tracing )
** External Ray Out ( curve tracing ): For finding external angle θ given c not in the Mandelbrot set. Same as External Ray In, but with λ>1. Collect bits of θ in reverse order when passing dwell bands.
** External Angles
* Symbolic Algorithms
** Tuning
** Primary Bulb
** The Farey Tree
** Lavaurs’ Algorithm
** Spoke Navigation
** Islands In Hairs
** Hair Navigation
** Other Angles
* Other (Further) Algorithms
** Perturbation
** Glitch Correction
** Series Approximation
** Zoom Interpolation
** Poincaré Zoom
** Exponential Map
** Stretching Cusps
** Julia Morphing
** Buddhabrot
** Spider Algorithm
** π In The Mandelbrot Set
** Fractal Dimension Of Julia Sets
** Mandelbrot Notebook
** Location Analysis
Code
* github repo adammaj1: Mandelbrot-book-book ( c code examples)

## External examples

* An effective algorithm to compute Mandelbrot sets in parameter planes by A. Garijo, X. Jarque, J. Villadelprat Published 2017
* codegolf SE question: mandelbrot-image-in-every-language
* codegolf SE question: generate-a-mandelbrot-fractal ( ASCI)
* rosetta code : Mandelbrot_set
* stackoverflow question: code-golf-the-mandelbrot-set
* stackoverflow questions tagged mandelbrot
* benchmark

## References

* ↑ binary decomposition From the Mandelbrot Set Glossary and Encyclopedia, by Robert Munafo, (c) 1987-2023.
* ↑ fractalforums : tricky-mandelbrot-problem
* ↑ fractalforums.org: 3d-emboss-effect-for-2d-fractals
* ↑ representation functions from From the Mandelbrot Set Glossary and Encyclopedia, by Robert Munafo, (c) 1987-2023