One extra number turns translation into a matrix multiply. A 3D point becomes the 4-vector (x,y,z,1), a direction becomes (x,y,z,0), and a single 4×4 matrix then encodes translation, rotation and scale uniformly. The perspective divide (dividing by w) recovers the 3D point — and makes every k>0 scaling of a vector the same projective point. Rendered, not quoted.
source A. F. Möbius, Der barycentrische Calcül (J. A. Barth, Leipzig, 1827) — introduces homogeneous / barycentric coordinates into analytic geometry. overview AMBER: no stable open scan of the 1827 first edition; cited by author/title/year.
Lift 3D into 4D. A point carries w=1; a direction carries w=0. A translation lives in the last column and is multiplied by w — so it acts on points and skips directions, for free.
M·v sums each row against v. The bottom row builds the new w; the perspective divide finishes the map.
This is the trick that unifies every transform. Möbius's projective coordinates become the 4×4 world beneath the-perspective-projection and every graphics matrix: model, view and projection all compose by the same multiply.
Neighbour sphere: the-perspective-projection — where the bottom row stops being (0,0,0,1) and starts writing −z into w.
Live re-check: apply T to the direction (1,0,0,0). A direction must come back unchanged. If the tamper (window 6) is armed, translation leaks onto the direction and this badge flips red.
witness idlePoint P = (1, 2, 3, 1) and direction D = (1, 0, 0, 0). Transform T = translate(5, 6, 7). A second transform B = translate(1, −2, 3) for composition.
Live, from the pure functions below — no baked numbers.
Cube below: model → view → perspective matrix, then a per-vertex divide by w. w≠1 after projection is homogeneous coordinates at work.
Proven at boot: point moves, direction stays, composition equals the matrix product, projective scalings collapse to one point.
booting…"Just add the translation to every vector." That silently corrupts directions and normals: a surface normal is a direction (w=0) and must never be shifted by position — and under non-uniform scale it needs the inverse-transpose, not M itself. The w channel is the wall that keeps position and direction apart.
"w is always 1, so you can ignore it." — false: projection writes −z into w; skipping the divide leaves you in clip space, not on screen.
"Scaling a homogeneous vector changes the point." — false: (kx,ky,kz,k) divides back to the same (x,y,z) for any k>0 — projective equivalence.
"Matrix order does not matter." — false: composition is associative but not commutative; translate·rotate ≠ rotate·translate.
Planted void: apply the translation to a vector regardless of w — so a direction (w=0) gets wrongly shifted like a point. The witness (7) catches it live.