Concept

Homogeneous coordinates — where it appears

Writing a point with one extra coordinate, so that a projection becomes a matrix and a point at infinity an ordinary value.

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

x/z, y/z — the pinholeM·p, then divide by wworst disagreement 4.0e-14 px over 8 verticescorrect from 21 cm, at 160 mm wide42° across · near 0.1 m, far 1000 m

The divide is postponed, not avoided

A renderer does not divide by depth. It multiplies by a four-by-four matrix that carries the depth in a fourth coordinate and divides later, and the postponement is not an optimisation — it is what makes clipping and texture interpolation possible at all. The matrix and this site's pinhole put every point on the same pixel to five parts in a hundred trillion.

pipeline · homogeneous
clipped at the near planedivided without clippingdirection cosine -1.0000 — the far end is drawn 2142 px away20 grid segments, 2.4 m of them behind the eyea reversed line is not a large error, it is a different picture

What happens behind the eye

A point behind the camera has a perfectly plausible image. Dividing by a negative fourth coordinate flips both signs, so the point lands through the principal point on the far side of the frame, and a segment crossing the eye plane is drawn straight, inside the frame, and running in exactly the opposite direction — a direction cosine of −1.0000.

pipeline · clipping
00.2500.5000.7501-10123distance from the eye — log₁₀ metresfraction of the buffer's codes used uphalf the codes by 0.20 ma linear map, for comparisonnear 0.1 m, far 1000 mharmonic mean 0.20 m against arithmetic 500 m

The precision a depth buffer has left

Depth is stored as an affine function of one over the distance, so half of a buffer's codes are spent before the harmonic mean of the near and far planes — twenty centimetres out of a kilometre. The resolution goes as the square of the distance, and the fix that works is not more bits.

pipeline · zbuffer
-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
horizonv_zthe horizon misses the imaged circle, so the two points are a conjugate pairprotractor on the paper: 80.43° · cross-ratio: 90.000000°correct from 21 cm, at 160 mm wide42° across

An angle is a cross-ratio

A projection destroys angle, which every account of perspective says and this site has measured. It destroys it only in the sense that the picture no longer carries it for free — because an angle is a cross-ratio taken against two particular points, and once those two points are located in a photograph the world's angles can be read off it directly, with no rectification, no camera, and nothing measured but which lines pass through which points.

foundations · laguerre
horizonprincipal pointv_zorthocentre: 812.7691 px · vᵀωu = 0: 812.7691 pxconjugacy residual 5.9e-10 in focal-length unitscorrect from 19 cm, at 160 mm wide46° across

One conic calibrates the camera

This site has recovered a focal length from two perpendicular vanishing points since its first phase, by an orthocentre construction with a square root in it. There is a second derivation with no construction and no square root — two vanishing points of perpendicular directions must be conjugate with respect to one conic in the picture — and the two agree to the last bit. They are not two methods. The conic is what a calibrated camera is.

foundations · absoluteconic
centrefaint dots: before · solid: afterhomologyratio 2.4000

What a flat map leaves alone

A projectivity of the plane is eight numbers in a matrix, and reading them tells a reader nothing. What it does is decided by its fixed points, and there are exactly three cases: three isolated fixed points, or a whole line of them with one point off it, or a whole line of them with the point fallen onto it. The middle case has five numbers instead of eight and every point slides along a line, and it is what most of the maps this site builds turn out to be.

foundations · fixedstructure

Named alongside it

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

DemonstrationCamera matrixClip spacepoint at infinityProjective mapcentre of projectionCircular pointsConditioningConicCross ratioline at infinityMetric rectification

All concepts