Logo by DsyneGrafix - Contribute your own Logo!

END OF AN ERA, FRACTALFORUMS.COM IS CONTINUED ON FRACTALFORUMS.ORG

it was a great time but no longer maintainable by c.Kleinhuis contact him for any data retrieval,
thanks and see you perhaps in 10 years again

this forum will stay online for reference
News: Support us via Flattr FLATTR Link
 
*
Welcome, Guest. Please login or register. April 24, 2024, 09:41:08 AM


Login with username, password and session length


The All New FractalForums is now in Public Beta Testing! Visit FractalForums.org and check it out!


Pages: [1] 2 3   Go Down
  Print  
Share this topic on DiggShare this topic on FacebookShare this topic on GoogleShare this topic on RedditShare this topic on StumbleUponShare this topic on Twitter
Author Topic: 4th AND 5th Order ABS Fractals Are Here!!!  (Read 19615 times)
Description: Feel free to use these in your software...
0 Members and 1 Guest are viewing this topic.
stardust4ever
Fractal Bachius
*
Posts: 513



« on: April 06, 2016, 04:23:18 AM »


http://stardust4ever.deviantart.com/art/4th-Order-ABS-Mandelbrot-Variations-Complete-Set-601300868

Bump: 4th order collection of 24 fractal definitions is now complete! wink

Code:
4th Order ABS Mandelbrot Variations (Complete Set)


***Non ABS Variations (2)


Mandelbrot 4th Order:
        zi = 4 * zr * zi * (zrsqr - zisqr) + JuliaI;
        zr = zrsqr * zrsqr + zisqr * zisqr - 6 * zrsqr * zisqr +JuliaR;
        zisqr = zi * zi;
        zrsqr = zr * zr;

Mandelbar 4th:
        zi = -4 * zr * zi * (zrsqr - zisqr) + JuliaI;
        zr = zrsqr * zrsqr + zisqr * zisqr - 6 * zrsqr * zisqr +JuliaR;
        zisqr = zi * zi;
        zrsqr = zr * zr;


***Straight ABS Variations (16)


Burning Ship 4th:
        zi = 4 * abs(zr * zi) * (zrsqr - zisqr) + JuliaI;
        zr = zrsqr * zrsqr + zisqr * zisqr - 6 * zrsqr * zisqr +JuliaR;
        zisqr = zi * zi;
        zrsqr = zr * zr;

Burning Ship 4th Partial Imag:
        zi = 4 * zr * abs(zi) * (zrsqr - zisqr) + JuliaI;
        zr = zrsqr * zrsqr + zisqr * zisqr - 6 * zrsqr * zisqr +JuliaR;
        zisqr = zi * zi;
        zrsqr = zr * zr;

Burning Ship 4th Partial Real:
        zi = 4 * abs(zr) * zi * (zrsqr - zisqr) + JuliaI;
        zr = zrsqr * zrsqr + zisqr * zisqr - 6 * zrsqr * zisqr +JuliaR;
        zisqr = zi * zi;
        zrsqr = zr * zr;

Burning Ship 4th Partial Real Mbar:
        zi = -4 * abs(zr) * zi * (zrsqr - zisqr) + JuliaI;
        zr = zrsqr * zrsqr + zisqr * zisqr - 6 * zrsqr * zisqr +JuliaR;
        zisqr = zi * zi;
        zrsqr = zr * zr;

Celtic Burning Ship 4th:
        zi = 4 * abs(zr * zi) * (zrsqr - zisqr) + JuliaI;
        zr = abs(zrsqr * zrsqr + zisqr * zisqr - 6 * zrsqr * zisqr) +JuliaR;
        zisqr = zi * zi;
        zrsqr = zr * zr;

Celtic Burning Ship 4th Partial Imag:
        zi = 4 * zr * abs(zi) * (zrsqr - zisqr) + JuliaI;
        zr = abs(zrsqr * zrsqr + zisqr * zisqr - 6 * zrsqr * zisqr) +JuliaR;
        zisqr = zi * zi;
        zrsqr = zr * zr;

Celtic Burning Ship 4th Partial Real:
        zi = 4 * abs(zr) * zi * (zrsqr - zisqr) + JuliaI;
        zr = abs(zrsqr * zrsqr + zisqr * zisqr - 6 * zrsqr * zisqr) +JuliaR;
        zisqr = zi * zi;
        zrsqr = zr * zr;

Celtic Burning Ship 4th Partial Real Mbar:
        zi = -4 * abs(zr) * zi * (zrsqr - zisqr) + JuliaI;
        zr = abs(zrsqr * zrsqr + zisqr * zisqr - 6 * zrsqr * zisqr) +JuliaR;
        zisqr = zi * zi;
        zrsqr = zr * zr;

Buffalo 4th:
        zi = abs(4 * zr * zi * (zrsqr - zisqr)) + JuliaI;
        zr = abs(zrsqr * zrsqr + zisqr * zisqr - 6 * zrsqr * zisqr) +JuliaR;
        zisqr = zi * zi;
        zrsqr = zr * zr;

Buffalo 4th Partial Imag:
        zi = abs(4 * zr * zi * (zrsqr - zisqr)) + JuliaI;
        zr = zrsqr * zrsqr + zisqr * zisqr - 6 * zrsqr * zisqr +JuliaR;
        zisqr = zi * zi;
        zrsqr = zr * zr;


Celtic (Buffalo 4th Partial Real):
        zi = 4 * zr * zi * (zrsqr - zisqr) + JuliaI;
        zr = abs(zrsqr * zrsqr + zisqr * zisqr - 6 * zrsqr * zisqr) +JuliaR;
        zisqr = zi * zi;
        zrsqr = zr * zr;

