Algoritmi di rasterizzazione
La rasterizzazione e un processo che dato un poligono in coordinate schermo colora i pixel di quel dato poligono con un colore, esistono due processi principali:
- rasterizzazione per mezzo di coordinate baricentriche
- rasterizzazione per mezzo di scan conversion
Inoltre queste vengono differenziate in base a come il colore del pixel viene determinato
- colore omogeneo
- texture (immagine bidimensionale da applicare sull’oggetto)
Sistema di riferimento baricentrico
Dato un poligono in coordinate schermo definito come segue
allora e possible definire un nuovo sistema di riferimento basato sui vertici del poligono
in questo sistema di riferimento tutti i punti vengono rappresentati da combinazioni affini dei 3 vertici del poligono
In coordinate baricentriche si ha che se un punto fa parte del poligono allora e vero che di conseguenza determinare se un punto fa parte del poligono si riduce a un confronto
if(a >=0 && b >=0 && c >= 0){
console.log("punto del poligono")
}else{
console.log("punto non del poligono")
}
Inoltre questo approccio può essere implementato in parallelo per mezzo di architetture SIMD
Recupero dell’informazione colore
Inoltre le coordinate baricentriche possono essere utilizzate per recuperare anche l’informazione del colore di un dato punto, date le coordinate baricentriche l’informazione colore può essere recuperata dallo spazio RGB dei colori
Scan conversion
L’idea base di questo algoritmo consiste nell’identificare le sequenze orizzontali di pixel che fanno parte del triangolo, l’algoritmo si divide in due fasi
- identificazione delle intersezioni della linea con i lati del triangolo
- colorazione dei pixel fra le due intersezioni
Per identificare il prossimo pixel sulla linea si utilizza l’algoritmo di linea incrementale
Texture mapping
Il processo di texture mapping si occupa di applicare a un dato poligono un immagine sulla sua superficie, sfruttando un mapping tra i vertici di un poligono 3D e un immagine
Di conseguenza il problema si riduce ad assegnare a ogni pixel il corretto punto della texture in questione, questo può essere fatto per mezzo delle coordinate baricentriche, costruendo un mapping fra le coordinate del poligono e le coordinate in spazio texture
Tuttavia non e detta che dato un punto del poligono ci sia una corrispondenza con un pixel esatta della texture
E necessario quindi determinare il colore da assegnare a un dato punto del triangolo,ci sono diverse strategie disponibili:
Nearest neighbor
Il colore di un dato punto e dato dal pixel della texture più vicino alle coordinate del punto
Bilinear interpolation
Vengono considerati i 4 punti più vicini al punto Le cui componenti colore vengono pesate per determinare il colore del punto
data la seguente interpolazione lineare in una dimensione come segue
la interpolazione bilineare e di conseguenza realizzata come un interpolazione lineare di due interpolazioni lineari
di conseguenza si ha che:
con:
nel caso in cui il punto si trovi al centro dei 4 pixel piu vicini l'interpolazione bilineare si riduce a una media dei 4 pixel
Bi-cubic interpolation
Metodologia che prende in considerazione i pixel più vicini al punto in questione, le cui componenti vengono pesate per mezzo dell’interpolazione colore
e il compromesso più ragionevole tra calcolo e qualità nonché quello più utilizzato in molti software di grafica