ineri
Guest
|
 |
« Reply #15 on: February 21, 2010, 09:57:48 PM » |
|
In case someone is interested, i put together a site, http://sites.google.com/site/fractals3d/home, for what I feel is a more geometrically correct multiplication, operating on geodesics. --Ingemar Eriksson
|
|
|
Logged
|
|
|
|
David Makin
|
 |
« Reply #16 on: February 21, 2010, 10:54:55 PM » |
|
Can you show us a high resolution render of your z^2+c version ?
|
|
|
Logged
|
|
|
|
Paolo Bonzini
Guest
|
 |
« Reply #17 on: February 22, 2010, 01:50:31 PM » |
|
Nice, can you post here the formulas?
|
|
|
Logged
|
|
|
|
ineri
Guest
|
 |
« Reply #18 on: February 23, 2010, 09:14:31 PM » |
|
Can you show us a high resolution render of your z^2+c version ?
I'll try to do it in the coming days. I assume you refer to power 2 mandelbrot and not julia set? I'll post the code snippet as well.
|
|
« Last Edit: February 23, 2010, 09:16:15 PM by ineri »
|
Logged
|
|
|
|
David Makin
|
 |
« Reply #19 on: February 23, 2010, 11:20:34 PM » |
|
Can you show us a high resolution render of your z^2+c version ?
I'll try to do it in the coming days. I assume you refer to power 2 mandelbrot and not julia set? I'll post the code snippet as well. Yes, I meant the Mandelbrot 
|
|
|
Logged
|
|
|
|
KRAFTWERK
|
 |
« Reply #20 on: March 15, 2010, 04:09:39 PM » |
|
|
|
« Last Edit: March 17, 2010, 12:19:46 PM by KRAFTWERK »
|
Logged
|
|
|
|
Softology
|
 |
« Reply #21 on: March 19, 2010, 09:27:42 AM » |
|
Hello all, I have lurked here for way too long so decided to join the party. After experimenting with the triplex algebra and alternate formulas for a while now, I have a few things to contribute. Firstly, maybe this topic should be called "Alternate triplex algebra" as the variations are based on modifying the maths behind the triplex algebra and not the formula z=z^p+c. After implementing most of Paul's listed variations at the start of this topic I tried a few others; 1. "IQ variation" This comes from Inigo's page here http://iquilezles.org/www/articles/mandelbulb/mandelbulb.htm. 2. Negative IQ. Same as IQ but with a negative z compent on the triplex (same as negative SIN compared to SIN) 3. Negative COS. Same as Daniel's original COS version with a negative z. 4. Negative Rucker. Again, same as the Rudy Rucker variety with a negative z. They all give unique results and new bulbs to explore. There probably are a whole bunch of other variations to explore and render. If anyone has other ideas for other variations please share. Some example images of the variations of the power 8 mandelbulb and other formulas here here http://softology.com.au/gallery/gallerymandelbulb.htm I also have links to my flickr galleries with zoomed in sample images. The more complex formula varieties do lead to more disconnected and "dusty" fractals (which is logical as it is like comparing the 2D Mandelbrot to the more complex versions of the mandelbrot formula), but when zooming in they do give some unique new looks. Jason.
|
|
|
Logged
|
|
|
|
KRAFTWERK
|
 |
« Reply #22 on: March 19, 2010, 11:51:09 AM » |
|
Thank you for that summary, some interesting variations there. If you could add the power 2 renderings aswell it would be great. One thing I do miss is renders of top vs bottom of the non symmetric power 8 bulbs. I have found it out for myself now, but it took a while, would be nice to have here in your list bugman! Thank you for your new variations Softology The "Mandelbulb Power 8 Reversed Order Positive Z" looks very interesting in pow 8!!! Looks a bit like hobolt:s riemandelettuce, is it the same formula/coordinate system? http://www.fractalforums.com/3d-fractal-generation/riemandelettuce/ I hope it is OK I linked the image here...
|
|
« Last Edit: March 19, 2010, 04:24:59 PM by KRAFTWERK »
|
Logged
|
|
|
|
Softology
|
 |
