The Head That Was Written in Harmonics
The General Who Mapped an Empire
Marcus Vipsanius Agrippa was born around 63 BC into a plebeian family, and he died in 12 BC holding powers almost as great as the emperor’s. He was Augustus’s closest friend, his general, and in the end his son-in-law. He beat Sextus Pompeius at sea off Mylae and Naulochus in 36 BC, and five years later he commanded Octavian’s fleet at Actium against Antony and Cleopatra. He was the grandfather of the emperor Caligula and the great-grandfather of Nero. When he died, Augustus placed his remains in his own mausoleum.

He was also a builder. He repaired Rome’s aqueducts and sewers, and in memory of Actium he built a temple to all the gods, the Pantheon. It burned in AD 80. The building that stands today was raised by Hadrian and dedicated around AD 126, but Hadrian put Agrippa’s original inscription back over the door: M·AGRIPPA·L·F·COS·TERTIVM·FECIT, “Marcus Agrippa, son of Lucius, made this when consul for the third time.” Inside, the height from the floor to the opening in the dome is the same as the width of the rotunda, 43 metres. A whole sphere fits inside the building that bears his name.

And he drew the world. Julius Caesar had wanted a complete survey of the empire; Agrippa saw it done, and from it he made a great circular map, which Augustus had engraved on marble and set up in the colonnade built by Agrippa’s sister, Vipsania Polla. The map is lost. His face survived, in marble, and plaster copies of the Louvre head are common. One of them was photographed 133 times and turned into a 3D model.
This post gives that face a latitude and a longitude. It maps Agrippa’s head onto a globe, point for point, and then writes it the way a Fourier series writes a sound: as a sum of the sphere’s own waves. To degree 511 that takes 786,432 numbers. The series closes in on the stone as the degree rises, and the last place it arrives is the sharpest edge on the head.
Is This a Fourier Series?
A Fourier series writes a function on a circle as a sum of the circle’s own waves:
$$f(\varphi) = a_0 + \sum_{m=1}^{\infty} \left( a_m \cos m\varphi + b_m \sin m\varphi \right), \qquad \frac{d^2}{d\varphi^2} \cos m\varphi = -m^2 \cos m\varphi$$
The waves are the functions that the second derivative only rescales, and that is what makes the coefficients easy: each one is a single integral against a single wave. Give both coordinates of a closed curve such a series and the curve is drawn by circles riding on circles, the epicycles of the old astronomers.
The obvious way to do the same in three dimensions is a triple Fourier series in a box:
$$F(x, y, z) = \sum_{k,\, l,\, n} c_{kln}\, e^{i(kx + ly + nz)}$$
But that describes something that fills space, such as a field equal to 1 inside the stone and 0 in the air, not a surface. The head is then only the place where the field crosses one half. A field that jumps from 0 to 1 at the surface converges slowly, its coefficients falling off only like $|\mathbf{k}|^{-2}$ for a smooth body, and every truncation rings around the surface.
Put the field in a ball instead of a box and the waves change shape, but the series still fills space. The Laplacian’s waves in a ball of radius $a$ are spherical Bessel functions of the distance from the centre times spherical harmonics of the direction:
$$F(r, \theta, \varphi) = \sum_{n=1}^{\infty} \sum_{\ell=0}^{\infty} \sum_{m=-\ell}^{\ell} c_{n \ell m}\; j_\ell\!\left(\frac{z_{\ell n}\, r}{a}\right) Y_{\ell m}(\theta, \varphi), \qquad j_\ell(z_{\ell n}) = 0$$
A surface needs none of the inside. Keep only the direction, drop the radius, and the series lives on the sphere itself:
$$f(\theta, \varphi) = \sum_{\ell=0}^{\infty} \sum_{m=-\ell}^{\ell} c_{\ell m}\, Y_{\ell m}(\theta, \varphi), \qquad \Delta_{S^2} Y_{\ell m} = -\ell(\ell + 1)\, Y_{\ell m}$$
This is the Fourier series of the sphere. The spherical harmonics $Y_{\ell m}$ are the functions that the sphere’s own Laplacian only rescales, exactly as $\cos m\varphi$ and $\sin m\varphi$ are for the circle, and the circle’s series is still inside it. Along every line of latitude the sum is an ordinary Fourier series in the longitude,
$$f(\theta, \varphi) = \sum_{m=0}^{\infty} \Big( A_m(\theta) \cos m\varphi + B_m(\theta) \sin m\varphi \Big)$$
and only its coefficients $A_m(\theta)$ and $B_m(\theta)$ carry the latitude, through Legendre functions; EQ 14 below is this sum cut at degree $L$. So Agrippa is a 3D Fourier series after all, in the sense that matters: three of them, one for each of his coordinates $x$, $y$ and $z$, written on the sphere.
A Head Is a Bent Sphere
The model is a mesh of triangles: 999,960 of them in the download, a bust on a plinth on a wooden board. Its file is split along the seams of its photographic texture; once the texture is dropped and coincident vertices are merged, it is a single closed surface, and one number says what kind:
The Euler characteristic $\chi$ of a closed surface is $\textstyle 2 – 2g$, where $g$ counts its handles. Two means no handles: whatever its shape, the bust is topologically a sphere. That is the whole reason a head can be a series on the sphere. A cup with a handle could not; a doughnut is a different kind of surface.
I cut the bust horizontally at 52% of its height, under the chin, and closed the cut with a flat disc; the head is still a closed surface with $\chi = 2$. I then remeshed it into 570,130 triangles of nearly equal size, about as fine as the scan itself: the remeshed surface lies within 0.023% of the head’s height of the original, on average (RMS), and within 0.31% everywhere. From here on every length is a percentage of the head’s height.
A surface that is topologically a sphere is also a sphere in a much stronger sense. The uniformization theorem says that it can be mapped onto the round sphere conformally, preserving every angle: the head’s own metric $g$ becomes a scaled copy of the sphere’s metric,
for some function $u$ on the sphere that records how much each patch of the head was stretched or shrunk. Small squares on the head go to small squares on the sphere, just smaller or larger. The map is unique up to the Möbius transformations of the sphere, a six-dimensional family: three rotations, and three ways to slide the sphere’s area towards one point. I fix the rotations by putting the cut at the south pole and the line down the middle of the face at longitude 0; the flow below settles the other three, by keeping the surface centred while it rounds.
Letting the Head Relax
To find the map, let the head flow. Mean-curvature flow moves every point of a surface along its normal, in proportion to how curved the surface is there:
where $\Delta_{g(t)}$ is the Laplace–Beltrami operator of the surface as it is at time $t$. Bumps shrink fastest, so the surface rounds off. Left alone, though, the flow pinches: a thin neck collapses to a point long before the rest of the surface is round.
Michael Kazhdan, Jake Solomon and Mirela Ben-Chen showed in 2012 how to stop it pinching. In two dimensions the Dirichlet energy $\textstyle\int |\nabla f|^2\, dA$ does not change when the metric is scaled by a conformal factor, so for a conformal flow the “stiffness” part of the Laplacian can stay that of the original surface, and only the areas need to follow the flow. On the mesh that is one sparse linear solve per step:
Here $L_0$ is the cotangent Laplacian of the original head, frozen, and $M_t$ is the diagonal mass matrix of the current surface: each vertex’s share of the area around it. The cotangent Laplacian is the standard discretisation of $\Delta$ on triangles (Pinkall and Polthier, 1993):
with $\alpha_{ij}$ and $\beta_{ij}$ the two angles opposite the edge from vertex $i$ to vertex $j$. After each step the surface is moved so that its centre of area is at the origin and scaled to unit area.
With a step $\delta = 0.02$, forty steps took five and a half minutes on 285,067 vertices. At the end, the vertices’ distances from the centre vary by 0.008% (one standard deviation). Pushing each one radially onto the exact unit sphere gives the map. Of the 570,130 triangles, three slivers ended up folded over, one at the back of the neck by the cut and two on the side of the face, by at most $\textstyle 2.4 \times 10^{-8}$ steradians: a thousandth of the patch of sphere around each sample point, too small to touch any sample. The folded and unfolded triangles together cover the sphere exactly once: their solid angles add up to $\textstyle 4\pi$ to eight decimal places.
How much did the map stretch the head? For 93% of the triangles, their share of the sphere is within a factor of two of their share of the head; for 98%, within a factor of three. A head is round, so the conformal factor $u$ stays mild. The one region the map squeezes is the flat cut: 9.4% of the head’s surface, but only 5.2% of the sphere.

