homogeneous coordinates
Ordinary (x, y) coordinates can name every point of the plane except the new points at infinity — there is no finite pair of numbers for 'the direction of slope 2'. Homogeneous coordinates fix this with a clever trick: name each point by three numbers instead of two, and agree that scaling all three by the same nonzero factor names the same point. This one convention lets ordinary points and points at infinity share a single, uniform notation.
The recipe. Write a point as a triple (x : y : z), using colons to remind us it is a ratio. The rule is (x : y : z) and (kx : ky : kz) mean the same point for any nonzero k — so (2 : 4 : 2), (1 : 2 : 1) and (3 : 6 : 3) are all one and the same point. To convert: an ordinary point (a, b) becomes (a : b : 1), and conversely (x : y : z) with z not zero is the ordinary point (x/z, y/z). The triples with z = 0 are exactly the points at infinity: (x : y : 0) is the point at infinity in the direction of slope y/x. The triple (0 : 0 : 0) is forbidden — it names nothing. Lines get the same treatment: a line is a triple [a : b : c] standing for the equation a x + b y + c z = 0, and a point (x : y : z) lies on it precisely when a x + b y + c z = 0.
Why three numbers for a two-dimensional plane? Because the third coordinate is a 'scale' bookkeeping device that buys two priceless things: every point gets a name (including the ones at infinity, with z = 0), and the equations of points and lines become perfectly symmetric — both are triples, both joined by the single relation a x + b y + c z = 0. This symmetry is the algebraic heart of duality. The mild cost: a point no longer has one fixed triple but a whole ratio-class of them, so you must always reason about triples up to scaling, never compare raw numbers.
The ordinary point (3, 4) is written (3 : 4 : 1), equally (6 : 8 : 2) or (-3 : -4 : -1). The line through it x - y + 1 = 0 becomes [1 : -1 : 1], standing for x - y + z = 0; check: 3 - 4 + 1 = 0, so the point lies on the line. The point at infinity of slope 4/3 is (3 : 4 : 0); it lies on the line at infinity [0 : 0 : 1] since 0(3) + 0(4) + 1(0) = 0.
Three numbers up to scaling: (a, b) becomes (a : b : 1); z = 0 gives the points at infinity.
It is the ratios that carry meaning, never the individual numbers: (2 : 4 : 6) and (1 : 2 : 3) are the same point. A frequent slip is to 'add' two homogeneous triples coordinate-wise as if they were vectors and expect a meaningful point — that operation depends on the chosen scaling and is generally meaningless in the projective plane.