Le coordinate omogenee rappresentano un punto affine aggiungendo una coordinata extra. Nel piano:
Più in generale, [x_0:x_1:\dots:x_n] e [\lambda x_0:\lambda x_1:\dots:\lambda x_n] rappresentano lo stesso punto per ogni \lambda\ne0.
La coordinata aggiuntiva distingue i punti propri dai punti all’infinito, che hanno ultima coordinata nulla: [x:y:0] rappresenta una direzione, ossia il punto in cui si incontrano le rette parallele a quella direzione nello spazio proiettivo.
Vantaggio operativo
Il punto chiave è che le trasformazioni geometriche affini e proiettive, non lineari nelle coordinate ordinarie, diventano prodotti matriciali in coordinate omogenee. In grafica 3D, robotica e visione artificiale una trasformazione composta di modello, vista e proiezione si esprime con un’unica matrice 4\times4: in particolare la traslazione, che in coordinate cartesiane è un’addizione, diventa così una moltiplicazione, uniformandosi a rotazioni e scalature.
La traslazione come matrice
Nel piano, la traslazione di vettore (t_x,t_y) si scrive
La coordinata aggiuntiva 1 è ciò che «cattura» i termini di traslazione nella terza colonna. Comporre più trasformazioni si riduce a moltiplicare le rispettive matrici, operazione che le schede grafiche eseguono in modo estremamente efficiente.
Ritorno alle coordinate cartesiane
Per tornare alle coordinate ordinarie si normalizza dividendo per l’ultima coordinata: [x:y:w]\mapsto(x/w,\,y/w), ammesso w\ne0. Questa divisione è esattamente la divisione prospettica che, nel rendering 3D, fa sì che gli oggetti lontani appaiano più piccoli: oggetti a profondità diversa hanno w diverso, e la normalizzazione li scala di conseguenza.
Esempio
Il punto cartesiano (2,3) si scrive in coordinate omogenee come [2:3:1], ma anche come [4:6:2] o [20:30:10]: tutte le terne proporzionali rappresentano lo stesso punto. Dividendo [20:30:10] per l’ultima coordinata si ritorna a (2,3).