The All New FractalForums is now in Public Beta Testing! Visit FractalForums.org and check it out!
|
|
Mandelbulb Power Stack Composition | ||||||
Previous Image | Next Image | ||||||
Description: A couple of volumetric renderings of some of my experiments with stacking different powers of the Mandelbulb.
Stats: Total Favorities: 0 View Who Favorited Filesize: 1.83MB Height: 2048 Width: 2048 Keywords: fractal Mandelbulb stack layer power Posted by: Chris Thomasson March 15, 2015, 08:18:10 PM Rating: Has not been rated yet. Image Linking Codes
|
||||||
0 Members and 1 Guest are viewing this picture. |
|
Comments (9) | |
Chris Thomasson | April 03, 2015, 09:29:32 PM Quote from: cKleinhuis this is cool, especially because the bulb structures are so clearly visible Yes; totally agreed. I was quite pleased when I noticed them showing up when I first started experimenting with this technique. :^) |
cKleinhuis | March 31, 2015, 03:15:23 PM this is cool, especially because the bulb structures are so clearly visible |
Chris Thomasson | March 17, 2015, 09:28:38 PM Quote from: DarkBeam Superb idea. Will surely try out. thanksssssss Thank you! :^D WRT the example code I posted, well, it really needs to keep the power of 2 close to the center of the z-axis. I made a mistake here because I started the z-axis at -1. Well, a power of 2 does not show up at this part of the unit sphere. A power of 2 really needs the z-axis to be close to 0 to see the traditional 2d Mandelbrot. So, you could modify a single line of the code from: double P = 2.0 + 8.0 * rz; to: double P = 10.0 - 8.0 * abs(sin(rz * PI)); This way, the z-axis will be closer to higher powers the further away it is from the center point, (e.g., z-axis == 0). When it gets closer to the center of the sphere, well P should be closer to the power of 2, because it should be 90 degrees at dead center of the z-axis. Where, 10 - abs(sin(PI / 2)) * 8.0 is 2. Sorry about that omission. ;^o |
DarkBeam | March 17, 2015, 11:48:06 AM Superb idea. Will surely try out. thanksssssss |
Chris Thomasson | March 17, 2015, 12:45:56 AM Quote from: DarkBeam Please, share the formula in a thread. Even in pseudocode It will be included in Mandelbulb3d. We need your help? I am sorry for the brief explanation, but I am time constrained at this moment: Think of creating a 2 dimensional slice of the Mandelbulb at a fixed z-axis. Okay, lets say, a z-axis of 0 and a power of 2. This happens to create the traditional Mandelbrot set. Fine. Now, lets create another slice that sits on top of the previous. The only differences are the power of this new slice is going to be slightly increased, say 2.1, and the z-axis is going to be increased as well. Now, continue the process until you hit a power of 10 and a z-axis of 1.0. So, the level of the power is interpolated across the z-axis. Here is some highly simplistic pseudo-code I just typed out with the actual Mandelbulb spherical coordinate math excluded for brevity: I hope there are not any damn typos in this! ______________________________________________ // gain C wrt interpolation of the x, y and z-axes, and power: // ix(-1.0, 1.0), iy(-1.0, 1.0), iz(-1.0, 1.0), P(2.0, 10.0) for (unsigned int ax = 0; ax < N; ++ax) { double rx = ax / (N - 1.0); double ix = -1.0 + 2.0 * rx; // x-component of C for (unsigned int ay = 0; ay < N; ++ay) { double ry = ay / (N - 1.0); double iy = -1.0 + 2.0 * ry; // y-component of C for (unsigned int az = 0; az < N; ++az) { double rz = az / (N - 1.0); double iz = -1.0 + 2.0 * rz; // z-component of C // This is the power of the current slice, // interpolating from 2.0 through 10.0 wrt z-axis. // [EDIT] - double P = 2.0 + 8.0 * rz; // INTO: double P = 10.0 - 8.0 * abs(sin(rz * PI)); // This is the current Cartesian point (triplex number) // C, ready for iteration... C = { ix, iy, iz }; // Perform normal Mandelbulb iteration. // Except, set the power of the iteration to P. // Z[i + 1] = Z^P + C // in spherical coordinates... if (Z does not escape) { // okay, set this pixel! setpixel(ax, ay, az, color); } } } } ______________________________________________ This ends up creating a stack of images (think RAW image format) that represent N slices of the 3d object wrt the z-axis. I take the resulting image sequence and put them into a volumetric renderer, ImageJ in this case, and bam! The object appears... ;^) I have also used Drishti to renderer some of these. It would be absolutely amazing to see this in your excellent software! Thank you for the interest. Also, if this explanation is simply not enough, I would be happy to dive into more details. Unfortunately, I do not really have the time right now to make a proper response, so I apologize if this end up sounding like a bunch of gibberish. Yikes! :^o |
DarkBeam | March 16, 2015, 11:31:12 PM Please, share the formula in a thread. Even in pseudocode It will be included in Mandelbulb3d. We need your help? |
Chris Thomasson | March 16, 2015, 11:06:38 PM Thank you all so very much for the kind comments! I really do appreciate them. FWIW, this is a stack of powers 2-10 interpolating from z-axes 0-1. The funny thing is that the stack/volume of images are only 350x350x400, and they still show some fairly "interesting", minor details... I made a little more images along the z-axis to attempt to gain some more "detail" at the expense of a slight stretching effect along z-axis with respect to the x/y-axes. ;^) |
LMarkoya | March 16, 2015, 02:12:33 PM Very cool...nice job |
DarkBeam | March 15, 2015, 10:23:57 PM Nice jobs |
Powered by SMF Gallery Pro