# Coordinate omogenee

In matematica, le coordinate omogenee o coordinate proiettive, introdotte da August Ferdinand Möbius intorno al 1837, sono uno strumento usato per descrivere i punti nella geometria proiettiva. Sono cioè l'analogo delle coordinate cartesiane nella geometria analitica ed hanno il vantaggio di poter rappresentare coordinate di punti, anche punti all'infinito, utilizzando coordinate finite.
Le coordinate omogenee sono ampiamente usate nell'arte digitale per la rappresentazione di oggetti nello spazio e dei loro movimenti.

## Definizione
### Introduzione informale

Un insieme di oggetti è rappresentato tramite delle coordinate omogenee, se ciascuna sequenza di numeri
    $[x_{0},\ldots ,x_{n}]$
diversa da $[0,0,\ldots ,0]$ identifica un oggetto, e due sequenze, $[x_{0_{1}},\ldots ,x_{n_{1}}]$ e $[x_{0_{2}},\ldots ,x_{n_{2}}]$ determinano lo stesso oggetto se e solo se sono una multipla dell'altra, cioè se:
    $\exists \ \lambda \in \mathbb {K} |\ [x_{0_{1}},\ldots ,x_{n_{1}}]=\lambda [x_{0_{2}},\ldots ,x_{n_{2}}]=[\lambda x_{0_{2}},\ldots ,\lambda x_{n_{2}}].$
Ad esempio, $[1,2]$ e $[-2,-4]$ identificano lo stesso oggetto poiché $[-2,-4]=-2[1,2]$ .
La relazione di proporzionalità qui definita è una relazione di equivalenza: ciò vuol dire che un oggetto determina univocamente una classe di equivalenza di sequenze.

### Spazi proiettivi

Uno spazio proiettivo associato ad uno spazio vettoriale $V$ è definito come l'insieme delle rette (cioè dei sottospazi vettoriali di dimensione uno) di $V$. Viene indicato con $\mathbb {P} (V)$.
Se lo spazio vettoriale $V$ è munito di una base finita, ogni vettore di $V$ è descrivibile tramite le sue coordinate
    $(x_{1},\ldots ,x_{n})$
Ogni retta di $V$ è descrivibile come lo span lineare di un vettore non nullo $v$. Le coordinate omogenee di questa retta, rispetto alla base scelta, sono la $n$-upla di punti
    $[x_{1},\ldots ,x_{n}]$
data dalle coordinate di $v$, definita a meno di moltiplicazione per scalare. Si intende cioè che
    $[x_{1},\ldots ,x_{n}]=[\lambda x_{1},\ldots ,\lambda x_{n}]$
per ogni $\lambda$ diverso da zero. Le coordinate della retta sono quindi ben definite: infatti $v$ e $v'$ sono due vettori che generano la stessa retta se e solo se le loro coordinate differiscono per un multiplo scalare.
Come le coordinate di un vettore in uno spazio vettoriale, le coordinate omogenee dipendono fortemente dalla scelta di una base. Nel caso in cui lo spazio $V$ sia $K^{n}$, è naturale prendere la base canonica: si indica quindi una retta di $P(K^{n})$ come $[x_{1},\ldots ,x_{n}]$, dove $(x_{1},\ldots ,x_{n})$ è un qualsiasi vettore non nullo che la genera.

## Esempi
### Dimensione 1

Ogni punto della retta proiettiva $P(K^{2})$ è scrivibile come coppia
    $[x_{0},x_{1}]\,\!$
diversa da $[0,0]$. Se $x_{1}$ è diverso da zero, è possibile esprimere lo stesso punto come
    $\left[{\frac {x_{0}}{x_{1}}},{\frac {x_{1}}{x_{1}}}\right]=\left[{\frac {x_{0}}{x_{1}}},1\right]$.
D'altra parte, se $x_{1}=0$ l'altro valore $x_{0}$ non può essere nullo, ed è possibile esprimere lo stesso punto come
    $\left[{\frac {x_{0}}{x_{0}}},{\frac {0}{x_{0}}}\right]=[1,0]$.
Ne segue che i punti di $P(K^{2})$ sono esattamente
    $\{[a,1]\ |\ a\in K\}\cup \{[1,0]\}.$
Con questa descrizione, la retta proiettiva è l'unione di due pezzi: tutti i punti del tipo $[a,1]$ al variare di $a$ in $K$, che sono in corrispondenza biunivoca con $K$, ed il punto all'infinito $[1,0]$.

