Tesi Robotica Analisi, progettazione e implementazione... | Page 182
i
i
“LP_Tesi” — 2013/10/17 — 18:27 — page 182 — #182
i
182
i
8. VISUALIZZATORE DISPARITÀ
seguente forma: [0, 4, 1, 5, 2, 6, 3, 7, 11, 6, 10, 5, 9, 4, 8, 12, 9, 13, 10, 14, 11,
15].
Ricapitolando, per una mesh che rappresenta un immagine 4x4 pixel sono necessari 16 vertici e 18 triangoli, utilizzando la codifica per gli indici vista prima
sono necessari 22 elementi. Per il calcolo di questi valori sono state scritte le
funzioni getVerticesCount e getIndicesCount, per quanto riguarda il numero di
vertici è facile intuire che il numero di elementi che devono essere presenti nell’array è width∗height∗3, in cui width è il numero di pixel in larghezza e height
il numero di pixel in altezza, il moltiplicatore 3 si rende necessario dato che si
stanno trattando punti 3D.
La legge che regola il numero di indici in funzione dell’altezza e della larghezza
è stata invece un po’ più complicata da trovare, ma sperimentalmente si è visto
che possiede la seguente forma: (width ∗ height) + (width − 1) ∗ (height − 2).
A questo punto in Alg:8.2 è possibile vedere come vengono generati i vertici.
Come si può vedere nulla di troppo difficile, si genera semplicemente una griglia
Algoritmo 8.2 Generatore di vertici
1
2
3
4
5
6
7
8
9
10
11
float ∗ getVertices ( int width, int height ) {
vertices = new float[ getVerticesCount( width, height ) ];
int i = 0;
for ( int row=0; row