makc
Strange Attractor
Posts: 272
|
|
« on: April 10, 2010, 02:15:32 AM » |
|
I was playing with this thing that draws 3d lines in (z.re, z.im, iteration) space, and found there are a lot of boring orbits that either converge over few iterations, or keep playing ping-pong between two same numbers: So my question is, how should I pick random c for interesting orbits?
|
|
|
Logged
|
|
|
|
reesej2
Guest
|
|
« Reply #1 on: April 10, 2010, 08:55:36 AM » |
|
My suggestion is to randomly choose a point within a radius of, say, 1 from the origin. Then compute the distance estimate of that point. THEN compute the distance estimates for several randomly selected nearby points (within a radius of r). Of the points you just calculated, take the one with the least distance estimate value, and then repeat with a slightly smaller r (say, r / 2).
The reason I think this'll work is that it should make your point approach a random point on the border of the set. The closer to the boundary a point is, the more likely it is to have a high period--and the higher the period, the more interesting the orbit. It's not surefire, of course, but I bet it's better than random chance.
|
|
|
Logged
|
|
|
|
Timeroot
|
|
« Reply #2 on: April 11, 2010, 08:31:45 PM » |
|
The two effects you described - converging to a single point, and playing ping pong (giggle) - are from the two main shapes: every point in the main cardioid, or bulbous part, will end up converging. And every part in the period-2 bulb, off to the "left", will end up alternating between two values. One thing you could try is choosing a random number between, say, 0.5 and 0.55. Let this random number be the radius. Then chose a random angle, from the origin. Call this "u". Then, your c will be the value of u*(1-u). This basically chooses random points just barely outside the main cardioid. There will still be a few points that ping pong, but it should give you a pretty interesting selection of orbits.
|
|
|
Logged
|
Someday, man will understand primary theory; how every aspect of our universe has come about. Then we will describe all of physics, build a complete understanding of genetic engineering, catalog all planets, and find intelligent life. And then we'll just puzzle over fractals for eternity.
|
|
|
makc
Strange Attractor
Posts: 272
|
|
« Reply #3 on: April 11, 2010, 09:57:50 PM » |
|
Then chose a random angle, from the origin. Call this "u". Then, your c will be the value of u*(1-u). I don't quite follow this, you mean u an angle, or a random number in r = 0.5 to 0.55 ring?
|
|
|
Logged
|
|
|
|
Timeroot
|
|
« Reply #4 on: April 12, 2010, 06:15:09 AM » |
|
A random number in the r=0.5 to 0.55 ring. Then, u is the random number. In psuedocode, where rand() gives a float between 0 and 1: r=0.5+rand()/20; a=(rand()-0.5)*2*pi; u=r*e^(i*a); c=u*(1-u); if you don't want to (or can't) do the e^(i*a), and would rather do it in an (real,imag) type format or something, use u=(r*cos(a),r*sin(a)); Hope this helps (or even works!)
|
|
|
Logged
|
Someday, man will understand primary theory; how every aspect of our universe has come about. Then we will describe all of physics, build a complete understanding of genetic engineering, catalog all planets, and find intelligent life. And then we'll just puzzle over fractals for eternity.
|
|
|
makc
Strange Attractor
Posts: 272
|
|
« Reply #5 on: April 12, 2010, 03:03:51 PM » |
|
if I unwrapped u(1-u) correctly, it's cx = ux * (1 - ux) + uy * uy; cy = uy * (1 - ux) - ux * uy; and it works, if by "works" we mean not 1 or 2 same points over and over, but now it's 3 or 4 or 5 same points, so most of orbits look like boring skyscrapers. on the other hand, some slowly converging, or slowly diverging orbits produce interesting organic-like spirals. I guess at this point I just have to load iteration count colored mandelbrot image and use it as a mask to pick orbits next to set border.
|
|
|
Logged
|
|
|
|
cKleinhuis
|
|
« Reply #6 on: April 12, 2010, 03:22:59 PM » |
|
i think you would like to generate interesting julia shapes, in my opinion the distance estimation would help here, all points within a distance threshold are candidates for nice julia shapes and an animation path within that treshold would give very interesting julia shapes
the problem with the circle is that you cross areas of the mandelbrot where the julia shape is not very interesting ... ;(
|
|
|
Logged
|
---
divide and conquer - iterate and rule - chaos is No random!
|
|
|
lkmitch
Fractal Lover
Posts: 238
|
|
« Reply #7 on: April 12, 2010, 05:47:32 PM » |
|
Every point in the interior of a component (bulb or cardioid) will have an orbit that settles into a limit cycle. The points with non-periodic orbits are exactly on the boundary of the Mandelbrot set. Many are easy enough to find empirically, like Misiurewicz points, which are at the tips of dendrites or at the intersections of multiple dendrites. For points on the boundaries of components, the main cardioid and the head have easily-described boundaries. Just use an angle that is not a fraction times 2pi radians and your point won't have a periodic orbit. For other components, I believe that there are some derivative analyses that can get you arbitrarily close to the edge, but they're not necessarily easy to figure out.
|
|
|
Logged
|
|
|
|
David Makin
|
|
« Reply #8 on: April 12, 2010, 11:39:18 PM » |
|
If you really want interesting orbits then change to a formula that produces strange attractors such as the Gumowski–Mira
|
|
|
Logged
|
|
|
|
|
David Makin
|
|
« Reply #10 on: April 13, 2010, 12:20:11 AM » |
|
Ah, well not all orbits of the Mira are strange attractors. What you actually need to find areas with orbits of strange attraction on say a Julia fractal is to colour it based on the Lyapunov exponents, or even the estimated fractal dimension of the orbits. If you have Ultra Fractal then you can use my "mmf4.ufm:Attractors" formula - read all the parameter hints etc. for help on using it. Alternatively (and possibly less complicated) download and try Chaoscope.
|
|
|
Logged
|
|
|
|
Timeroot
|
|
« Reply #11 on: April 13, 2010, 01:32:31 AM » |
|
Every point in the interior of a component (bulb or cardioid) will have an orbit that settles into a limit cycle. The points with non-periodic orbits are exactly on the boundary of the Mandelbrot set. Many are easy enough to find empirically, like Misiurewicz points, which are at the tips of dendrites or at the intersections of multiple dendrites. For points on the boundaries of components, the main cardioid and the head have easily-described boundaries. Just use an angle that is not a fraction times 2pi radians and your point won't have a periodic orbit. For other components, I believe that there are some derivative analyses that can get you arbitrarily close to the edge, but they're not necessarily easy to figure out.
Actually, dendrite tips and Misiurwicz points will have periodic orbits. Only the "irrational angle" points will have strange attractors. If you want interesting escaping orbits, taking Misiurwicz points with very small perturbations would produce iteresting pictures of the instability... Haha, "iteresting" was a typo. But it might actually be a cool word: iterating+interesting=iteresting, and interesting fractal.
|
|
|
Logged
|
Someday, man will understand primary theory; how every aspect of our universe has come about. Then we will describe all of physics, build a complete understanding of genetic engineering, catalog all planets, and find intelligent life. And then we'll just puzzle over fractals for eternity.
|
|
|
reesej2
Guest
|
|
« Reply #12 on: April 13, 2010, 02:57:18 AM » |
|
Hm... If you want to go REALLY crazy, pick an irrational angle (sqrt(2) * pi radians or similar) and do a binary search to find a point on the boundary at that angle (so start with bounds of r = 0.5 and 1.5, say, then test the middle. If it's in the set, your new bounds are 1 and 1.5; otherwise, your bounds are 0.5 and 1). Of course you'd have to store the angle in some format other than as a double, since you can't accurately store an irrational like that. Maybe store it as a linear function of the square root of 2 of something (so, two doubles, a and b, where your value is a * sqrt(2) + b.) Maybe pick random a and b, making sure that a is nonzero.
|
|
|
Logged
|
|
|
|
|