### Dimensione 2

Ogni punto del piano proiettivo $P(K^{3})$ è descrivibile come tripletta
    $[x_{0},x_{1},x_{2}]$.
non nulla. Analogamente a quanto visto sopra, i punti di $P(K^{3})$ sono
    $\{[x,y,1]\ |\ (x,y)\in K^{2}\}\cup \{[x,y,0]\ |\ [x,y]\in P(K^{2})\}.$
Con questa descrizione, lo spazio proiettivo è unione di due pezzi: il primo è una copia del piano vettoriale $K^{2}$, l'altro è una copia della retta proiettiva $P(K^{2})$; quest'ultima è chiamata retta all'infinito.

## Carte affini e punti all'infinito

Come evidenziato dagli esempi, la scelta di coordinate proiettive per uno spazio proiettivo permette una descrizione di questo come unione di due spazi, il primo dei punti al finito, il secondo dei punti all'infinito (o impropri), nel modo seguente:
    $P(K^{n})=\{[x_{0},\ldots ,x_{n-1},1]\}\cup \{[x_{0},\ldots ,x_{n-1},0]\}.$
I punti al finito sono determinati dal vettore $(x_{0},\ldots ,x_{n-1})$, che è quindi un elemento dello spazio $K^{n}$. Quelli all'infinito sono invece determinati dal vettore $[x_{0},\ldots ,x_{n-1}]$, solo a meno di moltiplicazione per scalare: sono quindi elementi dello spazio proiettivo di dimensione più piccola $P(K^{n-1})$.
La stessa descrizione è fattibile per ogni $i=0,\ldots ,n$ fissato, definendo $E_{i}$ come l'insieme dei punti la cui i-esima coordinata è non nulla, e $P_{i}$ il suo complementare. Per ogni $i$ si ottiene quindi
    $P(K^{n})=E_{i}\cup P_{i}$
dove $P_{i}$ è l'iperpiano proiettivo definito dall'equazione $x_{i}=0$, ed $E_{i}$ è in naturale corrispondenza biunivoca con $K^{n-1}$. Ogni $E_{i}$ è detto carta affine.

## Sottospazi proiettivi

Il sottospazio proiettivo generato da alcuni punti $P_{1},\ldots ,P_{k}$ è il più piccolo sottospazio che li contiene, ed è descrivibile in coordinate proiettive come:
    $L(P_{1},\ldots ,P_{k})=\{[a_{1}x_{1,0}+\ldots +a_{k}x_{k,0},\ldots ,a_{1}x_{1,n}+\ldots +a_{k}x_{k,n}]\ |\ a_{1},\ldots ,a_{k}\in K\}.$
Questa definizione traduce l'usuale normale definizione di span lineare per i sottospazi vettoriali.

## Utilizzo in computer grafica

Le coordinate omogenee sono utilizzate frequentemente in computer grafica in quanto permettono di rappresentare tutte le trasformazioni affini tramite operazioni matriciali. Una traslazione in $\mathbb {R} ^{2}:(x,y)\to (x+a,y+b)$ può essere scritta in questo modo:
    ${\begin{pmatrix}1&0&a\\0&1&b\\0&0&1\end{pmatrix}}{\begin{pmatrix}x\\y\\1\end{pmatrix}}={\begin{pmatrix}x+a\\y+b\\1\end{pmatrix}},$
dove i vettori colonna sono costituiti dalle coordinate omogenee del punto di partenza e del punto di arrivo, rispettivamente. Anche tutte le trasformazioni lineari come la rotazione e la riflessione possono essere rappresentate, mediante matrici della forma
    ${\begin{pmatrix}a&b&0\\c&d&0\\0&0&1\end{pmatrix}}$
nelle quali le sottomatrici delle prime due righe e delle prime due colonne esprimono riflessioni, rotazioni o trasformazioni lineari. Inoltre anche le trasformazioni proiettive possono essere rappresentate mediante matrici.
La possibilità di realizzare tutte le trasformazioni mediante la moltiplicazione di matrici, cioè mediante un unico meccanismo facilmente implementabile, semplifica notevolmente le attività computazionali e di ingegnerizzazione del software per la computer grafica. Le coordinate omogenee sono ampiamente utilizzate nelle rappresentazioni di scene 3D e le notazioni matriciali sono impiegate nella maggior parte delle librerie 3D come OpenGL e Direct3D.