Solidi - Fabrizio Celli
Transcript
Solidi - Fabrizio Celli
Si definisce schema di rappresentazione una corrispondenza s:M R tra un insieme M di modelli matematici degli oggetti solidi e un insieme R di rappresentazioni al calcolatore. Uno schema di rappresentazione s è in genere definito su un dominio D M, cioè uno schema di solido è rappresentato per progettare solo un sottoinsieme della collezione di modelli, filtrando solo i modelli di interesse. Anche il codominio non è detto che coincida con R, ma , cioè V contiene le rappresentazioni sintatticamente corrette e semanticamente significative (perciò è detto insieme di validità). Una rappresentazione valida r V si dice completa se è associata a s con un solo modello di D, cioè: . Se ogni rappresentazione in V è completa, allora s si dice completo, cioè è una funzione. Se una rappresentazione corrisponde a più di un modello, non è completa perché contiene solo informazioni comuni ai modelli associati ma non sufficienti a caratterizzarli singolarmente. Una rappresentazione r s(m) si dice unica quando l’insieme s(m) V ha un solo elemento (dove m D). Uno schema si dice unico se per ogni modello m D risulta . Se lo schema s è completo e unico, allora esiste una corrispondenza biiettiva tra D e V data da S, che si dice canonico (raro per gli alti costi computazionali per garantirne l’unicità). Una classificazione degli schemi è stata fatta da Requicha, che prevede Istanziazione di primitive (in cui ogni rappresentazione è una tupla il cui primo elemento è il nome della procedura generatrice e gli altri sono i valori attuali dei parametri); Schemi Compositi (tipi multipli di rappr.). In uno schema enumerativo, un modello solido è descritto enumerando le celle piene in una partizione dello spazio occupato dal solido: tali celle hanno topologia e geometria fissata. Quasi tutte le rappresentazione enumerative sono approssimate e possono avere risoluzione variabile. Negli schemi enumerativi piatti, lo spazio che contiene il modello è suddiviso in celle cubiche di misura costante o che varia per righe, colonne o piani. Se si vuole rappresentare un oggetto di dimensione apprezzabile, questo schema presenta una risoluzione non piccola, perciò si sfruttano matrici sparse di valori booleani, in cui sono memorizzate esplicitamente solo le celle di bordo (infatti in genere non sono frequenti le transizioni vuoto/pieno in un solido). Con la risoluzione costante le celle hanno misura costante: si può decidere di considerarle piene solo quando sono interamente contenute nel solido (approssima per difetto). Tale approccio è buono se le facce del solido sono ortogonali e di misura multipla di quella dei lati delle celle. Con la risoluzione variabile, il partizionamento è non uniforme ed è codificato da un opportuno array. In 2D: . Negli schemi enumerativi gerarchici ci sono diversi schemi che partizionano lo spazio in celle di tipo e misure differenti, codificati con la struttura dati “albero”. I 2n-tree sono alberi ordinati, in cui ogni nodo non foglia ha esattamente 2n figli numerati da 1 a 2n. Se n=2 o 3, si ha il Quadtree o l’Octree, usati per rappresentare decomposizioni gerarchiche dello spazio 2D e 3D rispettivamente. Il modello di un Quadtree è immerso nello spazio 2D: ogni nodo non foglia ha esattamente 4 figli ed è grigio, mentre una foglia è nera o bianca per indicare che la cella corrispondente è piena o vuota. La profondità è la massima distanza (numero di archi nel cammino dalla radice) dei suoi nodi dalla radice. Se m è la profondità e l il lato del quadrato del box che contiene il modello, la risoluzione vale: . Con l’Octree lo spazio è suddiviso con tre piani ortogonali tali da formare 23 celle ad ogni passo (che possono essere grigie, nere o bianche). I bintree sono alberi binari che rappresentano solidi in En. I nodi dell’albero contengono equazioni di iperpiani come xh=ch, con h=dk mod n, in cui dk è la distanza intera dal nodo k alla radice. Con uno schema decompositivo un solido è rappresentato come un insieme di celle di topologia assegnata, in cui però la partizione delle celle è data dallo stesso oggetto rappresentato. Negli schemi simpliciali, ogni solido è triangolato da un complesso simpliciale e ogni complesso simpliciale può essere trasformato da un mappa dei suoi vertici in un altro complesso simpliciale: sono schemi utili per le simulazioni. Ricordiamo che un d-simplesso è un guscio convesso di d+1 punti affinemente indipendenti in En, con d<=n. Un complesso simpliciale è invece una triangolazione generalizzata e ben formata, in cui l’intersezione di ogni coppia di simplessi è l’insieme vuoto o è ancora un simplesso di dimensione inferire (faccia comune). Gli alberi BSP (albero di partizione binaria dello spazio) sono usati per le operazioni booleane (anche per accelerare la velocità di giochi come DOOM, in quanto permettono metodi di rimozione delle superfici nascoste) e consentono di generare, per ogni possibile posizione dell’operatore, un ordinamento in profondità di poligoni in tempo lineare col loro numero, potendo applicare l’algoritmo di rimozione di parti nascoste di una scena. Sono alberi lineari che contengono un iperpiano in ogni nodo non foglia e un’etichetta IN/OUT nei nodi foglia. Alla fine occorrerà potare l’albero. La rappresentazione HPC è basata su celle convesse, viste come combinazioni convesse di punti o piani. L’oggetto è in pratica visto come una collezione gerarchica di poliedri, dove ogni poliedro elementare è decomposto in un insieme di politopi, ciascuno dei quali è una collezione di vettori di faccia. Si può disegnare un grafo in cui un arco uscente è detto istanza poliedreale (che trasforma affinemente il nodo in cui entra), mentre il nodo da cui esce è il complesso poliedrale. Gli oggetti associati alle foglie sono i poliedri elementari (completi o deboli). Questa rappresentazione rende lineare l’operatore di estrusione. Gli schemi CGS (Constructive Solid Geometry) descrivono l’oggetto con operazioni booleane o trasformazioni affini di oggetti primitivi. Si usa un albero binario in cui le foglie sono solidi primitivi e i nei nodi interni op. booleane o trasf. affini. In tale modo oggetti complessi possono essere assemblati applicando operazioni booleane su sottoinsiemi o parti elementari. Def obj = CUBOID:<2,10,10>+(CUBOID:<10,10,2> - T:<1,2>,<5,5>:(Cylinder:<1,2,20>)) Gli schemi al contorno (b-rep o boundary) rappresentano un solido d-dimensionale attraverso qualche rappresentazione del suo bordo (d-1)-dimensionale. Ciò non è ambiguo perché solidi diversi hanno bordi diversi. Una rappresentazione al contorno è espressa induttivamente sugli elementi del bordo (d-1)-dimensionale: - Il bordo di un solido 3D è rappresentato da una partizione in pezzi limitati 2D (facce) - Ogni faccia è rappresentata da una partizione del suo bordo 1D in pezzi connessi detti edges - Ogni edge è rappresentato dai suoi elementi di bordo 0D, detti vertici Ci sono poi altre tre entità utili (che sono insiemi di oggetti geometrici di ordine 3,2,1): - I corpi, cioè l’insieme B delle componenti del solido connesse - I gusci, cioè l’insieme S delle componenti connesse del bordo - I cicli, cioè l’insieme L delle componenti connesse delle facce del bordo Nella tabella FEVxFEV le relazioni sulla diagonale principale sono di adiacenza, le altre di incidenza: solo EE ha cardinalità >=4e, le altre valgono 2e. Ciascuna delle 9 relazioni binarie è un sottoinsieme del prodotto cartesiano: . Tra le facce, spigoli e vertici dei poliedri 3D omomorfi alla sfera (cioè che possono essere trasformati bicontinuamente in questa) vale l’equazione di Eulero v-e+f=2, cioè in cui l’ordine topologico dei solidi è nullo. Così il cubo e il tetraedro sono della stessa classe di equivalenza al genere topologico. Il genere topologico g di un solido è il numero di manici di una sfera con manici topologicamente equivalente al solido. Tale numero permette di classificare i solidi: due solidi topologicamente equivalenti possono trasformarsi bicontinuamente l’uno nell’altro. Generalizzando l’equazione di Eulero: v-e+f=2(s-g)+h, dove g è il genere topologico del solido, h è il numero di buchi nelle facce del solido e s è la cardinalità dell’insieme dei gusci. Così il cubo con 4 facce bucate è equivalente alla sfera con tre manici: . La rappresentazione spigolo-alata fa parte di quelle al contorno(in particolare agli spigoli): è una rappresentazione relazionale basata su 2 tabelle di riferimenti, indicizzate su facce e vertici, e su 1 tabella primaria indicizzata sugli spigoli. La tupla della tabella primaria indicizzata sullo spigolo ej contiene i riferimenti a 2 vertici incidenti, a 2 facce incidenti e a 4 spigoli adiacenti che incontrano le 2 facce. La b-rep minimale è la più piccola rappresentazione al contorno, che memorizza due relazioni di incidenza in prima forma normale. Si prende uno spigolo e si riempie per esso la tabella con 4 elementi: vertice iniziale, vertice finale, faccia1, faccia2.