I’ve been having fun watching the math that Mike Lawler (@mikeandallie on Twitter) and his kids discuss on video at their blog mikesmathpage, and thinking about how to get my own 8-year-old son interested in watching those videos. Their post from yesterday, Penrose tiles and some simple 3D variations, has three great videos that are very visual and so I started with those. In these videos Mike and his kids examine various tilings of 2-dimensional space and various tessellations of 3D-space, using the following models:
- AspiringEdifier’s Penrose Tiles (kite and dart)
- richgain’s Apparently Impossible Cube
- our Rhombic Dodecahedron wireframe model (Day 210)
- VeryWetPaint’s Puzzle Rhombic Dodecahedron
UPDATE: Scott Elliott (VeryWetPaint) has uploaded a new .dxf file and OpenSCAD code on Thingiverse with some helpful descriptions and bonus OpenSCAD code in the comments below. Thank you, VeryWetPaint!
The two helical subtractions aren't actually different, that's just an unnecessary distraction. My original spiral.dxf had been created for making a trisection, so it was optimized for a script to subtract 240 degrees (2/3 of a revolution). The extra subtraction removed a further 30 degrees to bring the total to 270 degrees (3/4 of a revolution).
For your benefit I incorporated your comments, simplified the script and DXF file, and uploaded new versions to Thingiverse as Rhombic270.scad and Spiral270.dxf. It generates exactly the same STL with a single twisted extrusion, so it should be easier to figure out what's really happening.
To assist you in understanding how it works, I offer the following OpenSCAD script that demonstrates what happens if Spiral270.dxf is intersected with a circular ring. It demonstrates how this new Spiral270.dxf covers a 270-degree arc at every radius, yet each arc is slightly different depending upon its radius. (ie: distance from the origin)
// choose an inner radius from 1-25
radius=10;
// intersect a ring of the specified radius with the spiral figure
// (result will be a 270-degree arc)
intersection()
{
difference() { circle(radius+1); circle(radius); } // makes a circular ring
import( "spiral270.dxf" ); // the spiral drawing
}