Books · The Fiddler: Solutions
Chapter 12
Can You Rile and Grace the Polyhedron?
An alien, an Eridian named Rocky, must pass a solid crystal to his human friend through a tunnel. The crystal is a regular tetrahedron with every edge of length , and it can fit snugly through a cylindrical tunnel. What is the smallest possible radius for that tunnel?
The Fiddler, Zach Wissner-Gross, April 3, 2026(original post)
Solution
A solid slides straight down a cylinder of radius exactly when one of its perpendicular shadows fits inside a circle of radius ; the best tunnel uses the viewing direction whose shadow has the smallest enclosing circle. For the regular tetrahedron, look along the line joining the midpoints of two opposite edges. Those two edges are perpendicular and project to two perpendicular segments of length that bisect each other, so the four vertices land on the corners of a square whose diagonals have length . The smallest circle around that square is its circumscribed circle, of radius half the diagonal,
The computation
Sweep over every viewing direction: project the four vertices onto the plane perpendicular to that direction and find the smallest circle enclosing the shadow. The minimum over all directions is .
import numpy as np
from scipy.optimize import minimize
T = np.array([[1,1,1],[1,-1,-1],[-1,1,-1],[-1,-1,1]], float) / (2*np.sqrt(2))
def basis(u):
u = u/np.linalg.norm(u)
a = np.array([1,0,0.]) if abs(u[0]) < .9 else np.array([0,1,0.])
e1 = np.cross(u, a); e1 /= np.linalg.norm(e1)
return e1, np.cross(u, e1)
def enclosing_r(u): # radius of smallest circle around the shadow
e1, e2 = basis(u); p = np.c_[T@e1, T@e2]
return minimize(lambda c: np.max(np.linalg.norm(p - c, axis=1)),
p.mean(0), method='Nelder-Mead').fun
best = min(enclosing_r(np.array([np.sin(a)*np.cos(b), np.sin(a)*np.sin(b), np.cos(a)]))
for a in np.linspace(0, np.pi, 60) for b in np.linspace(0, np.pi, 60))
print(round(best, 4)) # 0.5
Extra Credit
Next, Rocky transports a solid regular dodecahedron, again with unit edges, and the tunnel may now be any right prism, not just a cylinder. What is the smallest possible cross-sectional area for the tunnel?
Solution
A prism is swept straight along its axis, so the crystal passes through exactly when its perpendicular shadow fits inside the cross-section, and the smallest prism is the smallest-area shadow over all viewing directions. Searching the directions, the minimum is reached looking along a two-fold axis, through the midpoints of two opposite edges, where the silhouette is a hexagon of area The face-on view gives a regular decagon of area , and the vertex-on view a hexagon of area , so neither symmetric view is optimal. (The source’s solution is behind its paywall; this value is my own, from minimising the shadow area numerically.)
The computation
The same sweep, but now the shadow’s area (the convex hull of the projected vertices) is what matters; minimise it over all viewing directions of the dodecahedron.
import itertools as it
from scipy.spatial import ConvexHull
phi = (1 + np.sqrt(5)) / 2
V = [s for s in it.product([-1, 1], repeat=3)]
for a in (-1, 1):
for b in (-1, 1):
V += [(0, a/phi, b*phi), (a/phi, b*phi, 0), (a*phi, 0, b/phi)]
V = np.array(V, float) / (2/phi) # scale to edge length 1
def shadow_area(u):
e1, e2 = basis(u); return ConvexHull(np.c_[V@e1, V@e2]).volume
best = min(shadow_area(np.array([np.sin(a)*np.cos(b), np.sin(a)*np.sin(b), np.cos(a)]))
for a in np.linspace(0, np.pi, 60) for b in np.linspace(0, np.pi, 60))
print(round(best, 3)) # 4.736