teaching machines

Dittos in Array Literals

Color is often represented in computers in triplets of red, green, and blue intensities. Expressing a color is a matter of finding the right mix of these intensities. For example, here are the triplets for six of the most famous colors: red = [1, 0, 0] green = [0, 1, 0] blue = [0, 0, […]

Twoville Limerick

In October, a collaborator and I presented a poster on our 2D vector graphics languages at FabLearn 2020. The session started with everyone in the main Zoom room. Each presenter had 30 seconds to introduce their project, and then the crowd dispersed to individual breakout rooms. Ever since I saw someone preview their paper with […]


A month ago one of my sons’ toys inspired me to try and model it in Madeup. Here is the original set of magnetic blocks: And here is my first attempt at modeling them using Madeup’s dowel command with rounded bends: Notice the hole in the middle. Given how the rounding is implemented, I was […]

Rotating Checkerboard

Yesterday I posted a checkerboard that reorganized itself by translation. This one reorganizes by rotation. And here’s the Twoville source code.

Sliding Checkerboard

There are a lot of amazing animator-geometrician-illusionists on Twitter, and I want to be like them. But I can’t figure out how they have the time to make what they make. I comfort myself by assuming that they have no friends and no job. Despite having heaps of friends and a job, I did manage […]

Blocking Your Path

A couple years ago, my wife and I picked up some colorful blocks at a toy store. Each block is a quarter of a cylinder. The square faces of the blocks snap together with help from two magnets inside. There are just enough blocks in the set to make this fascinating shape: I’m struggling to […]

FabLearn 2020 Demo

A collaborator and I had a short paper on programmatic fabrication accepted at FabLearn 2020, and we’re presenting that work in a demo session on Zoom next weekend. Herein I walk through some of the example programs that we plan to work through with our visitors. Button Let’s start with a practical example—one inspired by […]

Timing in Twoville

Twoville serves two very different domains: physical fabrication and digital animation. Fabricators use Twoville to describe static geometric shapes that can be fed into a cutting machine and turned into a tangible object. Animators use Twoville to orchestrate purely virtual cinematic progressions in which the actors are geometric shapes. The thread binding these two domains […]


Deriving the View Matrix

Computer graphics is less about knowing when to apply algorithms and more about knowing where. There are many possible wheres. Our 3D models are born in model space. To situate models in the virtual world, their model space coordinates are transformed into world space. Many lighting algorithms are applied in camera or eye space. From […]

1 3 4 5 6 7 46