Celtic 4th Mbar:
        zi = -4 * zr * zi * (zrsqr - zisqr) + JuliaI;
        zr = abs(zrsqr * zrsqr + zisqr * zisqr - 6 * zrsqr * zisqr) +JuliaR;
        zisqr = zi * zi;
        zrsqr = zr * zr;


***Quasi ABS Variations (10)


False Quasi Perpendicular 4th:
        zi = -4 * zr * zi * abs(zrsqr - zisqr) + JuliaI;
        zr = zrsqr * zrsqr + zisqr * zisqr - 6 * zrsqr * zisqr +JuliaR;
        zisqr = zi * zi;
        zrsqr = zr * zr;

False Quasi Heart 4th:
        zi = 4 * zr * zi * abs(zrsqr - zisqr) + JuliaI;
        zr = zrsqr * zrsqr + zisqr * zisqr - 6 * zrsqr * zisqr +JuliaR;
        zisqr = zi * zi;
        zrsqr = zr * zr;

Celtic False Quasi Perpendicular 4th:
        zi = -4 * zr * zi * abs(zrsqr - zisqr) + JuliaI;
        zr = abs(zrsqr * zrsqr + zisqr * zisqr - 6 * zrsqr * zisqr) +JuliaR;
        zisqr = zi * zi;
        zrsqr = zr * zr;

Celtic False Quasi Heart 4th:
        zi = 4 * zr * zi * abs(zrsqr - zisqr) + JuliaI;
        zr = abs(zrsqr * zrsqr + zisqr * zisqr - 6 * zrsqr * zisqr) +JuliaR;
        zisqr = zi * zi;
        zrsqr = zr * zr;

Imag Quasi Perpendicular / Heart 4th:
        zi = 4 * zr * abs(zi) * abs(zrsqr - zisqr) + JuliaI;
        zr = zrsqr * zrsqr + zisqr * zisqr - 6 * zrsqr * zisqr +JuliaR;
        zisqr = zi * zi;
        zrsqr = zr * zr;

Real Quasi Perpendicular 4th:
        zi = -4 * abs(zr) * zi * abs(zrsqr - zisqr) + JuliaI;
        zr = zrsqr * zrsqr + zisqr * zisqr - 6 * zrsqr * zisqr +JuliaR;
        zisqr = zi * zi;
        zrsqr = zr * zr;

Real Quasi Heart 4th:
        zi = 4 * abs(zr) * zi * abs(zrsqr - zisqr) + JuliaI;
        zr = zrsqr * zrsqr + zisqr * zisqr - 6 * zrsqr * zisqr +JuliaR;
        zisqr = zi * zi;
        zrsqr = zr * zr;

Celtic Imag Quasi Perpendicular / Heart 4th:
        zi = 4 * zr * abs(zi) * abs(zrsqr - zisqr) + JuliaI;
        zr = abs(zrsqr * zrsqr + zisqr * zisqr - 6 * zrsqr * zisqr) +JuliaR;
        zisqr = zi * zi;
        zrsqr = zr * zr;

Celtic Real Quasi Perpendicular 4th:
        zi = -4 * abs(zr) * zi * abs(zrsqr - zisqr) + JuliaI;
        zr = abs(zrsqr * zrsqr + zisqr * zisqr - 6 * zrsqr * zisqr) +JuliaR;
        zisqr = zi * zi;
        zrsqr = zr * zr;

Celtic Real Quasi Heart 4th:
        zi = 4 * abs(zr) * zi * abs(zrsqr - zisqr) + JuliaI;
        zr = abs(zrsqr * zrsqr + zisqr * zisqr - 6 * zrsqr * zisqr) +JuliaR;
        zisqr = zi * zi;
        zrsqr = zr * zr;

Special thanks to Kalles Fraktaler and Command Line Cowboy (Panzerboy) for adding my 2nd and 3rd order fractals to their software plugins. Feel free to use any of the above formulas in any software program, image, or video render. Credit is appreciated but not required. Thanks for viewing...

BUMP: Added 5th Order fractals. I'm not going any further as things tend to get a bit blobby with 6th Order and beyond...


http://stardust4ever.deviantart.com/art/5th-Order-ABS-Mandelbrot-Variations-601484985

Code:
Mandelbrot 5th:
zi = zi * (5 * zrsqrsqr - 10 * zrzisqr + zisqrsqr) +JuliaI;
zr = zr * (zrsqrsqr - 10 * zrzisqr + 5 * zisqrsqr) +JuliaR;
zisqr = zi * zi;
zrsqr = zr * zr;
zisqrsqr = zisqr * zisqr;
zrsqrsqr = zrsqr * zrsqr;
zrzisqr = zrsqr * zisqr;


Mandelbar 5th (Vertical):
zi = -zi * (5 * zrsqrsqr - 10 * zrzisqr + zisqrsqr) +JuliaI;
zr = zr * (zrsqrsqr - 10 * zrzisqr + 5 * zisqrsqr) +JuliaR;
zisqr = zi * zi;
zrsqr = zr * zr;
zisqrsqr = zisqr * zisqr;
zrsqrsqr = zrsqr * zrsqr;
zrzisqr = zrsqr * zisqr;


Mandelbar 5th (horizontal):
zi = zi * (5 * zrsqrsqr - 10 * zrzisqr + zisqrsqr) +JuliaI;
zr = -zr * (zrsqrsqr - 10 * zrzisqr + 5 * zisqrsqr) +JuliaR;
zisqr = zi * zi;
zrsqr = zr * zr;
zisqrsqr = zisqr * zisqr;
zrsqrsqr = zrsqr * zrsqr;
zrzisqr = zrsqr * zisqr;


