Fractals/mandelbrot-graphics
< FractalsInstall
Dependencies
- pkg-config
- math
- gmp
- mpfr
- mpc
- pari
- ghci
- cairo ( and pixman )
- mandelbrot-numerics
- mandelbrot-symbolics
- openmp
shared libraries
ldd m-render
linux-vdso.so.1 => (0x00007ffcae4e7000)
libmandelbrot-graphics.so => /home/a/opt/lib/libmandelbrot-graphics.so (0x00007fb8f9a12000)
libcairo.so.2 => /usr/lib/x86_64-linux-gnu/libcairo.so.2 (0x00007fb8f96df000)
libmandelbrot-numerics.so => /home/a/opt/lib/libmandelbrot-numerics.so (0x00007fb8f94cf000)
libpthread.so.0 => /lib/x86_64-linux-gnu/libpthread.so.0 (0x00007fb8f92b2000)
libc.so.6 => /lib/x86_64-linux-gnu/libc.so.6 (0x00007fb8f8ee9000)
libm.so.6 => /lib/x86_64-linux-gnu/libm.so.6 (0x00007fb8f8bdf000)
libgomp.so.1 => /usr/lib/x86_64-linux-gnu/libgomp.so.1 (0x00007fb8f89bd000)
libpixman-1.so.0 => /usr/lib/x86_64-linux-gnu/libpixman-1.so.0 (0x00007fb8f8715000)
libfontconfig.so.1 => /usr/lib/x86_64-linux-gnu/libfontconfig.so.1 (0x00007fb8f84d1000)
libfreetype.so.6 => /usr/lib/x86_64-linux-gnu/libfreetype.so.6 (0x00007fb8f8227000)
libpng12.so.0 => /lib/x86_64-linux-gnu/libpng12.so.0 (0x00007fb8f8002000)
libxcb-shm.so.0 => /usr/lib/x86_64-linux-gnu/libxcb-shm.so.0 (0x00007fb8f7dfd000)
libxcb-render.so.0 => /usr/lib/x86_64-linux-gnu/libxcb-render.so.0 (0x00007fb8f7bf3000)
libxcb.so.1 => /usr/lib/x86_64-linux-gnu/libxcb.so.1 (0x00007fb8f79d1000)
libXrender.so.1 => /usr/lib/x86_64-linux-gnu/libXrender.so.1 (0x00007fb8f77c6000)
libX11.so.6 => /usr/lib/x86_64-linux-gnu/libX11.so.6 (0x00007fb8f748c000)
libXext.so.6 => /usr/lib/x86_64-linux-gnu/libXext.so.6 (0x00007fb8f727a000)
libz.so.1 => /lib/x86_64-linux-gnu/libz.so.1 (0x00007fb8f705f000)
librt.so.1 => /lib/x86_64-linux-gnu/librt.so.1 (0x00007fb8f6e57000)
libmpc.so.3 => /usr/local/lib/libmpc.so.3 (0x00007fb8f6c3e000)
libmpfr.so.4 => /usr/local/lib/libmpfr.so.4 (0x00007fb8f69db000)
libgmp.so.10 => /usr/local/lib/libgmp.so.10 (0x00007fb8f6764000)
/lib64/ld-linux-x86-64.so.2 (0x0000564eca780000)
libdl.so.2 => /lib/x86_64-linux-gnu/libdl.so.2 (0x00007fb8f6560000)
libexpat.so.1 => /lib/x86_64-linux-gnu/libexpat.so.1 (0x00007fb8f6336000)
libXau.so.6 => /usr/lib/x86_64-linux-gnu/libXau.so.6 (0x00007fb8f6132000)
libXdmcp.so.6 => /usr/lib/x86_64-linux-gnu/libXdmcp.so.6 (0x00007fb8f5f2b000)
objdump -p m-render | grep NEEDED
NEEDED libmandelbrot-graphics.so
NEEDED libcairo.so.2
NEEDED libmandelbrot-numerics.so
NEEDED libpthread.so.0
NEEDED libc.so.6
objdump -p m-stretching-cusps | grep NEEDED
NEEDED libmandelbrot-graphics.so
NEEDED libcairo.so.2
NEEDED libmandelbrot-numerics.so
NEEDED libm.so.6
NEEDED libgmp.so.10
NEEDED libpthread.so.0
NEEDED libc.so.6
git
git clone http://code.mathr.co.uk/mandelbrot-graphics.git
and
make -C mandelbrot-graphics/c/lib prefix=${HOME}/opt install make -C mandelbrot-graphics/c/bin prefix=${HOME}/opt install
hen to run do:
export LD_LIBRARY_PATH=${HOME}/opt/lib
check :
echo $LD_LIBRARY_PATH
result :
/home/a/opt/lib
or
export PATH=${HOME}/opt/bin:${PATH}
check :
echo $PATH
To set it permanently change file :
update
git
git pull
How to use it ?
procedures
m_d_transform *rect = m_d_transform_rectangular(w, h, c, r); //
where :
- w = width in pixels
- h = height in pixels
- c = center of the image ( complex number )
- r = radius of the image ( double number
binaries
a@zelman:~/mandelbrot-graphics/c/bin$ ls -1a *.c
m-cardioid-warping.c
m-render.c
m-subwake-diagram-b.c
m-dense-misiurewicz.c
m-stretching-cusps.c
m-subwake-diagram-c.c
m-feigenbaum-zoom.c
m-subwake-diagram-a.c
m-dense-misiurewicz

Program is based on m-render.c from mandelbrot-graphics.
It draws series of png images
cardioid warping

The exterior of the cardioid in the Mandelbrot set is warped to give the appearance of rotation.
The transformation is built up from smaller components, including:
- mapping of the cardioid to a circle
- Moebius transform of the circle to a straight line
- linear translation (which is animated)
- the inverses of the linear translation
- the inverse of Moebius transform of the circle to a straight line
These transformations and their derivatives (for distance estimator colouring) are described here: https://mathr.co.uk/blog/2013-12-16_stretching_cusps.html
The program to render the animation was implemented in C using the mandelbrot-graphics library found here: https://code.mathr.co.uk/mandelbrot-graphics The program is found in the repository as c/bin/m-cardioid/warping.c https://code.mathr.co.uk/mandelbrot-graphics/blob/60adc5ab8f14aab1be479469dfcf5ad3469feea0:/c/bin/m-cardioid-warping.c
What it the relation betweeen x and internal angle ?
Hairness

m-stretching-cusps
One can add usage description :
if (! (argc == 7)) {
printf("no input \n");
printf("example usage : \n");
printf("%s re(nucleus) im(nucleus) period t_zero t_one t_infinity \n", argv[0] );
printf("%s 0 0 1 ? ? ? \n", argv[0] );
return 1;
}
What values should I put instead of ???
bond point c coordinates, corresponding to
- zero <- a/b
- one <- (a+c)/(b+d)
- infinity <- c/d
to have the cusp at c/d stretched out to infinity, with a/b in the center of the view (mapped to 0)
m-render
It is a base program for others.
This fragment of code describes how to use it :
int main(int argc, char **argv) {
if (argc != 8) {
fprintf(stderr, "usage: %s out.png width height creal cimag radius maxiters\n", argv[0]);
return 1;
}
example use will be :
m-render a.png 1000 1000 -0.75 0 1.5 10000
The result is Mandelbrot set boundary using DEM

m-subwake-diagram-a

m-subwake-diagram-b

m-subwake-diagram-c
