Algoritmo di Warnock

Da Wikipedia, l'enciclopedia libera.
Vai alla navigazione Vai alla ricerca
Visibilità di poligoni in una data viewport: a) il poligono riempie la viewport, b) parzialmente, c) completamente visibili, d) poligono invisibile.
Quattro step per una divisione di una viewport per una semplice scena

L'algoritmo di Warnock è un algoritmo per la determinazione della superficie nascosta inventato da John Warnock che è tipicamente utilizzato nel campo della computer grafica.[1] Esso risolve il problema di renderizzare immagini complicate, attraverso una suddivisione ricorsiva di una scena, che arriva a ottenere aree che sono banali da calcolare. In altre parole, se la scena è abbastanza semplice da calcolare in modo efficiente, viene resa; altrimenti viene divisa in parti più piccole.[2]

Questo è un algoritmo divide et impera con run-time di , dove è il numero di poligoni e è il numero di pixel nella viewport.

Gli input sono un elenco di poligoni e una viewport (finestra di visualizzazione). Il caso migliore è che se l'elenco dei poligoni è semplice, allora i poligoni vengono disegnati nella viewport. Per "semplice" si intende se c'è un poligono (quindi il poligono o le sue parti sono disegnate in una parte appropriata della viewport) o se una viewport che vale un pixel in dimensioni (quindi quel pixel ottiene un colore del poligono più vicino all'osservatore). Lo step successivo è quello di dividere la viewport in quattro quadranti dalle dimensioni uguali e chiamare ricorsivamente l'algoritmo per ogni quadrante, con un elenco di poligoni modificato, in modo da contenere solo poligoni visibili in quel quadrante.

Note[modifica | modifica wikitesto]

  1. ^ Warnock, John (1969). "A hidden surface algorithm for computer generated halftone pictures". University of Utah. The algorithm was Warnock's doctoral thesis., 32 pages, su dl.acm.org.
  2. ^ John Daintith e Edmund Wright, Oxford Dictionary of Computing, Oxford University Press., 2009.

Voci correlate[modifica | modifica wikitesto]

Altri progetti[modifica | modifica wikitesto]

Collegamenti esterni[modifica | modifica wikitesto]