Fork me on GitHub

A few of my selects from 500 total iterations with randomized initial state

Alex Miller (Clojure team)16:01:26

how do you select the palette?


Palettes are randomized too & I’m picking the more successful ones. The basic idea (not mine) is to generate each channel R, G and B as a scaled and shifted cosine:


the TL;DR of that is

channel = a + b * cos( c*t + d )


and so you supply the a,b,c,d and the free parameter is t.


In RGB you supply a 3D vector for a, b, c, and d.

Alex Miller (Clojure team)16:01:31

cool, that strikes me as one of the more interesting design aspects

Alex Miller (Clojure team)16:01:47

(also I suck at doing so manually :)


Yeah, the packing algorithm is fairly simple and a little bit brute force.


For the parameters a,b,c,d I decided not to use q/random, but rather q/random-gaussian so that I can have some variation but still keep the parameters statistically close to something I consider sane. I’m surprised how well that’s working. I expected a lot of ugliness but there’s a lot less than you would expect.


but for example, here’s one I wouldn’t select from the set.

Eric Ervin22:01:38

Aka my favorite

👍 4
Eric Ervin22:01:59

Seems to have the most depth on the z axis


huh, I didn’t see that effect before but now that you say “depth” I see it too. the image does things the eye normally interprets as “depth”. in particular the smaller discs are also desaturated as if they’re in a haze.