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

PREVIOUS NEXT