Burning Ship 5th:
zi = abs(zi) * (5 * zrsqrsqr - 10 * zrzisqr + zisqrsqr) +JuliaI;
zr = abs(zr) * (zrsqrsqr - 10 * zrzisqr + 5 * zisqrsqr) +JuliaR;
zisqr = zi * zi;
zrsqr = zr * zr;
zisqrsqr = zisqr * zisqr;
zrsqrsqr = zrsqr * zrsqr;
zrzisqr = zrsqr * zisqr;


Buffalo 5th:
zi = abs(zi * (5 * zrsqrsqr - 10 * zrzisqr + zisqrsqr)) +JuliaI;
zr = abs(zr * (zrsqrsqr - 10 * zrzisqr + 5 * zisqrsqr)) +JuliaR;
zisqr = zi * zi;
zrsqr = zr * zr;
zisqrsqr = zisqr * zisqr;
zrsqrsqr = zrsqr * zrsqr;
zrzisqr = zrsqr * zisqr;


Burning Ship 5th Partial:
zi = zi * (5 * zrsqrsqr - 10 * zrzisqr + zisqrsqr) +JuliaI;
zr = abs(zr) * (zrsqrsqr - 10 * zrzisqr + 5 * zisqrsqr) +JuliaR;
zisqr = zi * zi;
zrsqr = zr * zr;
zisqrsqr = zisqr * zisqr;
zrsqrsqr = zrsqr * zrsqr;
zrzisqr = zrsqr * zisqr;


Burning Ship 5th Partial Mbar:
zi = -zi * (5 * zrsqrsqr - 10 * zrzisqr + zisqrsqr) +JuliaI;
zr = abs(zr) * (zrsqrsqr - 10 * zrzisqr + 5 * zisqrsqr) +JuliaR;
zisqr = zi * zi;
zrsqr = zr * zr;
zisqrsqr = zisqr * zisqr;
zrsqrsqr = zrsqr * zrsqr;
zrzisqr = zrsqr * zisqr;


Celtic 5th (Buffalo 5th Partial):
zi = zi * (5 * zrsqrsqr - 10 * zrzisqr + zisqrsqr) +JuliaI;
zr = abs(zr * (zrsqrsqr - 10 * zrzisqr + 5 * zisqrsqr)) +JuliaR;
zisqr = zi * zi;
zrsqr = zr * zr;
zisqrsqr = zisqr * zisqr;
zrsqrsqr = zrsqr * zrsqr;
zrzisqr = zrsqr * zisqr;


Celtic 5th Mbar:
zi = -zi * (5 * zrsqrsqr - 10 * zrzisqr + zisqrsqr) +JuliaI;
zr = abs(zr * (zrsqrsqr - 10 * zrzisqr + 5 * zisqrsqr)) +JuliaR;
zisqr = zi * zi;
zrsqr = zr * zr;
zisqrsqr = zisqr * zisqr;
zrsqrsqr = zrsqr * zrsqr;
zrzisqr = zrsqr * zisqr;


Quazi Burning Ship 5th (BS/Buffalo Hybrid):
zi = -abs(zi * (5 * zrsqrsqr - 10 * zrzisqr + zisqrsqr)) +JuliaI;
zr = abs(zr) * (zrsqrsqr - 10 * zrzisqr + 5 * zisqrsqr) +JuliaR;
zisqr = zi * zi;
zrsqr = zr * zr;
zisqrsqr = zisqr * zisqr;
zrsqrsqr = zrsqr * zrsqr;
zrzisqr = zrsqr * zisqr;


quazi Perpendicular 5th:
zi = -zi * abs(5 * zrsqrsqr - 10 * zrzisqr + zisqrsqr) +JuliaI;
zr = abs(zr) * (zrsqrsqr - 10 * zrzisqr + 5 * zisqrsqr) +JuliaR;
zisqr = zi * zi;
zrsqr = zr * zr;
zisqrsqr = zisqr * zisqr;
zrsqrsqr = zrsqr * zrsqr;
zrzisqr = zrsqr * zisqr;


Quazi Heart 5th:
zi = zi * abs(5 * zrsqrsqr - 10 * zrzisqr + zisqrsqr) +JuliaI;
zr = abs(zr) * (zrsqrsqr - 10 * zrzisqr + 5 * zisqrsqr) +JuliaR;
zisqr = zi * zi;
zrsqr = zr * zr;
zisqrsqr = zisqr * zisqr;
zrsqrsqr = zrsqr * zrsqr;
zrzisqr = zrsqr * zisqr;
A brief addendum on the 5th order fractal formula. I have added additional variables for Zi^4, Zr^4, and (Zi^2)*(Zr^2) to reduce the number of bignum multiplications required to calculate the fractal. Further optimization may be possible in software, however I am not a programmer by nature; I can only edit what others wrote.

See Also:

3nd Order ABS Formula:
http://stardust4ever.deviantart.com/art/Cubic-Mandelbrot-ABS-Variations-Incomplete-487039945

2rd Order ABS Formula:
http://stardust4ever.deviantart.com/art/Mandelbrot-ABS-Variations-Complete-Set-of-Formulas-487039852
« Last Edit: April 09, 2016, 12:46:54 AM by stardust4ever, Reason: 5th order fractals added; 4th order set now complete! » Logged
TheRedshiftRider
Fractalist Chemist
Global Moderator
Fractal Iambus
******
Posts: 854



WWW
« Reply #1 on: April 06, 2016, 06:22:41 AM »

Nice, I am curious how these look from closeby. smiley
Logged

Motivation is like a salt, once it has been dissolved it can react with things it comes into contact with to form something interesting. nerd
stardust4ever
Fractal Bachius
*
Posts: 513



« Reply #2 on: April 06, 2016, 06:50:06 AM »