The Sphere’s Own Waves
On the sphere, the part that $\cos m\varphi$ and $\sin m\varphi$ play on the circle goes to the spherical harmonics, the functions that the sphere’s Laplacian only rescales:
Separating variables in latitude and longitude, $Y = \Theta(\theta)\,\Phi(\varphi)$, gives $\cos m\varphi$ and $\sin m\varphi$ again for $\Phi$, and for $\Theta$, written in $t = \cos\theta$, the associated Legendre equation:
Its solutions that stay finite at both poles are the associated Legendre functions $P_{\ell m}(t)$. Normalised, and paired with the longitude waves, they give the real spherical harmonics used everywhere below (with no Condon–Shortley sign):
The normalisation makes them orthonormal over the sphere with its area scaled to one:
and they are complete: every square-integrable function on the sphere is the limit of its series. Degree $\ell$ has $\textstyle 2\ell + 1$ harmonics, and each has $\ell$ lines of zeros across the sphere, so degree $\ell$ carries detail on a scale of about $\textstyle 1/\ell$ of the way round.

A Head in Three Series
Once every point of the sphere has a point of the head, the head is three functions on the sphere: its coordinates $x(\theta, \varphi)$, $y(\theta, \varphi)$ and $z(\theta, \varphi)$. Each gets its own series. For $x$, and the same for $y$ and $z$:
This is the SPHARM description of a surface (Brechbühler, Gerig and Kübler, 1995). Degree $L$ uses $(L + 1)^2$ coefficients for each coordinate, $\textstyle 3(L + 1)^2$ in all: 1,323 at degree 20, 786,432 at degree 511.
The first two degrees are worth working out by hand. $Y_{00} = 1$, so degree 0 is a constant: all of Agrippa collapses to a single point, the average of his surface weighted by the sphere’s area. The three harmonics of degree 1 are $\sqrt{3}$ times the coordinates of the unit vector $\mathbf{u} = (\sin\theta\cos\varphi, \sin\theta\sin\varphi, \cos\theta)$, so to degree 1
for a vector $\mathbf{c}$ and a 3 × 3 matrix $A$: a linear image of the round sphere, which is an ellipsoid. Degree 1 is the ellipsoid closest to the head in the sphere’s mean square. Every degree after that bends it.
Computing 786,432 Numbers
The integrals in EQ 10 are computed exactly, for everything up to degree 511, by sampling on the right grid. In latitude the samples sit at the 512 roots $t_i$ of the Legendre polynomial $P_{512}$, with Gauss–Legendre weights $w_i$; that rule integrates every polynomial in $t = \cos\theta$ of degree up to 1023 exactly. In longitude there are 1023 equally spaced samples, which integrate every trigonometric polynomial of degree up to 1022 exactly. The product of the head’s coordinate and a harmonic, both of degree at most 511, has degree at most 1022 in each variable, so
is exact for the part of the head that the series can hold. The inner sum is a fast Fourier transform along each row of latitude. To fill the grid, each of the 523,776 sample directions is found in the triangulated sphere, and the head’s position there is interpolated from the three corners of its triangle. pyshtools (Wieczorek and Meschede, 2018) does the transform in five seconds. Adding the full series back up reproduces the samples to 0.0039% of the head’s height, on average (RMS).
Adding the series back up, at any degree, is what the board below does every time the slider moves. The normalised Legendre functions come from a three-term recurrence that is stable to very high degree (the form in Holmes and Featherstone, 2002):
For each row of latitude the recurrence gives one Fourier coefficient per order $m$, and an inverse FFT of length 1024 gives the whole row:
and $B_m$ the same with the coefficients of $\sin m\varphi$. At degree 511 that is about 67 million steps of the recurrence, each feeding six sums, and 1,536 short FFTs per rebuild: 0.1 to 0.5 seconds in a browser.
Algorithm — A Head as Three Spherical-Harmonic Series
input: a closed triangle mesh of the head (Euler characteristic 2); L, the degree
cut under the chin, cap the cut flat, remesh to near-equal triangles
L₀ ← cotangent Laplacian of the head; x ← vertices, centred, unit area
repeat 40 times: (conformalized mean-curvature flow)
M ← mass matrix of the current surface (each vertex's share of area)
solve (M − δ L₀) x′ = M x; x ← x′, re-centred, rescaled to unit area
u ← x / |x| (each vertex's place on the sphere)
turn the sphere: the cut to the south pole, the face to longitude 0
grid ← 512 Gauss–Legendre latitudes × 1023 longitudes
for each grid direction:
find its triangle on the sphere; interpolate the head's position
c_ℓm ← FFT along each row, then Gauss–Legendre sums down the columns
(for x, y and z)
to rebuild at degree L, row by row:
P̄_ℓm(cos θ) by the three-term recurrence; A_m, B_m ← Σ_ℓ c_ℓm P̄_ℓm
the row ← inverse FFT of (A_m, B_m)
return the 3(L + 1)² coefficients and the surface at degree L
Degree by Degree
At degree 1 Agrippa is an ellipsoid, a smooth egg the size of his head. By degree 3 it has a top and a jawline. At degree 10 a face is surfacing, the eyes two hollows, the nose a ridge. By degree 20 he is recognisable, and by degree 40 he has his brow and his hair. After that, each step adds less: the curls sharpen, the eyelids get their edges, the ears their rims. The scan is the last picture.

How far is each degree from the head? Painting each point of the series by its distance from the scan’s point at the same place on the sphere shows where the error lives: across the hair and the face at low degree, then only in the fine texture of the plaster.

How Fast It Converges
Because the harmonics are orthonormal, the mean square distance between the head and its series is exactly the energy of the degrees that were left out. This is Parseval’s theorem on the sphere:
On the board’s 524,290 points, the RMS distance at degree 20 is 0.44180% of the head’s height, and the square root of the energy above degree 20 is 0.44179%. At degree 5 the two are 1.806632% and 1.806630%. What remains is the part of the head beyond degree 511.
The energy per degree falls off as a power. Fitted between degrees 20 and 400, $E_\ell \propto \ell^{-\alpha}$ with $\alpha = 3.71$. Adding up the tail gives the rate at which the series converges:
The measured RMS falls as $L^{-1.33}$ over the same range. The exponent also measures how smooth the head is. A function on the sphere belongs to the Sobolev space $H^s$, roughly, has $s$ square-integrable derivatives, exactly when
A surface that is smooth everywhere except along a crease, a line where its slope jumps, has its energy falling like $\ell^{-4}$ and $s$ just under $\tfrac{3}{2}$. Agrippa’s head comes out a little rougher than that, 3.71 against 4, because the plaster’s own texture sits on top of the crease.
And there is a crease. The worst point of the series, at every degree I checked from 10 to 511, sits on the same circle, at colatitude 153.7° to 154.4°: the rim of the flat cut, where the cap meets the neck at a right angle. At a sharp edge a finite series of smooth waves cannot turn the corner; it overshoots and ripples on both sides, the Gibbs effect, and the overshoot shrinks only slowly. The worst point falls from 6.8% of the head’s height at degree 10 to 0.20% at degree 511, while the typical distance falls from 1.05% to 0.0048%. The sharpest edge on the head is the one I made with the cut.
Measured against the original 433,922-triangle scan rather than the series’ own samples:
| Degree L | Numbers | RMS to the scan | Worst point |
|---|---|---|---|
| 1 | 12 | 3.67% | 10.7% |
| 10 | 363 | 0.788% | 5.04% |
| 20 | 1,323 | 0.362% | 2.97% |
| 40 | 5,043 | 0.149% | 1.83% |
| 100 | 30,603 | 0.0378% | 0.56% |
| 255 | 196,608 | 0.0173% | 0.33% |
| 511 | 786,432 | 0.0110% | 0.18% |
These distances are to the nearest point of the scan’s surface, not to the point at the same place on the sphere, so they are smaller at low degree: a point that has slid along the surface is not counted as wrong. At high degree they level off near 0.01%, the size of what remeshing and sampling took away before the series began.

Build Him Up
The board rebuilds the head from its 786,432 coefficients at any degree from 1 to 511. Press build him up to watch the ellipsoid become Agrippa; drag to turn him; switch to distance to the scan to see where the error lives, in the same colours as above, or to the scan to see what the series is aiming at. The cards give the number of coefficients, the RMS distance, the worst point and the energy still missing; the charts below them mark the current degree.
The page does its own arithmetic: the recurrence of EQ 13 and the FFT of EQ 14, on 524,290 points. I checked it against Python in a headless browser on a GPU. Its surface agrees with a numpy implementation of the same synthesis, itself equal to pyshtools to $\textstyle 10^{-15}$, to $\textstyle 2.3 \times 10^{-6}$% of the head’s height at every degree tried from 1 to 511, going up and coming down. Its RMS and worst-point cards agree with Python’s to 1%, the difference being the 16-bit storage of the scan inside the page. It shows no errors and fits a phone.
The Map and the Face
Agrippa’s map was engraved on marble and set up in a colonnade in Rome, and nobody now knows what it looked like. His face survived, in marble too. Turned into a globe and written as a series, it needs three numbers to be a point, twelve to be an ellipsoid, 1,323 to be a face, and 786,432 to be this particular face, with every curl in place, except along one circle under the chin that was never his.
Sources
- C. Brechbühler, G. Gerig and O. Kübler, “Parametrization of closed surfaces for 3-D shape description”, Computer Vision and Image Understanding 61 (1995) 154–170.
- M. Kazhdan, J. Solomon and M. Ben-Chen, “Can mean-curvature flow be modified to be non-singular?”, Computer Graphics Forum 31 (2012) 1745–1754.
- U. Pinkall and K. Polthier, “Computing discrete minimal surfaces and their conjugates”, Experimental Mathematics 2 (1993) 15–36.
- S. A. Holmes and W. E. Featherstone, “A unified approach to the Clenshaw summation and the recursive computation of very high degree and order normalised associated Legendre functions”, Journal of Geodesy 76 (2002) 279–299.
- M. A. Wieczorek and M. Meschede, “SHTools: Tools for working with spherical harmonics”, Geochemistry, Geophysics, Geosystems 19 (2018) 2574–2592.
- “Plaster – Head of Agrippa”, 3D model by michaelxxj, Sketchfab, CC BY 4.0, made from 133 photographs.
- “Marcus Vipsanius Agrippa” and “Pantheon, Rome”, Wikipedia: his life, the battles, the map in the Porticus Vipsania, the inscription and its reading, and the dimensions of the rotunda.
Every number in the text, the seven figures and the board come from the scripts archived with this post: the cut, the remeshing, the conformal flow, the expansion to degree 511, the convergence and the spectrum, the renders and the board itself, checked against the same Python code in a browser. The scan is “Plaster – Head of Agrippa” by michaelxxj (CC BY 4.0), cut, capped and remeshed here.
Interested in applying these ideas to your work? Get in touch.