« Reply #23 on: March 19, 2010, 10:54:25 PM » |
|
The variations I show are all based on the usual triplex algebra at the start of this topic. The listed algebra is the SIN version;
SIN
theta=arctan2(z.y,z.x) phi=arcsin(z.z/radius) costh cosph sinth cosph sinph
And the other variations have different trig when calculating theta,phi and the x,y,z components of triplex z when doing cartesian to polar conversions, exponents and multiplication. From what I can see the riemanlettuce uses a different system entirely and creates a more discinnected surface.
-SIN
theta=arctan2(z.y,z.x) phi=arcsin(z.z/radius) costh cosph sinth cosph -sinph
COS
theta=arctan2(z.y,z.x) phi=arccos(z.z/radius) costh sinph sinth sinph cosph
RUCKER
theta=arctan2(z.y,z.x) phi=arctan(z.z/z.x) costh cosph sinth cosph sinph
Reversed Order
theta=arctan2(z.y,z.x) phi=arcsin(z.z/radius) costh cosph sinth -costh sinph
Reversed Order Positive Z
theta=arctan2(z.y,z.x) phi=arcsin(z.z/radius) costh cosph sinth costh sinph
IQ
theta=arccos(z.y/radius) phi=arctan2(z.x,z.z) sinth sinph costh sinth cosph
Negative IQ
theta=arccos(z.y/radius) phi=arctan2(z.x,z.z) sinth sinph costh sinth cosph
Negative COS
theta=arctan2(z.y,z.x) phi=arccos(z.z/radius) costh sinph sinth sinph -cosph
Negative Rucker
theta=arctan2(z.y,z.x) phi=arctan(z.z/z.x) costh cosph sinth cosph -sinph
The variations all seem to work with formulas other than z=z^p+c, so finding new variations leads to a whole bunch of new fractals to explore when using multiple formulas.
I would be interested in any other variations other people have tried using the above style changes.
Jason.
|
|
|
Logged
|
|
|
|
David Makin
|
 |
« Reply #24 on: March 20, 2010, 12:29:34 AM » |
|
I would be interested in any other variations other people have tried using the above style changes.
Jason.
Hi Jason and all. Actually there are 9 reasonably sensible angles you can choose from to use in a Mandelbulby-style manner - with tangents: Type 1: x/y , y/z , z/x -> or the other way up Type 2: x/sqrt(y*y + z*z), y/sqrt(x*x + z*z), z/sqrt(x*x + y*y) Type 3: x/m , y/m , z/m where m is sqrt(x*x + y*y + z*z) Also you can mix and combine these in multiple ways e.g. using 2 as in the Mandelbulb or using 3 or maybe even 4 !! You can combine 2 in the normal Mandelbulb way or you can combine them say in ways based on normal 3D viewing transformations or..... I've tried a number of alternatives in my wip3D formula for UF: http://www.fractalgallery.co.uk/MMFwip3D.zipWhen I get chance I'll post more details on the ones I've tried in this thread but I'm currently not getting enough time to work on improvements, let alone on adding documentation !! If you're OK reading UF code then you should follow the ones I've tried if you look at the formula (wip3D5), though there are precious few comments and some of those may not be correct (after cutting/pasting). I found that in the cases I've tried a simple adaption of the Mandelbulb analytical DE method works but in some cases required extra scaling.
|
|
|
Logged
|
|
|
|
Softology
|
 |
« Reply #25 on: March 20, 2010, 03:31:33 AM » |
|
Actually there are 9 reasonably sensible angles you can choose from to use in a Mandelbulby-style manner - with tangents:
Type 1: x/y , y/z , z/x -> or the other way up Type 2: x/sqrt(y*y + z*z), y/sqrt(x*x + z*z), z/sqrt(x*x + y*y) Type 3: x/m , y/m , z/m where m is sqrt(x*x + y*y + z*z)
How do I use these variations with the usual triplex algebra? What part of the calculations do they replace? To make my previous summaries more complete. This is for the Nylander Positive SIN version; (converting cartesian to spherical polar) radius=sqrt(z.x*z.x+z.y*z.y+z.z*z.z) theta=arctan2(z.y,z.x) phi=arcsin(z.z/radius) (z^p) radius=power(radius,p) theta=theta*p phi=phi*p z.x=radius*cos(phi)*cos(theta) z.y=radius*cos(phi)*sin(theta) z.z=radius*sin(phi) Which parts of the calculations do I need to change to implement your variations?
|
|
« Last Edit: March 20, 2010, 04:29:50 AM by Softology »
|
Logged
|
|
|
|
David Makin
|
 |
« Reply #26 on: March 20, 2010, 04:45:48 AM » |
|
Which parts of the calculations do I need to change to implement your variations?
Please all remember that I'm approaching this from the point of view of finding interesting fractals to render and ignoring all but basic maths  The simplest ones to try are simply replace phi or theta with any 2 of the 9 angles I gave the tangents for, otherwise do the same calculation with the normal modifications available such as reversing the signs etc. Obviously some combinations make more mathematical sense than others  I forget exactly what else I did (I'd have to check my own code) but I think one method I tried was using the first 3 angles i.e. from tangents x/y, y/z and z/x giving th, ph and de and combining the sines/cosines as follows: newx = r*cos(th)*sin(de) + cx newy = r*cos(ph)*sin(th) + cy newz = r*cos(de)*sin(ph) + cz Although I'm not sure if that's what I did without checking, I do know that the above has a problem in that it does not maintain a unit scale from the trig calculations so to avoid the problem I renormalised the trig part before multiplying by the new magnitude (r) and adding the constants - if the trig part was (0,0,0) then I used newx=r+cx, newy=cy and newz=cz.
|
|
|
Logged
|
|
|
|
David Makin
|
 |
