strange symmetry
Another old piece I spent a few extra hours on. Hundreds of particles with random starting positions are iterated, their coordinates (x,y) transformed by mundane mathematics. My homebaked expressions, several potentially chaotic attractors mangled together, look complex but are actually more weird than difficult - a bit like the expressions on the blackboard in a Gary Larson cartoon:


The code randomly generates the parameters p1 to p8 (between -2 and 2) and p0 (between 0 and 1). Most results are not very special but an occasional gem shows up. There are ways of automatically eliminating many of the less interesting cases. These not only take time but inevitably remove some nice constructs. So I left out any preselection. Think of it as searching the beach for a rare shell…
Feel free to explore the 9 parameter universe with this online version. It is very unlikely that the picture that’s forming on your screen will ever be generated exactly the same on any other machine. Since every plot is unique it’s hard to get the correct scale and position, so you’ll have to do it yourself. Zoom in and out with ‘+’ and ‘-’. Move the construct with the arrow keys. The movement is a bit chunky because the image has to redraw every time the construct moves. Pressing ‘c’ cycles through several color palettes using the particle density, velocity and acceleration in different ways. Most importantly, pressing space saves the image to the user gallery. Nothing will appear to happen for a while but give it some time to finish. Since I intentionally neglected to provide a way of storing the 9 parameters, you can never recover a lost image which hasn’t been saved. The choice is yours, share the image and lose its uniqueness or keep it to yourself and lose it forever… Oh, any other key randomly generates a new construct.
Update : I’ve improved the interface a bit. Zooming now properly respects the centering. You can also move the construct by clicking and dragging the mouse. Pressing ‘r’ will center the image on the current mouse position.



March 28th, 2008 at 08:33
Wow, in the past is monochrome. The now is colorful.
March 28th, 2008 at 10:01
Wow…very nice applet…I’ll spend some hours on studying the code! so glad that someone is still sharing his work….:D
March 28th, 2008 at 16:31
very nice! and your “weird” formula is interesting
would it be presumptious to offer an idea? not a critique, take it fwiw…
i see that you’re converting your accumulation buffer nonlinearly with sqrt() and that works sweet, but still seems to oversaturate if you run it long enough — so i’m wondering if the response might be logarithmic?, so if you were to scale by log(value)/log(maxvalue) you might be able to run long enough to fill in the “veil” areas of low accumulation before the basins oversaturate? just a thought
love the rest of your works too, cheers!
March 28th, 2008 at 17:16
rce12: thanks, glad to see you know the old version.
lorenzo: ummm, so people actually look at the code… I guess I’ll need to start documenting then. In the meantime, if you have any questions just mail me directly.
davbol: thanks Dave, it’s great to get comments from people whose work I admire. You’re right that there’s still a tendency for saturating the particle density. As can be seen in certain color palettes, the velocity accumulation grid behaves better and gives less bloom. I’m still working on better rendering and log() is indeed a good choice. However, for the moment it requires too much user interaction for a web based applet. For some structures it works, for others it doesn’t. The sqrt() is a good compromise as it gives good results for a wide range of values. To be continued…
October 29th, 2008 at 17:39
[...] been working on a new renderer for the strange symmetry piece. It’s going well but it’s taking a lot of my time. The new drawing system handles [...]