Sviluppo di un algoritmo adattativo per la poligonizzazione di super
Transcript
Sviluppo di un algoritmo adattativo per la poligonizzazione di super
POLITECNICO DI TORINO Facolta di Ingegneria Corso di Laurea in Ingegneria Informatica Tesi di Laurea Sviluppo di un algoritmo adattativo per la poligonizzazione di superci implicite Relatore: prof. Aldo Laurentini Candidato: Andrea Bottino Ottobre 1995 A Claudia Indice 1 Introduzione 5 2 L'algoritmo Shrinkwrap 2.1 Approssimazione della supercie : : : : : : : : : : : : : : : : : : : 2.1.1 Cos'e una supercie accettabile : : : : : : : : : : : : : : : : 2.1.2 Stima dell'errore in caso di curvatura monotona : : : : : : : 2.1.3 Stima dell'errore nel caso generale : : : : : : : : : : : : : : 2.2 Un algoritmo per arrivare ad una struttura triangolare accettabile : 2.3 Come ottenere dei vertici sulla supercie : : : : : : : : : : : : : : : 2.4 Come ottenere una supercie chiusa : : : : : : : : : : : : : : : : : 2.5 Come ottenere una tassellatura accettabile : : : : : : : : : : : : : : 2.6 L'algoritmo : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : 2.7 Risultati ottenibili : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : 10 10 12 12 12 14 15 17 18 19 22 3 Limiti dell'algoritmo 24 4 Singolarita e superci 31 5 Superci di separazione 39 3.1 Cos'e un punto critico : : : : : : : : : : : : : : : : : : : : : : : : : : 25 3.2 Comportamento della struttura triangolare : : : : : : : : : : : : : : : 27 3.3 Validita dei lemmi : : : : : : : : : : : : : : : : : : : : : : : : : : : : 29 4.1 Come si possono trovare i punti critici : : : : : : : : : : : : : : : : : 31 4.2 Piani di simmetria della supercie : : : : : : : : : : : : : : : : : : : 34 4.3 Avvicinandosi al punto critico : : : : : : : : : : : : : : : : : : : : : : 37 2 Indice 5.1 Cosa fare delle corde rosse : : : : : : : : : : : : : : : : : : : : : : : : 39 5.2 Caratteristiche dell'insieme T : : : : : : : : : : : : : : : : : : : : : : 43 5.3 Come stabilire il tipo delle superci di separazione : : : : : : : : : : 44 6 Come ricostruire una struttura corretta 6.1 Distribuzioni con un solo punto critico 6.1.1 Il piano separatore : : : : : : : 6.1.2 Ricostruire una rottura : : : : 6.1.3 Ricostruire un buco : : : : : : 6.2 Distribuzioni con piu punti critici : : : 6.2.1 Alcune denizioni : : : : : : : 6.2.2 Ricostruire l'intera struttura : 7 L'algoritmo modicato 7.1 7.2 7.3 7.4 Il nuovo algoritmo : : : : : : Analisi dei risultati : : : : : : Conclusioni : : : : : : : : : : Ulteriori sviluppi della ricerca : : : : : : : : A How to shrinkwrap a saddle point : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : A.1 Introduction : : : : : : : : : : : : : : : : : : : : : : : A.2 Critical points : : : : : : : : : : : : : : : : : : : : : : A.2.1 How the region around a critical point behaves A.3 The surface : : : : : : : : : : : : : : : : : : : : : : : : A.3.1 What is happening to the surface : : : : : : : : A.3.2 How to detect red edges : : : : : : : : : : : : : A.4 Fixing the topology : : : : : : : : : : : : : : : : : : : A.4.1 Is it a ssure or is it a hole? : : : : : : : : : : : A.4.2 How to x the topology : : : : : : : : : : : : : A.5 Dealing with complex topologies : : : : : : : : : : : : A.5.1 Some denitions : : : : : : : : : : : : : : : : : A.5.2 How to proceed : : : : : : : : : : : : : : : : : 3 : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : 46 46 47 47 49 50 51 52 54 54 58 59 61 62 62 64 65 67 68 70 74 76 79 84 84 85 Indice A.6 Evaluations : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : 87 A.7 Conclusion : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : 88 A.8 Acknowledgments : : : : : : : : : : : : : : : : : : : : : : : : : : : : : 88 4 1 Introduzione Il lavoro svolto in questa tesi e stato realizzato presso l'Universita Tecnica di Eindhoven (Technische Universiteit Eindhoven), in Olanda e si inquadra nell'ambito del progetto ERASMUS, progetto nalizzato allo scambio di studenti fra Universita appartenenti agli stati della Comunita Europea. Oltre agli stimoli oerti dal confronto con una mentalita e un modo di vivere dierenti da quelli italiani, questa esperienza mi ha anche oerto la possibilita di essere inserito in un gruppo di lavoro aatato, il Technische Toepassingen Group, sempre disponibile nell'aiutarmi a superare i problemi derivanti dall'inserimento in un ambiente nuovo. Una parte della tesi, scritta in inglese, comprende il documento di ricerca depositato presso la stessa universita. L'introduzione e gli altri capitoli scritti in italiano servono per descrivere le basi di partenza di questo lavoro, e per introdurre dettagliatamente alcuni punti trattati velocemente per necessita di brevita nella stesura del documento stesso. Questo lavoro si basa su un algoritmo comparso in [Overveld 93], chiamato Shrinkwrap, per la costruzione di una poligonizzazione adattativa di superci implicite che godono di particolari proprieta. Lo scopo di questa tesi e di proporre una modica e un ampliamento dell'algoritmo in grado di trattare indistintamente qualsiasi tipo di supercie implicita. Le superci utilizzate nel seguito sono denite come superci equipotenziali di un campo scalare generato da uno scheletro di base. Le superci equipotenziali sono una importante classe di superci implicite e assumono un ruolo signicativo nel campo della graca al computer per la modellazione, l'animazione e la visualizzazione. Allo stesso tempo, diverse superci di un certo interesse nel campo della pura matematica, della sica e della chimica sono superci equipotenziali; si consideri, ad esempio, la distribuzione di tensione in una parte meccanica oppure la distribuzione di pressione in un uido contenuto in un recipiente. 5 1 { Introduzione Recentemente un interesse crescente verso le superci implicite puo essere riscontrato nel campo del disegno geometrico assistito al calcolatore (CAGD, Computer Aided Geometric Design). La ragione di cio e data dal fatto che alcuni problemi nel processo di modellazione geometrica possono essere risolti solo con sforzi notevoli utilizzando superci in rappresentazione parametrica, mentre gli stessi possono essere risolti in maniera relativamente semplice utilizzando la forma implicita. Tipici problemi di questo genere sono, ad esempio, la costruzione di superci di fusione (blending surfaces) che uniscano due o piu superci date, oppure la costruzione di una supercie di oset rispetto ad una supercie data. Contrariamente all'interesse dimostrato e confrontata con l'abbondanza di letteratura sulle superci parametriche, sono ancora relativamente pochi gli studi sulle superci in forma implicita. Gli articoli citati qui di seguito costituiscono una summa dei lavori disponibili, al momento, sull'argomento. In [Schmidt 93] la supercie implicita e denita come l'insieme dei valori per cui e nulla la funzione f : R ! R, dove la funzione f puo essere polinomiale, trascendentale oppure puo essere denita in maniera procedurale, con l'unica richiesta di continuita per f . Lo svantaggio maggiore che introduce questo metodo e la dicolta di controllare la forma della supercie, in quanto gli eetti generati dai parametri non sono in genere intuibili. In [Wyvill 86] viene descritto un approccio per modellare, visualizzare e animare i cosiddetti soft objects, oggetti o insiemi di oggetti rappresentati da un campo scalare. In pratica la supercie che denisce l'oggetto e una supercie isopotenziale del campo stesso (cioe la regione dello spazio in cui la funzione che denisce il campo ha valore costante) ed e generata a partire da un insieme di funzioni elementari che agiscono localmente, rendendone piu intuitivo l'utilizzo rispetto a funzioni algebriche. Approcci simili si possono trovare in [Blinn 82] e [Bloomenthal 90]. Witkin, in [Witkin 94], propone invece un sistema a particelle per generare e controllare superci implicite in movimento. Tali particelle vengono legate alle superci attraverso semplici regole e il comportamento del sistema e determinato dalle equazioni dierenziali che specicano il movimento dell'insieme di particelle. Uno svantaggio signicativo della rappresentazione di superci in modo implicito e dato dal fatto che in genere e abbastanza dicile visualizzarle e ombreggiarle. Questa dicolta e uno dei piu grandi ostacoli che limitano l'utilizzo della forma implicita rispetto a quella parametrica. I metodi utilizzati per la visualizzazione sono principalmente due: il primo e quello di utilizzare il ray tracing ([Holmstrom 89]), una tecnica che permette di produrre immagini fotorealistiche; tuttavia, trovare l'intersezione di un raggio con una supercie implicita e spesso un compito arduo, e la quantita notevole di calcoli richiesti ne pone restrizioni all'uso. In piu il risultato nale che si ottiene e costituito solamente da un insieme di punti i cui attributi dipendono dalla particolare vista scelta; cambiando il punto di visione bisogna rifare 3 6 1 { Introduzione tutti i calcoli, ed e quindi impensabile utilizzare il ray tracing in applicazioni real time. Il secondo metodo consiste nella conversione delle superci implicite in strutture poligonali che la approssimino e che possano successivamente essere ombreggiate; un ulteriore vantaggio di questa tecnica e quello di poter disporre di una completa approssimazione in tre dimensioni della supercie implicita, che permetta cosi di avere velocemente viste da posizioni arbitrarie senza la necessita di risolvere la funzione implicita tutte le volte. In piu e possibile applicare alla struttura creata diverse tecniche di post-processing, come ad esempio lo smoothing ([Cohen 94]), che genera una struttura regolare a partire da un insieme di poligoni irregolari, o la free form deformation ([Sederberg 86]), che permette di deformare oggetti sia localmente che globalmente. In seguito si fara riferimento a questa tecnica col termine poligonizzazione ([Bloomenthal 87]). L'idea di base di tutte le tecniche di poligonizzazione esistenti e una suddivisione appropriata dello spazio in analisi, mediante una griglia uniforme di elementi cubici o tetraedrici. La funzione viene campionata nei vertici degli elementi di base e l'approssimazione poligonale viene generata a partire dagli elementi i cui vertici non sono tutti interni o tutti esterni alla supercie. Questo metodo comporta diversi svantaggi. In primo luogo si introduce una divisione dello spazio piuttosto che una tassellatura della supercie da poligonalizzare. Specialmente nel caso di animazioni, questo puo causare eetti ondulatori sulla supercie in movimento rispetto alla griglia di riferimento, che e ssa nello spazio. In piu, se questa e troppo larga, alcune piccole peculiarita della supercie possono non essere evidenziate. In secondo luogo questi algoritmi creano una incoerenza tra il numero di triangoli generati e la complessita della supercie da approssimare: la stessa densita di faccette viene infatti usata per regioni ad elevata curvatura e per parti della supercie relativamente piatte, dando origine complessivamente ad un gran numero di faccette. Per rendere il processo di poligonizzazione piu eciente, Bloomenthal ([Bloomenthal 88]) descrive un metodo adattativo che utilizza un octree, una struttura ad albero di grado otto. La radice dell'albero si riferisce in genere all'intero volume e punta ad altri otto nodi, corrispondenti alle parti in cui esso e stato diviso. Ognuno di questi otto nodi puo quindi puntare ad altri otto sottonodi relativi alle otto parti di ogni sottovolume. Per rendere adattativa la poligonizzazione, la suddivisione dei sottovolumi si basa sulla curvatura della supercie da approssimare. Questa tecnica riduce eettivamente il numero di poligoni generati, ma puo essere sfruttata pienamente solo se la regione piatta cade interamente in un ottante. La maggior parte di questi metodi, inoltre, assume implicitamente che la supercie in esame sia regolare, oppure che il processo di suddivisione possa essere spinto ad un punto tale da consentire di avere una intersezione non ambigua con la supercie. 7 1 { Introduzione In [Schmidt 93] viene mostrato come in alcuni casi queste assunzioni non siano valide, e viene proposta un'estensione del lavoro di Bloomenthal in grado di trattare singolarita della supercie. Un ultimo limite di queste tecniche e dato dal fatto che la supercie creata non dispone di un proprio sistema di coordinate, il che rende abbastanza dicile, ad esempio, l'applicazione a tali strutture di una texture mapping. L'algoritmo Shrinkwrap introduce un dierente approccio al problema. Le superci implicite vengono denite come superci equipotenziali generate da uno scheletro di base che ha lo scopo di modellare gli "oggetti" di interesse, cioe le superci isopotenziali stesse. Tale scheletro e composto da una serie di elementi, ad ognuno dei quali e associata una funzione di campo fi. La supercie S e denita dall'insieme di punti p 2 R che soddisfano f (p) = 1, dove f e data dalla somma delle funzioni di campo degli elementi che compongono lo scheletro. Tali elementi possono essere rappresentati da diverse entita geometriche (punti, linee, superci, ecc...), anche se nel seguito della trattazione verranno considerate come primitive solo i punti. L'algoritmo genera una struttura approssimante triangolare che e adattativa al comportamento locale della supercie piuttosto che essere imposta a priori da una suddivisione dello spazio, nel senso che la lunghezza dei lati dei triangoli componenti la struttura varia secondo la curvatura locale della supercie sottostante; quindi, parti della supercie relativamente piatte saranno costituite da triangoli piu larghi rispetto a regioni ad elevata curvatura. Come ulteriore vantaggio, risulta abbastanza semplice assegnare alla struttura creata un sistema di coordinate proprio. L'idea di base di questo algoritmo e abbastanza semplice. Invece di costruire direttamente una approssimazione per la supercie nale f (p) = 1 si puo partire da una supercie ad un potenziale piu basso. Successivamente si procede per passi attraverso potenziali via via crescenti no ad arrivare alla congurazione nale, adattando la struttura alle superci intermedie. Quando, al crescere del potenziale, cresce anche la curvatura della supercie, le regioni corrispondenti saranno composte da un numero maggiore di faccette. Questo algoritmo impone pero una importante limitazione data dal fatto che non puo trattare con tutti i tipi di superci. Infatti a causa del metodo utilizzato, superci contenenti singolarita non sono approssimabili, o, per essere piu precisi, non sono trattabili congurazioni dello scheletro di base che introducano punti critici all'interno del campo di potenziale. Partendo dall'algoritmo di base presentato in [Overveld 93] e analizzando in modo piu dettagliato i casi in cui non e applicabile, verra proposto un nuovo algoritmo in grado di poligonizzare superci isopotenziali aventi caratteristiche diverse; inoltre tale modica mantiene intatta la losoa di base dell'algoritmo originario. Il 3 8 1 { Introduzione capitolo 2 introduce l'algoritmo Shrinkwrap; il capitolo 3 descrive piu specicatamente i problemi di tale algoritmo e i casi in cui si presentano; nel capitolo 7.1 vengono presentate le modiche apportate all'algoritmo originale. Nel capitolo 7.3 vengono tratte le conclusioni nali, e, inne, l'appendice A contiene il documento di ricerca conclusivo di questo lavoro, rilasciato alla Technische Universiteit Eindhoven (Olanda). 9 2 L'algoritmo Shrinkwrap Presentiamo ora l'algoritmo iniziale, che produce una poligonizzazione di una supercie implicita isopotenziale, denita da un insieme di elementi di base. Contrariamente agli approcci precedenti, basati su una struttura a griglia, la locazione dei punti della struttura approssimante e arbitraria e i triangoli che la compongono sono di dimensioni e forme dierenti secondo la curvatura della supercie sottostante. In piu e possibile determinare il grado di accuratezza di tale approssimazione. Nei capitoli seguenti viene brevemente introdotto l'algoritmo Shrinkwrap; nel paragrafo x2.1 vengono introdotti dei prerequisiti matematici necessari per l'esposizione dell'algoritmo; il paragrafo x2.6 presenta l'algoritmo vero e proprio, mentre nel capitolo x2.7 viene presentata una breve analisi quantitativa dei risultati ottenuti. 2.1 Approssimazione della supercie Prima di introdurre i concetti che sono alla base dell'algoritmo e necessario fare due osservazioni. In primo luogo, costruendo una tassellatura adattativa per la supercie, il parametro piu ovvio come indicatore della risoluzione della tassellatura e la curvatura locale della supercie. In molti casi una misura di questa curvatura locale (la curvatura Gaussiana) puo essere calcolata analiticamente. Quando pero la supercie viene approssimata da un certo insieme di campioni connessi da una qualche struttura, l'interpretazione da dare al valore della curvatura nei punti considerati non e del tutto chiara. Per esempio, la supercie potrebbe avere una elevata curvatura tra due campioni adiacenti ma, se fosse piatta in un intorno dei medesimi, potremmo non accorgercene e la struttura creata potrebbe non rispecchiare fedelmente le caratteristiche della supercie sottostante. 10 2 { L'algoritmo Shrinkwrap Per permettere all'algoritmo di essere il piu generale possibile, invece della curvatura Gaussiana (che e un attributo della supercie che vogliamo approssimare), vengono utilizzati dei parametri della struttura generata e successivamente vengono dedotte delle stime sulla deviazione massima tra la supercie e la struttura stessa. Una seconda osservazione riguarda le primitive usate per la tassellatura. La scelta migliore, per diversi motivi, sembra essere quella di utilizzare primitive triangolari: un triangolo ha il minor numero possibile di gradi di liberta (9 coordinate dei vertici), e sempre convesso e giace sempre su un piano. Percio si puo introdurre una struttura triangolare in cui ogni triangolo approssimi una sezione della supercie globale. Come conseguenza, l'analisi dell'errore implica l'uso della geometria dierenziale delle superci; per aggirare alcune delle dicolta tecniche che questa introduce le corde verranno considerate come approssimazioni di curve sulla supercie equipotenziale. Questo signica che l'approssimazione della struttura sara costituita da una struttura triangolare, ma l'analisi dell'errore verra eettuata sui lati dei triangoli, cioe le corde, invece che sui triangoli stessi. Considerando queste due osservazioni, possiamo enunciare una serie di concetti di base; , and Lmax sono parametri reali usati per caratterizzare l'algoritmo. la supercie e denita da f (r) = 0, dove r 2 R . una corda e una quadrupla (a;b;na;nb) 2 R R R R , dove f (a) = f (b) = 0, na = rf (a) e nb = rf (b). la supercie e detta accettabile se e solo se per ogni corda della supercie 6 (na ;nb ) ja , bj, dove 6 (p;q ) e l'angolo tra p e q . una corda e accettabile solo se 6 (na;nb) e ja , bj Lmax un triangolo, composto da tre corde, e chiamato accettabile solo se tutte e tre 3 3 3 3 3 le corde sono accettabili. L'algoritmo cerca di costruire una struttura composta da triangoli accettabili. Di seguito vengono introdotti alcuni lemmi utilizzati per la stima dell'errore della tassellatura come approssimazione della supercie. In questi lemmi viene fatto uso della cosiddetta approssimazione di curva piana, che assume che, per ogni corda, le normali na e nb e la stessa corda siano coplanari. In questo modo una corda introduce un segmento di curva piana, p(t) situata nella supercie f (r) = 0 tra i punti a e b, perpendicolare in questi punti rispettivamente a na e nb. La curva piana introdotta viene chiamata l'ombra della corda perche puo essere vista come l'ombra generata dalla corda sulla supercie se illuminata da una sorgente luminosa posta sul piano a cui appartengono la corda e le normali nei suoi estremi. Si assume che la corda sia parametrizzata dalla sua lunghezza d'arco. 11 2 { L'algoritmo Shrinkwrap Piuttosto che derivare asserzioni sulla massima deviazione tra punti della struttura triangolare e punti della supercie implicita, si possono derivare asserzioni sulla massima deviazione tra le corde della struttura e le loro ombre. In questo modo le ombre servono da concetto intermedio tra la tassellatura e la supercie equipotenziale. 2.1.1 Cos'e una supercie accettabile Per la prova dei seguenti lemmi si prega il lettore di fare riferimento a ([Overveld 93]). Il primo lemma collega la proprieta di accettabilita di una supercie con la massima curvatura dell'ombra di una qualsiasi corda. Lemma 1 In una supercie accettabile, la curvatura jp(t)j per ogni ombra di corda p(t) e sempre minore o uguale a 2.1.2 Stima dell'errore in caso di curvatura monotona Assumendo che per una data corda la sua ombra abbia una curvatura monotona (cioe che sia dappertutto 6 (p;_ p) = =2, o, per dirlo diversamente, che la corda e la sua ombra formino una regione convessa), il lemma 2 fornisce un limite superiore per la deviazione relativa tra una corda e la sua ombra. Lemma 2 Nel caso una corda abbia un'ombra monotona, la deviazione relativa massima e 12 tan 2 : Si noti che questo risultato vale indipendentemente dal valore di e che, al diminuire di , la deviazione massima sara sempre piu piccola. 2.1.3 Stima dell'errore nel caso generale Innanzitutto bisogna far notare che la deviazione relativa massima puo essere illimitata nel caso di superci autointersecanti, come si puo vedere in g. 2.1a. Se la supercie non e autointersecante (e questo e il caso delle superci equipotenziali che stiamo trattando), la deviazione massima e illimitata solo se la curva ha una tangente che e perpendicolare alla corda, come mostrato in gura 2.1b. Si puo dimostrare che, dato un valore massimo per la curvatura di un'ombra di corda, si puo determinare una lunghezza massima Lmax per la corda, in modo tale che, se tutte le corde sono accettabili rispetto a Lmax, non si presentino situazioni in cui la tangente e perpendicolare alla corda e quindi non ci siano deviazioni illimitate. 12 2 { L'algoritmo Shrinkwrap nB nA nB nA B B A A (a) (b) Figura 2.1. Errore illimitato nel caso di superci autointersecanti (a) e nel caso di superci non autointersecanti (b). Lemma 3 Se Lmax (1 , sin =2), non ci sono deviazioni illimitate. 2 Il lemma 4 da un limite superiore per la deviazione relativa massima nel caso di una corda di lunghezza minore di Lmax. Lemma 4 Nel caso di una supercie non autointersecante, la deviazione relativa p tra una corda e la sua ombra e minore o uguale a , 1+cos( 2 ) 1 sin( 2) , 3 Riassumendo i risultati dei lemmi introdotti precedentemente, abbiamo: data la supercie equipotenziale che vogliamo poligonizzare, determiniamo il parametro ; utilizzando il lemma 2 calcoliamo un valore di che assicuri una data tolleranza relativa in regioni monotone della supercie; il lemma 3 ci permette quindi di calcolare un Lmax che eviti il vericarsi di errori non limitati; dato il lemma 4 fornisce un limite superiore all'errore in qualsiasi punto della supercie. 13 2 { L'algoritmo Shrinkwrap 2.2 Un algoritmo per arrivare ad una struttura triangolare accettabile Una carica puntiforme e una tupla (R;) dove R e un punto in R e e la sua carica. Il potenziale dovuto a questa carica nel punto r e (2.1) f (r) = jr , Rj 3 che La supercie equipotenziale al valore di potenziale 1 e l'insieme dei punti r tali 1 = jr , Rj oppure fr 2 R jjr , Rj = g 3 in altre parole e una sfera centrata in R di raggio . Una distribuzione di cariche e un insieme di N cariche puntiformi (e possibile comunque generalizzare utilizzando altri tipi di primitive come linee, triangoli, quadrilateri, ecc: : : ) f(Ri;i) 2 R Rji = 0 N , 1g 3 Per un insieme di cariche distribuite nello spazio, la supercie equipotenziale e data da X fr 2 R j jr ,iR j = 1g i i 3 Le superci equipotenziali possono avere forme abbastanza complicate. Nel capitolo 2.1 abbiamo ricavato dei criteri per stabilire se un insieme di corde approssima sucientemente una supercie. Rimane da discutere: come ottenere dei vertici sulla supercie. come garantire che venga generata una supercie chiusa. come garantire che questa supercie sia approssimata soltanto da corde accettabili. Dopo aver introdotto questi punti nei paragra x2.3, x2.4, x2.5, nella sezione x2.6 viene presentato l'algoritmo completo. 14 2 { L'algoritmo Shrinkwrap 2.3 Come ottenere dei vertici sulla supercie La tavola A.1 rappresenta una sezione bidimensionale di una distribuzione di cariche; i colori indicano il valore del potenziale nei vari punti. Osserviamo che le superci equipotenziali X fr 2 R j jr ,iR j = V g i i 3 0 con V < 1 (cioe le superci che passano dal viola al giallo) hanno una forma che e meno avviluppata, mentre le superci equipotenziali con V > 1 lo sono di piu. Il caso estremo della prima situazione e V = 0, che produce una sfera di raggio innito. Guardiamo piu attentamente la relazione tra V e la massima curvatura della supercie equipotenziale. La curvatura della supercie si puo calcolare come una matrice C, dierenziando due volte la funzione f (r): X C = r : rf (r) = jr ,iR j Ai i i 0 0 0 0 5 dove jr , Rij , 3Ti xx ,3Ti yx ,3Ti zx ,3Ti xy jr , Rij , 3Ti yy ,3Ti zy Ai = B@ ,3Ti xz ,3Ti yz jr , Rij , 3Ti zz 0 2 ; 2 ; ; ; ; ; ; 2 ; 1 C A ; e ad esempio Ti xx = (r:x , Ri :x)(r:x , Ri:x) ; Essendo jr , Rij = Ti xx + Ti yy + Ti zz , nessun elemento di Ai e in valore assoluto piu grande di 3jr , Rij e quindi ogni elemento c di C e limitato da X jcj 3 jr ,iR j (2.2) i i 2 ; 2 ; ; 3 Considerando un punto r sulla supercie a potenziale V , si ha X i = V i jr , Ri j 0 0 Se tutti i i sono non negativi, per tutti gli i abbiamo jr , Rij > Vi 0 15 2 { L'algoritmo Shrinkwrap Utilizzando questo risultato in (2.2) otteniamo: X i jcj 3 ( =V i ) i oppure X jcj 3V 1 i i 0 3 0 3 2 Quindi, la curvatura massima della supercie si riduce drasticamente se si riduce V , e come conseguenza anche si riduce. Da questa osservazione si puo trarre il seguente procedimento per ottenere dei vertici sulla supercie determinata da V = 1. Per prima cosa bisogna trovare dei vertici su una supercie equipotenziale ad un valore piccolo rispetto a V . Dal momento che quest'ultima supercie ha dappertutto una curvatura molto minore, questo dovrebbe essere relativamente facile. Successivamente si puo incrementare in piccoli passi V no al valore V = 1, spostare i vertici sulle superci isopotenziali intermedie e, se necessario, modicare l'insieme delle corde in modo da mantenere una struttura poligonale costituita da sole corde accettabili. Se gli incrementi di V sono abbastanza contenuti, lo sono, di conseguenza, anche gli incrementi della curvatura massima e ogni passo successivo dovrebbe risultare abbastanza semplice. In piu, utilizzando questo approccio a passi, possiamo utilizzare una espansione di Taylor troncata al primo ordine per calcolare la nuova posizione di un vertice quando il valore di V viene incrementato di una quantita V . Si assuma che r sia sulla supercie f (r) = V , e quindi sia f (r) = V ; stiamo cercando una nuova posizione, r + , tale che 0 0 0 0 0 0 0 0 0 f (r + ) = V + V 0 Una espansione di Taylor attorno a = 0 da: f (r + ) = f (r) + rf (r) + O(jj ) = V + V 2 0 oppure considerando che f (r) = V 0 V = rf (r) Questo pero non ci dice in che direzione debba essere preso . Una scelta ragionevole puo essere = rf (r) 16 2 { L'algoritmo Shrinkwrap che da come risultato: = rf (rV ) rf (r) La nuova posizione e quindi data da: rf (r) r + rfV (r) rf (r) (2.3) 2.4 Come ottenere una supercie chiusa La piu semplice struttura chiusa costituita da poligoni consiste in un tetraedro, composto da 4 vertici, 4 triangoli e 6 corde. Come alternativa puo essere usato un ottaedro, che ha 6 vertici, 8 triangoli e 12 corde. Nel caso che una o piu delle corde non siano accettabili, devono essere divise. La gura 2.2 mostra come un triangolo possa essere diviso in triangoli piu piccoli. Nel caso della divisione di due corde sono possibili due alternative: nel caso jMAB , C j < jMBC , Aj la nuova corda sara MAB , C , altrimenti sara MBC , A. C C MBC MBC B B A A C C B MAB A C MAC MBC MBC B B A MAB A C MAC MBC B B MAB A C MBC MBC A MAB MAB Figura 2.2. Lo schema di suddivisione dei triangoli. 17 2 { L'algoritmo Shrinkwrap Lo schema di suddivisione puo essere utilizzato per assegnare coordinate di supercie a tutti i nuovo vertici creati. Supponendo che ai 4 o 6 vertici originali siano state assegnate delle coordinate superciali, le coordinate superciali che devono essere assegnate ad un nuovo vertice m possono essere denite come la media delle coordinate superciali dei due vertici estremi dell'arco in cui m viene generato. 2.5 Come ottenere una tassellatura accettabile Dalla denizione di corda accettabile sappiamo che il modo migliore per rimediare ad una corda non accettabile e quello di dividerla, generando un nuovo vertice che si trovi sulla supercie equipotenziale. Un modo semplice per eettuare tale operazione e illustrato nelle gure 2.3a-d. La corda di partenza e A , B in gura 2.3a; M e il punto medio della corda A , B . Le curve punteggiate rappresentano la direzione del gradiente del campo vicino alla supercie equipotenziale. Se spostiamo il punto M secondo l'equazione (2.3), arriviamo in M 0 , come indicato dalla linea tratteggiata. Bisogna notare che in genere M 0 non si trovera esattamente sulla supercie, dal momento che si utilizza solamente una approssimazione lineare per f (r). Per avvicinare il punto alla supercie, bisogna iterare (2.3) no a che non lo si possa considerare sucientemente vicino; la corda B , M 0 sara molto probabilmente accettabile, anche perche e molto piu piccola del necessario, mentre molto dicilmente lo sara M 0 , A. Percio, come illustrato in gura 2.3b, dobbiamo ripetere il processo sulla corda A , B . Alla ne otterremo un gran numero di piccole corde superue, come illustrato in gura 2.3d. La principale causa di questo comportamento e dovuta al fatto che vengono tratte informazioni sulla geometria e sui gradienti del campo dai punti M , M , ecc: : : , che possono essere lontani dalla supercie. Questo puo causare una lenta convergenza e la creazione di molte piccole corde non necessarie. Una strategia piu eciente deve utilizzare informazioni piu adabili, cioe informazioni derivanti da punti che si trovino gia sulla supercie. Nella gura 2.4a la congurazione e identica a quella in gura 2.3a. Tramite le normali nei punti estremi, e possibile approssimare l'ombra della curva con una curva di Bezier p(t), dove t e la parametrizzazione d'arco. Tale curva passa per gli estremi A e B della corda ed e ivi perpendicolare alle normali nA e nB . Prendendo come punto M il punto medio parametrico di p(t), cioe p(1=2), e iterando (2.3), otteniamo un punto M che e verosimilmente piu vicino alla supercie equipotenziale del punto M in gura 2.3a; quindi, anche il gradiente calcolato in M e verosimilmente piu adeguato per ottenere corde accettabili del gradiente calcolato in M . In questo caso M , B puo gia essere considerata accettabile, mentre la corda A , C (come nell'esempio in gura 2.4b) puo aver bisogno di una ulteriore suddivisione. 1 1 1 1 1 1 1 1 1 2 1 2 1 1 1 18 2 { L'algoritmo Shrinkwrap nA nB M1 A nB nA B1 A B1 M2 M’1 M’2 (b) (a) nB nA nB nA A B1 M3 B3 A B1 M4 B2 B3 (c) M’3 B2 B3 B2 (d) M’4 Figura 2.3. Costruzione di un nuovo vertice ripetendo la suddivisione di una corda non accettabile e spostando il nuovo vertice lungo il gradiente del campo. nB nA A nB nA B1 B1 A M nC M’ M M’ (a) C (b) Figura 2.4. Costruzione di un nuovo vertice denito come il punto medio parametrico della curva passante per A e B e ivi tangente, rispettivamente, a nA e nB . 2.6 L'algoritmo Seguendo la notazione introdotta nelle sezioni precedenti, siamo ora in grado di scrivere l'algoritmo completo. I vertici sono deniti come quadruple (r;E;V;d) 2 R R R R ); l'attributo r e la posizione; E e il gradiente rf (r); V e il 3 3 3 19 2 { L'algoritmo Shrinkwrap valore del potenziale f (r), e d e il vettore di spostamento che deve essere applicato a questo vertice. Le corde contengono due riferimenti ai vertici negli estremi, e due riferimenti ai due triangoli adiacenti. In piu una corda ha associato un valore booleano n per indicare se e accettabile. La dierenza di potenziale V e una frazione del potenziale nale V , ad esempio V = V =10, e per V sara usato il valore V = 1. Usando queste convenzioni, l'interpretazione della carica e semplicemente "il raggio della sfera equipotenziale se fosse l'unica carica della distribuzione". L'insieme di vertici di partenza e costituito dai vertici dell'oggetto iniziale (un tetraedro o un ottaedro); si assume che esso sia sucientemente grande da essere esterno alla intera supercie equipotenziale per il valore iniziale 1=10. Tutti i vertici v hanno inizialmente v:V = 0, v:E punta radialmente verso l'interno, e v:d = v:E=(v:E v:E ). In prima approssimazione, l'algoritmo (in pseudo-Pascal) ha la seguente struttura: 0 0 begin end; 0 0 V0:=0; while V0 < 1.0 do begin V0:=V0+DeltaV; S1; f tutti i vertici sono sulla supercie; per ogni vertice v abbiamo v.V=f(v.r) v.E=grad f(v.r) v.d=(V0-v.V)*v.E=(v.Ev.E)g S2; f tutti i vertici sono sulla supercie; per ogni vertice v abbiamo v.V=f(v.r) v.E=grad f(v.r) v.d=(V0-v.V)*v.E=(v.Ev.E) tutte le corde sono accettabilig end; f tutti i vertici sono sulla supercie; tutte le corde sono accettabili e V0=1.0g dove S1 e: 20 2 { L'algoritmo Shrinkwrap for tutti i vertici v do repeat v.r:=v.r+v.d; v.V:=f(v.r); v.E:=grad f(v.r); v.d:=(V0-v.V)*v.E=(v.Ev.E); until jv.dj <Epsilon; e S2 e: azzerare l'etichetta di tutti i triangoli for tutte le corde c do begin c.n := "c non e` accettabile" f per decidere l'accettabilita` o meno di una corda, usare e1.E e e2.E come direzioni delle normali in e1.r e e2.r per gli estremi e1 ed e2 della corda g end; while ci sono corde non accettabili do begin for tutte le corde c con c.n := true do begin creare un nuovo vertice w per la corda c, come spiegato in x2.5; spostare w sulla supercie come in S1; etichettare i due triangoli adiacenti ad e; creare due nuove corde per i frammenti di c, c1 e c2; c1.n := "c1 non e` accettabile" c2.n := "c2 non e` accettabile" rimuovere la corda c; end; f tutte le corde inizialmente non accettabili sono state divise, ma nuove corde non accettabili possono essere state create g for tutti i triangoli etichettati t do begin dividere t come spiegato nella sezione x2.5; creare 2,3 o 4 nuovi triangoli; for tutte le nuove corde generate ci do ci.n := "ci non e` accettabile"; rimuovere il triangolo t; f tutti i triangoli delimitati inizialmente da corde non accettabili sono stati divisi, ma nuove corde non accettabili possono essere state generate g end; 21 2 { L'algoritmo Shrinkwrap end; 2.7 Risultati ottenibili Una breve analisi dei risultati ottenibili con questo algoritmo, puo essere eettuata tenendo conto del seguente fatto: un algoritmo di poligonizzazione come quello presentato, deve valutare una funzione implicita per un certo numero di punti nello spazio; l'ecienza di questo algoritmo, cosi come quella di altri algoritmi simili, dipende dal numero di queste valutazioni di funzioni implicite (IFE, Implicit Function Evaluations) mediate sul numero di triangoli generati (IFE Per Triangle - IFEPT). L'algoritmo introdotto nel paragrafo precedente, e stato implementato. Dall'analisi dei risultati ottenibili, si ricava che l'ecienza del metodo non e fortemente inuenzato dal numero di iterazioni utilizzate per raggiungere la supercie nale. Ad esempio, presa una istanza campione che permette di disegnare un pinguino, il numero ottimo di iterazioni e stato valutato in 7, che da come risultato in termini di IFEPTS 7,06. Se utilizzassimo un numero di iterazioni maggiore, ad esempio 11, otterremmo 8,38 valutazioni per triangolo; solo eettuando un numero di iterazioni molto piu grande (ad esempio 30) si avrebbe una sensibile riduzione dell'ecienza (circa 20,75 valutazioni per triangolo). La qualita del risultato nale, comunque, non e assolutamente alterata dal numero di iterazioni eettuata non appena l'algoritmo converge. Le tavole B.1 e B.2 illustrano due esempi dei risultati producibili. La prima tavola mostra un pinguino insieme alla struttura triangolare nale; qui l'adattativita dell'algoritmo e chiaramente visibile. Il collo e la parte interna delle gambe, ad esempio, sono composte quasi esclusivamente da triangoli molto sottili, mentre nella parte sferica della testa ne troviamo di piu aperti. Nelle regioni di maggior curvatura inoltre, la struttura triangolare ha una risoluzione piu elevata. L'aspetto nale del pinguino e sicuramente un po naif, ma il tocco artistico e una variabile dicilmente quantizzabile in termini matematici. La tavola B.2 mostra il comportamento della struttura in relazione ad una supercie quasi piatta: i triangoli che la compongono sono uniformemente distribuiti e quasi equilateri. I vantaggi che ore questo algoritmo sono pero limitati dal fatto che non permette di poligonizzare qualsiasi tipo di supercie isopotenziale. Infatti esso si basa sulla premessa che le superci in analisi non siano autointersecanti; purtroppo non e sempre possibile assicurare che questa condizione sia vericata. Occorre quindi capire quando e perche si presentano situazioni di tale genere e 22 2 { L'algoritmo Shrinkwrap in che modo occorre modicare l'algoritmo originale per tenerne conto. Questi temi saranno arontati nei successivi capitoli. 23 3 Limiti dell'algoritmo Come gia accennato in precedenza nell'introduzione e nel capitolo x2, l'algoritmo Shrinkwrap, a causa del metodo utilizzato per costruire una poligonizzazione adattativa, e in grado di operare solo con un sottoinsieme limitato di superci implicite. Le superci analizzate sono infatti denite come superci di livello di un campo scalare, generato da un insieme di elementi di base; per costruire una tassellatura della supercie isopotenziale scelta, avente un potenziale V , si parte da un oggetto iniziale che "avvolge" una supercie ad un valore molto minore di V e si procede a passi spostando i vertici su superci a potenziali maggiori, suddividendo per ogni passo le corde e i triangoli non accettabili secondo le speciche del paragrafo x2.5. Questo procedimento si basa pero sulla premessa che le superci in analisi non siano autointersecanti; tale assunzione deve essere vericata sia per le superci nali sia per quelle intermedie utilizzate dall'algoritmo. I problemi sorgono nei casi in cui la distribuzione delle cariche introduca dei punti critici all'interno del campo di potenziale, a causa dei quali le superci equipotenziali cambiano, al crescere del valore del potenziale, le loro caratteristiche geometriche e topologiche. E' possibile, ad esempio, che una singola supercie si scinda in due o piu superci separate oppure che una supercie aumenti il suo ordine di connessione (cioe si generi un vero e proprio buco al suo interno). Se si verica questa possibilita, occorre modicare la struttura approssimante generata in modo da mantenerla coerente con le nuove caratteristiche assunte dalla supercie isopotenziale; l'oggetto di partenza, un tetraedro o un ottaedro, e infatti una singola supercie chiusa semplicemente connessa. Se non si eettua questa operazione, una parte della struttura diventa irrimediabilmente non accettabile nel proseguimento del processo. Ogni suddivisione di triangoli e corde non accettabili dara luogo nuovamente ad un insieme di triangoli e corde non accettabili, bloccando l'algoritmo. 0 0 24 3 { Limiti dell'algoritmo Inoltre i cambiamenti delle superci isopotenziali passano attraverso superci autointersecanti, che rappresentano il punto di contatto tra le diverse congurazioni. Da questo deriva che alcune delle assunzioni fatte nel capitolo x2 non sono piu valide; ad esempio, si puo vericare una deviazione relativa illimitata anche se le corde hanno tutte una lunghezza minore di Lmax (si veda la gura 2.1). Nei prossimi paragra cercheremo di introdurre piu approfonditamente il problema. Nel paragrafo x3.1 verra denito cos'e un punto critico, quali sono le sue caratteristiche e quali sono i possibili cambianti della supercie; il paragrafo x3.2 spieghera come si comporta la struttura creata dall'algoritmo, mentre nel paragrafo x3.3 si spieghera in quali casi si possono considerare validi i lemmi utilizzati dall'algoritmo. 3.1 Cos'e un punto critico Un punto critico, o punto singolare, di una funzione implicita f (r) = 0, r 2 R , e un punto r in cui il gradiente della funzione e nullo, cioe 3 0 rf (r ) = 0 (3.1) 0 e det(Jr0 ) 6= 0 dove J e il Jacobiano di rf (r) ([Artley 65]). Si osservi come esempio la gura 3.1. Il punto critico generato dalla congurazione di cariche si trova nell'origine. Le due cariche hanno lo stesso valore di e sono disposte lungo l'asse z simmetricamente rispetto all'origine, per cui i contributi delle due sorgenti al gradiente nell'origine si annullano. La gura 3.1a mostra come appaiono nel piano yz le superci equipotenziali generate dalla distribuzione; l'andamento delle linee di usso e rappresentato in gura 3.1b. Un insieme di linee di usso si interseca nel punto critico, ma in questo punto supercie equipotenziale e linee di usso non si intersecano ad angolo retto: questa caratteristica e peculiare del comportamento di un punto critico e non si verica in nessun altro punto del campo scalare. Come si puo notare, la supercie isopotenziale che passa per il punto critico e autointersecante ed e l'unica con tale proprieta. Per ottenere una rappresentazione tridimensionale di entrambi i diagrammi, li si puo ruotare attorno all'asse z. I tipi di cambiamenti determinati nelle superci equipotenziali da punti critici sono essenzialmente riconducibili a due casi. Il primo e quello dato da congurazioni simili a quella mostrata in gura 3.1; inizialmente abbiamo una unica supercie 25 3 { Limiti dell'algoritmo z + z ρ y y + ρ Superfici equipotenziali (a) Direzione delle linee di flusso (b) Figura 3.1. Superci equipotenziali e linee di usso sul piano yz per due cariche equivalenti. equipotenziale che, riducendosi all'aumentare del potenziale, si spezza in due distinte superci. Nel punto critico la supercie si concentra in un unico punto Una rappresentazione tridimensionale di tali superci si puo trovare nelle tavole D.1-6. Un caso diverso e quello in cui si crea un "buco" nella supercie. Si consideri ad esempio la gura 3.2, in cui e mostrato un toro a densita di carica uniforme; anche in questo caso il punto critico e situato nell'origine (la somma di tutti i contributi al gradiente e nulla). Se facciamo una sezione dello spazio lungo il piano yz, la congurazione delle superci equipotenziali e delle linee di usso e simile a quella illustrata in g 3.1. In questo caso, pero, se vogliamo ottenere una rappresentazione tridimensionale, bisogna eettuare una rotazione dei due diagrammi lungo l'asse y. La supercie si concentra nel punto critico ma ora, invece di avere due superci distinte, quando il valore di potenziale supera quello del punto critico all'interno della supercie si forma un buco, e questa incrementa il suo ordine di connessione (tavole E.1-7). Possiamo quindi associare un "tipo" ad ogni punto critico a seconda del comportamento che determina nella supercie critica, cioe una singolarita puo essere un buco oppure una rottura. L'insieme delle corde non puo adattarsi ai cambiamenti della supercie ma deve essere necessariamente modicato. Occorre prima capire cosa succede in un intorno del punto critico. 26 3 { Limiti dell'algoritmo z d d d y d x Figura 3.2. Toro a densita di carica uniforme posizionato sul piano y = 0. 3.2 Comportamento della struttura triangolare Dopo aver analizzato qual'e il comportamento delle superci reali nell'intorno di un punto critico, dobbiamo vedere cosa succede alla tassellatura creata dall'algoritmo in corrispondenza dei cambiamenti topologici della supercie sottostante. Secondo le denizioni del capitolo x2, la supercie e approssimata da un insieme di triangoli i cui lati introducono sulla supercie una serie di curve piane, le ombre delle corde. Per la determinazione di tali curve si utilizza l'approssimazione di curva piana introdotta nel paragrafo x2.1. Chiamiamo per semplicita valore critico il valore del potenziale del punto critico e supercie critica la supercie corrispondente a tale potenziale. Consideriamo ora una congurazione di cariche che introduca nel campo un punto critico; si prenda ad esempio quella di gura 3.1. Le curve a potenziale crescente ottenute dall'intersezione delle superci isopotenziali con un piano passante per il punto critico e per le due cariche sono mostrate nelle gure 3.3, 3.4 e 3.5. Il comportamento di tali intersezioni, come gia mostrato nel paragrafo x3.1, e uguale per entrambi i tipi di punti critici. Sia V il potenziale della supercie e Vc il valore critico. Analizziamo il comportamento della corda A , B (appartenente alla struttura) al crescere di V . La supercie di gura 3.3 ha un potenziale minore del valore critico; gli estremi A e B della corda disegnata si trovano sulla supercie equipotenziale e la corda 0 0 27 3 { Limiti dell'algoritmo A B Figura 3.3. Supercie equipotenziale per V0 < Vc approssima correttamente una curva di supercie. A B Figura 3.4. Supercie equipotenziale per V0 = Vc Incrementando il valore di V no a Vc si raggiunge la supercie critica, mostrata in gura 3.4, che passa per il punto critico ed e autointersecante. I vertici A e B della corda di partenza, supponendo che essa sia accettabile e che quindi non venga divisa, vengono spostati sulla nuova supercie. A , B rappresenta ancora l'approssimazione di una curva sulla supercie. In gura 3.5 e invece rappresentata una supercie ad un valore appena maggiore del valore critico; la supercie si e spezzata in due superci distinte oppure ha incrementato il suo ordine di connessione. I punti A e B si trovano sulla supercie ma la corda non e piu coerente in quanto non approssima nessuna curva: la supercie vera e propria, infatti, e "sparita" da sotto la corda nel processo di contrazione. Allo stesso modo, anche i triangoli di cui la corda fa parte non approssimano piu nessuna regione della supercie. La supercie isopotenziale ha cambiato le sue proprieta geometriche mentre la struttura approssimante non e stata in grado di adeguarsi. 0 28 3 { Limiti dell'algoritmo A B Figura 3.5. Supercie equipotenziale per V0 > Vc Occorre far notare che la corda A , B puo ancora essere accettabile e in genere lo e, in particolare quando il potenziale della supercie e sucientemente vicino al valore critico. Questo perche i criteri di accettabilita si basano sui valori limite di e ; la supercie di g 3.5 ha in realta caratteristiche particolari. Questa situazione sara trattata nel paragrafo x3.3. 3.3 Validita dei lemmi Data la possibilita che si generino superci autointersecanti, vengono a cadere molte delle considerazioni di base fatte nel capitolo 2 durante la presentazione dell'algoritmo. Per mantenerne intatta la struttura e la losoa di fondo, occorre pero considerare validi i lemmi 3 e 4. Il lemma 3 stabilisce la lunghezza massima che puo assumere una corda in funzione di e anche non si verichino deviazioni illimitate mentre il lemma 4 fornisce un limite superiore per l'errore di approssimazione in qualsiasi punto della supercie. Occorre fare due importanti considerazioni. In primo luogo, come si vede in gura 3.4 la supercie equipotenziale puo essere autointersecante; facendo riferimento alla gura 2.1(a), questo signica che la deviazione tra la corda e la sua ombra non e limitata. Possiamo pero considerare il seguente fatto: l'oggetto iniziale e una struttura chiusa che avvolge "esternamente" la supercie ad un potenziale piccolo rispetto al valore nale; vertici e archi sono ripetutamente spostati su superci a potenziali crescenti, assicurando che ad ogni passo la struttura creata sia composta solo da corde e triangoli accettabili. Se la supercie iniziale non e autointersecante (e possiamo garantire che questa condizione sia sempre vericata, riducendone in caso di necessita il potenziale) si puo aermare intuitivamente che non si vericano deviazioni illimitate tra corde e superci. Infatti, dal momento che le corde sono 29 3 { Limiti dell'algoritmo inizialmente esterne alla supercie e le diverse superci sono sucientemente vicine, non si vericano casi in cui una corda diventi interna. In secondo luogo, nel punto critico la curvatura della supercie diventa molto elevata, al limite innita. Il parametro dell'algoritmo rappresenta la massima curvatura della supercie equipotenziale. Il valore scelto per tale parametro permette di determinare con precisione l'errore della approssimazione costruita ma, scegliendo un superiore al massimo valore di curvatura che si puo determinare nel processo di contrazione della supercie, si possono ottenere dei criteri di accettabilita troppo restrittivi; il valore di Lmax per la supercie critica, ad esempio, sarebbe (al limite) nullo o comunque estremamente piccolo, determinando nella struttura una elevata densita di triangoli. Per ovviare a questo problema possiamo considerare che in superci a potenziali leggermente superiori del valore critico (ad esempio Vc + c) la curvatura e elevata solo in un intorno ristretto del punto critico mentre altrove e limitata da un valore massimo che rispetti le caratteristiche descritte nel capitolo 2 (cioe, quando le superci si riducono all'aumentare del potenziale, si riduce in corrispondenza anche il raggio di curvatura). Questo signica che nell'intorno specicato del punto critico le relazioni introdotte non sono piu valide; possono quindi risultare accettabili alcune corde (come ad esempio la corda A , B in gura 3.5), che in realta non sottendono nessuna curva di supercie; per queste curve, inoltre, la tangente all'ombra e perpendicolare alla corda. Questa situazione si verica pero solo ad un potenziale maggiore del valore critico; no a quel punto le assunzioni fatte si possono ritenere valide. Allo stesso tempo i lemmi 3 e 4 continuano a valere per tutte le corde che eettivamente sottendono una curva di supercie anche quando la struttura non e piu corretta. Rimane quindi da discutere: come localizzare i punti critici introdotti dalla distribuzione di cariche; come assicurare che venga generata una supercie accettabile ad un potenziale maggiore del valore critico; come identicare la parte della struttura da eliminare. Dopo aver introdotto questi punti nei paragra x4.1, x4.3 e x??, nel capitolo x5 verra spiegato come si puo ricostruire una struttura corretta. 30 4 Singolarita e superci Nel capitolo precedente abbiamo dato una denizione di singolarita, spiegando quali caratteristiche determina nello spazio circostante. In particolare, le superci equipotenziali cambiano proprieta geometriche e topologiche quando il loro valore supera il potenziale del punto critico. Questo determina la comparsa nella struttura di corde non appartenenti alla supercie, che quindi devono essere eliminate. E' necessario percio conoscere il potenziale (e quindi la posizione) delle eventuali singolarita del campo introdotte dall'insieme di cariche che denisce la supercie. Utilizzando un metodo di ricerca per passi (il metodo di Newton-Raphson), e possibile trovare le radici del gradiente del potenziale partendo da vertici appartenenti alla struttura. Inoltre per ricostruire correttamente la supercie e necessario avere ulteriori informazioni sulla supercie reale, informazioni che si possono ricavare tramite una approssimazione della funzione di campo nell'intorno della singolarita. Si puo quindi enunciare in prima approssimazione una struttura denitiva dell'algoritmo che consideri tutti i problemi enunciati no ad ora. L'obbiettivo nale e quello di evidenziare e rimuovere l'insieme di corde della struttura triangolare che non fa parte della supercie isopotenziale e che dovra essere sostituito in modo che la struttura risulti corretta. Il paragrafo x?? introduce un possibile metodo per la marcatura di tale insieme. 4.1 Come si possono trovare i punti critici Data una distribuzione di cariche, e necessario calcolare se essa genera dei punti critici al suo interno. La ricerca di questi punti non puo pero essere eettuata in maniera esaustiva nello spazio; infatti il costo dovuto a questa operazione ne renderebbe impraticabile l'applicazione a distribuzioni molto complesse e, anche nei casi piu semplici, comporterebbe una drastica limitazione dell'ecienza dell'algoritmo. 31 4 { Singolarita e superci Un metodo piu ecace utilizza le caratteristiche della funzione stessa. La funzione f (r) denita come X f (r) = jr ,iR j i i e una funzione continua e ha derivata continua. Questo implica che in un intorno del punto critico, il gradiente della funzione tende, con continuita, al valore zero. Il metodo di Newton-Raphson fornisce un modo molto eciente per trovare le radici di una funzione se si dispone di una ipotesi di partenza sucientemente buona; altrimenti, diverge in maniera altrettanto spettacolare: questo fatto fornisce una indicazione, anche se non ne e una prova, del fatto che in un intorno del punto prescelto non si trova nessuna radice dell'equazione. Nel caso generale, indichiamo con x il generico punto di partenza scelto e con F l'insieme delle N funzioni che devono essere azzerate nelle variabili xi;i = 1 N : Fi(x ;x ; : : :;xN ) = 0 1 i = 1;2; : : : N 2 Nell'intorno di x ogni funzione Fi puo essere espansa con una serie di Taylor Fi(x + x) = Fi(x) + N X j =1 @Fi x + O(x ) @xj j 2 che si puo scrivere, considerando l'insieme di tutte le funzioni, come F(x + x) = F(x) + x J + O(x ) dove J e il Jacobiano di F, cioe la matrice formata dalle derivate parziali @Fi=@xj . Tralasciando i termini di ordine superiore e ponendo F(x + x) = 0, otteniamo un 2 insieme di equazioni lineari che ci permettono di avvicinare l'argomento alla radice della funzione x J = ,F Le correzioni devono essere inne aggiunte al vettore di partenza: x n = xn + x (4.1) +1 iterando (4.1) no alla convergenza, dove x = ,F J, 1 32 4 { Singolarita e superci ([Press 86-2]). Nel caso particolare, siamo interessati a trovare le radici di rf , per cui la formula (4.1) diventa: xn = xn , rf (xn) J, +1 (4.2) 1 dove J e il Jacobiano di rf . Dei buoni candidati come punti iniziali, potrebbero essere i vertici appartenenti ad una supercie sucientemente vicina ad un punto critico in un suo intorno prestabilito. Infatti l'intersezione tra tale intorno e la supercie e una regione di minimo della lunghezza del gradiente. Per costruire questo intorno, pero, dovremmo sapere in partenza dove si trova il punto critico, e lo stessa osservazione si puo fare per la verica di una condizione di suciente vicinanza tra la supercie e il punto stesso. Sfruttando l'approccio a passi dell'algoritmo, si puo fare un discorso dierente. Ad ogni passo si puo costruire un insieme S di vertici componenti la struttura creata da utilizzare come punti di partenza per l'applicazione del metodo di NewtonRaphson. Non potendo disporre di ulteriori informazioni, il criterio di appartenenza all'insieme S sara determinato dalla lunghezza del gradiente nel vertice; si puo quindi determinare un valore soglia n per il quale, detto V l'insieme dei vertici della struttura, si abbia: S = fv 2 V jjrf (v)j < ng Il valore di n scelto deve essere tale da mantenere contenuta la dimensione di S , ma non troppo piccolo per evitare di escludere punti che potrebbero dare dei buoni risultati. Per determinarlo si puo operare essenzialmente in due modi: denire n come un parametro iniziale; calcolare n in base alle caratteristiche dell'insieme dei vertici della supercie. Il primo metodo e sicuramente il piu semplice, ma non e per niente essibile: il limite puo infatti diventare troppo piccolo o troppo grande, determinando insiemi vuoti o comprendenti tutti i vertici. Ricalcolando n per ogni supercie si puo stabilire a priori la dimensione di S , oppure fare in modo che la sua dimensione sia una determinata percentuale della dimensione dell'insieme V dei vertici di partenza. Siccome i livelli di potenziale sono tali per cui le superci successive non sono mai troppo distanti una dall'altra, questo metodo ha un'ottima probabilita di convergere verso i punti critici prima che il potenziale abbia superato il valore critico e quindi prima di dover intervenire sulla struttura. 33 4 { Singolarita e superci 4.2 Piani di simmetria della supercie Conoscendo la posizione del punto critico, e possibile determinare una approssimazione della supercie reale nelle sue vicinanze. Se facciamo una espansione di Taylor in un intorno del punto critico, indicato con c, i termini lineari si annullano (per la denizione stessa di punto critico), per cui otteniamo: XX @ f f (c + x) = f (c) + 12 @x @x xixj + h:o:t: 2 i i j j Sia J la matrice formata dagli elementi @ f=@xi@xj ; per il teorema di Schwartz, J e simmetrica reale e quindi si puo dimostrare che gli autovalori della matrice, e quindi anche gli autovettori corrispondenti, sono reali e, siccome c e un punto critico, Jc ha sia autovalori positivi che negativi. Inoltre, esiste una base ortonormale di J formata da autovettori. Possiamo eettuare un cambio di coordinate, considerando il punto c come nuova origine e gli autovettori di J come direzioni degli assi di un nuovo sistema di coordinate x0, y0 e z0. Scartando i termini di ordine superiore, la supercie equipotenziale puo essere approssimata, in un intorno del punto critico, con una quadrica. Possiamo avere due casi distinti. Se la matrice ha un autovalore negativo, abbiamo 2 0 0 0 f (x0;y0;z0) = f (0) + xa + yb , zd La supercie f (x0;y0;z0) = f (0) + per > 0 interseca il piano z = 0 in un'ellisse; nel caso = 0 il piano z = 0 e tangente alla supercie f (x0;y0;z0) = f (0), mentre la supercie f (x0;y0;z0) = f (0) e separata in due meta dal piano z = 0 nel caso in cui < 0. Se invece la matrice J ha due autovalori negativi, otteniamo 2 2 2 2 2 2 0 0 0 f (x0;y0;z0) = f (0) , xa , yb + zd In questo caso la transizione, all'aumentare di , e da un'ellisse a due superci separate. Le superci nei due casi dierenti per un positivo (e quindi per un potenziale maggiore del valore critico) sono rappresentate in gura 4.1. Nella gura 4.1a il punto critico genera un buco all'interno della supercie equipotenziale; questa, nell'intorno del punto critico, puo essere approssimata come un iperboloide ad una falda. Nel caso in cui la supercie subisca una frattura (gura 4.1b) nell'intorno del punto critico si puo approssimare con un iperboloide a due falde. I segni degli 2 2 2 2 2 2 34 4 { Singolarita e superci z z O y y x x (a) (b) Figura 4.1. autovalori sono stati assegnati in modo arbitrario, in modo che, in entrambi i casi, il piano z = 0 sia tangente al cono di transizione tra le due congurazioni. Gli autovettori di J, quindi, si possono considerare come i vettori perpendicolari ai piani di simmetria della supercie equipotenziale nelle vicinanze del punto critico e possono essere associati al punto critico stesso. Vedremo nei capitoli successivi come questa informazione sia necessaria per il processo di ricostruzione di una struttura corretta. Potrebbe anche vericarsi il caso in cui, invece di un punto critico, si generi una "linea critica"; questa situazione si verica, ad esempio, quando si hanno due linee parallele innitamente lunghe oppure un cilindro cavo innito. In questo caso uno degli autovalori e nullo. L'approssimazione fornita, tuttavia, ci puo ancora dare informazioni utili sul comportamento della supercie. Nel caso di due autovalori positivi otteniamo 0 0 f (x0;y0;z0) = f (0) + xa + yb La supercie f (x0;y0;z0) = f (0) + per < 0 e un'ellisse immaginaria, per = 0 si ottiene una linea (nel caso in esempio l'asse z) mentre per > 0 si ottiene un cilindro ellittico (gura 4.2). Nel caso di autovalori di segno diverso otteniamo 2 2 2 2 0 0 f (x0;y0;z0) = f (0) + xa , yb 2 2 2 2 35 4 { Singolarita e superci z O y x ε>0 ε=0 Figura 4.2. In questo caso la supercie di transizione (per = 0) e costituita da due piani intersecanti lungo l'asse z, e si ha un passaggio tra due cilindri iperbolici simmetrici rispetto ai piani intersecanti (gura 4.3). z O y x ε<0 ε=0 ε>0 Figura 4.3. 36 4 { Singolarita e superci Si potrebbe ancora considerare il caso di due autovalori nulli, ma anche la possibilita di averne uno e comunque solo teorica; non e pensabile infatti di avere, ad esempio, due linee innitamente lunghe. Nei casi pratici quindi, questa possibilita puo essere scartata; rimane da considerare il fatto che, in questo caso, l'approssimazione della supercie dovrebbe tenere conto anche dei termini di grado piu elevato. 4.3 Avvicinandosi al punto critico A questo punto possiamo enunciare in modo generale come sia possibile modicare l'algoritmo. I cambiamenti apportati non cambiano la losoa di base dell'algoritmo originario, ne il suo modo di procedere; in questo modo, per una supercie denita da un insieme di cariche che non generi punti critici, il risultato nale e identico a quello che si otterrebbe con la precedente versione. Supponiamo per il momento che vi sia al massimo una singolarita nel campo; successivamente vedremo cosa succede quando queste sono in numero maggiore. L'algoritmo Shrinkwrap procede a passi verso la costruzione della supercie nale semplicemente spostando vertici da una supercie a quella successiva e dividendo corde e triangoli non accettabili quando necessario. Esiste quindi un insieme di valori del potenziale a cui la supercie viene "ricomposta" e controllata; questo insieme viene determinato dal valore iniziale, da quello del potenziale che si vuole raggiungere e dal numero di passi in cui questo processo deve avvenire. Abbiamo visto nel paragrafo x3.2 come i cambiamenti delle proprieta della supercie si verichino per potenziali maggiori del valore critico. Il valore critico e il potenziale del punto critico: nel paragrafo x4.1 abbiamo presentato un metodo che procede in parallelo al processo di costruzione della tassellatura e che permette di calcolare la posizione nello spazio del punto critico. Conoscendone la posizione e suciente applicare ad esso la funzione f per calcolare il valore critico. Tenendo conto di cio si puo procedere nel seguente modo: 1. dati il valore iniziale e nale del potenziale e il numero delle iterazioni da eettuare, si costruisce una lista contenente l'insieme dei livelli di potenziale attraverso cui deve passare la supercie. 2. quando una supercie isopotenziale e stata raggiunta, si costruisce l'insieme S di vertici per un n appropriato e si applica ai vertici che ne fanno parte il metodo di Newton-Raphson. Se si trovano dei punti in cui si annulla il gradiente (al cui potenziale si ha una supercie autointersecante), si modica l'insieme dei valori di potenziale in modo da aggiungerne uno che sia superiore al valore critico, ma che sia sucientemente piccolo da permettere di costruire una tassellatura accettabile (come spiegato nel paragrafo x3.2). Questo valore puo 37 4 { Singolarita e superci essere marcato come "corrispondente ad un punto critico". Le informazioni relative al punto critico (posizione e assi di simmetria della supercie) vengono memorizzati in una tabella per essere utilizzati successivamente. 3. quando si raggiunge un valore corrispondente ad un punto critico si deve modicare la topologia della struttura creata perche assuma le stesse caratteristiche della supercie sottostante. 38 5 Superci di separazione L'introduzione del concetto di corda rossa permette di identicare la parte della struttura da rimuovere. Vedremo ora piu dettagliatamente quali sono le sue caratteristiche in funzione dei dierenti tipi di punti critici presenti. 5.1 Cosa fare delle corde rosse Partiamo da una struttura approssimante la supercie ad un valore Vc + c (dove Vc e il valore critico e c > 0) a cui sia stata applicata una marcatura corretta. Come abbiamo visto nel capitolo 4.3, tale marcatura determina un insieme di archi chiamati corde rosse e un insieme di triangoli, detti triangoli rossi, aventi almeno un lato marcato. A partire dall'insieme di triangoli rossi e possibile costruire un sottoinsieme T di vertici, chiamati rev (REd triangles Vertices). Denizione 5.1 Un vertice della struttura appartiene a T se e un vertice di un triangolo rosso. Tra gli elementi di T e possibile denire una relazione di vicinato. Denizione 5.2 Due rev si dicono vicini se esiste una corda che li connette che non e marcata come rossa. Siccome nella struttura esiste al piu una corda che connette due vertici, si ricava che due rev non sono vicini se sono uniti da una corda rossa. In gura 5.1 gli archi tratteggiati rappresentato gli archi marcati, mentre i triangoli rossi sono ombreggiati. Dalla denizione si ricava che i vertici A, B , C , D e E 39 5 { Superci di separazione C A R P D Q S B E Figura 5.1. Relazioni di vicinato tra rev sono rev ma non lo sono P , Q, R e S ; siccome gli archi C , D e D , E non sono marcati, D ha come vicini C ed E ma C non e vicino di E . Lo stesso discorso vale per A e B che sono vicini; non esistono altre relazioni di vicinato siccome tutti gli altri archi che connettono due rev sono marcati. Dall'insieme T si possono ricavare due sottoinsiemi (T e T ) caratterizzati dal fatto che un qualsiasi rev appartenente ad un sottoinsieme non ha nessuna relazione di vicinato con rev appartenenti all'altro sottoinsieme. Elementi di uno stesso insieme possono invece essere legati tra loro. Osserviamo la gura 5.2; i punti evidenziati rappresentano, nelle diverse situazioni che si possono presentare, gli elementi di T , mentre le linee tratteggiate indicano le corde marcate. Supponiamo di rimuovere queste corde: la supercie risultante non e piu chiusa e i rev determinano i bordi del taglio che ne ha causato l'apertura. Essi sono gli unici vertici della supercie aacciati verso lo spazio aperto e, come si puo vedere, sono divisi in due gruppi distinti che determinano, insieme agli archi che deniscono le relazioni di vicinato, due superci che d'ora in avanti chiameremo superci di separazione. Facendo riferimento al paragrafo 4.2, le superci di separazione si possono vedere come le intersezioni delle regioni denite da f (x0;y0;z0) f (0) + c (c > 0) con due piani di equazione z = k e z = ,k, cioe le superci in neretto di gura 5.3. Nelle tavole C.1 e C.2 sono riportate le strutture costruite dall'algoritmo nel caso di un buco e di una rottura. Queste superci sono pressoche identiche, mentre la supercie isopotenziale ha un comportamento diverso a seconda del tipo di singolarita. Il piano z = 0 divide lo spazio in due regioni ognuna delle quali contiene interamente una sola supercie di separazione e sara indicato come il piano separatore. Nel caso piu generale, l'equazione di tale piano e denita dagli assi di simmetria associati al punto critico. A partire dai sottoinsiemi di rev e possibile capire in maniera semplice qual'e il tipo della supercie di separazione; e importante pero che gli insiemi Ti godano di una particolare proprieta. 1 40 2 5 { Superci di separazione Revs Archi rossi Figura 5.2. Denizione 5.3 Un sottoinsieme Ti di T si dice corretto se tutti i suoi componenti hanno esattamente due vicini rev. Quello che potremmo aspettarci e che, data la struttura triangolare, i sottoinsiemi di T siano sempre corretti. Purtroppo non capita sempre cosi; e possibile infatti che si verichino casi simili a quello illustrato in gura 5.4, in cui un arco fa parte della struttura corretta ma emerge dal bordo della supercie di separazione. L'arco A non e' marcato; il rev numero 1 ha 3 vicini (e infatti connesso con altri tre rev 41 5 { Superci di separazione z z O y y x x (a) (b) Figura 5.3. attraverso archi non marcati), mentre il rev numero 2 ha un solo vicino (cioe il vertice 1). Questa situazione puo capitare, ad esempio, quando la distribuzione delle cariche e fortemente asimmetrica; la lunghezza delle corde emergenti e in genere molto ridotta. Se uno o piu dei sottoinsiemi di T non e corretto, modicando l'insieme delle corde rosse e possibile cambiare le caratteristiche di T e dei suoi sottoinsiemi nel modo seguente: per ogni rev con un solo vicino marcare come rosso la corda che li connette; per ogni rev con piu di due vicini, marcare come rossi tutti gli archi che lo connettono con rev aventi solo un vicino. Il vantaggio di avere dei sottoinsiemi corretti e che unendo i rev tra di loro nell'ordine stabilito dalle relazioni di vicinato, si forma una curva chiusa (la frontiera della supercie di separazione denita dal sottoinsieme); percorrendo le relazioni di vicinato tra rev del sottoinsieme si puo eseguire un ciclo tra tutti gli elementi del sottoinsieme stesso. 42 5 { Superci di separazione 1 A 2 Figura 5.4. 5.2 Caratteristiche dell'insieme T Nelle dierenti congurazioni i sottoinsiemi di T assumono caratteristiche diverse che possono essere sfruttate per stabilire il tipo delle superci di separazione. Quando si verica una rottura, i vertici appartenenti a superci di separazione diverse sono connessi tra di loro solamente da una serie di corde rosse. I rev appartenenti a ciascun sottoinsieme di T possono essere collegati tra di loro solamente da relazioni di vicinato; nessun altro tipo di collegamento e permesso. Una corda rossa, quindi, puo collegare solamente due rev appartenenti a due sottoinsiemi diversi. Le superci denite dai sottoinsiemi T e T sono interne alla struttura creata (gura 5.5). Quando si verica un buco, invece, i due bordi della rottura non hanno nessun tipo di interconnessione diretta. Due rev di sottoinsiemi dierenti possono essere collegati solo attraverso una catena di archi. Invece rev appartenenti allo stesso 1 43 2 5 { Superci di separazione la superficie definita da un sottoinsieme e’ interna alla struttura creata Archi rossi connettono solo revs appartenenti a sottoinsiemi differenti Superficie equipotenziale Figura 5.5. sottoinsieme possono essere connessi o da una relazione di vicinato, o da una corda rossa. Le superci denite da T e T sono parte integrante della struttura creata (gura 5.6) 1 2 5.3 Come stabilire il tipo delle superci di separazione Prendiamo un qualunque rev A appartenente ad un sottoinsieme Ti che sia anche un estremo di una corda rossa; chiamiamo B l'estremo opposto della stessa corda. Supponiamo che B appartenga ad un sottoinsieme Tj di T ; questa condizione potrebbe non essere vericata se i sottoinsiemi di partenza di T non sono corretti: infatti durante il processo di allargamento, alcuni vertici possono rimanere isolati (cioe avere connessioni con altri vertici solo attraverso corde rosse) e quindi non appartenere a nessun sottoinsieme di T . Nel caso il vertice B sia isolato, basta prendere, se esiste, un'altra corda rossa che abbia come estremo A, oppure cambiare vertice di partenza. Come spiegato in precedenza, dal momento che A e B sono connessi da una corda rossa ed entrambi appartengono ad un sottoinsieme di T , nel caso di una rottura A e 44 5 { Superci di separazione superficie equipotenziale due revs appartenenti a sottoinsiemi Le superfici definite dai sottoinsiemi diversi non hanno una connessione diretta di T fanno parte della struttura creata Figura 5.6. B appartengono a due sottoinsiemi dierenti, cioe i 6= j , mentre nel caso di un buco A e B appartengono allo stesso sottoinsieme (i = j ). In questo modo un semplice controllo sul sottoinsieme di appartenenza di due vertici ci permette di stabilire il tipo del punto critico, il tipo della supercie di separazione denita dal sottoinsieme Ti e quindi la modalita con cui andra ricostruita la struttura. Il metodo implementato e leggermente diverso: invece di dividere T in sottoinsiemi e poi stabilirne il tipo, assegniamo un tipo al sottoinsieme mentre lo costruiamo. Preso un arco rosso e chiamati A e B i suoi estremi (assicurandosi che nessuno dei due sia isolato) possiamo visitare i vicini di B . Eseguiamo un ciclo tra i rev del sottoinsieme partendo da B ; siano P ;P ::::Pj ;:::B i vertici visitati. Se uno dei Pi e A, allora A e B appartengono allo stesso sottoinsieme di T (per denizione, relazioni di vicinato possono esistere solo tra elementi dello stesso sottoinsieme) e il tipo della supercie di separazione e un buco. Se invece non incontriamo A, allora A e B appartengono a due sottoinsiemi diversi, che deniscono le superci di separazione di una rottura. 0 1 45 6 Come ricostruire una struttura corretta Nel capitolo precedente abbiamo visto come isolare la parte della struttura che deve essere rimossa, come creare un insieme di vertici chiamati rev e come dividerlo in sottoinsiemi costituenti i bordi delle superci di separazione della struttura. Abbiamo anche individuato come riconoscere, partendo da tali sottoinsiemi, il tipo di singolarita che si presenta nella supercie. Dobbiamo ora analizzare come e possibile riadattare la tassellatura generata al comportamento reale della struttura, osservando in principio il caso piu semplice in cui la distribuzione delle cariche genera un solo punto critico al suo interno, e successivamente il caso generale. 6.1 Distribuzioni con un solo punto critico Avendo stabilito il tipo delle superci di separazione, sappiamo in che modo dobbiamo agire per avere una struttura che rispecchi fedelmente le proprieta della supercie. Prima di eettuare questa operazione, pero, e necessario rimuovere tutti i triangoli marcati come rossi, le corde rosse e tutti i vertici isolati generati durante il processo di allargamento dell'insieme T . Questi ultimi sono collegati con altri vertici solamente attraverso corde rosse, e sono quindi attorniati solo da triangoli marcati che verranno eliminati nel corso del processo di rimozione. Tali vertici, pur appartenendo a T , non appartengono a nessun sottoinsieme di T . Devono inoltre essere eliminati tutti i riferimenti a corde, triangoli e vertici obsoleti . Quello che otteniamo alla ne del processo e una struttura aperta che deve essere chiusa a partire dalle superci di separazione denite dai sottoinsiemi di T . 46 6 { Come ricostruire una struttura corretta 6.1.1 Il piano separatore Per il processo di ricostruzione della struttura e necessario conoscere l'equazione del piano di separazione tra le superci denite dai sottoinsiemi di T . Questo risulta abbastanza semplice per le considerazioni fatte nel paragrafo x4.2, in quanto ad ogni punto critico abbiamo associato gli assi di simmetria della supercie nei dintorni del punto critico. Riferendosi alle gure 4.1.a-b, il piano separatore e denita dall'autovettore corrispondente all'autovalore avente un segno diverso dagli altri (nell'esempio citato, il piano separatore e per entrambe le congurazioni il piano z = 0). 6.1.2 Ricostruire una rottura Ogni sottoinsieme rappresenta il conne di una struttura aperta che deve essere chiusa con una calotta. I rev appartenenti a un sottoinsieme devono quindi essere connessi solamente con rev appartenenti allo stesso sottoinsieme, oppure con nuovi vertici generati, che pero costituiscano globalmente una regione chiusa. Il metodo piu semplice per eettuare questa operazione e quello seguente: 1. calcolare il centro del sottoinsieme (Ci = vj vj 2Ti n P dove n = jTi j ) 2. spostarlo sulla supercie equipotenziale iterando (2.3) 3. unire tutti i rev del sottoinsieme con Ci . Ci Ti Figura 6.1. 47 6 { Come ricostruire una struttura corretta Il risultato di questa operazione e mostrato in gura 6.1; il vantaggio di questo metodo e che viene generato un numero ridotto di triangoli. Infatti se la dimensione del sottoinsieme e n vengono generati n nuovi triangoli e 1 nuovo vertice. Creare il minimo numero di triangoli possibile non e in genere una buona soluzione; infatti buona parte delle nuove corde introdotte risulta non essere accettabile. In questo modo invece ci si assicura che il punto Ci si trovi sulla supercie equipotenziale e che le nuove corde introdotte siano piu verosimilmente accettabili. Il grosso svantaggio e invece che il centro del sottoinsiemi risulti avere almeno n vicini. Questo fatto puo rivelarsi negativo per l'applicazione di alcune tecniche di post-processing quando n diventa elevato. Si consideri ad esempio la tecnica del rilassamento. Essa consiste inizialmente nell'applicare ad un vertice un vettore di spostamento, determinato come la dierenza di posizione tra il vertice stesso il centroide dei suoi vicini, e quindi nel muovere la nuova posizione ottenuta sulla supercie; il centroide e il centro dell'insieme formato dai vicini del vertice in questione considerato come un poligono a n lati. Per tutti i vertici della supercie vengono calcolati i vettori di spostamento ideali, e successivamente vengono aggiunti (interamente o solo in parte) ai vertici originari. Lo scopo di questa tecnica e quello di far assumere ai vertici una distribuzione il piu uniforme possibile sulla supercie. Applicata al vertice Ci non ne cambia la posizione in quanto tale vertice e stato costruito proprio come centro dell'insieme formato dai suoi vicini. Inoltre l'aspetto della supercie attorno al vertice creato lascia molto a desiderare, perche la supercie forma una punta. Per ovviare a questo problema e per introdurre un'insieme di corde che segua piu dolcemente il prolo della supercie si puo procedere nel modo seguente: il centro del sottoinsieme viene calcolato come nel caso precedente, ma ora tra Ci e il sottoinsieme stesso viene creato uno strato intermedio di vertici. La dimensione di questo livello intermedio deve essere tale che, alla ne del processo di connessione, i suoi componenti e il centro del sottoinsieme abbiano all'incirca lo stesso numero di vicini. Questo passo puo essere cosi sintetizzato: 1. Stabilire un numero d'ordine per i rev appartenenti al sottoinsieme Ti (ad esempio si prenda un qualsiasi rev del sottoinsieme e gli si assegni l'indice 0, si scelga poi un verso di percorrenza, orario o antiorario, e si assegni un indice crescente ad ogni nuovo rev incontrato no al raggiungimento del vertice di partenza). Sia L l'insieme composto dai vertici appartenete al livello intermedio da costruire. Inizialmente L e vuoto. 2. per ogni rev del sottoinsieme avente un indice multiplo di jq k jTij calcolare il punto medio del segmento che unisce il vertice e Ci ; sia v il nuovo vertice creato (oppure sia v il punto medio parametrico della curva di Bezier 48 6 { Come ricostruire una struttura corretta passante per il vertice e per Ci e ivi tangente alle rispettive normali). spostare v sulla supercie e aggiungerlo a L. Per unire Ti e L si puo seguire il procedimento che verra utilizzato nel paragrafo x6.1.3, mentre Ci puo essere collegato con tutti i vertici di L. Figura 6.2. l jq km Se poniamo n = jTij e m = n= jTij , vengono creati m + 1 vertici e n + 2m triangoli. Il centro del sottoinsieme avra m vicini mentre ogni vertice del livello intermedio ne avra, in media, m +3. In gura 6.2 si puo vedere il risultato ottenibile in un caso molto semplice in cui jTij = 6 e m = 3. 6.1.3 Ricostruire un buco In questo caso il problema e piu complicato. La parte di supercie che deve essere costruita e una "striscia" compresa tra i due sottoinsiemi di T ; per costruirla, i rev di un sottoinsieme devono essere connessi solamente con rev dell'altro sottoinsieme, e gli archi di connessione non devono attraversare il buco. In termini matematici, questo signica che gli estremi A e B della corda devono appartenere alla stessa regione denita dal piano perpendicolare alla proiezione del vettore A , C (dove C e il punto critico) sul piano separatore; in altri termini il prodotto scalare tra le 49 6 { Come ricostruire una struttura corretta A C B Figura 6.3. proiezioni sul piano separatore dei vettori A , C e B , C non deve essere minore di zero (gura 6.3). Innanzitutto, bisogna prendere due vertici di partenza dai due sottoinsiemi; siano v 2 T e v 2 T i due vertici aventi la minima distanza tra di loro. Per il processo di triangolarizzazione del nastro occorrono ora due distanze d e d : 1 1 2 2 1 2 d =distanza tra v e v (dove v e il vicino di v in senso orario) d =distanza tra v e v (dove v e il vicino di v in senso orario). 1 1 + 2 + 2 2 2 2 + 1 + 1 1 L'arco corrispondente alla distanza minore e ripetutamente aggiunta alla struttura di connessione, no a quando il nastro triangolare non e chiuso. Se i sottoinsiemi di partenza hanno jT j + jT j = n otteniamo n nuovi triangoli (gura 6.4). 1 2 6.2 Distribuzioni con piu punti critici La soluzione discussa nel paragrafo x6.1 funziona bene nei casi semplici ma non permette assolutamente di trattare topologie piu complicate. Non e dicile, infatti, costruire delle distribuzioni di cariche in cui compaia un numero di singolarita arbitrario, nonche casi in cui piu punti critici abbiano lo stesso potenziale. Quattro cariche equivalenti poste nei vertici di un quadrato, ad esempio, generano quattro singolarita equipotenziali sui lati del quadrato e una quinta nel centro dello stesso. Bisogna quindi denire nuovi attributi da associare ai punti critici e ai sottoinsiemi di T che permettano al processo di ricostruzione della struttura di essere il piu generale possibile. 50 6 { Come ricostruire una struttura corretta T1 T2 Figura 6.4. jT1j = 5;jT2j = 4; la striscia e composta da 9 triangoli 6.2.1 Alcune denizioni Prima di spiegare come sia possibile trattare distribuzioni piu complesse, e opportuno introdurre alcune denizioni che saranno necessarie in seguito. Denizione 6.1 Un punto critico si dice attivo quando il valore della supercie equipotenziale V0 corrisponde al potenziale del punto critico stesso, cioe (per quanto spiegato in x4.3) V0 = Vc + c, dove Vc e il valore critico. I punti critici possono, quindi, non essere tutti attivi allo stesso istante. In piu, data l'introduzione da parte della distribuzione di cariche di un numero arbitrario di punti critici, l'insieme T risulta essere diviso in un numero arbitrario di sottoinsiemi. Inoltre in precedenza la singolarita presente era unica e tali sottoinsiemi si riferivano implicitamente ad essa; ora e necessario che ogni sottoinsieme abbia un esplicito riferimento ad un punto critico. Denizione 6.2 Un sottoinsieme Ti di T e un punto critico Pj sono collegati se Pj e il punto appartenente all`insieme dei punti critici introdotti dalla distribuzione di cariche che ha la distanza minore dal centro del sottoinsieme. 51 6 { Come ricostruire una struttura corretta A questo punto occorre fare una precisazione. A causa di approssimazioni di calcolo, i vertici non giacciono mai esattamente sulla supercie equipotenziale; questo puo introdurre perturbazioni nel processo di marcatura delle corde che possono portare a marcare come rosse delle corde che appartengono ancora alla supercie, generando dei sottoinsiemi di T corretti ma che non devono essere rimossi dalla struttura. Un arco marcato come rosso introduce infatti un sottoinsieme corretto composto da 4 rev (i vertici dei due triangoli adiacenti alla corda). Questa possibilita puo vericarsi nei casi in cui due singolarita, in regioni diverse della spazio, abbiano un potenziale molto simile: anche nel caso in cui la marcatura relativa a quella a potenziale maggiore sia corretta, abbiamo inserito un apposito valore di potenziale in cui deve essere analizzata. Bisogna quindi che anche i sottoinsiemi di T abbiano un attributo di attivazione: Denizione 6.3 Un sottoinsieme Ti di T e attivo al potenziale V se lo e il punto 0 critico Pj a cui Ti e collegato. Un altro problema, e quello di collegare tra loro le due superci di separazione relative ad un buco. Infatti, mentre i sottoinsiemi corrispondenti a delle rotture possono essere connessi singolarmente, quelli corrispondenti ad un buco devono essere accoppiati. Due sottoinsiemi deniscono le superci di separazione di un buco se sono collegate allo stesso punto critico e il prodotto scalare tra i vettori che connettono il punto critico e i centri dei due sottoinsiemi e minore di zero. 6.2.2 Ricostruire l'intera struttura Prima di tutto abbiamo bisogno delle seguenti strutture dati: una lista dei valori di potenziale per la costruzione della supercie equipoten- ziale nale; una lista (inizialmente vuota) che conterra gli eventuali punti critici deniti dalla distribuzione di cariche; una lista contenente gli elementi di T ; una lista di elementi contenenti le caratteristiche dei sottoinsiemi di T ; L'insieme dei punti critici viene aggiornato dall'applicazione del metodo di NewtonRaphson. Una volta che tale metodo converge dobbiamo: calcolare gli assi di simmetria della supercie corrispondente al valore critico; 52 6 { Come ricostruire una struttura corretta inserire i dati relativi al punto critico nella tabella relativa; modicare l'insieme dei valori di potenziale. Quando viene raggiunto un punto critico occorre: costruire l'insieme T ; dividerlo in sottoinsiemi; collegare ogni sottoinsieme ad un punto critico; stabilire l'attributo di attivazione per ogni sottoinsieme; collegare tra di loro i sottoinsiemi relativi a dei buchi; eliminare i triangoli e le corde rosse aventi un estremo appartenente ad un sottoinsieme attivo, e tutti i vertici isolati connessi attraverso un arco rosso ad un sottoinsieme attivo; per tutti i sottoinsiemi attivi, ricostruire la struttura a seconda del loro tipo come spiegato nei paragra x6.1.2 e x6.1.3. 53 7 L'algoritmo modicato Dopo aver introdotto i concetti di corde rosse, triangoli rossi, rev, siamo ora in grado di scrivere l'algoritmo completo. Questo verra presentato nel paragrafo x7.1; nel paragrafo x7.2 verranno presentati i risultati ottenibili con il nuovo algoritmo comparati con quelli della precedente versione. 7.1 Il nuovo algoritmo Riprendendo la notazione introdotta nel paragrafo x2.6, i vertici sono deniti come quadruple (r;E;V;d) 2 R R R R ); l'attributo r e la posizione; E e il gradiente rf (r); V e il valore del potenziale f (r), e d e il vettore di spostamento che deve essere applicato a questo vertice. P e l'insieme dei valori di potenziale; la funzione next estrae da P il prossimo passo da valutare. Ogni suo componente ha come attributi (V;cp), dove V e il valore di potenziale e cp specica se il valore e collegato ad un punto critico. T e l'insieme dei rev e i sottoinsiemi sono deniti come tuple (t;a;lc) dove t e il tipo del sottoinsieme, a e l'attributo di attivazione e lc e un riferimento alla lista collegata nel caso il tipo sia un buco. L'insieme C e l'insieme contenente i punti critici; questi sono deniti come vertici ma hanno in piu un riferimento ad una matrice M contenente i versori degli assi di simmetria della supercie nell'intorno del punto critico stesso. La funzione insert provvede ad inserire un elemento nell'insieme specicato. Nel caso tale insieme sia P , insert provvede anche a modicarne gli altri elementi. Come specicato nel paragrafo x4.3, inserendo un valore v:V dobbiamo eliminare tutti i valori presenti in un intervallo denito di v:V aventi attributo cp = 0, ponendone uno al limite inferiore di tale intervallo. Questo elemento puo essere ottenuto aumentando leggermente il potenziale di un elemento gia presente o, se questo non e possibile, inserendone uno nuovo. 3 3 3 54 7 { L'algoritmo modicato La dierenza di potenziale tra una supercie e la successiva e inizialmente denita come una frazione del potenziale nale V (con V = 1), ad esempio V n10; se la distribuzione delle cariche introduce dei punti critici questa dierenza puo variare. Inizialmente P contiene tutti i valori frazionari deniti di V . Nuovamente l'insieme di vertici di partenza e costituito dai vertici dell'oggetto iniziale (un tetraedro o un ottaedro); si assume che sia sucientemente grande da essere esterno alla intera supercie equipotenziale anche per il valore iniziale 1n10. Tutti i vertici v hanno inizialmente v:V = 0, v:E punta radialmente verso l'interno, e v:d = v:E=v:E v:E . 0 0 0 0 begin end; P=insieme dei passi di potenziale iniziali; f inizialmente tutti i componenti di P hanno l'attributo cp=0 g V0:=0; while P6= f;g begin V0:=next(P); S1; f tutti i vertici sono sulla supercie; per ogni vertice v abbiamo v.V=V(v.r) v.E=grad V(v.r) v.d=(V0-v.V)*v.E=v.E v.Eg S2; f tutti i vertici sono sulla supercie; per ogni vertice v abbiamo v.V=V(v.r) v.E=grad V(v.r) v.d=(V0-v.V)*v.E=v.E v.E tutte le corde sono accettabilig S3; f eventuali punti critici in vicinanza dei vertici della supercie sono stati trovati; l'insieme P e' stato modicato g if V0.cp=1 then S4; f tutte le corde e i triangoli della struttura sono coerenti con la supercie da approssimare g end; f tutti i vertici sono sulla supercie; tutte le corde sono accettabili e V0=1.0g dove S1 e: 55 7 { L'algoritmo modicato for tutti i vertici v do repeat v.r:=v.r+v.d; v.V:=V(v.r); v.E:=grad V(v.r); v.d:=(V0-v.V)*v.E=v.E v.E; until jv.dj <Epsilon; e S2 e: azzerare l'etichetta di tutti i triangoli for tutte le corde c do begin c.n := "c non e' accettabile" f per decidere l'accettabilita' o meno di una corda, usare e1.E e e2.E come direzioni delle normali in e1.r e e2.r per gli estremi e1 ed e2 della corda g end; while ci sono corde non accettabili do begin for tutte le corde c con c.n := true do begin creare un nuovo vertice w per la corda c, come spiegato in x2.5; spostare w sulla supercie come in S1; etichettare i due triangoli adiacenti ad e; creare due nuove corde per i frammenti di c, c1 e c2; c1.n := "c1 non e' accettabile" c2.n := "c2 non e' accettabile" rimuovere la corda c; end; f tutte le corde inizialmente non accettabili sono state divise, ma nuove corde non accettabili possono essere state create g for tutti i triangoli etichettati t do begin dividere t come spiegato nella sezione x2.5; creare 2,3 o 4 nuovi triangoli; for tutte le nuove corde generate ci do ci.n := "ci non e' accettabile"; rimuovere il triangolo t; f tutti i triangoli delimitati inizialmente da corde non accettabili sono stati divisi, ma nuove corde non accettabili possono essere state generate g end; 56 7 { L'algoritmo modicato end; come nel paragrafo 2.6. S3 e: calcolare la soglia n ; for tutti i vertici v con jv.Ej < n do begin applicare Newton-Raphson a x0=v; if il metodo converge then begin b=xn; f b ha gli stessi attributi di un vertice g if b non e' presente in C then begin insert(b.V+c,P); f l'insieme P e' stato modicato g associare a b gli assi di simmetria della supercie nel suo intorno; insert(b,C); end; else if b.cp=0 then b.cp=1; end; end; e inne S4 provvede a ricostruire la struttura: marcare le corde della struttura; costruire l'insieme T ; dividere T in sottoinsiemi; for tutti i sottoinsiemi Q di T do begin Q.a="il sottoinsieme e' attivo" Q.t="tipo del sottoinsieme" for tutti i sottoinsiemi S attivi do begin if Q.t=rottura then ricostruisci rottura(Q); if Q.t=buco then begin Q1=Q.lc; ricostruisci buco(Q,Q1); 57 7 { L'algoritmo modicato end; end; Q1.a=0; 7.2 Analisi dei risultati Un'analisi quantitativa del sovraccarico introdotto dalle nuove caratteristiche non e semplice, in quanto non puo essere eettuato nessun confronto sulle stesse distribuzioni di cariche in ingresso rispetto al vecchio Shrinkwrap; o,per essere piu precisi, distribuzioni non contenenti punti critici possono essere confrontate, ma il costo introdotto dal processo di marcatura e di ricostruzione della struttura e una peculiarita della nuova versione dell'algoritmo. Dobbiamo quindi accontentarci di calcolare l'aumento medio in termini di IFEPT (Implicit Functions Evaluated Per Triangle), anche se i risultati non sono ancora del tutto confrontabili, in quanto il numero di IFEPT dipende anche dal numero di passi utilizzati per raggiungere la supercie nale; a causa della presenza di punti critici e quindi della necessita di cambiare tale insieme di valori e spesso di aumentarne la dimensione, il numero di passi utilizzato per calcolare i dati presenti in tabella 7.1 e in genere 9, contro i 7 (il numero ottimo) utilizzati in [Overveld 93]. Per comparare i risultati possiamo rapportare i dati ottenuti al numero di passi ottimo. Il sovraccarico in termini computazionali e principalmente dovuto alle iterazioni del metodo di Newton-Raphson. E' possibile calcolare tale sovraccarico ricalcolando i costi totali evitando di applicare tale processo; registrando su un le tutti i dati relativi ai punti critici generati dalla distribuzione di cariche, il processo di costruzione della supercie equipotenziale nale puo essere applicato una seconda volta disponendo in partenza di tutti i dati necessari. Nella tabella 7.1 sono presentati i risultati completi. Nella prima colonna vi e il nome simbolico associato all'insieme di cariche, mentre nella seconda colonna e rappresentato il numero nale di triangoli che compongono la struttura approssimante. La parte restante della tabella e divisa in due parti: la prima conteggia il numero totale di funzioni implicite calcolate, mentre la seconda non considera il costo aggiuntivo dovuto al metodo di NewtonRaphson. Inne nell'ultima colonna vi e la dierenza in percentuale tra i valori di IFEPT calcolati nei due casi. Per quanto riguarda le istanze utilizzate per estrarre i risultati presentati, esse generano quasi tutte un solo punto critico, tranne 4points che e costituita da 4 cariche equivalenti posizionate sui lati di un quadrato e 1line-2points contenente una linea e due cariche puntiformi di carica diversa e posizionate asimmetricamente nello spazio. La prima istanza genera un punto critico nel centro del quadrato e, ad un potenziale 58 7 { L'algoritmo modicato Istanza Triangoli Newt.on IFEPT Newt.o IFEPT Dierenza 4lines 746 7668 10.28 6582 8.82 -14.20 % 1torus 458 5230 11.42 4475 9.77 -14.44 % 4points 2366 43618 18.44 32035 13.54 -26.57 % 2triangles 640 11875 18.55 8107 12.67 -32.80 % 2points 1204 26152 21.72 16679 13.85 -36.22 % 1line-1point 606 14267 23.54 6969 11.50 -48.85 % Tabella 7.1. maggiore, quattro punti critici equipotenziali sui lati del triangolo mentre la seconda genera due punti critici a potenziali diversi, ed e stata utilizzata per ricavare dei sottoinsiemi di rev non corretti. Alcune di queste istanze sono rappresentate nelle tavole a colori in appendice (1torus: tavole E.1-7; 2points: tavole D.1-6). Calcolando il risultato medio ottenibile con la precedente versione di Shrinkwrap si ricava che, nel caso ottimo, IFEPT ' 8:31. Applicando un numero di iterazioni pari a quelle utilizzate per ricavare i dati della tabella 7.1, si ottiene IFEPT ' 9:86, cioe un peggioramento di circa il 18.7%. Ora otteniamo IFEPT ' 17:32 (+108.42%) e IFEPT ' 11:69 (+40.67%) senza considerare il costo dovuto al metodo di Newton-Raphson. Ricalcolando i risultati in termini di numero ottimo di passi ottimo si ottiene rispettivamente IFEPT ' 14:55 (+75.08%) e IFEPT ' 9:85 (+18.52%) e 14.55. Come si puo notare dall'analisi dei risultati, il numero di computazioni dovute al metodo di Newton-Raphson penalizza notevolmente le prestazioni. Tale numero dipende principalmente dalla dimensione dell'insieme S di vertici di partenza. Riducendo tale dimensione, si riduce anche, di conseguenza, il sovraccarico generato. La soluzione implementata e forse costosa, ma ha il vantaggio di essere molto robusta, nel senso che riesce a trattare tutte le congurazioni in ingresso indipendentemente dalla loro complessita. Al contrario, i processi di marcatura delle corde e di ricostruzione della struttura inuiscono in modo minore sul costo totale nale anche quando devono essere applicati piu volte (ad esempio si vedano nella tabella i casi delle istanze 4points e 1line-2points). 7.3 Conclusioni L'algoritmo presentato nel capitolo 7.1 permette di generare una struttura poligonale che approssimi una supercie implicita. Tale processo, noto con il termine di poligonizzazione, permette di ovviare ad alcuni degli inconvenienti riscontrabili 59 7 { L'algoritmo modicato nell'utilizzo di superci implicite; tale approssimazione, ad esempio, ne semplica il problema della visualizzazione, permettendo di ombreggiarla rapidamente e di avere viste da posizioni arbitrarie senza dover risolvere ogni volta la funzione che la denisce. Le superci in esame sono superci di livello di un campo scalare, denito da un insieme di elementi di base, che costituiscono lo "scheletro" della supercie. La tassellatura della supercie viene costruita a passi attraverso potenziali via via crescenti no a raggiungere la supercie nale, adattandola ad ogni passo alla supercie intermedia. La struttura triangolare risultante e adattativa al comportamento locale della supercie piuttosto che essere imposta a priori da una suddivisione dello spazio, nel senso che la lunghezza dei lati dei triangoli componenti la struttura varia secondo la curvatura locale della supercie sottostante. In questo modo superci relativamente piatte daranno luogo ad una tassellatura costituita da triangoli piu grandi e, generalmente, equilateri, mentre superci con una curvatura piu elevata genereranno triangoli piu sottili e di dimensioni minori. Se la distribuzione di cariche introduce singolarita nel campo, le superci possono andare incontro a cambiamenti geometrici e topologici, o scindendosi in piu superci separate o incrementando il proprio ordine di connessione; occorre quindi modicare la struttura generata dall'algoritmo (che inizialmente e una singola supercie chiusa semplicemente connessa) perche assuma le stesse caratteristiche della supercie equipotenziale. Abbiamo visto un semplice metodo che ci permette di conoscere l'esatta posizione dei punti critici presenti; conoscendone la posizione, possiamo calcolarne il potenziale e, portando dolcemente la struttura creata al valore del punto critico, isolare gli insiemi di corde e triangoli che non sono piu coerenti con la supercie, rimuoverli e ricostruire nuovi insiemi corretti. In questo modo ogni supercie equipotenziale nale diventa triangolarizzabile a partire da una struttura iniziale molto semplice. La struttura nale ore diversi vantaggi, che possono essere riassunti come segue: la struttura e adattativa al comportamento locale della supercie; le normali nei vertici sono calcolate come sottoprodotto del metodo di ricerca e non comportano quindi la necessita di ulteriori e piu pesanti computazioni; la struttura creata puo essere facilmente equipaggiata con un proprio sistema di coordinate; la supercie equipotenziale nale non deve godere di particolari proprieta. Uno svantaggio delle nuove caratteristiche introdotte e che determinano una riduzione dell'ecienza in termini di IFEPT. L'algoritmo e stato implementato in C in ambiente XGL su una workstation Sun Sparc 10 dotata di hardware graco. 60 7 { L'algoritmo modicato Le tavole a colori presentate sono state generate per mezzo di due diversi tools di shading, Polygons e Viper, progettati e realizzati da Kees van Overveld in collaborazione con alcuni studenti della Technische Universiteit Eindhoven. 7.4 Ulteriori sviluppi della ricerca Uno dei punti che la corrente implementazione non e ancora in grado di trattare e rappresentato dalla possibilita di avere un buco con piu di due superci di separazione. Come per il relativo caso di una rottura, non e complicato denire un insieme di primitive che determini tale situazione. Tuttavia, anche se non si e ritenuto necessario ampliare il presente lavoro, e abbastanza facile fronteggiare questa evenienza disponendo delle strutture dati presentate. Stabilito quindi che si possa presentare questa situazione, e suciente inserire i relativi riferimenti negli elementi gia presenti. Il problema piu signicativo e quello di ricostruire la struttura correttamente; a questo proposito ci viene in aiuto un articolo, [Bink 94], che tratta della ricostruzione di superci tridimensionali (anch'esse denibili come superci implicite) attraverso informazioni volumetriche. Questo e un problema di grande interesse sopratutto in campo medico, dove si cerca di ricostruire la struttura di organi o di ossa a partire da una serie di campioni derivanti da analisi (raggi X, TAC, ...). Uno dei casi trattati in questo articolo riguarda proprio il problema di collegare tra loro piu "contorni" (cioe quelle che in questa tesi sono state indicate come superci di separazione) in modo da costruire una supercie unica; la soluzione proposta e facilmente adattabile all'algoritmo Shrinkwrap. Un grosso miglioramento delle prestazioni e delle potenzialita dell'algoritmo sara ottenibile quando tutto il programma, correntemente implementato in C, sara convertito in C++ per entrare a far parte di un sistema graco ad oggetti chiamato GBOB (Graphics Box Of Bricks) sviluppato dai ricercatori del Technische Toepassingen Group dell'universita di Eindhoven. In questo sistema una supercie o un insieme di superci sono denite come un unico oggetto su cui e possibile applicare una serie di metodi, alcuni dei quali permettono di "ranare" la struttura triangolare eliminando triangoli non necessari. Nel processo di contrazione puo infatti vericarsi che in alcune regioni,dove cioe si e vericato un buco o una rottura, la curvatura diminuisca; l'insieme di triangoli che deniscono tale regione puo quindi essere ridotto ad un nuovo insieme di dimensioni minori, pur mantenendo una struttura corretta e accettabile. In queste modo la struttura nale e piu semplice e ne risulta anche piu rapida l'elaborazione. Inoltre, diverse applicazioni possono interagire sullo stesso oggetto, permettendo eventualmente di utilizzare Shinkwrap in maniera piu essibile all'interno di questo sistema. 61 Appendice A How to shrinkwrap a saddle point A.1 Introduction Equi-potential surfaces are an important class of implicit surfaces. They play a signicant role in computer visualization and several of the surfaces that are of interest in pure mathematics, physics, or chemistry are equi-potential surfaces. In order to visualize equi-potential surfaces, ray tracing is a reasonable technique, although it is an arduous task to compute points on the equi-potential surface, which often imposes restraints on its application. An alternative to ray tracing is the conversion of the surface into a polygonal mesh, that can be rendered afterwards and that oers other inherent advantages (such as fast viewing from arbitrary directions and applications of post-processing techniques). In [Overveld 93] an algorithm is presented (referred to as Shrinkwrap) for polygonizing an iso-potential surface dened by a set of skeletal elements. The algorithm generates a triangular mesh that is adaptive to the local behaviour of the surface, in the sense that the lengths of the sides of the triangles in the mesh vary with the local curvature of the underlying surface. A disadvantage of this algorithm is that it can only cope with a single closed surface without holes. This means that any nal conguration made up of more separate surfaces cannot be tesselated by the algorithm, and as well any conguration containing holes (e.g. the case of a torus). The Shrinkwrap algorithm has been implemented in a program called Wsoid by Kees van Overveld and the Computer Graphics Group of the Eindhoven University of Technology. This paper presents a possible solution to the problem of dealing with the change in topology occurring in the critical points of the potential eld. In the following sections we explain what is a critical point, how to detect critical points in the space and how reshape the structure created in order to keep an 62 A { How to shrinkwrap a saddle point acceptable surface and an acceptable triangular mesh (please refer to [Overveld 93] for all the denitions of chord, acceptable chord, acceptable triangle and acceptable surface). In the Appendix, some general assumption are specied and some informations about the implementation are given. 63 A { How to shrinkwrap a saddle point A.2 Critical points A critical point P , or singular point, of an implicit function in three variables, as the case of the scalar potential eld we're dealing with, is a point with the following characteristics: 0 the gradient of the potential eld in the point is zero. That means: rf (P ) = 0 0 (A.1) det(JP0 ) 6= 0 (A.2) where J is the Jacobian of rf . one set of eld lines intersect at the singular point, but equipotential surfaces and eld lines do not intersect at a right angle. ([Artley 65]). z + z ρ y y + ρ Equipotential surfaces (a) Flow lines direction (b) Figura A.1. Equipotential surfaces and ow lines on the yz plane for two equivalent point sources. Figure A.1a indicates the manner in which equipotential surfaces appear in the yz plane for two equal point sources. One set of equipotential lines intersects at the origin. The ow or direction lines of the eld are indicated in gure A.1b. The diagram in gures A.1 depict the eld in one plane. The three-dimensional eld can be visualized by rotating the individual diagram in gure A.1 about their respective 64 A { How to shrinkwrap a saddle point z axes. The set of ow lines which meet at the singular point leave the singular point to form a plane sheet of ow in the z = 0 plane in three dimension. An iso-potential surface at a value of the critical point is in a limit situation. When the iso-value changes, the iso-surface in the vicinity of a critical point changes topologically and geometrically. What can happen to the surface is that it can split into two new surfaces (as in the case of two charges) or it can increase the order of connectivity (as in the case of a torus). A.2.1 How the region around a critical point behaves Equation A.1 can be used to characterize a region of the space close to a critical point. Since the eld is dened as: X f (r) = jr ,iR j (A.3) i i the potential function has a continuous derivative. This means that in a region of space close enough to P , the gradient length is approaching zero. From this observation, we can derive a method to nd the position of the critical points in the eld. We can consider a set of points of the iso-potential surface with the characteristic of having a gradient length locally minimal. 0 Denition A.2.1 For a given n, S is the set of vertices v of the polygonal mesh with jrfv j < n This set can be made arbitrarely large by choosing a greater value of , and its elements can be taken as starting points for a Newton-Raphson method to nd the critical points. This method gives a very ecient means of converging to a root, if there is a suciently good initial guess. It can also spectacularly fail to converge, indicating (though not proving) that no root exists nearby. The set S as dened before can be considered as a good initial guess. Newton-Raphson method tries to reach the roots of an equation by adjusting the argument, iterating the following formula: xn = xn , rf (xn) J , +1 (A.4) 1 (see [Mizr 82] and [Press 86-1]) where J is the Jacobian of rf and x 2 S . This process is stopped when we reach a point xn that satises rf (xn) = 0 within oating point accuracy, or when 0 65 A { How to shrinkwrap a saddle point the process itself diverges. The results we can obtain with this method are rather precise; in fact, if dierent points on the surface converge to the same critical point, the dierences in the value of potential and in position of this points are close to 0.01%. Evaluating the eigenvectors of the Jacobian in the critical point, we can introduce there a basis of perpendicular vectors (the vectors perpendicular to the planes of symmetry of the iso-surface in the region around the critical point). They allow us to nd a cutting plane, that is the separating plane between the splitting surfaces generated by the critical point ([Press 86-2]). The denition of this plane is essential for the process of xing the topology (see xA.4.2). If we expand the potential function around a critical point c the linear terms are zeroed; we obtain: XX @ f f (c + x) = f (c) + 12 @x @x xixj + h:o:t: 2 i i j j The matrix of the partial derivatives (J ) is the Jacobian of rf ; for the theorem of Schwartz, J is real and symmetric; so, its eigenvectors and the corresponding eigenvalues are real. Since c is a critical point, J (c) has both positive and negative eigenvalues; furthermore, an orthogonal base of eigenvectors of J exists. Now if we take c as origin and the eigenvectors of J as direction of the axes of a new coordinate system x0, y0 and z0, we get 0 0 0 f (x0;y0;z0) = f (0) + xa + yb , zd The surface f (x0;y0;z0) = f (0)+ intersects the plane z = 0 in an ellips (if > 0); the plane z = 0 is tangent to the surface f (x0;y0;z0) = f (0), and the surface f (x0;y0;z0) = f (0) is separated in two halves by the plane z = 0. If the matrix J has two negative eigenvalues, we get 2 2 2 2 2 2 0 0 0 f (x0;y0;z0) = f (0) , xa , yb + zd In this case the transition is from two halves into one surface. The surfaces in the two dierent cases are shown in gure A.2. The positive and negative values of the eigenvalues are such that the plane z = 0 is the cutting plane for both congurations. 2 2 2 2 2 2 66 A { How to shrinkwrap a saddle point z z O y y x x (a) (b) Figura A.2. A.3 The surface As stated above, we can nd where a critical point is. Knowing its position in the space, we can easily compute the value of the eld in this point. This is important because knowing it, we can change the number and the value of the iso-values that dene the intermediate surfaces, in order to have a smooth approach to the point in which there will be a topological change in the surface. The procedure followed is: 1. when the shrink wrap algorithm starts, the beginning and ending values of the iso-value and the number of steps we have to iterate are given. A dynamically linked list is created to record the dierent iso-values of the approaching method. 2. when an iso-potential surface has been created, we calculate the set S for a suitable and apply the Newton method to the points belonging to it. If a critical point is reached, rst of all we check if it corresponds to a critical point we had already found. Otherwise we store information about it in a critical point table, and we reorganize the list of the iso-values so to have a smooth approach to the potential value of the critical point (for which the iso-potential surface has to change its topological structure) and a smooth leave from it. An iso-value entry immediately after the value of the critical point is inserted too, and this entry is marked as related to a critical point. The reasons for doing this are explained in xA.3.1. 3. when an entry is marked as being related to a critical point, what we have to do is just change the topology in order to break the surface or to make a hole in it (see section xA.4 and following). 67 A { How to shrinkwrap a saddle point Let's look more carefully at what is happening to the surface and how the polygon mesh created by the algorithm behaves when the potential value corresponds to a critical point. A.3.1 What is happening to the surface As explained in xA.2.1, there is a substantial dierence of the topology between two iso-potential surfaces immediately before and immediately after the critical point. What we have to do now is to understand what is happening, and to act in such a way to follow the events. This means making a ssure or a hole in the structure and recreating a closed manifold with a correct topology. But how to do this? Let's call for short critical value the value of the potential at the critical point. According to xA.3, the list of the iso-values of the potential close to the critical value (where Vc is the critical value and Vi is the entry related to the critical point) is organized in this way: Vi, = Vc , SECURITY V ALUE . The surface corresponding to Vi, is far 1 1 1 enough from the critical value and it doesn't have any peculiarity (g A.3). Vi = Vc + c, where c is arbitrarely small but greater than zero. The surface has already changed properties, but it is very close in the space to the critical point (g A.4 shows the surface for Vi = Vc ). Vi = Vc + SECURITY V ALUE . The surface is far from the critical point. The security value allows the new topology to stabilize (g A.5). +1 2 Since the shrink wrap algorithm moves vertices from one iso-potential surface to the next, immediately after the critical value, there are some edges connecting points belonging to the surface, but these edges are not properly part of the surface, because the surface has "disappeared" beneath them (e.g consider the edge A , B in g A.5). This behaviour is due to the high curvature of the isosurface in the neighbourhood of the critical point. This curvature is much higher than the one of the nal surface, althought outside this region the curvature is still less than , where is the value of the maximal curvature of the surface to tile; this is the reason why these edges contradict lemma 3. The surfaces drawn here in gures A.3 to A.5 are intersections of the iso-surface with a plane passing through the critical point and parallel to the cutting plane normal. These surfaces are irrespective to the kind of the critical point. 2 for further details see xA.4 and followings 1 68 A { How to shrinkwrap a saddle point A B Figura A.3. Iso-potential surface for V0 < Vc A B Figura A.4. Iso-potential surface for V0 = Vc A B Figura A.5. Iso-potential surface for V0 > Vc 69 A { How to shrinkwrap a saddle point Let's call these edges red edges . So the red edges set is the set composed by all the edges of the structure surrounding the critical point after the critical value. In the same way we can build a set composed by red triangles. 3 Denition A.3.1 A red triangle is a triangle of the mesh in which at least one of its edges is red (see g A.6). o o o o o Red edge Normal edge o Red triangle Figura A.6. A.3.2 How to detect red edges What we need now is a mathematical condition to detect red edges. From lemma 4 in [Overveld 93, page 9] we know that, in the case of an acceptable chord, the maximal relative deviation between a chord and its shadow is: p ) , 3 E 1 +1cos( , sin( ) (A.5) 2 2 where is a real-valued parameter that states the acceptability of a chord ( is the maximal angle achievable between the gradients in the extremes of the chord to consider the chord acceptable). However, we cannot properly use this lemma, since we don't know if there is any shadow underneath the chord. What we can say is: 3 A more accurate denition of red edge will be given in the next section. 70 A { How to shrinkwrap a saddle point if there is any shadow beneath a chord the maximal relative deviation between a chord and its shadow is less than E. Another problem is that lemma 4 holds only for non-self-intersecting surfaces; instead, our attention is really focused on self-intersecting surfaces. Anyhow, we can consider valid this lemma making the following consideration: the starting structure is a thetraedron or an icosaedron wrapping the equipotential surface at a very low potential; vertices and edges are repeteadely shifted on higher potential surfaces until the nal one is reached. So, a conguration like the one shown in gure A.7a is not reachable, because the approximating structure is always wrapping externally the real iso-potential surface. nB nA nA B B A A (a) nB (b) Figura A.7. Unbounded error for self-intersecting surfaces (a) and for non-selfintersecting surfaces (b). Intuitively, the method we want to follow in the labeling process is the following: as shown in gure A.5, the surface at a value Vc + is made up of two dierent surfaces or contains a hole; the chords "hanging" between the two surfaces (like the chord A , B ) are not approximating any part of the surface; in this situation, the region of space underneath the candidate red edges has a potential lower than the iso-value; in particular the location corresponding to the point at maximal distance away from the chord in a case of a non-selfintersecting surface has a potential lower than the iso-value; What we can do now, is calculate the potential of the location specied by equation (A.5) and confront it with V (the iso-value): if it is greater or equal V , the point falls on or inside the equipotential surface (that means also that a surface beyond this edge exists), otherwise the edge falls in the case of the previous items. 0 0 71 A { How to shrinkwrap a saddle point Named C the point at maximal distance away from the chord, there are several way to compute its potential. A rst way to proceed is to calculate the value of the potential in C by means of a simple rst order Taylor expansion (see g. A.8) Lower potential A M B Higher potential S C Figura A.8. A chord and its shadow when the distance chord-shadow is maximal M is the middle point of A , B , and S is the vector from M to the maximal distance point (C ), and jS j = E jA , B j. So: f (C ) = f (M ) + (rf (M );S ) + h:o:t: (A.6) where h.o.t. are: h:o:t: = 12 (S;r(S;rf )) + (OjS j ) (A.7) 3 (S;r(S;rf )) can be considered neglectable in comparison with (rf (M );S ). To give an upper bound for the expression of equation (A.6) we can call V the maximal value of the dot product between rf and S : V = jrf j jS j (A.8) and so f (C ) f (M ) + V (A.9) We can consider that f (M ) + V gives an upper bound for the real value of the potential in C (it is possible to show that we can consider it as a valid approximation). Now we have to distinguish between two cases: 72 A { How to shrinkwrap a saddle point underneath the chord there is a surface. Point C falls inside the iso-potential surface and so f (C ) V , where V is the value of the actual iso-potential 0 0 surface. underneath the chord there is no surface. All the points beneath the chord AB have a potential lower than or equal to the critical value, that is lower than V . Hence f (C ) < V . 0 0 If the condition f (C ) f (M ) + V < V is satised, the edge AB is labeled as red. Instead, the condition f (M ) + V V is not enaugh to assure that point C is inside the isosurface. We can calculate the exact position of C . Using the plane curve assumption ([Overveld 93, page 5]), this point falls on the line perpendicular to A , B passing through M , in the same half-plane of rf (A) and rf (B ) with respect to the line passing through A and B and at a distance E jA , B j from M . Knowing the position of C we can calculate the value of the eld there (see gure A.9) 0 0 B M Π A C Figura A.9. Calculating C using the plane curve assumption To avoid waste of resources and of computation time, the process of labeling edges is started only when we need it, that is when the mesh we are computing corresponds to the potential in a critical point. 73 A { How to shrinkwrap a saddle point A.4 Fixing the topology After we have found a set D of red edges we can derive from it a set of vertices, called rev vertices (REd triangle Vertices). T is the set of rev vertices. Denition A.4.1 A vertex v belongs to T if v is a vertex of a red triangle. We can dene a neighbourhood relation between rev vertices Denition A.4.2 v 2 T and v 2 T are rev-neighbours if there exists an edge 1 2 connecting v1 and v2 which is not a red edge (g A.10). A C E B D Red edge Normal edge A,B,C,D are revs, but not E A and B are rev-neighbours and so C and D but not B and C Figura A.10. Removing red edges from the mesh, vertices facing empty space are the vertices belonging to T . From these vertices we can derive two subsets of rev (T and T ) that have no rev-neighbourhood relations between them. One can think about these two subsets as the border of the splitting surfaces (just as the rim of a glass) and they contain the points from which start to build a new closed manifold (see gure A.11). 1 2 Denition A.4.3 A subset Ti of T is correct if every vertex in Ti has exactly two rev-neighbours. What we could expect now is that all the revs have two rev-neighbours. This property results from the triangular tessalation of the surface. Unfortunately, we don't always get this behaviour. One "unlucky" case is, for example, when you have 74 A { How to shrinkwrap a saddle point Revs Red edges Figura A.11. a very asymmetrical distribution of the charges in the space. What one can obtain is a situation like the one shown in g A.12; this is caused by having very short edges that are still part of the surface, but are in the middle of the red edges area. Anyway, by means of adding or removing edges from D, it is possible to have two subsets of T that are correct. A simple way to enlarge T is the following: 75 A { How to shrinkwrap a saddle point 1 Charge primitives Red edges A 2 Edge A is still part of the surface rev nr. 2 has only one rev-neigh. rev nr. 1 has three rev-neighbours Figura A.12. If a rev v has only one rev-neighbour, we can label the edge connecting it with its neighbour as red. If a rev v has more than two rev-neighbours, we can label as red the edges connecting it with other revs having only one or more than two rev-neighbours. If none of its neighbours satisfy this condition, we can label as red all the edges connecting v with its rev-neighbours (we couldn't nd an intuition as to the geometrical conguration corresponding to this case). The aim of this process is to obtain two subsets that form a closed surface in the space (with order of connection one), and a neighbour chain of the revs belonging to the subset that forms a closed loop. This is essential to understand which kind of singularity we have (a ssure or a hole). A.4.1 Is it a ssure or is it a hole? There is a very easy way to understand which kind of singularity we have. If we already have T and T subsets that are correct, we can have two dierent cases. When a ssure occurs, the two borders of the ssure are connected together only by a series of red edges, but revs belonging to the same subset (T or T ) can only 1 2 1 76 2 A { How to shrinkwrap a saddle point have rev-neighbourhood relations and no other kind of connections between them; so we can't have any red edge connecting v ;v 2 Ti. A red edge can only connect two revs belonging to dierent subsets. The surfaces dened by T and T are inside the iso-potential surface created (see gure A.13): 1 2 1 2 surface defined by a subset of T is inside the isopotential surface created red edges can only connect revs belonging to different subsets Iso potential surface Figura A.13. When the singularity is a hole, T and T represent again the two borders of the ssure, but this time they do not have any kind of connection between them. Revs belonging to the same subset can be connected together either via a red edge or via a rev-neighbourhood relation. A red edge can only connect two revs belonging to the same subset. The surfaces dened by T and T are through and through part of the isopotential surface created (see gure A.14): Now we can take any rev A that is a vertex of a red edge; B is the other vertex of the same edge. As explained above, since A and B are connected via a red edge, in the case of a ssure A and B belong to two dierent subsets, whereas in the case of a hole A and B belong to the same subset; so, just by checking to which subset A and B belong we can know what kind of critical point we have. 1 1 2 2 77 A { How to shrinkwrap a saddle point iso potential surface two revs of different subsets have no direct surfaces defined by the subsets connections of T are part of the iso potential surface created Figura A.14. The method implemented is a little bit dierent. Instead of dividing T into subsets and then checking the kind of each subset, we assign a kind to the subset while we are building it. So, taken a red edge and named its vertices A and B , we can start a loop for the neighbours of B . Named P the vertex B and P one of its neighbours, the loop is performed by moving from P to P , P ; : : :; Pn . If we meet A, then A and B belong to the same subset, because rev-neighbourhood relations can exist by denition only between revs belonging to the same subset, and we have to deal with a hole. Instead if we end the loop returning to B without having met A, then A and B belong to dierent subsets (that is, we have a ssure; one face of the ssure is the subset containing A and the other is the subset containing B ). 0 1 0 78 1 2 A { How to shrinkwrap a saddle point A.4.2 How to x the topology Now we know whether we have to make a hole or to ssure the surface. Even now we have two dierent way to proceed. One thing in common for the two methods, is that before creating a new topology, we have to destroy the old one. That is, we have to remove red edges, red triangles, and all the revs that become isolated because of the removal of all the surrounding triangles. These revs are due to the enlargement process and they are surrounded only by red edges; so, they properly belong to neither of the constructed subsets of T , although they do belong to T (e.g. see vertex A in g. A.15). A is a rev but it doesn’t belong to any of the subsets of T. Edge AB has been labelled as red during the enlargement process (see also fig 9). B T1 A T2 Figura A.15. Fixing a ssure For every border we have to connect together revs belonging to the same subset. The easiest way to do it is: 79 A { How to shrinkwrap a saddle point 1. calculate the center of the border (Ci = vj 2Ti vnj where n = jTi j ) 2. shift it on the iso-potential surface 3. connect all the vertices of the border with it P We will obtain n new triangles and 1 new vertex (g. A.16). Ci Ti Figura A.16. This method produces a low number of new triangles but sometimes produces very stretched ones, especially when the ssure occurs in a point of high curvature. This means that in this part of the surface there is a very high density of triangles, that results in having a vertex, the center of the border, connected with a lot of surrounding vertices (a little hedgehog in the mesh). This vertex has a strong predominance as respect to its neighbours, and some operations, such as relaxation, are ineective when applied to it. To overcome this disadvantage when jTij exceeds a chosen value we can use a dierent xing method, which consists in building a sublayer in between the center of the subset and the rev neighbours chain. The dimension of this sublayer should be such that, at the end of the xing process, both its member and the center of the subset will have almost the same number of neighbours (that results in having almost the same number of surrounding triangles for these vertices). This can be done in the following way: 1. Set an order relation between the revs of the subset (e.g. take a rev and assign to it the order number 0. Choose one of its neighbours and assign to it the order number 1. Following the loop in this direction assign an increasing order number to every rev you meet). L is the set of rev belonging to the sublayer. Initially L=;. 80 A { How to shrinkwrap a saddle point 2. Compute a step factor STEP = jq k jTij 3. For every rev of the subset having an index i multiple of STEP do: calculate the mean point between i and the center of the subset; call this vertex v. shift v on the iso-surface. L=L+v . The sublayer and the neighbours chain can be connected following the same procedure explained in xA.4.2; the sublayer and the subset center can be connected as explained in the previous part of this section. Figura A.17. l jq km If n = jTij and m = n= jTij , then we will obtain 1 + m new vertices and n + 2m new triangles. In gure A.17 is shown a very simple case in which jTij = 6 and m = 3. The mean number of neighbours for each vertex of L is m + 3, while for the center of Ti is m. 81 A { How to shrinkwrap a saddle point Fixing a hole Fixing a hole when the rain gets in and stop my mind from wandering where it will go Lennon & McCartney Now the situation is a little more dicult. We have to connect revs belonging to T only with revs of T (see g A.14). Then the connecting edges should not cross the hole, otherwise we will only build up a dierent mess. What "do not cross the hole" means in mathematical terms is that the two extremes of the connecting edges (named A and B ) must lie in the same half space dened by the plane perpendicular to the projection of the vector A , C or B , C (where C is the critical point) on the cutting plane. A simpler denition is that the dot product between the projections of A , C and B , C on the separating plane must be positive (see g A.18). 1 2 A C B Figura A.18. The main idea of the criterion is to try to connect revs following the same orientation in the neighbourhood chain of the two subsets. Since the two subsets can have dierent dimensions, we try to link a rev with the nearest rev chosen in the neighbourhood. We can proceed as follows: 1. look for a starting point. Here we look for two vertices belonging to two dierent subsets that have minimal distance and that are not crossing the hole. When we nd them we also choose the orientation to follow in the neighbourhood loop (clockwise or counterclockwise). 82 A { How to shrinkwrap a saddle point 2. connect the two vertices together; I and J are the starting revs, NEXTI and NEXTJ are their neighbours in the orientation chosen in step nr. 1. 3. a and b are the distances between this vertices as shown in g. A.19 I NEXT_I a b NEXT_J J Figura A.19. if a=min(a,b), connect I and NEXTJ. Then let J=NEXTJ and NEXTJ=next neighbour of NEXTJ. Go to step 4 else, connect J and NEXTI. Then let I=NEXTI and NEXTI=next neighbour of NEXTI. Go to step 4 4. if both I and J are equal to their starting value, exit. Else go to step 3 If jT j + jT j = n, we will obtain n new triangles (g. A.20). 1 2 T1 T2 Figura A.20. jT1j = 5;jT2j = 4. 9 new triangles 83 A { How to shrinkwrap a saddle point A.5 Dealing with complex topologies The method described in the previous paragraphs works very well, but it is a little bit too simple. If it's designed in this poor way, it just can deal with only one critical point at the same time, but the topology can be arbitrarely complicated. Consider for instance four point charges on the vertices of a square, all having the same charge value. At a certain potential there are four ssures (one for every edge of the square) at the same time. So we have to nd a new organization of the data base, that is able to manage these situations. A.5.1 Some denitions Let us start by some denitions. Denition A.5.1 A critical point is active when the value of the iso-potential surface we're creating is corresponding to the value of its own potential, that is (as explained in xA.3.1) V0 = Vc + , where V0 is the iso-value and Vc is the potential value of the critical point Now that we consider the case of having more than one critical point at the same time, T should not be split into two subsets only, but into a greater number of subsets depending on the number of the active critical points. So, we have to relate critical points and subsets. Denition A.5.2 A subset Ti is related to a critical point Pj that is the critical point closest to the center of the rev-neighbours chain of the subset. First thing we have to remark is that it is possible, because of approximations in the computation and because of the fact that vertices are never exactly on the iso-potential surface, that some edges are labeled as red whereas they're still part of the iso-potential surface. That is more likely when you get really close to a saddle point, but the potential value you're computing is related to a second critical point, that is somewhere else in the space. Denition A.5.3 A subset Ti of T is active if it is related to a critical point that is active. Another problem is that we have to nd a way to link borders; to link the two faces of a ssure is trivial since they are connected by a red edge. More complicated 84 A { How to shrinkwrap a saddle point is the case of two sides of a hole, because there isn't any kind of connection between them.Two hole faces are faces of the same hole if they relate to the same critical point and the dot product between the vectors connecting critical point and centers of the subsets is less than zero. A.5.2 How to proceed We can proceed in the following way. First of all we build up all the following structures: 1. we store all the information about the critical points we have found in a table. So we know where they are and what their potential value is. 2. when a critical value is reached, we build a table of revs, in which we record: - information about the point (position, potential value, neighbour vertices, etc: : : ) - the number of the rev-neighbours and the connecting edges - the index of the subset of T it belongs to 3. a table of subsets of T to store: - cardinality of Ti - which critical points it relates to (that is the critical point closest to the center of the rev-neighbours chain) - which kind of border it is (if it is a face of a ssure or a part of a hole) - a ag to know if the subset is active - the subset Tj which Ti relates to When we reach a critical value: rev table is build up T is divided into subset as explained before and to every subset is assigned a type (ssure or hole) Every rev is labelled with the index i of the subset it belongs to or with ,1 if it doesn't belong to any subset, and every subset is related to a critical point Active attribute is set for all T subsets 85 A { How to shrinkwrap a saddle point for all the active subsets: Subsets are linked all red triangles revs of the active lists belong to are removed all isolated revs are removed structure is xed as explained before 86 A { How to shrinkwrap a saddle point A.6 Evaluations A quantitative analysis of the overload introduced by the new features is not straightforward, since no comparison can be made on the same instances with the earlier Shrinkwrap. So one must be satised with computing the mean increase in terms of IFEPTs (Implicit Functions Evaluated Per Triangle). The results are not yet comparable because the number of IFEPTs depends on the number of iterations done; in [Overveld 93] this number is 7 (the optimal number) and here it is usually 9, so a rescaling of the results is due. The overload introduced is mostly due to the iterations of the Newton-Raphson method. However it is possible to run Wsoid avoiding this process: the program automatically records informations about critical points on a le and restarting the process we will have all the necessary information on them without needs of any computation. In the table nr. A.1 we show a comparison between these two methods. Instance Triangles Newt.on IFEPTs Newt.o IFEPTs Dierence 4lines 746 7668 10.28 6582 8.82 -14.20 % 1torus 458 5230 11.42 4475 9.77 -14.44 % 4points 2366 43618 18.44 32035 13.54 -26.57 % 2triangles 640 11875 18.55 8107 12.67 -32.80 % 2points 1204 26152 21.72 16679 13.85 -36.22 % 1line-1point 606 14267 23.54 6969 11.50 -48.85 % Tabella A.1. The old Shrinkwrap gives an IFEPT ' 8:31; now we have IFEPT ' 11:69 (+40.67%) when Newton computation is o and IFEPT ' 17:32 (+108.42%) when it is on. Rescaling the results we obtain, respectively, 9.85 (+18.52%) and 14.55 (+75.08%). The instances used to build table A.1 contains usually only one critical point except 4points that consists of four equal point sources on the vertices of a square and that creates one hole in the center of the square and four ssures on the edges of the same. Two observations shall be made. First, the instances in the three starting lines all generate holes; their "economicity" is due to the fact that an hole usually gives rise to a much lower number of red edges as regards of a ssure. Second, the number of computation of the Newton-Raphson method penalize considerably the performances. This number depends mainly form the dimension of the set S ; reducing this dimension, that is a parameter of the program, the overload introduced is consequently reduced. The default threshold for S is maybe expansive, but has the 87 A { How to shrinkwrap a saddle point advantage of being able to deal with any input instances, irrespective of its complexity. A.7 Conclusion We present an improvement of the Shrinkwrap algorithm. Now almost every kind of nal iso-potential surface can be polygonized (see Appendix) even if we have to change the topology of the starting surface (the original tetrahedron). All new features respect the basic philosophy of the primary Shrinkwrap, and they can be made "transparent" to the user, since the list of the iso-valuess used to reach the nal surface is automatically changed in order to take care of the critical points introduced by the instances. A disadvantage still to solve is that it is not possible to x a hole with more than two splitting surfaces. A.8 Acknowledgments I would like to thank the people who made this work possible: Kees van Overveld and Wim Nuij. Without their help I would still be digging into problems. Thanks for being always very friendly, available and patient. A lot of thanks also to all the members of the Computer Graphics Group that I stressed asking every kind of information. The biggest thank is anyway for Claudia, for all the support she gave me and for being close to me during this period. 88 Bibliograa [Artley 65] [Bink 94] [Blinn 82] [Bloomenthal 87] [Bloomenthal 88] [Bloomenthal 90] [Cohen 94] [Holmstrom 89] [Mizr 82] [Press 86-1] J. Artley,Fields and conguration, Holt, Rinehart and Winston, pages 192-205, 1965. A.J. Bink, E.H. Hautus, C.W.A.M. van Overveld. Visualizing volumetric data: an automatic solution to the branching problem. Technical University Eindhoven, internal report, 1994. James Blinn. A generalization of algebraic surface drawing. ACM Transactions on graphics, 1:235, 1982. Jules Bloomenthal. Boundary representation of implicit surfaces. Res. Rep. CSL-87-2, Xerox PARC. Jules Bloomenthal. Polygonisation of Implicit Surfaces. Computer Aided Geometric Design, (5):341-355, 1988. Jules Bloomenthal, Brian Wyvill. Interactive techniques for implicit modeling. Proceedings of the SIGGRAPH '90. In Computer Graphics 24, 4, pp 109-116. Daniel Cohen, Arie Kaufman, Yingxing Wang. Generating a smooth voxel-based from an irregular polygon mesh. The Visual Computer (1994) 10:295-305. Holmstrom L, Laakko T, Mantyla: M, Rekola P. Ray tracing of boundary models with implicit blend surfaces. In: Straer W. Seidel HP (eds) Theory and practice of geometric modeling. Springer, Berlin Heidelberg New York, pages 252-271. Abe Mizrami and M. Sullivan, Calculus and analytical geometry, Wadsworth Publishing Company, 1982. W.H. Press, B.P. Flannery, S.A. Teukolsky, W.T. Vetterling, Numerical Recipes, Cambridge University Press, pages 270-273, 1986. 89 Bibliograa [Press 86-2] [Schmidt 93] [Sederberg 86] [Overveld 93] [Witkin 94] [Wyvill 86] W.H. Press, B.P. Flannery, S.A. Teukolsky, W.T. Vetterling, Numerical Recipes, Cambridge University Press, pages 335-380, 1986. Michael F.W. Schmidt. Cutting cubes; visualizing implicit surfaces by adaptative polygonization. The Visual Computer (1993) 10:101115. Thomas W. Sederberg, Scott R. Parry. Free-form deformation of solid geometric models. Proceedings of the SIGGRAPH '86. In Computer Graphics 20, 4, pp 151-160. C.W.A.M van Overveld and Brian Wywill Shrinkwrap: an adaptative algorithm for polygonizing an implicit surface, The University of Calgary, Department of computer science, Research Report No. 93/514/19, March 1993. Andrew P.Witkin, Paul S.Heckbert. Using particles to sample and control implicit surfaces. Proceedings of the SIGGRAPH "94. In Computer Graphics 20, pp 269-277. Geo Wyvill, Craig McPheeters, Brian Wyvill Data structure for soft objects. The Visual Computer (1986) 2:227-234. 90