River - Paths over Time

This is a coding exploration inspired by flying over rivers while flying. I was inspired by the paths that they traveled and left over time. Video of Visualization...

Growth - Fungal State

Growing geometry as I’ve come to find out is a fairly difficult programming problem to solve. Rather than regenerate geometry and figuring out the algorithms for connecting the topology of additional vertices and faces, I’m playing around with the manipulation of existing geometry. This particular algorithm is similar to other fungus-like growth patterns I’ve seen online. While mine didn’t get the same ordered feel as my references, I did quite enjoy the blobby growing effect. Video of Interaction The creation process About the codeThis example is built ontop of three.js. There aren’t any custom shaders with this one.

Growth - Incremental Additions

Growth in life is mesmerizing with the intricacies of the structures that are created. This programming poem series is an exploration of what happens with small incremental additions. The first installment features the dynamic growth of a 3d tree structure. Video of interaction The creation process The coding processI knew I wanted to start a growth series, but the topic seemed pretty difficult to even begin, so I started with what was comfortable, trees. I explored the idea of recursive tree functions with my previous Recursivity series. With this new code I took a much more functional approach,...

Gravity #4 - Self Attraction with Friction

This poem doesn’t follow as strictly to the rules of Gravity. There is some friction that was tuned to make the arrows behave in an interesting manner, otherwise they didn’t stick together enough to be visually appealing.

Gravity #3 - Directed Gravitational Paths

NASA calculated orbital paths using slide rulers, this programming poems uses the mouse to direct arrows at “planetary” bodies. I enjoy trying to see how many loops I can make with it.

Recursivity #4 - Repeating Circles

This poem is built on a simple rule, take a circle, divide it in half, and then create two more circles. Every time you click, it goes down another level. I also paired it with some WebAudio generators. The circles are slightly offset in their rotation making the circles appear to have been drinking (go home circles, you’re drunk!)...

Gravity #2 - Multiple Black Holes

After creating the initial setup, the best thing to do is add even more to it. The first simulation used only one “black hole,” but this one uses 5 randomly spinning holes. I ended up changing the behaviors of the arrows a little bit as well.

Recursivity #3 - Draw a beautiful fractal tree

I’m quite happy with the way this particular poem turned out. It’s very satisfying taking an idea and iterating on it enough to where the result becomes an entirely new experience. What’s funny about this particular piece is that I spent more time creating a specialized line simplifying algorithm that could draw cool bezier curves. I ended up throwing away most of that (beautiful) code and going for a much simpler solution.

Gravity #1 - Black Hole

After reading Neal Stephenson’s Anathema a second time, watching Cosmos, and of course that one movie with Sandra Bullock, I’ve spent some time thinking about gravity. This is my first in a series on exploring the math and physics behind it. I’m finding it pretty mesmerizing so far.

Recursivity #2 - Branching Fractal Trees

The second poem in my fractal series explores the idea of branching structures. These really are starting to feel like organic vascular structures. The rules are still pretty simple. The biggest tweaking here are some of the ways that the rules change as the depth of the recursion is increased. The default branching rules were not quite as interesting without a little bit of adjustment.

Recursivity #1 - Koch Fractal

Launch the poem. Fork it on GitHub. I’m starting out a new series of programming poems using the idea of recursion. Recursion is done by taking the output of the previous operation as the input for the new operation. Lots of really crazy and interesting complexity can happen because of it. This is how fractals are generated.

Stochasticity #8 - Webcam

Launch the poem. Fork it on GitHub. This stochastic poem takes the idea of random drawing, but with a sampled color. It take the webcam, and each time one of the “walkers” walks, it draws the color that it finds on the webcam.

Stochasticity #7 - Audio

Launch the poem. Fork it on GitHub. This stochastic piece dives into some audio. The poem uses the new Web Audio specification for browsers. It’s still a fairly experimental feature in browsers, but it seems like it will be really powerful. This piece sounds best with some headphones. I’d love to continue to explore this intersection between programmatic visuals and audio. There are some issues in Firefox with crackling that I wasn’t able to sort out.

Stochasticity #6 - Weather Vectors

Launch the poem. Fork it on GitHub. Another vector field poem, this simulation is starting to feel a lot like weather. The rules are similar to last time, but with more of the “walkers”. I find it fascinating how the lines of color converge together as time progresses, and then can randomly split apart. Theoretically if two “walkers” ended up on the exact same point, then they would be merged together forever. However, the location is stored in a double precision float. What that means for the non-programmers is that it’s a very precise means of storing a number with...

Stochasticity #5 - Etch-A-Sketch

Launch the poem. Fork it on GitHub. This poem is a little bit of a departure form the last ones. There is a vector field that spreads across the entire screen. Each vector is randomly pointed in a direction according to the simplex noise algorithm (comparable to Perlin noise). Essentially the algorithm takes into account 3 dimensions, with the third being time. What’s interesting about this is that the noise can be thought to be a 2d slice moving through 3d space. After the vector field has been calculated, a separate canvas layer is drawn onto for the color “walker”. This...

Stochasticity #4 - Polar Blobs

Launch the poem. Fork it on GitHub. I changed up the coordinate space and size of the random color “walkers” on this fourth version of the poem. I had to wrack my brains but I remembered polar coordinate space from my high school math class. The sizing difference creates an interesting effect I think.

Stochasticity #3 - Chasing

Launch the poem. Fork it on GitHub. This third sketch is a variation on #2, but it adds a lot of personality to the random color “walkers”. They grow and multiply this time, again at a random rate. What is interesting about the growth was that I had to make it a linear growth instead of an exponential. The poem was not nearly as interesting with exponential growth because the “walkers” became too numerous too quickly to be visually appealing. The rule for growth on this one was a random chance every frame for one “walker” to be born, rather...

Stochasticity #2 - Moving Out

Launch the poem. Fork it on GitHub. This variation on the previous poem changes the way that the probability of the random color “walkers” is portrayed. Instead of walking randomly up, down, left, and right, they walk randomly up, down, and right only. There is a fading a effect that helps visualize how the distribution changes over time. The color of the “walkers” continues to shift randomly as they move.

Stochasticity #1 - Random Walkers

Launch the poem. Fork it on GitHub. I’ve started a new series of programming poems exploring the idea of stochasticity. What is stochasticity? It’s a fancy word for the process of random events. The opposite of a stochastic event is a deterministic event. Computers are inherently deterministic machines, but I’m interested in the stochastic process for visualization and processing. Heady stuff, right? Well I’m trying to make visually appealing pieces that let me explore these ideas so that I can have an intuitive grasp of these concepts. Screenshot:...