Nice, I am curious how these look from closeby. smiley
I would like to know the same. Much has been done with my lists of 2nd and 3rd order fractals, first with Fractal Extreme and later Kalles Fraktaler. Many of the Youtube Zoom movies out there are incredible.

Truthfully, I am not a programmer but have a pretty strong grasp of complex math and can edit code. All of the screenshots were generated by editing the floating point code in Fractal Extreme's 32-bit sample Plugin. You can zoom up to 45 zooms before it reverts to plain Mandelbrot. Also I have to overwrite the sampleplugin.dll every time I generate a new definition.

Here's a sample of the float point code I wrote up night before last for a 5th order Mandelbrot (untested):
Code:
Mandelbrot, 5th Order:
zi = zi * (5 * zrsqrsqr - 10 * zrzisqr + zisqrsqr) +JuliaI
zr = xr * (zrsqrsqr - 10 * zrzisqr + 5 * zisqrsqr) +JuliaR
zisqr = zi * zi
zrsqr = zr * zr
zisqrsqr = zisqr * zisqr
zrsqrsqr = zrsqr * zrsqr
zrzisqr = zrsqr * zisqr

B.S. 5th:
zi = abs(zi) * (5 * zrsqrsqr - 10 * zrzisqr + zisqrsqr) +JuliaI
zr = abs(xr) * (zrsqrsqr - 10 * zrzisqr + 5 * zisqrsqr) +JuliaR
zisqr = zi * zi
zrsqr = zr * zr
zisqrsqr = zisqr * zisqr
zrsqrsqr = zrsqr * zrsqr
zrzisqr = zrsqr * zisqr

Buff 5th:
zi = abs(zi * (5 * zrsqrsqr - 10 * zrzisqr + zisqrsqr)) +JuliaI
zr = abs(xr * (zrsqrsqr - 10 * zrzisqr + 5 * zisqrsqr)) +JuliaR
zisqr = zi * zi
zrsqr = zr * zr
zisqrsqr = zisqr * zisqr
zrsqrsqr = zrsqr * zrsqr
zrzisqr = zrsqr * zisqr
I'll try rendering some previews for 5th order formula later. I got a ton of duplicates and rotations as well as "junk" fractals when I catalogued the 3rd order sets, so I fear the 5th Order set may be likewise (I define "junk" as a black blob with no detail, wispy cobwebs, or large cantor dust like areas with no visible patterns). The 3rd order fractals that did yield detail had some stunning patterns though. I can't get over how beautifully symmetrical the 3rd order Burning Ship is with it's 135, 135, 90 degree spacing between the needles.

5th order polynomials each have 4th power terms in the Real and Imaginary components when you factor out the zi and zr. Because i^2 = -1, all of the even terms are in the real domain and the odd terms in the Imaginary domain. This places the terms (zr)^4, (zi)^4, and zi^2 * zr^2 into the equation. For optimal coding efficiency, it is wise to create new variables to handle the fourth order polynomial terms which each appear twice in the equation. Otherwise, the CPU is performing the same multiplications multiple times.

I'll propably stop after 5th order though. The higher the order, the more places there are to insert an abs() or sign change to alter the fractal. From experience I have found Mandelbrots higher than around 6th order tend to get blobby.
« Last Edit: April 06, 2016, 07:41:08 AM by stardust4ever » Logged
TheRedshiftRider
Fractalist Chemist
Global Moderator
Fractal Iambus
******
Posts: 854



WWW
« Reply #3 on: April 06, 2016, 08:14:48 AM »

To be fair, I've been trying to understand perturbation rendering for a long time but I still don't completely get it (I did inderstand the explanation in the prevous post). Same for programming. I guess Karl will figure out how to implement them in KF. I do know how to use juliamorphing smiley abs-fractals included.

I do hope I get time to clean my poweredge case, I will probably need it if I want to make videos with these within reasonable time.
« Last Edit: April 06, 2016, 02:14:15 PM by TheRedshiftRider » Logged

Motivation is like a salt, once it has been dissolved it can react with things it comes into contact with to form something interesting. nerd
stardust4ever
Fractal Bachius
*
Posts: 513



« Reply #4 on: April 07, 2016, 03:48:56 AM »

Bump. 5th order variations added. I'm probably going to stop here as higher order fractals tend to get "blobby."

Smiling Mandelbrot
Logged
Kalles Fraktaler
Fractal Senior
******
Posts: 1458



kallesfraktaler
WWW
« Reply #5 on: April 07, 2016, 12:49:06 PM »

Thanks stardust, many of these looks really awesome!

However the calculations tend to get very complex in the 3rd power already.

I'll take cubic burning ship as an example.
The reference calculation is pretty straight forward:
Code:
xrn = (sr - (si * 3)) * xr.Abs() + m_rref;
xin = ((sr * 3) - si) * xi.Abs() + m_iref;
xr = xrn;
xi = xin;
sr = xr.Square();
si = xi.Square();
m_db_dxr[i] = xr.ToDouble();
m_db_dxi[i] = xi.ToDouble();

But then the perturbation calculation, with the abs method from laster blaster, is much trickier.
This abs method is necessary otherwise precision limitations will make it impossible to go deeper than e18.
The reference points needs to be subtracted from the delta, and the resulting fully expanded expression needs to be analyzed in order to identify how to apply the abs method
abs(c+d) - abs(c):
    if c>0:
        if c+d > 0 (e.g. d > -c):
            result = d
        else if d == -c:
            result = d
        else if d < -c:
            result = -d -2c
    else if c==0:
        result = abs(d)
    else if c < 0:
        if c+d>0 (e.g. d > -c)
            result = d + 2c
        else if d == -c:
            result = -d
        else if d < -c:
            result = -d
So here is the perturbation implementation
Code:
yr = m_db_dxr[antal] + Dr;
yi = m_db_dxi[antal] + Di;

