In this case, the heart of the function is:
x = ((sin(xSeed * y) - cos(ySeed * x)) * width * 0.2) + width / 2
In our attractor, every time the coordinate pair lands on a new spot, that spot is exposed to a little bit of light.
What you can do for "x" and "y", you can also do for "z". If you generalize the deJong attractor into 3 dimensions, it looks like this:
Not all iterated functions behave this way -- sometimes the coordinates will wander off, and that would be called a "repellor" (http://en.wikipedia.org/wiki/Repellor).
"sin" and "cos" are good primitives for building attractor functions, because they naturally stay bounded close to the origin -- "x²" for example, wouldn't work nearly as well.
As to why the deJong attractor draws particular trajectories ... that's the beauty and mystery of the thing. It's also interesting how it tends to draw particular types of shapes when seeded from different areas -- dusty spheres when seeded close to the origin, skinny loops in the 4th quadrant, folded sheets of cloth in the 1st and 3rd, and stacked diamond circles when seeded in the 2nd.
Since the points cluster around it, it is revealed by plotting the values of the system.
In this case, the image is produced by iterating the "x" and "y" values, and slightly exposing with a white light every "(x,y)" position they stop at. The more they stop at a particular pixel, the brighter that pixel becomes.
An example Retina seed: http://jashkenas.s3.amazonaws.com/misc/deJong/deJong.html#52...
Annotated source here: http://jashkenas.s3.amazonaws.com/misc/deJong/docs/deJong.ht...
One interesting question will be if anyone finds a single seed that works well for both regular and Retina versions.
This is the bit that seeds the sketch at the last recorded mouse position:
The only thing missing is arrowkey controls to bump around a pixel at a time, so you can better explore an interesting region of the space you've found.