teaching machines


January 5, 2016 by . Filed under 3d, madeup, public.

In Mathographics, Robert Dixon tells me that any curve can be decomposed into a sequence of arcs. One can also go in reverse: lay out a bunch of intersecting circles, trace an arc on one circle, but then jump ship to another arc when you reach an intersection. If the circles intersect such that they also pass through each other’s origins, one traces curves that are egg-shaped. Here’s Dixon’s example of four circles (two big ones laid out vertically, a medium one in the center, and a quadrant of a small one on the left) and the egg that they generate:


I implemented Dixon’s algorithm in Madeup and revolved the curve to lay a solid egg:


My 3D printer only lays half-eggs at a time, but a little glue can put them back together:


The Madeup source that produced this egg took a long time to get right. I didn’t have any arrays or vector functions builtin when I started.

/usr/lib/ruby/2.7.0/rubygems/dependency.rb:311:in `to_specs': Could not find 'coderay' (>= 0) among 56 total gem(s) (Gem::MissingSpecError)
Checked in 'GEM_PATH=/.gem/ruby/2.7.0:/var/lib/gems/2.7.0:/usr/lib/ruby/gems/2.7.0:/usr/share/rubygems-integration/2.7.0:/usr/share/rubygems-integration/all:/usr/lib/x86_64-linux-gnu/rubygems-integration/2.7.0:/home/johnch/.gems', execute `gem env` for more information
	from /usr/lib/ruby/2.7.0/rubygems/dependency.rb:323:in `to_spec'
	from /usr/lib/ruby/2.7.0/rubygems/core_ext/kernel_gem.rb:62:in `gem'
	from ./coderay:24:in `