Algorithmic Art
CSE 143 is one of the most foundational and divisive computer science courses at the University of Washington. The lecturer, Stuart Reges, is credited as one of the founding fathers of the contemporary UW CSE department. As a student of the honors school, I had the incredible opportunity to enroll in the honors section of CSE 143.
The experience in the honors section was, as the case in many other honors courses, less focused on rote knowledge and testing but more so on the academics. The section was similar in feel to the reading and seminar courses that I would later take during my Master’s program. Each week, we would complete task out of class and return to discuss it during the next meeting.
One week we read chapters about Ada Lovelace, whom many consider to be one of the first “programmers” due to her work on one of the first general purpose computational devices ever devised, Charles Babbage’s Analytical Engine. Another, we were tasked by the lovely TA and lecturer Alex Miller to create art with algorithms. We fawned over digital artistry ranging from the procedurally generated and fractals to the interactive.
I created a program that produces a cube. This simple cube, however, is a slice (or I suppose 6 slices), of an infinite mathematical space. The idea is relatively simple:
- There exists a cube with side of length centered at
- Every point on this cube has
- The color of a given point on the cube is given as
-
- Each function takes in three values in and produces one value in
For example, we could have the functions:
With these definitions, we’d get a cube that is purple and blue with a smooth gradient from blue to purple as increases in each plane not normal to the axis. This is due to the constant green component of , the constant blue component of , and the red component which ranges in linearly with .
This is well and good, but it’s boring. In fact, too boring to show you here. Let’s kick it up a notch. My algorithmic art generates recursive color component functions. Each of the functions above are functions in that they have no recursion. Other functions include .
An function requires 1 level of recursion and these start to produce more interesting results. These include:
This produces exponentially explosive complexity as we increase the level of recursion. For example, here is a formula:
As we increase complexity, we also exponentially increase runtime. Computing level 9 and 10 cubes take several hours. Thankfully, I’ve pre-generated cubes for multiple levels and placed them below for you to enjoy. As you look through the cubes across the levels, drag the cube to rotate it and note how the patterns change across various faces.