David Makin
|
|
« Reply #210 on: September 15, 2009, 12:00:37 AM » |
|
I like this one. What constant did you use for this Julia set? It's a degree 4 using your version of Twinbee's formula - i.e. the "power" version rather than the repeated squaring - and the Julia constant is (0.8,0,0). Actually the Julia using the double squaring method produces a very similar result anyway
|
|
|
Logged
|
|
|
|
twinbee
|
|
« Reply #211 on: September 19, 2009, 03:51:22 PM » |
|
Finally I managed to update my crappy orthographic drawer. Okay, so this only has fake shadowing (the same technique as the superposition of the earlier broccoli), but here's another 'taster' for what we can expect this thing to look like. I'm looking forward to adding proper shadowing soon. Enjoy, and click here for full size. "Golden Mandelbrot Canyon" - (3D shellbrot - power 8, iterations: 6) Anyone for Viennetta ice cream?
|
|
« Last Edit: November 14, 2009, 09:54:41 AM by twinbee »
|
Logged
|
|
|
|
cKleinhuis
|
|
« Reply #212 on: September 19, 2009, 04:14:52 PM » |
|
yea, this one really looks yummy ... nice iso rendering
|
|
|
Logged
|
---
divide and conquer - iterate and rule - chaos is No random!
|
|
|
twinbee
|
|
« Reply #213 on: September 23, 2009, 07:07:51 PM » |
|
|
|
« Last Edit: November 14, 2009, 09:44:18 AM by twinbee »
|
Logged
|
|
|
|
cKleinhuis
|
|
« Reply #214 on: September 23, 2009, 08:43:56 PM » |
|
from me a decent: but, beside of spamming, i also want to use the 'new' developed formulas, as far as i know yet you use actually 2 variants for using a true 3 Dimensional Vector and you have extended the 2 dimensional complex calculations to a 3 dimensional method which differs from the normally used quaternionic 4d method which complies certain mathematical rules ( for complex numbers it was : i*i=-1 ).... i think we should create a (pdf,latex?) document describing the modifications, and list the formulas, as it was done with the fractal flame algorithm ... this would make for a nice coproduction on fractalforums.com i can start on creating a rough outline for the document, and start collecting the formulas you have developed ... and try to explain why the modifications took place ... the document should contain the following parts: prerequisite: complex numbers description extending to "real" 3d ( not using 3 parts of a 4d vector ) A Chapter About Coloring/inside methods, because outlining the "inner" part of the fractal ( the points which do not diverge ) is just one coloring method out of many ( HPDZ has a nice document describing that http://www.hpdz.net/TechInfo_Colorizing.htm )
|
|
|
Logged
|
---
divide and conquer - iterate and rule - chaos is No random!
|
|
|
twinbee
|
|
« Reply #215 on: September 23, 2009, 09:05:37 PM » |
|
That all sounds good. Colouring the thing will produce even more incredibleness. I will stop short of calling my above renders a 'glimpse', but full global illumination and (most dramatically) perspective will make this 100x better yet still!! When stuff's in 3D, it makes all the difference. In the gateaux pic, imagine standing on one of the 'balconies' and looking across and down the surface on the mountain, with sumptious detail to either side. It will kill the CPU as always, but wow, to even think of this is too awesome. and you have extended the 2 dimensional complex calculations to a 3 dimensional method which differs from the normally used quaternionic 4d method which complies certain mathematical rules ( for complex numbers it was : i*i=-1 ).... Yup - pretty much. It's the same formula I printed back here, except where the squaring changes to higher powers instead. Hopefully these results justify my obsession with all of this to begin with Of course, me and Paul can't take all the credit for the concept. To my surprise, it turns out that Rudy Rucker also thought of the same formula around 20 years ago (and didn't realise its potential), and for all I know, others have thought of it too. Of course, limited computer speed would hinder research back then, and Paul's addition of highers powers for some utterly strange reason, actually produces all this detail. Here's Rudy's recent blog entry on the matter: http://www.rudyrucker.com/blog/2009/09/15/in-search-of-the-mandelbulb/Of course, what we have here is much closer, but it's still not quite the holy grail I'm after. I could definitely be fooled though! Though I do have my suspicions the real thing will look yet better still. We must let Benoit Mandelbrot see some of this stuff!
|
|
« Last Edit: September 23, 2009, 09:25:07 PM by twinbee »
|
Logged
|
|
|
|
bugman
|
|
« Reply #216 on: September 23, 2009, 09:49:27 PM » |
|
Here is a formula for the square root based on Twinbee's formula for squaring a 3D hypercomplex number ("triplex"). By definition, the square root must satisfy sqrt({x,y,z})² = {x,y,z}. As it turns out, 4 roots can be found that satisfy this equation. Using these roots, one can calculate inverse Julia set fractals. This method is very fast, but some regions are faint because they attract much slower. For example, 2 billion points can be calculated in a matter of seconds, although rendering can take longer. Here are some pictures: Julia set with 2 billion spheres (the full-sized image rendered in 4 hours at 4000 x 4000 pixels): http://bugman123.com/Hypercomplex/Julia-White-spheres-large.jpgJulia set with 2 billion points (the full-sized image rendered in 2 hours at 4000 x 4000 pixels): http://bugman123.com/Hypercomplex/Julia-White-points1-large.jpg180 frame animation with 2 million spheres (the full-sized animation rendered in 2 hours at 1000 x 1000 pixels): http://bugman123.com/Hypercomplex/Julia-White-spheres.m1v180 frame animation with 8 million points (the full-sized animation rendered in 1.5 hours at 1000 x 1000 pixels): http://bugman123.com/Hypercomplex/Julia-White-points.m1v8 million points (the full-sized 1000 x 1000 image rendered in a matter of seconds): http://bugman123.com/Hypercomplex/Julia-White-points2-large.jpgI would really like to create inverse Mandelbrot sets, but unfortunately, as far as I know there is no practical way to do this. Here is some Mathematica code demonstating the basic concept. This code is not intended to be efficient. It is intended to be as easy as possible to understand: WhiteSqrt[{x_, y_, z_}, sign1_, sign2_] := Module[{r = Sqrt[x^2 + y^2 + z^2], a, b, c,d}, a = sign1 Sqrt[y^2 + x^2 (2 + z^2/(x^2 + y^2)) - 2 x r]; b = sign2 Sqrt[r - x - a]/2; c = y^4 + x^2(y^2 - z^2); d = a (x (r + x) + y^2); {b ((x y^2 - d)(x^2 + y^2) - x^3 z^2)/(y c), b, -z/Sqrt[2(r - d(x^2 + y^2)/c)]}]; pc = {-0.2, 0.8, 0}; plist = {{1.0, 1.0, 1.0}, {-1.0, -1.0, -1.0}}; Do[plist = Flatten[Map[{WhiteSqrt[# - pc, 1, 1], WhiteSqrt[# - pc, -1, 1], WhiteSqrt[# - pc, 1, -1], WhiteSqrt[# - pc, -1, -1]} &, plist], 1], {6}]; Show[Graphics3D[{PointSize[0.005], Point /@ plist}, Boxed -> False, ViewPoint -> {0, 10, 0}]]
|
|
« Last Edit: September 23, 2009, 10:04:12 PM by bugman »
|
Logged
|
|
|
|
David Makin
|
|
« Reply #217 on: September 23, 2009, 10:06:55 PM » |
|
<snip> Here is some Mathematica code demonstating the basic concept. This code is not intended to be efficient. It is intended to be as easy as possible to understand: WhiteSqrt[{x_, y_, z_}, sign1_, sign2_] := Module[{r = Sqrt[x^2 + y^2 + z^2], a, b, c,d}, a = sign1 Sqrt[y^2 + x^2 (2 + z^2/(x^2 + y^2)) - 2 x r]; b = sign2 Sqrt[r - x - a]/2; c = y^4 + x^2(y^2 - z^2); d = a (x (r + x) + y^2); {b ((x y^2 - d)(x^2 + y^2) - x^3 z^2)/(y c), b, -z/Sqrt[2(r - d(x^2 + y^2)/c)]}]; pc = {-0.2, 0.8, 0}; plist = {{1.0, 1.0, 1.0}, {-1.0, -1.0, -1.0}}; Do[plist = Flatten[Map[{WhiteSqrt[# - pc, 1, 1], WhiteSqrt[# - pc, -1, 1], WhiteSqrt[# - pc, 1, -1], WhiteSqrt[# - pc, -1, -1]} &, plist], 1], {6}]; Show[Graphics3D[{PointSize[0.005], Point /@ plist}, Boxed -> False, ViewPoint -> {0, 10, 0}]]
Can you translate that root calculation into step-wise pseudo-code Paul please ? I can never follow Mathematica code
|
|
|
Logged
|
|
|
|
bugman
|
|
« Reply #218 on: September 23, 2009, 10:19:22 PM » |
|
If you look closely there is a image of the formula underneath my previous post. Unfortuntely, Fractal Forums continues to insist on shrinking my images into tiny thumbnails so it's easy to overlook the image if you're not looking carefully for it.
|
|
|
Logged
|
|
|
|
bugman
|
|
« Reply #219 on: September 23, 2009, 10:25:54 PM » |
|
For those of you who don't use Mathematica, here is my C++ code that returns all 4 roots in an array of 3D points:
#define nroot 4 pt3D plist[nroot]; pt3D pc=pt3D(-0.2,0.8,0); pt3D *WhiteSqrt(pt3D p) {double t1,t2,t3,t4; double x=p.x,y=(p.y==0.0?1.0e-9:p.y),z=p.z; // avoids singularity when y=0 double x2=sqr(x),y2=sqr(y),z2=sqr(z),r=sqrt(x2+y2+z2); double a=sqrt(y2+x2*(2.0+z2/(x2+y2))-2.0*x*r), b=sqr(y2)+x2*(y2-z2), c=a*(x*(r+x)+y2); t1=r-x; double yroot1=0.5*sqrt(t1-a), yroot2=0.5*sqrt(t1+a); t1=x*y2; t2=x2+y2; t3=cube(x)*z2; t4=y*b; double xroot1=yroot1*((t1-c)*t2-t3)/t4, xroot2=yroot2*((t1+c)*t2-t3)/t4; t1=c*(x2+y2)/b; double zroot1=-z/sqrt(2.0*(r-t1)), zroot2=-z/sqrt(2.0*(r+t1)); plist[0]=pt3D(xroot1,yroot1,zroot1); plist[1]=pt3D(xroot2,yroot2,zroot2); plist[2]=pt3D(-xroot1,-yroot1,zroot1); plist[3]=pt3D(-xroot2,-yroot2,zroot2); return plist; }
|
|
« Last Edit: September 23, 2009, 10:38:47 PM by bugman »
|
Logged
|
|
|
|
David Makin
|
|
« Reply #220 on: September 23, 2009, 10:26:56 PM » |
|
If you look closely there is a image of the formula underneath my previous post. Unfortuntely, Fractal Forums continues to insist on shrinking my images into tiny thumbnails so it's easy to overlook the image if you're not looking carefully for it.
I see it now - was it that big originally ? If so I can't believe I missed it ! Edit: Thanks for posting the C version Edit2: I know why I missed the gif formula, I was reading your post in "recent posts" and the images don't get shown there.
|
|
« Last Edit: September 23, 2009, 11:13:28 PM by David Makin »
|
Logged
|
|
|
|
David Makin
|
|
« Reply #221 on: September 23, 2009, 10:40:33 PM » |
|
Here is a formula for the square root based on Twinbee's formula for squaring a 3D hypercomplex number ("triplex").
Hi Paul, have you tried using Mathematica to see if you can get a true "divide" for any of the possible multiplies ? e.g. such that b*(a/b) = a where the mulitiiply is: {xa,ya,za}*{xb.yb,zb} = r{cos(theta)cos(phi),sin(theta)cos(phi),-sin(phi)} where: r = sqrt((xa^2+ya^2+za^2)*(xb^2+yb^2+zb^2)) theta=atan(ya/xa)+atan(yb/xb), phi=atan(za/sqrt(xa²+ya²))+atan(zb/sqrt(xb²+yb²)) Forgive me if given that "multiply" it's not actually possible to accomplish a true "divide", my math theory is more limited than my programming skills
|
|
|
Logged
|
|
|
|
bugman
|
|
« Reply #222 on: September 23, 2009, 11:27:50 PM » |
|
David, I cannot find a division formula for your multiplication formula because it is expressed in trigonometric form. I was able to find a square root formula using the "simplified" non-trigonometric form of the squaring equation, but I can't seem to obtain a similar non-trigonometric form of your multiplication formula.
Just out of curiosity, what were you hoping to do with this division formula?
|
|
|
Logged
|
|
|
|
David Makin
|
|
« Reply #223 on: September 24, 2009, 01:48:03 AM » |
|
David, I cannot find a division formula for your multiplication formula because it is expressed in trigonometric form. I was able to find a square root formula using the "simplified" non-trigonometric form of the squaring equation, but I can't seem to obtain a similar non-trigonometric form of your multiplication formula.
Just out of curiosity, what were you hoping to do with this division formula?
Ermmm, "true 3D" formulas using division - such as different versions of the Newton or Nova.
|
|
|
Logged
|
|
|
|
bugman
|
|
« Reply #224 on: September 24, 2009, 02:21:09 AM » |
|
Here are a few higher order Julia set renders with global illumination: 4th order, c={-0.2,0.8,0}, imax=6: http://bugman123.com/Hypercomplex/Julia-White4-large.jpg4th order, c={0.8,0,0}, imax=6 (same as David Makin's): http://bugman123.com/Hypercomplex/Julia-White4-2-large.jpg6th order, c={-0.2,0.8,0}, imax=6: http://bugman123.com/Hypercomplex/Julia-White6-large.jpg
|
|
« Last Edit: September 24, 2009, 02:26:22 AM by bugman »
|
Logged
|
|
|
|
|