// Making references for easier readability
double &r = m_db_dxr[antal];
double &i = m_db_dxi[antal];
double &a = Dr;
double &b = Di;
double &a0 = dbD0r;
double &b0 = dbD0i;
double r2 = r*r;
double i2 = i*i;
double a2 = a*a;
double b2 = b*b;
double ar = a*r;
double ib = i*b;
double ab;

// laser blaster's famous abs method
if (r>0){
if (r + a>0)
Dnr = a;
else if (a == -r)
Dnr = a;
else if (a<-r)
Dnr = -a - 2 * r;
}
else if (r == 0)
Dnr = _abs(a);
else if (r < 0){
if (r + a>0)
Dnr = a + 2 * r;
else if (a == -r)
Dnr = -a;
else if (a < -r)
Dnr = -a;
}

ab = r + a;
Dnr = (r2 - 3 * i2) * Dnr + (2 * ar + a2 - 6 * ib - 3 * b2)*_abs(ab) + a0;

// laser blaster's famous abs method
if (i>0){
if (i + b>0)
Dni = b;
else if (b == -i)
Dni = b;
else if (b<-i)
Dni = -b - 2 * i;
}
else if (i == 0)
Dni = _abs(b);
else if (i < 0){
if (i + b>0)
Dni = b + 2 * i;
else if (b == -i)
Dni = -b;
else if (b < -i)
Dni = -b;
}

ab = i + b;
Dni = (3 * r2 - i2) * Dni + (6 * ar + 3 * a2 - 2 * ib - b2) * _abs(ab) + b0;

Di = Dni;
Dr = Dnr;
Others, like Buffalo, have much more complex implementations of the abs mehtod.
I tried to cheat, like doing 2nd power burning ship operations twice in each loop, however that also give precision errors beyond e18.

Here is the full topic from laser blaster
http://www.fractalforums.com/new-theories-and-research/perturbation-formula-for-burning-ship-(hopefully-correct-p)/
Logged

Want to create DEEP Mandelbrot fractals 100 times faster than the commercial programs, for FREE? One hour or one minute? Three months or one day? Try Kalles Fraktaler http://www.chillheimer.de/kallesfraktaler
http://www.facebook.com/kallesfraktaler
stardust4ever
Fractal Bachius
*
Posts: 513



« Reply #6 on: April 07, 2016, 10:52:33 PM »

Thanks for the link. I needed to reread that thread. BTW, my intention is not to pressure anyone into including some or all of these fractal types in their software, but to document these formula.

The forth order is larger because with the optimized equation, there are three operands on the imaginary side which to which the abs() command can be applied. The partial Burning Ships imaginary and real components are both located on the imaginary side. These can be optionally combined with the Celtic (Buffalo Partial Real) and every partial real variation has it's own Mbar variant. The Quazi perpendicular and Heart variants apply the abs() to the distributive polynomial. And I have yet to combine those with the partial B.S. (six formula not tested or included on the list).

Fifth order is very similar to third, with a Zi factored out on the Imag side and a Zr on the real side. Since the fifth Mandelbrot is four bulbs, the real and imag components of the Partial BS and Partial Buffalo are identical, only rotated 90 degrees, but each has a distinct Mbar formulation. Fpr the 3rd order Partials, the Mbar variations are 90 degree rotations of the partials.

And the fifth order equations contain a ton of multiply operations even with additional variables created to replace the polynomial terms. I explored a few of these up to the floating point FX limit of ~45 zooms, but as 5th order equations they are already getting a bit on the "blobby" side.

And I'm aware that these abs() commands are difficult to factor out, hence the need for multiple if/then statements. They are a nightmare to derive or integrate, requiring two cases for each abs() command based on positive or negative. Calculus sucks anyhow.

But again, I'd like to iterate my primary purpose with these formula posters is to document the fractals. Sometimes less is more, and I'm not sure adding 18 different 4th order equations (24 if you include the formula I skipped over) and ten 5th orders would be that productive. The 2nd and 3rd orders seem to be in a sweet spot for beauty versus complexity.
« Last Edit: April 07, 2016, 11:07:06 PM by stardust4ever » Logged
Kalles Fraktaler
Fractal Senior
******
Posts: 1458



kallesfraktaler
WWW
« Reply #7 on: April 08, 2016, 09:06:35 AM »

This is much appreciated and some of them will most probably be implemented eventually wink
These formulas are at least very easy to implement without perturbation now when you documented them!
 Repeating Zooming Self-Silimilar Thumb Up, by Craig
Logged

Want to create DEEP Mandelbrot fractals 100 times faster than the commercial programs, for FREE? One hour or one minute? Three months or one day? Try Kalles Fraktaler http://www.chillheimer.de/kallesfraktaler
http://www.facebook.com/kallesfraktaler
stardust4ever
Fractal Bachius
*
Posts: 513



« Reply #8 on: April 08, 2016, 11:41:03 AM »

Some other thoughts I have regarding the ABS() variations...

Most of the Partial BS fractals seem like they are divided into halves, where the half of the overall shape resembles the Mandelbrot and half of the overall shape resembles the Mandelbar. This is less obvious with the second order fractals, but going by my makeshift definitions, the 2nd order Perpendicular is actually the Mbar variant of the partial burning ship real (only the real component has the absolute value applied, with the imaginary side negated), the 2nd order perpendicular buring ship is actually the partial BS Imaginary, and of course for second order and only second order, the Burning Ship is also the Buffalo Partial Imaginary.

