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.