M Benesi
|
|
« Reply #15 on: March 15, 2011, 01:36:14 AM » |
|
Weird... I don't know whats going on. wooo..
So, did the rewrite... It's a whole bunch of formulas however. Second on the drop-down menu, I think it's the 8th or 9th in the "loop" section if you open the formula in ChaosPro.
UPDATE!!!!! There was a little mistake in the one formula, may be more, but it was something I had changed and forgot to change back. This is the corrected set now:
Benesi Set Simplified.cfm Another update: new set below
The only problem was for the one mag vs. xyz switch.. I also added in the new formula to the 4d mag vs. xyz... so...
It has some other stuff in it too... lots of formulas. I haven't extended mag vs. xyz to 4d yet (or at least the improved version), but will after I do a bit of stuff, then re-upload formulas. My coloring formulas... well, I'll put them up later. Got lots to do.
|
|
« Last Edit: March 16, 2011, 02:18:51 AM by M Benesi »
|
Logged
|
|
|
|
DarkBeam
Global Moderator
Fractal Senior
Posts: 2512
Fragments of the fractal -like the tip of it
|
|
« Reply #16 on: March 15, 2011, 08:16:00 AM » |
|
Okay Matthew, I have seen the formula. One last problem! If I leave numiter=10, the fractal looks good enough, with many branches and stuff. But normally in MB formulas have 60 iters, and with 60 iters the same fractal has a radically different look. All branches disappear, and almost nothing interesting can be seen anymore This can be a trouble for the formula user-friendliness I think. Apart this, I cleaned the formula from all bells and whistles and as I imagined it's really different from your previous edition if (bmode=="Pi/2") { b=pi/2; } else if (bmode=="Root 2") { b=sqrt(2); } else if (bmode=="Golden Ratio"){ b=(1+sqrt(5))/2; } else if (bmode=="Variable"){ b=checkvarset; } a=b^(3-n); // probably, most troubles come from here. I think you should set simply a=b or a=b*b... // probably you meant a=(n-2)*b? More simple!!! checkvar=(n)*b;
r=(sqr(sx)+sqr(sy)+sqr(sz)); r1=sqrt(sqr(sx)*a+r); r2=sqrt(sqr(sy)*a+r); r3=sqrt(sqr(sz)*a+r); // but why not: // r=sqrt(sqr(sx)+sqr(sy)+sqr(sz)); // r1=(sx^Nlin*a+r^Nlin)^(1/Nlin); // r2=(sy^Nlin*a+r^Nlin)^(1/Nlin); // r3=(sz^Nlin*a+r^Nlin)^(1/Nlin); // this should give astounding results, and more variations! r=sqrt(r); // very confusing... theta=atan2(abs(sx)*checkvar+flip(r1)); // or r? didn't understood fine phi=atan2(abs(sy)*checkvar+flip(r2)); tango=atan2(abs(sz)*checkvar+flip(r3)); nx=r1*cos(theta*n); ny=r2*cos(phi*n); nz=r3*cos(tango*n); } if (magswitch) { if (n==2) { if (pixelr>0 && sx*checkvar>r) { nx=-nx; } if (pixeli>0 && sy*checkvar>r) { ny=-ny; } if (pixelj>0 && sz*checkvar>r) { nz=-nz; } } else { if (pixelr>0 && sx>0) { nx=-nx; } if (pixeli>0 && sy>0) { ny=-ny; } if (pixelj>0 && sz>0) { nz=-nz; } } }
if (juliaMode) { sx=nx+cr; sy=ny+ci; sz=nz+cj; } else { sx=nx+(pixelr); sy=ny+(pixeli); sz=nz+(pixelj); } } // whops, forgotten this? z=quaternion(sx,sy,sz,0); r=cabs(z); z=quaternion(r,sx,sy,sz); // so I must set x=nx*nx+ny*ny+nz*nz, y=nx, z=ny // w=nz? why? // I think that also a multiplier and some variations can be awesome. // For example // x = nx^2+ny^2+nz^2 + cx, y = 2*nx*ny + cy, z= 2*nx*nz + cz (Quat-like) // x = (nx^2-ny^2)*(1+-nz^2/r^2) + cx , y = 2*nx*ny*(1+-nz^2/r^2) + cy , z= +-2*nz*r + cz (Mandelbulb-like) // Any 3D Mandelbulb formula can fit here // but in this case you have to modify the formula in a consistent way
AFAIK, the only power that gives satisfying results is 2, and if power=2 the formula is much much faster... So I think I will implement the power 2 version. EDIT: The power 1.5 is AWESOME! The power 2.5 is also good, but higher ones (3,4,5...) are "crappy" a bit In poor words:the more high is pow, the more the fractal looks like a ball... For powers near to 1 the fractal rensembles to Cantor dust, but too bad the "size" is infinite for pow=1 ( ) This may be due to the fact that you don't divide xyz by a factor to force convergence. But this is not 100% certain, because this formula is far different from regular IFS. Another thing that I don't understand is why you don't enable a selection for each power (linear and cosine). I think it is strongly reccomended... This image comes from a 1.75 power Needless to say that for more than 10 iters nothing is drawn
|
No sweat, guardian of wisdom!
|
|
|
DarkBeam
Global Moderator
Fractal Senior
Posts: 2512
Fragments of the fractal -like the tip of it
|
|
« Reply #17 on: March 15, 2011, 07:36:34 PM » |
|
Wow, finally I was able to implement the formula, but it is not "faithful" to the original for now. I varied something, putting an "abs" somewhere, things really turn out interesting... The only bad thing is that it is considerably slower than the average of other formulas, but the potential applications seems to be almost unlimited!... I have still not done the "standard version", but will do. Despite the "ChaosPro" version, works perfectly with 60 iters too! Woot Now I will upload it in the database
|
No sweat, guardian of wisdom!
|
|
|
M Benesi
|
|
« Reply #18 on: March 15, 2011, 11:15:11 PM » |
|
Told you my <personal> formula was complicated- lots of options. This part is on purpose: a=b^(3-n); // probably, most troubles come from here. I think you should set simply a=b or a=b*b... // probably you meant a=(n-2)*b? More simple!!! grin You need a decreasing a variable as n increases. It works best if a=b^(3-n) (starts out at n=2 a=pi/2.. at n=3 a=1; at n=4 a=2/pi... etc. etc.. I also (after I updated the above formula) have an option for a=b*(n-1)^-1 which gives you a= b for n=2, a= b/2 for n=3... etc. I've a new, slightly more organized version now, will post after further clean up later. For now, try not to mix the various modes if you are writing it for MB- it defaults to the correct settings, which happens to be the original formula I posted. This idea might be interesting: r1=(sx^Nlin*a+r^Nlin)^(1/Nlin); but, the reason it is squares (sx^2+r^2) ^ (n/2) is that it is the Magnitude of the component. Update: tried it. Don't know if it's all that promising. // whops, forgotten this? cheesy z=quaternion(sx,sy,sz,0); r=cabs(z); z=quaternion(r,sx,sy,sz); // so I must set x=nx*nx+ny*ny+nz*nz, y=nx, z=ny // w=nz? why? shocked grin Nothing like that. The whole z=quaternion thing is to send information to my coloring formula each iteration- it has nothing to do with the <mathematical> structure of the fractal (well.. the coloring has something to do with that, but it is determined by the variables calculated in the iteration loop). Gotta go finish something. Be back later.
|
|
« Last Edit: March 16, 2011, 12:54:32 AM by M Benesi »
|
Logged
|
|
|
|
M Benesi
|
|
« Reply #19 on: March 16, 2011, 01:10:28 AM » |
|
I'd like to point out, if you use the unmodified version of my code that I linked to, you can simply change the ^n value and explore the different fractals (z^3, 4, 5 and 6... or whatever). I'm updating it in a bit too (I'll put comments near the 2 not (!) switches) after the current render is done (using the formula, don't want to restart it. The new code is even more simplified- switches only show up when used in a fractal type, switches have been renamed (in the program itself) switch_a, switch_b, switch_c, and switch_d (which might make it harder to read, but whatever...). Also you have another drop down so you can do a user assignment for a if you desire. I also think I am going to change "linear magnitude" to "n". One last problem! If I leave numiter=10, the fractal looks good enough, with many branches and stuff. We should let people know not to increase iterations until they zoom in- every iteration increases the details and number of branches. r=(sqr(sx)+sqr(sy)+sqr(sz)); r1=sqrt(sqr(sx)*a+r); r2=sqrt(sqr(sy)*a+r); r3=sqrt(sqr(sz)*a+r);
That is the reason it only works for close to power 2. You need to have r1, r2, and r3 taken to the n BEFORE you do: nx=r1*cos(theta*n); ny=r2*cos(phi*n); nz=r3*cos(tango*n);
r=sqrt(r); // very confusing... You need to do that because you didn't take the sqrt of it before calculating r1,r2, and r3 (you take them to the n later); theta=atan2(abs(sx)*checkvar+flip(r1)); // or r? didn't understood fine phi=atan2(abs(sy)*checkvar+flip(r2)); tango=atan2(abs(sz)*checkvar+flip(r3)); Lol.. yeah, I have one of the if statements as: if ( !r2mode) { ..... not if ( r2mode). and maybe another as if (!colormodeC) or something like that... that's part of the cleanup I have to do. Should have flip( r) for all the atan2 statements. Of course, you can do it the other way, but... well, that's another method (which is why I didn't post my <personal> formula originally- instead I did the re-write to make it easier to understand the "best" formula variation). The best is with r. Another thing that I don't understand is why you don't enable a selection for each power (linear and cosine). I think it is strongly reccomended... Well, I don't really like the results way too much (for this particular fractal). Also, I like to avoid adding too many variables to "benesi set simplified.cfm". Don't want to confuse people.
|
|
« Last Edit: March 16, 2011, 01:54:39 AM by M Benesi »
|
Logged
|
|
|
|
M Benesi
|
|
« Reply #20 on: March 16, 2011, 02:27:34 AM » |
|
Newest formula set, simplified a bit more, new options for mag vs. xyz as well. Click here for ChaosPro formulas. DB- there is only one not switch ( ! switch ) and I commented it. The original formula I posted is the correct version (the one with no switches checked). And another Julia. Did it around the snowflake mesa area of the z^2 (with switch M checked). The Julia seed is (.5,.5,-.89). 2nd is a zoom into the golden tower of the 4th order. click to biggify: Also... A zoom of the pi/2 golden tower. It's not the same angle as the sqrt 2 version, but it's nice anyways. Should have matched the viewing angle a bit better.. but.. ya know. It would be a better comparison if the viewing angles matched.. hrmm... anyways.
|
|
« Last Edit: March 16, 2011, 08:30:26 AM by M Benesi »
|
Logged
|
|
|
|
DarkBeam
Global Moderator
Fractal Senior
Posts: 2512
Fragments of the fractal -like the tip of it
|
|
« Reply #21 on: March 16, 2011, 09:44:44 AM » |
|
Okay. Checked for the zillionth time your formula and added the only missing part: if (pixelr>0 && sx*checkvar>r) { nx=-nx; } if (pixeli>0 && sy*checkvar>r) { ny=-ny; } if (pixelj>0 && sz*checkvar>r) { nz=-nz; } "Magswitch". Works good enough... Mandelbulb3Dv16{ M.....S....O/...w....2....EyvjKCtPRzzWNA.GP7Qb1ERWXqwnofUynvgiLWaxvjzauTUpZ6dJxj ................................a9tkm2uu2.2........A./..................y.2..... ................/ME//....6UX/...l/....E2.....wGTig2MQjpD/..........c./...w1.8Qx6 x.....kD..../..........wz.............................................sD...../.. .w1...sDYS0rucBR/u9CF28WB9TIzQAacC47DJpjRpsDgcJhPx9m40ygx4R6z8x7niCEtrlj5ijr088G bwPV/7W603HJzMqMF9ChN5pD......2O0.....................sD..kz0................... .............................UJRR4.wppN.6OLb/.mRR4.irpN.EVLb/UCSR4.............. ...........................U..6.P....M4...EB....W....61....F....8/...I1....UJl12 ...U.iVFwxDE./ozPM2Tzz7lz16.mc..zXCc.El18XGQeGyDjvIRhrVAkz1............28.kFrA0. FWb96aAIVzvh1se7Umvxz0........../6U0.wzzz1................................E.0c.. zzzz.................................2U.8.kzzzD................................. /6U0.wzzz1...................................2CcN/UvNP6.eeWCNq0.yRii.EJJUk1f..XR S1.mx3CcN/UvNP6.QsLsUa3.ibhV..bTV1OK.sSq40.ly3CcN/UvNP6.MwLsUa3.ibhV.kqTV1OK.sSq 40.kz3CcN/UvNP6...EsUa3.eeWCNq0.IJ36wk8.wyLsUa3................................. E....2....E.....I....Q....EHVRaJnVJKO/kPrJaQ.................................... ...................zzc2qGooyVYzD742MZ1h6wz1...................zD........kz1..... ...wz........................................................................... ........................} All other parts of the formula are already OK. The only tricky thing is that CP has a strange viewpoint If you find it everything come back to its place Here is the formula with Msw, the main one only has not Msw a:= Axiom 2 b:= Pow * Axiom 1 r:= sqrt(x*x+y*y+z*z) n_x=sqrt(a*x*x+r*r) n_y=sqrt(a*y*y+r*r) n_z=sqrt(a*z*z+r*r) n_x=n_x^Pow; if (x>0 & Cx>0 ) n_x=-n_xn_y=n_y^Pow; if (y>0 & Cy>0 ) n_y=-n_yn_y=n_y^Pow; if (z>0 & Cz>0 ) n_z=-n_ztheta=atan2(b*fabs(x),r) phi =atan2(b*fabs(y),r) tango=atan2(b*fabs(z),r) x := n_x*cos(Pow*theta+shift)+Cx*cxm y := n_y*cos(Pow*phi +shift)+Cy*cym z := n_z*cos(Pow*tango+shift)+Cz*czm The only difference with yours is: a:= Axiom 2 and +shift in cosine (set to zero if you don't need)I prefer it because the formula is much more flexible as is. You should get the same effect if you manually set a to the correct value Don't ask me to correct again because it's already all ok ^ this image has the same CP settings for pow2... Another test. Succesful yay
|
|
« Last Edit: March 16, 2011, 10:39:43 AM by DarkBeam »
|
Logged
|
No sweat, guardian of wisdom!
|
|
|
M Benesi
|
|
« Reply #22 on: March 17, 2011, 05:09:51 AM » |
|
Well.. you miss out on some interesting structures without being able to turn off the magswitch option (you set it to always on).
In addition, there is a cooler way to do the magswitch for power 2, 6, 10...
And last, power 4,8,12.. are discontinuous (the fractal has breaks in it) with the magswitch on.
You miss out on some interesting forms if you don't do it exactly as I re-wrote it for you (the formula that I wrote for you in the beginning).
What compiler are you using?
|
|
|
Logged
|
|
|
|
DarkBeam
Global Moderator
Fractal Senior
Posts: 2512
Fragments of the fractal -like the tip of it
|
|
« Reply #23 on: March 17, 2011, 10:38:53 AM » |
|
Well.. you miss out on some interesting structures without being able to turn off the magswitch option (you set it to always on).
In addition, there is a cooler way to do the magswitch for power 2, 6, 10...
And last, power 4,8,12.. are discontinuous (the fractal has breaks in it) with the magswitch on.
You miss out on some interesting forms if you don't do it exactly as I re-wrote it for you (the formula that I wrote for you in the beginning).
What compiler are you using?
Well, if you allow only integer powers, you don't allow users to pick a custom non-int power. I don't like it If you allow, it has no sense to check if an exponent is 2 or 3 since you can choose any exponent in the middle. Don't ask me to replicate exactly all the formula variants, because they are too many. Be happy that now there is a MagVsXYZ, a "magswitch" version and 3 alternate versions... (Just for your knowledge; nothing can compile a m3d formula, because the arguments are fixed memory registers in fixed memory regions, so you must write it manually. Jesse passed me a list of them but I never use it because actually the position of registers is different from that. I have my own list and I follow it. Every function is a succession of very simple operations (add, subtract, multiply, divide... but divisions are troubleful...) then log, abs... But log is not a single instruction and you must be careful with it (...) This seems easy initially, but whenever you meet conditional instuctions or long complicated formulas you surely go in a real trouble! In alternative you can write a formula in C with some special fp macros instead of using normal libraries, then you must "hack" your program adding an intro asm part, and a "tail", with some special instructions. see my "Ikenagabulb" formula that I wrote in that way. Ah! You must also find every "constant" value and replace with a special code that handles it. And many more troubles (like for example, that jumps are relative and when you change the code length they must be carefully changed singularly)... Without a good assembly knowledge and a lot of luck and patience you can not simply write any formula...)
|
|
« Last Edit: March 17, 2011, 10:49:19 AM by DarkBeam »
|
Logged
|
No sweat, guardian of wisdom!
|
|
|
M Benesi
|
|
« Reply #24 on: March 24, 2011, 01:07:26 AM » |
|
DarkBeam- Thanks for putting in the work making MB formulas for this type. I've been on a slightly long vacation since St. Patrick's Day (the 17th), which is the reason I haven't replied in a bit.
Some notes for those trying the different versions:
The formula without the magswitch option is continuous through all n.
The magswitch option is discontinuous for specific non-integer powers (such as 4, maybe 2??), and I'm not sure about non-integer powers.
The special magswitch option for z^2 (6,10 as well... but not as cool for them) is continuous for VERY specific n.
|
|
|
Logged
|
|
|
|
M Benesi
|
|
« Reply #25 on: June 14, 2011, 06:05:45 AM » |
|
All right. Back to fractals after a short hiatus. A very simple tweak- at first glance- but it really works best with the "Switch M" variety (in fact as far as I know it isn't way to interesting for anything other than the M switched variety). In fact- only use it for z^2,3,5,6,7,9.... not 4,8,12... as they are discontinuous (for the correctly implemented Switch M variety). Images follow. //yer gonna set yer (You are going to set your) pixel values slightly differently this time around:
x_pixel_component_for_calculation = x_pixel - y_pixel - z_pixel; y_pixel_component_for_calculation = y_pixel - x_pixel - z_pixel; z_pixel_component_for_calculation = z_pixel - x_pixel - y_pixel;
// we do this for... various reasons. Mainly, it looks cool, and gets us a lot more out of the fractal.
Another variation (less variety, but makes cool towers at the corners of the fractal): x_pixel_component_for_calculation = sqrt( abs (x_pixel^2 - y_pixel^2 - z_pixel^2)); y_pixel_component_for_calculation = sqrt( abs (y_pixel^2 - x_pixel^2 - z_pixel^2)); z_pixel_component_for_calculation = sqrt( abs (z_pixel^2 - x_pixel^2 - y_pixel^2));
Here is a z^5 straight on (well, it's rotated 45 degrees.... otherwise it's diagonal), the next shot I post is a better (more interesting) side... well maybe. Depends on where you zoom I suppose... but for the whole thingy... the next one.. maybe. UPDATE: Rotated once horizontally (around center of thingy) added. As usual... click to biggify" Then a few random images from the first pixel assignment variation. A z^3, a zoom into one end of a z^5, and the tree at the end of the z^2 (which isn't anything new): And the tower variety:
|
|
« Last Edit: June 14, 2011, 06:44:53 AM by M Benesi »
|
Logged
|
|
|
|
M Benesi
|
|
« Reply #26 on: June 15, 2011, 01:04:11 AM » |
|
Here is a z^3 tower from the first pixel assignment type, along with a z^2 Julia (-.4,-.4,-.4) of the same p.a.t. click to enlarge...
|
|
|
Logged
|
|
|
|
DarkBeam
Global Moderator
Fractal Senior
Posts: 2512
Fragments of the fractal -like the tip of it
|
|
« Reply #27 on: June 19, 2011, 04:36:06 PM » |
|
Looks cool! A pity that this formula is slow... Luca
|
|
|
Logged
|
No sweat, guardian of wisdom!
|
|
|
M Benesi
|
|
« Reply #28 on: September 14, 2011, 04:49:20 AM » |
|
Yeah- lol, long time to reply.
Methinks a re-write in complex numbers wouldn't afford too much speed. Gonna have to wait for a new computer.... and ask Jesse if he implemented GPU calculating in Mandelbulber (once I get a new comp). Messed with a couple ideas for the more traditional bulb, altering sign assignments, etc. Made some neat (although not brand new) stuff happen, maybe post a thread shortly.
|
|
|
Logged
|
|
|
|
M Benesi
|
|
« Reply #29 on: September 15, 2011, 04:52:10 AM » |
|
Well, found a nice variation. Yields some nice twists to an otherwise slightly boxy formula (or squarey as David Makin would say). Works really well with the new pixel assignment a couple posts up (3 or 4 posts above this one). Images shall follow eventually. Might watch Thor or something instead of doing fractal work. Interesting side note... arctan (sqrt (2)) = 54.735610 degrees Rotating the fractal -45 degrees and moving -54.73.... degrees takes you to the south pole (in ChaosPro's default view). Didn't check code to closely... ooooooohhh yeah... // this section assigns variables a and b b=pi/2; a=b^(3-n); b=(n)*b; ////// This section does stuff.... iteration and suchlike...
r1 = sqrt ( abs ( abs (sy) * sy + abs (sz) * sz )); // sx set r2 = sqrt ( abs ( abs (sx) * sx + abs (sz) * sz )); // sy r3 = sqrt ( abs ( abs (sx) * sx + abs (sy) * sy )); // sz
r = ( sqr (sx) + sqr (sy) + sqr (sz) ); r4 = ( sqr (sx) * a + r ) ^ ( n / 2 ); r5 = ( sqr (sy) * a + r ) ^ ( n / 2 ); r6 = ( sqr (sz) * a + r ) ^ ( n / 2 );
theta= n * atan2 ( abs (sx) * b + flip (r1) ); //flip (X) changes real number X to imaginary number X phi= n * atan2 ( abs (sy) * b + flip (r2) ); // in other words it multiplies by i tango= n * atan2 ( abs (sz) * b + flip (r3) ); nx= r4 * cos(theta); ny= r5 * cos(phi); nz= r6 * cos(tango);
if (Change_Structure) { //expands and changes structure a bit... not necessary but interesting if (n==2) { if (pixelr>0 && sx*b>r1) { nx=-nx; } if (pixeli>0 && sy*b>r2) { ny=-ny; } if (pixelj>0 && sz*b>r3) { nz=-nz; } } else if (n==3 || n==5 || n==7 || n==9) { if (pixelr>0 && sx>0) { nx=-nx; } if (pixeli>0 && sy>0) { ny=-ny; } if (pixelj>0 && sz>0) { nz=-nz; } } } if (juliaMode) { sx= nx + cr; // Once again, cr is the x-axis Julia component sy= ny + ci; // .... ci is the y-axis Julia component sz= nz + cj; // .... cj is the z-axis Julia component } else { sx = nx + (pixelr); // Once again, pixelr is the x-axis Mandelbrot component sy = ny + (pixeli); // .... pixeli is the y-axis Mandelbrot component sz = nz + (pixelj); // ... pixelj is the z-axis Mandelbrot component }
bail= sqr (sx) + sqr (sy) + sqr (sz);
As always, click images to Biggify ( enlarge)--- First a couple z^5. Left is a Julia at -.6 , -.6 , -.6... I suppose we'll call it Satan's fortress... Right is a Mandlebrot zoom into one of the "fortresses" off of the south pole (south pole being the triple negative axis end of the fractal, fortress is actually where I got the Julia seed for the first image). First I iterated and zoomed into the Julia above. Second is simply an iteration increase of the second one above (and enlarged if you click it- shows a bit more detail). Then a couple z^4... last one shows a bit of the underlying structure through a hole in the fractal (you can see an interior pillar through the hole)- Here is a zoom into a z^3... it's a bigun if you click it... added the a zoom into the hole (and an iteration or 2) as the second image. And a few z^2, 2 of which I wasn't patient enough to complete. The second one is of a twisty section, using the modified pixel formula. The last one is a bit bright in the coloring, but shows the "central pillar" in the cave underneath the northernmost point of the southern quadrant on the z axis side (regular pixel formula).
|
|
« Last Edit: September 16, 2011, 05:50:12 AM by M Benesi »
|
Logged
|
|
|
|
|