Skip to content
Vamshi Jandhyala

Books · The Fiddler: Solutions

Chapter 73

Can You Squeeze the Sheets?

Two identical flat sheets carry parallel semicircular ridges of radius 11, with adjacent ridges a distance L2L\ge2 apart. The sheets face each other, ridges toward ridges, and cannot slide sideways. Which LL leaves the most empty space between them, measured as cross-sectional area per unit length?

The Fiddler, Zach Wissner-Gross, January 3, 2025(original post)

The ridges interleave, one sheet’s bumps nesting between the other’s. They touch when the centres are a distance 22 apart, fixing the gap h=4L2/4h=\sqrt{4-L^2/4}.

Solution

To pack as tightly as possible the sheets are offset by half a period, so each ridge nestles between two opposing ridges. A top ridge centre and the nearest bottom ridge centre are then separated horizontally by L/2L/2 and vertically by the gap hh; the ridges (radius 11 each) touch when the centres are 22 apart: (L2)2+h2=4    h=4L24.\Bigl(\tfrac{L}{2}\Bigr)^2+h^2=4 \implies h=\sqrt{4-\tfrac{L^2}{4}}. In one period of width LL the slab between the two centre-lines has area hLhL, from which the two half-disks (one per sheet, total area π\pi) are solid. The empty area per unit length is therefore E(L)=hLπL=4L24πL.E(L)=\frac{hL-\pi}{L}=\sqrt{4-\frac{L^2}{4}}-\frac{\pi}{L}. Setting E(L)=0E'(L)=0 gives 4π4L2/4=L34\pi\sqrt{4-L^2/4}=L^3, so L2.658,E0.3126.L\approx\boxed{2.658},\qquad E\approx 0.3126.

The computation

Rather than evaluate E(L)E(L), encode the geometry directly: for each spacing LL, find the gap hh at which the offset ridges just touch, then lay a fine grid over one period of the cross-section and measure the fraction of it that lies inside neither sheet’s semicircles. Scanning LL locates the most open spacing.

import numpy as np
from scipy.optimize import brentq, minimize_scalar
def empty_per_length(L):
    h = brentq(lambda h: (L / 2)**2 + h**2 - 4, 0, 2)   # ridges just touch
    n = 1500
    xs = (np.arange(n) + 0.5) * L / n
    ys = (np.arange(n) + 0.5) * h / n
    X, Y = np.meshgrid(xs, ys)
    bottom = (X**2 + Y**2 < 1) | ((X - L)**2 + Y**2 < 1)  # bumps up at x=0, L
    top = (X - L / 2)**2 + (Y - h)**2 < 1                 # bump down at x=L/2
    return (~(bottom | top)).mean() * h                   # empty area / period / L
res = minimize_scalar(lambda L: -empty_per_length(L),
                      bounds=(2.001, 3.999), method='bounded')
print(round(res.x, 3), round(-res.fun, 4))   # 2.658  0.3126

Extra Credit

With hemispherical dimples of radius 11 instead of ridges (centres at least 22 apart, any number, sheets not necessarily identical), what is the minimum empty space, as volume per unit area of one flat sheet?

The two-dimensional trick (offset the bumps and let them touch) becomes a sphere-packing question in the gap, and the optimum trades the gap height against how densely the hemispheres tile each sheet. The densest planar arrangement of centres at spacing 22 is the triangular lattice. The minimum is the source’s paywalled extra credit; this is a packing optimisation rather than a single derivative, so I leave it as a computational target rather than assert a number I cannot check.