With even orders, the Zi and Zr get factored out with both results on the Imaginary side of the equation, and with Odd orders, the Zi gets factored out on the Imaginary Axis while the Zr gets factored out on the real axis. But there is always exactly one instance of Zi and Zr in each order. With Zi and Zr factored out of the equation, you are left with a string of polynomial terms remaining using the distributive property. These terms inside the parentheses are always square thus are all positive by default. However they are often subtracted from one another, with Zrsqr - Zisqr on the real side of the second order, and other more complex polynomial terms on both sides in higher orders.

In all orders higher than two, there is an option to apply an absolute value function to the value of the polynomial inside the bracket. This results in the Quasi Heart and Quazi Perpendicular fractal variants due to their visual resemblance to the 2nd order equations. In the 3rd order and presumably all odd orders, applying absolute value only to one or both polynomial brackets results in "junk" however doing the Z component on one side and the polynomial component on the other results in the afformentioned Quazi Heart. The Quazi Heart is not interesting in and of itself, but like the 2nd order variants, the Mbar variation of the Heart leads to the Perpendicular equation.

As a side note, the "heart" fractal is actually a duplicate of the boring side of the Burning Ship, and the Celtic Heart likewise duplicates the boring side of the Buffalo. A similar instance occurs in the 3rd order ABS set, with the Quasi Heart duplicating the boring side of the Quazi Burning ship, technically the Burning Ship / Buffalo hybrid. Ironically, the Quazi Heart and Quazi Perpendicular are derived slightly differently with the 4th order fractal set. The 4th order "Heart" appears to have much more fractal detail, and slightly less so for the 4th order Quazi Perpendicular. In fact the front half of the 4th Quazi Perpendicular and the rear half of the Heart sort of resemble the uninteresting side of the Buffalo Partial Real.

And I have yet to combine these with the Partial Burning Ship variations and investigate the results. There are six yet undiscovered fractals to complete the 4th order set.
« Last Edit: April 08, 2016, 12:55:57 PM by stardust4ever » Logged
stardust4ever
Fractal Bachius
*
Posts: 513



« Reply #9 on: April 08, 2016, 12:46:39 PM »

This is much appreciated and some of them will most probably be implemented eventually wink
These formulas are at least very easy to implement without perturbation now when you documented them!
 Repeating Zooming Self-Silimilar Thumb Up, by Craig
Thanks for your interest. I know I posted a metric ton of 4th order formulas. The complete set should have 24 unique fractals sans rotations and flips. To attempt to replicate all of them would be silly.

I feel the following are good candidates:

4th Order:
Burning Ship, Burning Ship Partial Imag, and Burning Ship Partial Real
Buffalo, Celtic, and Buffalo Partial Imag
(the Buffalo Partial Imaginary bears and uncanny resemblance to the hybrid or Quazi Burning ship from the 3rd and 5th orders)

The Mbar variants of the BS Real and Celtic might also be worth investigating.

The Heart, Perpendicular, and Celtic Burning Ship variants seem more like filler to me.

5th Order:
Definitely the Burning Ship and Buffalo are must haves, as they have that same beautiful diagonal symmetry that made the third order versions so unique. Overall most of these are pretty good analogues of the 3rd order collection.

I will say this though, starting with around 6th order or so, fractals start to get blobby. The Abs variants are no different. I did a small amount of exploring in the 5th order (limited to 45 zooms) and it's hard to get away from the minis at such low depth.
Logged
stardust4ever
Fractal Bachius
*
Posts: 513



« Reply #10 on: April 08, 2016, 01:39:52 PM »

Well I rendered the six missing fractals and it appears I've erred in my naming convention on the 4th order fractal set. Expect some major tweaking later. The Quazi Perpendicular fractals require an absolute value on the the real Z component in addition to the polynomial, just like it's 3rd and 5th order sister fractals. hurt

Here is the updated formula:

Code:
Real Quasi Perpendicular 4th:
zi = -4 * abs(zr) * zi * abs(zrsqr - zisqr) + JuliaI;
zr = zrsqr * zrsqr + zisqr * zisqr - 6 * zrsqr * zisqr +JuliaR;
zisqr = zi * zi;
zrsqr = zr * zr;

Now I've got to get ready for class in two hours. Been up all night again. Monster Energy to the rescue...

Edit: Thank you spell check. I just realized I've been spelling "Quazi" wrong for the past two years. It should be "Quasi," meaning "similar to but not the same." head banging wall


* REAL Quazi Perp 4th.png (82.59 KB, 640x480 - viewed 1598 times.)
Logged
TheRedshiftRider
Fractalist Chemist
Global Moderator
Fractal Iambus
******
Posts: 854



WWW
« Reply #11 on: April 08, 2016, 02:16:31 PM »

The real quasi perpendicular 4th looks really impressive.
Logged

Motivation is like a salt, once it has been dissolved it can react with things it comes into contact with to form something interesting. nerd
stardust4ever
Fractal Bachius
*
Posts: 513



« Reply #12 on: April 08, 2016, 11:03:02 PM »

The real quasi perpendicular 4th looks really impressive.
Yeah I'm gonna redo the formula sheet sometime. I haven't slept yet...

I'll just call them "Real Quasi Perpendicular, Real Quasi Heart, and Imag Perpendicular to differentiate. Buffalo / Celtic will go on the same row, third row down not counting the 4th Order Mbrot and Mbar. Perpendicular / Heart variants fil the bottom rows. Only I have ten fractals left to make into rows of four. This will create two holes. Place the very strange looking Imag variations at the bottom. And fix the spelling errors "Quazi" -> "Quasi" in all four posters. That will be a royal PITA because I flattened all the layers in GIMP long ago when I saved as PNG... hurt

Screw typos! 4th order set is now complete!  wink
« Last Edit: April 09, 2016, 12:48:32 AM by stardust4ever » Logged
Kalles Fraktaler
Fractal Senior
******
Posts: 1458



kallesfraktaler
WWW
« Reply #13 on: April 15, 2016, 02:01:39 PM »

