Skip to content
Vamshi Jandhyala

Books · The Fiddler: Solutions

Chapter 83

Can You Make a Toilet Paper Roll?

You have a parallelogram of cardboard with side lengths 22 and 66 units and interior angles of 3030^\circ and 150150^\circ. By swirling two opposite edges together, you wrap it into the lateral surface of a right cylinder, a little cardboard tube. What is the volume of the cylinder you can make from this piece of cardboard?

The Fiddler, Zach Wissner-Gross, September 20, 2024(original post)

Solution

Wrapping the parallelogram into a right cylinder turns one pair of opposite edges into the seam and the other pair into the two circular rims. Join the two short edges and the long edges (length 66) become the rims: the circumference is 66, so the radius is 6/2π=3/π6/2\pi=3/\pi, and the height is the perpendicular distance across, 2sin30=12\sin30^\circ=1, giving volume π(3/π)2(1)=9/π\pi(3/\pi)^2(1)=9/\pi. Join the long edges instead and the circumference is 22, the radius 1/π1/\pi, the height 6sin30=36\sin30^\circ=3, for volume π(1/π)2(3)=3/π\pi(1/\pi)^2(3)=3/\pi. So the two tubes have volumes  9π 2.865and 3π 0.955.\boxed{\ \frac{9}{\pi}\ }\approx2.865 \qquad\text{and}\qquad \boxed{\ \frac{3}{\pi}\ }\approx0.955 . Both have lateral surface area 2πrh=62\pi rh=6, exactly the parallelogram’s area 62sin306\cdot2\sin30^\circ, a useful check.

The computation

Build each tube from the geometry: the joined edge fixes nothing, the perpendicular edge becomes the rim’s circumference (hence the radius), and the slanted height is the side times sinθ\sin\theta.

import numpy as np
theta = np.radians(30)
def tube(rim_edge, slant_edge):                     # rim_edge wraps into the circle
    r = rim_edge / (2 * np.pi)
    h = slant_edge * np.sin(theta)
    return np.pi * r**2 * h
print(tube(6, 2), tube(2, 6))                        # 2.8648  0.9549  =  9/pi, 3/pi

Extra Credit

Let VV be the average volume of the two cylinders you can make from a parallelogram of area 11. What is the smallest possible VV?

Solution

For a parallelogram of sides p,qp,q and area A=pqsinθA=pq\sin\theta, joining the qq-edges gives radius p/2πp/2\pi and height A/pA/p, hence volume pA/(4π)pA/(4\pi); the other joining gives qA/(4π)qA/(4\pi). With A=1A=1 the two volumes are p/(4π)p/(4\pi) and q/(4π)q/(4\pi), averaging (p+q)/(8π)(p+q)/(8\pi). The constraint pqsinθ=1pq\sin\theta=1 forces pq1pq\ge1 (equality only at a right angle), and then p+q2pq2p+q\ge2\sqrt{pq}\ge2 (equality only at p=qp=q). So the minimum is  14π 0.0796,\boxed{\ \frac{1}{4\pi}\ }\approx0.0796, achieved by the unit square, whose two cylinders are identical.

The computation

Minimise the average volume over all area-one parallelograms (eliminating qq through the area constraint); the optimum is the unit square.

from scipy.optimize import minimize
def avg_volume(x):
    p, th = x; q = 1 / (p * np.sin(th))             # area = p q sin(theta) = 1
    return (p + q) / (8 * np.pi)
r = minimize(avg_volume, [1.3, np.radians(70)], bounds=[(0.3, 3), (0.3, np.pi/2)])
print(round(r.fun, 4), round(1 / (4*np.pi), 4))     # 0.0796  0.0796