pupukuusikko
|
|
« on: November 12, 2015, 06:19:20 PM » |
|
Hello, While tinkering with Tglad's formulas from thread http://www.fractalforums.com/the-3d-mandelbulb/2d-conformal-formula-suggestion/ , replacing x here and y there, I came upon an interesting variant which I'd call a mandelcup. It is simpler than the originals, with just two complex operations: void mandelcup(inout vec3 p) { // c1 and c2 are adjustable constants, with default values c1=0. c2=2. vec2 z = complexDivision(p.xy,vec2(p.z,c1)); z = complexMult(z,z)*c2; p=vec3(2.*z.x, 2.*z.y, dot(z,z)-1.)/(dot(z,z)+1.); }
Because no insight was involved due to my lack of mathematical understanding, let's move straight to images. Sideview from mandelbrot mode, notice the overall grailish shape The top contains embedded mandelbrot, there's one in the bottom as well. At glance the julias seem disappointing, having rather featureless 2d julias at the ends of the tube, with stretched bands in the middle. But wait, the tube is hollow, and it contains layers of beautiful 3d julias of the same theme Attached is the fragmentarium .frag file with presets for the above images. Be careful with screen buffer size in inside rendering, it can be quite slow. Any comments, corrections or modifications of the formula would be greatly appreciated from the well educated folks around here.
|
|
|
Logged
|
|
|
|
3dickulus
|
|
« Reply #1 on: November 13, 2015, 04:09:46 AM » |
|
Beautiful! Nice work, I like the embedded mandelbrot and the "Grail" shape, may I include this in the Fragmentarium Experimental folder?
|
|
|
Logged
|
|
|
|
KRAFTWERK
|
|
« Reply #2 on: November 13, 2015, 07:20:03 AM » |
|
WOW, love that last image. I like your layman approach too, kind of the same as mine...
|
|
|
Logged
|
|
|
|
3dickulus
|
|
« Reply #3 on: November 13, 2015, 07:58:05 AM » |
|
Yikes! it is slow for the inside, maybe some of the larger math brains can help speed this up a bit. @KRAFTWERK yours was using Mandelbulb 3D? this pic is rendered with DE-Kn2, some nice structural features
|
|
|
Logged
|
|
|
|
DarkBeam
Global Moderator
Fractal Senior
Posts: 2512
Fragments of the fractal -like the tip of it
|
|
« Reply #4 on: November 13, 2015, 11:25:19 AM » |
|
This is incredibly interesting.
|
|
|
Logged
|
No sweat, guardian of wisdom!
|
|
|
pupukuusikko
|
|
« Reply #5 on: November 13, 2015, 11:58:22 AM » |
|
Thanks everyone for your interest, it's nice to be able to contribute something here. WOW, love that last image. I like your layman approach too, kind of the same as mine... I wish I had other approaches in my arsenal.. I have a bit more polished version of that scene in http://pupukuusikko.deviantart.com/art/Towards-the-Light-571646559, check out also the new tetra works Yikes! it is slow for the inside, maybe some of the larger math brains can help speed this up a bit. this pic is rendered with DE-Kn2, some nice structural features Nice pic, although I find using more fog is useful for separating the foreground, otherwise inside renderers tend to result a bit messy. Perhaps wait a bit on including this on the Fragmentarium package, maybe some improvements will come up concerning inside DE or the formula. At the moment, play with number of iterations, detail and DE adjustment to get acceptable speed in navigation. This is incredibly interesting. Thanks Luca, should not be impossible to code for MB3d? Maybe a bit later though, there are issues of which constants are good for users, also some variations might come up.
|
|
|
Logged
|
|
|
|
DarkBeam
Global Moderator
Fractal Senior
Posts: 2512
Fragments of the fractal -like the tip of it
|
|
« Reply #6 on: November 13, 2015, 01:07:19 PM » |
|
More ideas? void mandelcup(inout vec3 p) { // c1 and c2 are adjustable constants, with default values c1=0. c2=2. vec2 z = complexDivision(p.xy,vec2(p.z,c1)); z = complexMult(z,z)*c2; p=vec3(2.*z.x, 2.*z.y, dot(z,z)-1.)/(dot(z,z)+1.); }
First idea that comes to mind; is c1 truly useful? What variation pops out when you do this instead... It is identical to your formula if c1 is still zero. void mandelcup(inout vec3 p) { // c1 and c2 are adjustable constants, with default values c1=0. c2=2. vec2 z = (p.xy / p.z); z = complexMult(z,z)*c2; float mag1 = dot(z,z)-1.; float mag2 = mag1+2.; z.xy = complexDivision(z.xy,vec2(mag2,c1)); p=vec3(2.*z.x, 2.*z.y, mag1/mag2); }
|
|
|
Logged
|
No sweat, guardian of wisdom!
|
|
|
pupukuusikko
|
|
« Reply #7 on: November 13, 2015, 06:14:55 PM » |
|
First idea that comes to mind; is c1 truly useful? Yes it is, I use it to fatten the julia cups to make more room inside. However, in your version, if we replace //vec2 z = (p.xy / p.z); vec2 z = (p.xy * p.z);
we get a different and at least as interesting fractal Now, the only significant flaw with both these variants is the stretching around the equator, seen clearly in the previous julia pic, yet always present. Could something simple be done to alleviate that without hitting the theoretical conformality limit? (Layman approach does not help here)
|
|
|
Logged
|
|
|
|
|
mclarekin
|
|
« Reply #9 on: November 13, 2015, 11:28:03 PM » |
|
|
|
|
Logged
|
|
|
|
3dickulus
|
|
« Reply #10 on: November 14, 2015, 02:21:42 AM » |
|
I've done a few things like this with other peoples fragments but have never really published much more than pictures because of my "layman's" approach, thinking the real mathematicians would probably get a chuckle out of my silly little hacks. @pupukuusikko I find this very encouraging and may include a few more things in the Experimental folder Once this gets polished a bit I would be happy to include it too. hmmm... the "other" side of mandelbrot and julia sets
|
|
|
Logged
|
|
|
|
quaz0r
Fractal Molossus
Posts: 652
|
|
« Reply #11 on: November 14, 2015, 03:53:32 AM » |
|
Because no insight was involved
really nice! it looks like a magnificent glass bowl for a bong should name it "mandelbowl" instead
|
|
|
Logged
|
|
|
|
pupukuusikko
|
|
« Reply #12 on: November 14, 2015, 05:10:35 PM » |
|
Thanks quazor and mclarekin for support. I've done a few things like this with other peoples fragments but have never really published much more than pictures because of my "layman's" approach, thinking the real mathematicians would probably get a chuckle out of my silly little hacks. @pupukuusikko I find this very encouraging and may include a few more things in the Experimental folder Nice that you find my example therapeutic. I think there is a well established tradition in fractal community on more or less random tinkering, seldom punctuated by mathematicians bringing something totally new to table. Luca, here's the current version with some added variation and c1 moved to a more interesting role. If you could serve this to the mb3d community, I'd be a happy camper. void mandelcup(inout vec3 p) { // c1 and c2 are adjustable constants, with default values c1=0. c2=2.
// squaring z appears to increase conformality and adds intesting // variations on outside julias if (squareZ) p.z*=p.z;
// c1 can be used to modify the overall shape in nice ways and // turn surface to aestethically pleasing quarternion-like smoothnes p.z+=c1;
vec2 z; // inversion here produces another nice fractal with similar properties if (multiply) z = p.xy * p.z; else z = p.xy/p.z;
z = complexMult(z,z)*c2; float mag1 = dot(z,z)-1.; float mag2 = mag1+2.; z.xy = complexDivision(z.xy,(vec2(mag2,0.))); p=vec3(2.*z.x, 2.*z.y, mag1/mag2); }
|
|
|
Logged
|
|
|
|
matsoljare
|
|
« Reply #13 on: November 15, 2015, 12:43:14 AM » |
|
But will you color it red for Christmas?
|
|
|
Logged
|
|
|
|
pupukuusikko
|
|
« Reply #14 on: November 15, 2015, 07:43:41 AM » |
|
But will you color it red for Christmas?
Nah, I will paint it in gold and send it to fine folks in FIFA as a christmas present.
|
|
|
Logged
|
|
|
|
|