I tried to implement 4th power burning ship, but was not successful.
The result get distorted beyond e14 already, due to precision issues, in the same way as if I make burning ship or cubic burning ship without laster blaster's abs method...  sad

The real part is straight forward, since it doesn't include any abs (first parentesis is the delta, minus the second from the reference)
Code:
double &r = m_db_dxr[antal];  // reference real part
double &i = m_db_dxi[antal];  // reference imaginary part
double dr = (r+Dr);           // delta real part
double di = (i+Di);           // delta imaginary part
double sdr=dr*dr;             // delta real squared
double sdi=di*di;             // delta imaginary squared
double sr = r*r;              // reference real squared
double si = i*i;              // reference imaginary squared

Dnr = (sdr*sdr + sdi*sdi - 6*sdr*sdi) - (sr*sr+si*si-6*sr*si) + dbD0r;

However the imaginary part has the abs, for the delta minus the reference
Here is without laser-blaster's abs method:
Code:
Dni = 4*abs(dr*di)*(sdr-sdi) - (4*abs(r*i)*(sr-si)) + dbD0i;

Expanding dr, di, sdr and sdi, and rearranging it to define the abs(c+d)-abs(c) Construction:
Code:
Dni = 4*(sr-si)*(abs(r*i + r*Di + Dr*i + Dr*Di) - abs(r*i)) + 4*abs(r*i + r*Di + Dr*i + Dr*Di)*(2*Dr*r+Dr*Dr-2*Di*i-Di*Di) + dbD0i;

In order to be able to use laser blaster's abs method on the first abs:
Code:
double c = r*i;
double d = r*Di + Dr*i + Dr*Di;
double abs_value;
if (c>0){
if (c + d>0)
abs_value = d;
else if (d == -c)
abs_value = d;
else if (d<-c)
abs_value = -d - 2 * c;
}
else if (c == 0)
abs_value = _abs(d);
else if (c < 0){
if (c + d>0)
abs_value = d + 2 * c;
else if (d == -c)
abs_value = -d;
else if (d < -c)
abs_value = -d;
}
Dni = 4*(sr-si)*(abs_value) + 4*_abs(r*i + r*Di + Dr*i + Dr*Di)*(2*Dr*r+Dr*Dr-2*Di*i-Di*Di) + dbD0i;
Logged

Want to create DEEP Mandelbrot fractals 100 times faster than the commercial programs, for FREE? One hour or one minute? Three months or one day? Try Kalles Fraktaler http://www.chillheimer.de/kallesfraktaler
http://www.facebook.com/kallesfraktaler
stardust4ever
Fractal Bachius
*
Posts: 513



« Reply #14 on: April 16, 2016, 12:57:31 AM »

I tried to implement 4th power burning ship, but was not successful.
The result get distorted beyond e14 already, due to precision issues, in the same way as if I make burning ship or cubic burning ship without laster blaster's abs method...  sad

The real part is straight forward, since it doesn't include any abs (first parentesis is the delta, minus the second from the reference)
Code:
double &r = m_db_dxr[antal];  // reference real part
double &i = m_db_dxi[antal];  // reference imaginary part
double dr = (r+Dr);           // delta real part
double di = (i+Di);           // delta imaginary part
double sdr=dr*dr;             // delta real squared
double sdi=di*di;             // delta imaginary squared
double sr = r*r;              // reference real squared
double si = i*i;              // reference imaginary squared

Dnr = (sdr*sdr + sdi*sdi - 6*sdr*sdi) - (sr*sr+si*si-6*sr*si) + dbD0r;

However the imaginary part has the abs, for the delta minus the reference
Here is without laser-blaster's abs method:
Code:
Dni = 4*abs(dr*di)*(sdr-sdi) - (4*abs(r*i)*(sr-si)) + dbD0i;

Expanding dr, di, sdr and sdi, and rearranging it to define the abs(c+d)-abs(c) Construction:
Code:
Dni = 4*(sr-si)*(abs(r*i + r*Di + Dr*i + Dr*Di) - abs(r*i)) + 4*abs(r*i + r*Di + Dr*i + Dr*Di)*(2*Dr*r+Dr*Dr-2*Di*i-Di*Di) + dbD0i;

In order to be able to use laser blaster's abs method on the first abs:
Code:
double c = r*i;
double d = r*Di + Dr*i + Dr*Di;
double abs_value;
if (c>0){
if (c + d>0)
abs_value = d;
else if (d == -c)
abs_value = d;
else if (d<-c)
abs_value = -d - 2 * c;
}
else if (c == 0)
abs_value = _abs(d);
else if (c < 0){
if (c + d>0)
abs_value = d + 2 * c;
else if (d == -c)
abs_value = -d;
else if (d < -c)
abs_value = -d;
}
Dni = 4*(sr-si)*(abs_value) + 4*_abs(r*i + r*Di + Dr*i + Dr*Di)*(2*Dr*r+Dr*Dr-2*Di*i-Di*Di) + dbD0i;

I wanted to say thank you for attempting to render these fractals. I do have one more trick up my sleeve that may or may not work with the 4th order abs fractals.

I won't pretend to understand exactly how the perturbation rendering method works (aside from using deltas to calculate orbits at lower precision), but the burning ship and buffalo fractals (as well as their partial |Zr| and |Zi| variants) can be computed to arbitrary power N.

Since complex Z can be defined as:

Code:
Z = Zr + Zi*i

Assume complex absolute value is applied separately to the Zr and Zi components.

Code:
|Z| = |Zr| + |Zi|*i

Burning Ship arbitrary power N:

Code:
Z = |Z|^N + C

Buffalo arbitrary power N:

Code:
Z = |Z^N| + C

