Proiezione prospettica
Per poter applicare l’algoritmo z-buffer e necessario conoscere la profondità di un pixel all’interno del piano immagine una prima soluzione può essere:
Dati due punti di un segmento e le corrispettive proiezioni del piano immagine si assegna come coordinata a un punto del segmento compreso tra la coordinata del punto corrispondente al punto
e la cosa più intuitiva da fare
Tuttavia questo sistema funziona solo se la proiezione effettuata e parallela e non prospettica
il cono di visione nel caso della proiezione prospettica non mantiene i rapporti fra le distanze
Trasformare il piano dell’osservatore
Visto che il problema risiede nella struttura dello spazio 3D dell’osservatore l’idea e quella di creare una trasformazione in grado di deformare il tronco di piramide dell’osservatore in un cubo dove poter applicare una proiezione parallela. La trasformazione deve avere le seguenti proprietà:
- deve mantenere l’ordine di profondità
- trasformare linee in linee
- trasformare piani in piani
La trasformazione di cui sopra presenta tutte le proprietà richieste, quindi dato per esempio un cono di visione di (che può essere ottenuto mediante una trasformazione di scala da un cono di visione qualunque)
si ha che le linee della forma vengono ruotate rispetto al punto mantenendo l’allineamento tra i punti
Scelta dei parametri
I parametri possono essere scelti accuratamente per far si di ottenere un intervallo comodo per i valori di , per’esempio dato un intervallo della coordinata z di si ha che i valori di alpha e beta corrispondenti sono
ci si arriva impostando il sistema in maniera tale che i punti trasformati valgano
Si ottiene il seguente spazio