« Reply #27 on: March 22, 2010, 01:29:18 AM » |
|
Just tried another idea for getting a "true 3D" Mandelbrot. Basically I thought for r,i,j then treat r,i and r,j as two complex numbers, raise both to a power, combine the real parts of the results somehow and use the imaginary parts as the new i and j respectively, there was an issue with respect to magnitude but that's simply fixed by scaling the result, here's the UF code I came up with (magn is the magnitude of the triplex on entry):
magn = magn^@mpwr zjk = (real(zri) + flip(zj))^@mpwr zri = zri^@mpwr zj = imag(zjk) x1 = real(zri)*real(zjk) if x1>0.0 zri = x1/sqrt(abs(x1)) + flip(imag(zri)) else zri = flip(imag(zri)) endif x1 = sqrt(|zri| + sqr(zj)) if x1>0.0 magn = magn/x1 zri = magn*zri + cri zj = magn*zj + cj else zri = cri zj = cj endif magn = sqrt(|zri| + sqr(zj))
The result is more similar to the "true 3D" attempts using the unit multiplication table variations than the Mandelbulb so I was going to discard the method completely but I decided to try applying the generic Mandelbox-style square folding and the result was extremely interesting....will post a result in this thread - about 20 minutes to go.
|
|
« Last Edit: March 22, 2010, 04:02:21 AM by David Makin »
|
Logged
|
|
|
|
David Makin
|
 |
« Reply #28 on: March 22, 2010, 02:14:09 AM » |
|
Here you are, click the link if no image appears: "Mediæval Hall" 
|
|
|
Logged
|
|
|
|
M Benesi
|
 |
« Reply #29 on: June 18, 2010, 05:21:20 PM » |
|
This is just a variation of the "Christmas Tree Fractal" formula from Paul Nylander's website (that I accidentally recreated). Anyways, if you don't take the absolute value of the y pixel component, it is more "true" to the classic 2d Mandelbrot, in the sense that the 'distortion' (asymmetry) introduced by the - x component in the classic 2d Mandebrot for even n (z^2,4,6,8....) is magnified by the y component's interaction with the z component. I'd think that this was "the real deal", simply because it follows the same pattern of distortion as the 2d Mandelbrot, but it isn't as pleasing as something that replicates the look and feel of a 2d Mandelbrot for even z^n. Here is the complex triplex version, which should give some insight into the mathematics going on (and it's about 2 times as fast on my CPU): r1=sqrt(sqr(sy)+sqr(sz)); r3=r1^-n; //take it to the negative power to avoid division by zero error!
victor=complex(sx,r1); // complex (x,y) is ChaosPro's command to create a complex number out of 2 real components x and y bravo=complex(sy,sz); // the second part (1st,2nd) is the imaginary component
victor=victor^n; bravo=bravo^n;
nx=real (victor); ny=imag (victor) * real (bravo) *r3; // you have to divide out the magnitude (r3=r1^n) because it has already been applied nz=imag (victor) * imag (bravo) *r3; // twice, once computing victor, once computing bravo
if (juliaMode) { sx=nx+cr; sy=ny+ci; sz=nz+cj; } else { sx=nx+pixelr; sy=ny+pixeli; sz=nz+pixelj; }
Trig version of above code, with abs of y pixel component (which introduces symmetry). start_VARIABLE is the starting value of the variable, and is set at the end of each iteration (and before the first) new_VARIABLE is just a temporary storage variable, used in case we need to manipulate using the original start variable before the iteration is done
r2=(start_x^2+start_y^2+start_z^2)^(n/2);
theta=atan2(start_x+flip(sqrt(start_y^2+start_z^2))); // flip is a ChaosPro command to change a real to imaginary phi=atan2(start_y+flip(start_z)); // ChaosPro's atan2 statement calculates the arctangent of Imaginary/Real new_x=r2*cos(theta*v); new_y=r2*sin(v*theta)*cos(v*phi); new_z=r2*sin(v*theta)*sin(v*phi); if (juliaMode) { start_x=new_x+cr; //cr is the x part of your perturbation start_y=new_y+ci; // ci =y etc... start_z=new_z+cj; } else { start_x=new_x+(pixelr); //pixelr is the x part of the pixel start_y=new_y+abs(pixeli); // pixeli = y part etc... start_z=new_z+abs(pixelj); // !!!!!!!!!!!!!!!!!!!!!!!MAKE SURE YOU TAKE THE ABSOLUTE VALUE OF THE Y COMPONENT!!!!!!!!!! } z=quaternion(sx,sy,sz,0); // this is a command to feed information to color schemes in ChaosPro, don't use it if you don't use ChaosPro bail=sx^2+sy^2+sz^2; // bail is my bailout variable.. do bailout the normal way
|
|
« Last Edit: June 27, 2010, 10:18:51 PM by M Benesi »
|
Logged
|
|
|
|
|