Concept

Depth division — where it appears

Spacing the transversals of a receding surface, either by construction from a camera or by a recipe applied by eye. Done from a camera it is exact at every depth; done by a taught recipe it is exact at one, and the cross-ratio is what tells the two apart.

Named by 9 essays across 4 fields — each of them below, with the objects they name alongside it.

horizonequal stepshalve thetaper byworst error, in metres of depthequal steps to the horizon11.72 mhalve the remaining gap225.13 mtaper by eye347.80 mcorrect from 26 cm, at 160 mm wide34° across

Dividing depth by eye

Three methods for spacing a receding row, all of them taught, all of them wrong. Read back as distances, the best misplaces a post by 3.5 metres in a row that is supposed to be spaced 1.4. And the obvious way of checking them gives one of the three a perfect score.

wrong · Deptheye
-0.400-0.200000.2000.4000.6000.8001position across the drawn surfacehow far along the real surface, minus how far along the drawn one(√k−1)/(√k+1) = 0.5195at the page's midpoint, 40.9%depth ratio 10 : 1peak 0.5195 at s = 0.760

A texture does not interpolate on the page

Walking across a drawn surface at a constant rate walks across the real one at a rate that changes, and the worst gap is a closed form in the depth ratio alone — 0.52 at ten to one, more than half the whole range. It is exactly the error a person makes dividing depth by eye, made by a machine, and the fix is the fourth coordinate the pipeline kept.

pipeline · Perspcorrect
the diagonals against a ruler, at 3.2 mthe diagonals — exactthe ruler — 22.7 px outcorrect from 23 cm, at 160 mm wideharmonic set -1.000000 · 8e-14 px

The diagonals find the middle

Three taught methods for spacing a receding row are all wrong, and the best of them misplaces a post by three and a half metres. There is a fourth, it needs no measurement and no vanishing point, and it is exact at every camera and every depth — because 'the diagonals of a rectangle cross at its centre' is a statement about which lines meet where, and that is the one kind of statement a projection cannot damage.

foundations · Harmonic
24 kept · 26 clipped · every mark unmovedcorrect from 17 cm, at 160 mm wideclip plane tilted 18°

The near plane can be any plane

Rewrite one row of a projection matrix and the near plane stops being perpendicular to the axis and becomes whatever plane is asked for. Every x and every y is untouched — it is the same projection of the same scene from the same eye — and the depth order is wrecked, which is a clean separation of the two things a projection matrix does.

pipeline · Clipping
01230123the plane moved by a factor of ten to the …depth resolution, relative (powers of ten)near plane, brought infar plane, pushed out1/near − 1/farone term does all the work

One plane is nearly free

The near and far planes enter a depth buffer's precision through 1/near − 1/far, and one of those reciprocals is enormous. Pushing the far plane out by a factor of a thousand costs a tenth of a per cent; bringing the near plane in by the same factor costs a factor of a thousand — and an infinite far plane is the limit of the first rather than a separate case.

pipeline · Zbuffer
0.25°0.5°1°2°5°10°20°45°90°0.1110angle of the span from the horizon's direction (log scale)worst texel along a 120 px span (px, log scale)80 px below the horizon160 px below the horizonparallel to the horizon: 0 pxfloor · eye 1.5 m · 60° field

Along a line of constant depth the page is affine

Stepping a texture by a constant amount per pixel is wrong across a receding floor and exactly right along any line of it that stays at one depth — and on every plane those lines run parallel to its own vanishing line. Turn a 120 px span 1° away from that direction and it is 0.79 px out; roll the camera a hundredth of a degree and a floor drawn to 30 m is out by 0.69 px on its worst scanline.

pipeline · Perspcorrect
the constant-depth direction, 20.0°a floor banked 20°, 40 pixels of the walkworst 0.60 px off the line

A tilted span walks a staircase

A span along a banked floor's constant-depth direction is exact, and a renderer visits pixels rather than the span. Snapped to the grid, a 120 px span at a 20° bank costs 0.577 px where the same span along a page row costs 13.26 — twenty-three times better — and it never rises above 1.22 px at any bank. The price is bookkeeping: a band of twenty-four such spans draws 53 of its 1,368 pixels twice.

pipeline · Perspcorrect
horizoncorrect from 19 cm, at 160 mm widetrace² 4.000000 · parabolic

The map a row of posts is

Walking one bay further down a row is a map of the drawn line to itself, and which map it is settles everything about how the spacings behave. It is parabolic — one fixed point, counted twice, and that point is the vanishing point — which is why the drawn posts crowd toward it and never arrive. Doubling a distance instead gives a hyperbolic map whose multiplier a straightedge can read.

foundations · Pline
horizonwhere the rays meet — the reversed imagecorrect from 19 cm, at 160 mm widethe lamp has no image · rays meet to 2e-13 px

A lamp behind the camera

A light behind the photographer has no image — the projection refuses it — and the shadows it casts are in front of them, drawn as ordinary shadows. The construction that recovers a lamp from those shadows works anyway, meeting to a ten-thousandth of a pixel at the point the reversed divide puts it, and the taught reading of where the answer lies gets the case exactly backwards.

light · Lightrecovery

Named alongside it

The objects these essays reach for when they reach for this one.

Homogeneous coordinatesProjective invariantTransversalCamera matrixClip spaceCross-ratioForeshorteningHorizonQuantisationVanishing pointdegrees of freedomDemonstration

All concepts