Next, take the standard reduced polynomial 4th power Mandelbrot:

Code:
Mandelbrot 4th Order (Reduced Polynomial): Z = Z^4 + C
zi = 4 * zr * zi * (zrsqr - zisqr) + ci;
zr = zrsqr * zrsqr + zisqr * zisqr - 6 * zrsqr * zisqr +cr;
zisqr = zi * zi;
zrsqr = zr * zr;

The above formula uses seven bignum multiply operations (four of which are squares) not counting simple integers. Alternately we can use nested exponents to express higher order exponents N which have smaller prime factors. For instance, Z^4 = (Z^2)^2

Code:
Mandelbrot 4th Order (Nested Exponent): Z = (Z^2)^2 + C
zi= zr * zi * 2
zr = zrsqr - zisqr
zisqr = zi * zi
zrsqr = zr * zr

zi= zr * zi * 2 + ci
zr = zrsqr - zisqr + cr
zisqr = zi * zi
zrsqr = zr * zr

The above formula uses six bignum multiply operations (four of which are squares), making it slightly more computationally efficient than the reduced polynomial 4th.

To convert the 4th order Mandelbrot to the generalized Burning Ship, the absolute value command must be applied to the equation before to the exponent. This yields:

Code:
Burning Ship 4th Nested: Z = (|Z|^2)^2 + C

zi= abs(zr * zi) * 2
zr = zrsqr - zisqr
zisqr = zi * zi
zrsqr = zr * zr

zi= zr * zi * 2 + ci
zr = zrsqr - zisqr + cr
zisqr = zi * zi
zrsqr = zr * zr

Code:
Burning Ship 4th Partial Imag Nested:

zi= zr * abs(zi) * 2
zr = zrsqr - zisqr
zisqr = zi * zi
zrsqr = zr * zr

zi= zr * zi * 2 + ci
zr = zrsqr - zisqr + cr
zisqr = zi * zi
zrsqr = zr * zr

Buffalo fractal applies the absolute values after the exponent.

Code:
Buffalo 4th Nested: Z = |(Z^2)^2| + C

zi= zr * zi * 2
zr = zrsqr - zisqr
zisqr = zi * zi
zrsqr = zr * zr

zi= abs(zr * zi) * 2 + ci
zr = abs(zrsqr - zisqr) + cr
zisqr = zi * zi
zrsqr = zr * zr

Code:
Buffalo 4th Partial Real (Celtic 4th) Nested:

zi= zr * zi * 2
zr = zrsqr - zisqr
zisqr = zi * zi
zrsqr = zr * zr

zi= zr * zi * 2 + ci
zr = abs(zrsqr - zisqr) + cr
zisqr = zi * zi
zrsqr = zr * zr

Code:
Buffalo 4th Partial Imag (Quasi B.S. 4th) Nested:

zi= zr * zi * 2
zr = zrsqr - zisqr
zisqr = zi * zi
zrsqr = zr * zr

zi= abs(zr * zi) * 2 + ci
zr = zrsqr - zisqr + cr
zisqr = zi * zi
zrsqr = zr * zr

These nested exponent formula might give you something to play with since all the lower order abs formula worked but not 4th and 5th. I haven't tested these yet but the output should be equivalent to the reduced polynomial variants... wink

Again, I won't pretend to understand perturbation theory, but it may be possible to simplify the code by expressing forth order fractals as two nested second order "half-iterations", and only adding complex C every second iteration. Applying the burning ship formula only to the second half-iteration instead of the first should result in a 4th Order Quasi Burning Ship (labeled as "Buffalo Partial Imag 4th" on my formula sheet). The 4th Order Quasi Perpendicular and Quasi Heart variants likely won't be possible using nested second order equations, but Burning Ship, Buffalo, Celtic, their real and imaginary partials, and Mandelbar variants should be possible with nested second order iterations.

A nested 5th order, being prime, is out, but 6th (Z^3)^2, 8th ((Z^2)^2)^2, and 9th (Z^3)^3 nested exponents would work. It may also make rendering higher order Mandelbrots more efficient. I recently did a 10th degree zoom video and progress of fractal frames was slow. My 5th order Mandelbrot optimized, reduced polynomial formula uses 7 bignum multiplies, and a nested tenth order version Z = (Z^5)^2 + C would have used only ten bignum multiply operations per iteration.

Remember, Burning Ship fractals apply the absolute value to Zi and Zr before the exponent, and Buffalo/Celtic fractals apply the absolute value after the exponent.

Again I'd like to thank you for attempting this!  wink
« Last Edit: April 16, 2016, 02:12:28 AM by stardust4ever » Logged
Pages: [1] 2 3   Go Down
  Print  
 
Jump to:  

Related Topics
Subject Started by Replies Views Last post
2nd Order Mandelbulb Mandelbulb Renderings JColyer 0 2717 Last post November 23, 2009, 01:13:21 AM
by JColyer
2nd order renders Videos bib 3 3523 Last post January 04, 2010, 10:22:27 AM
by bib
mandelbulb - 8th order Mandelbulb Renderings JColyer 0 1418 Last post January 02, 2010, 02:46:07 PM
by JColyer
Battlestation 2nd order Movies Showcase (Rate My Movie) M Benesi 5 1719 Last post March 30, 2010, 06:31:27 AM
by M Benesi
Book Recommendation/Reading order for understanding 3D fractals? Theory Zirngibism 3 8051 Last post April 02, 2017, 09:24:25 AM
by SamTiba

Powered by MySQL Powered by PHP Powered by SMF 1.1.21 | SMF © 2015, Simple Machines

Valid XHTML 1.0! Valid CSS! Dilber MC Theme by HarzeM
Page created in 0.162 seconds with 24 queries. (Pretty URLs adds 0.009s, 2q)