The head shape

A head here is an ellipsoid that four things happen to. It needs no more – and the line would not take more either.

Every point on the head's surface has two coordinates: u is longitude (0 at the bridge of the nose, ±1.48 at the ear), v is latitude (+1.57 at the crown, −1.57 at the chin). Out of those two kopfPunkt makes a point in space. That is the only place where the shape of the head comes about; everything further – rotation, projection, outline, hairdo – only computes with what comes out here.

Because features sit in spherical coordinates and not in pixels, they travel along correctly by themselves when the head turns – foreshortening and occlusion included. Nobody computes where the left eye ends up at 20 degrees of rotation. It sits at u = −0.5, and the rest follows.

Eight numbers, one head

The three semi-axes rx, ry, rz give the basic form: wide, tall, deep. The remaining five deform it. The fastest way to understand them is to touch them – underneath runs the same code as in the sheet next door.

kegel and scheitelHoch

kegel tapers the head downwards, scheitelHoch widens it upwards. Both reach into the same factor k, and they do so through a single smooth polynomial instead of two branches for top and bottom.

The reason stands in the second line of the comment: two separate branches would have a kink in the derivative at the equator. A kink in the shape function is an edge in the silhouette – and an edge running across both cheeks does not look like a skull but like a mistake. The polynomial hits the same three support points (k(−1) = 1 − kegel, k(0) = 1, k(1) = 1 + scheitelHoch) and is continuously differentiable everywhere.

beule – the bump

beule bulges the skull so that it does not look turned on a lathe. What matters is the factor cos(u + …) in the wave: without it the bump would depend on height alone.

The squeeze

A wave that depends only on height multiplies x and z evenly – that is not a bump, that is a ridge all around the skull. In the silhouette it appears on both sides as the same edge at the same height, and in every rotation. With the cos(u) term the bump sits at one spot on the surface: asymmetric, organic, as if by hand.

kastig – the boxiness

kastig pulls the ellipsoid towards a superellipse: flat sides, flat crown, rounded corners. The nearest way there would be an exponent on sin and cos. It is wrong.

The exponent on sin/cos

An exponent has infinite slope at the equator. The surface is sampled so fast there that gaps open up between two sample points – and a gap in the outline is an empty angular bin, which is later smoothed into a deep dent in the cheek (see Point cloud). On top of that the exponent distorts the tangents on which every anchor hangs its local coordinate system.

Instead: a smooth radial bump on the diagonals via sin(2v) and sin(2u). It approximates the superellipse without becoming infinitely steep anywhere.

Named shapes

The DNA rolls continuously within the ranges from macheDna – rx between 0.6 and 0.86, ry between 0.8 and 1.08 and so on; every tenth draw may go beyond as an outlier (rx down to 0.5 and up to 0.98, kegel up to ±0.58, see Randomness). Beside them the catalogue holds six named anchors. They are not used when drawing; they are vocabulary, so that one can talk about families of shapes instead of number ranges.

The span is deliberately narrower than in the first press and wider than in the first draft of this one: jaws broader than foreheads, boxy skulls, long faces. But no pears and no towers. Since August 2026 there are outliers on top, rare and deliberate: pumpkins and cucumbers, pointed chins and jaws. The span itself is unchanged, a draw in its middle still lands there; only the edges lie further out.

Without that span all heads are eggs – and eggs are babies. The scatter of the head shape is the first place where a sheet either looks like people or like an assortment.

Everything is unit measure

The semi-axes are not pixels. Everything is computed at mass = 1: a head is about two units tall, a line of 0.024 is a good two percent of that wide. The target size only joins at the very end as ctx.scale.

That is not a convenience but the precondition for the cache on the next page: because the projection is homothetic, an outline at size 1, times mass, is exactly the outline at mass. That is why the same computed point cloud carries both the small grid and the close-up.