Proiezioni
3D Reloaded! Progetto del corso di Geometria Computazionale Università degli Studi di Milano a.a. 2007/08 Realizzato
da: Marco Bastianello & Dario Sottana & Marco Ziliani
|
.:: Teoria Applicata per la Realizzazione del Progetto ::. Per rappresentare gli oggetti tridimensionali si è utilizzata l'operazione di vista descritta alle pagine 236/7/8 del testo di Penna-Patterson [1], utilizzando il centro di prospettiva descritto in coordinate sferiche, e alla pagina del sito del corso di Geometria Computazionale [2]. E' stata implementata la possibilità di muovere il meccanismo di vista, con alcune limitazioni:
Abbiamo scelto queste limitazioni per garantire una corretta visualizzazione dei solidi e per coerenza con gli scopi dell'applet.
WireframePer visualizzazione in modalità wireframe si intende la rappresentazione dei solidi realizzata disegnando gli spigoli e ponendo in evidenza i segmenti visibili. Sulla scena possono essere presenti contemporaneamente diversi solidi, con l’assunzione che essi non possano compenetrarsi. Quando un solido viene aggiunto alla scena viene memorizzato un riferimento ad esso, a tutti i suoi spigoli e a tutte le sua facce. Primo passoPer ogni spigolo si prendono in considerazione tre punti chiave: i
due vertici e il punto medio. Controlliamo se essi sono nascosti da una
qualsiasi faccia presente sulla scena. Conoscere se i vertici sono
nascosti o meno ci servirà nel momento in cui andremo a disegnare lo
spigolo. Esaminare il punto medio permette di individuare gli spigoli
non visibili di un solido. Figura 1
Figura 2
Figura 3
Secondo passoUno spigolo l1, appartenente ad un solido S1, risulta parzialmente nascosto se un solido S2 si frappone tra S1 e il punto di vista. Di conseguenza ci sarà almeno uno spigolo l2 appartente a S2 che si sovrappone a l1 rispetto al punto di vista PV. Il punto su l1 in cui i due segmenti si incrociano visti da PV rappresenta il punto in cui lo spigolo da visibile diventa nascosto.
Figura 4
Viene preso in condiderazione uno spigolo alla volta, chiamato lj e confrontato con ogni altro spigolo li: se, rispetto al punto di vista, i due segmenti si incrociano e li è davanti ad lj si prende il punto su lj in cui i due spigoli sono visti sovrapposti.
Due segmenti AB e CD si intersecano, visti da un punto PV se valgono le seguenti condizioni:
Figura 5 Dati due segmenti AB e CD che si intersecano rispetto ad un punto di vista PV, per individuare quale tra i due copre l’altro si costruisce il piano passante per C,D e A; se B e PV si trovano nello stesso semispazio AB copre CD, altrimenti vale il contrario. Figura 6
Figura 7
La retta r è descritta come luogo di intersezione tra il piano π passante per A, B e PV e un piano σ ausiliario passante per A, B e l’origine O. Si ottiene così un sistema lineare in tre incognite, che è possibile risolvere con il metodo di Cramer.
Otteniamo il sistema in 3 incognite:
Indichiamo con M, N e X le matrici:
Indichiamo inoltre con Ni la matrice quadrata ottenuta sostituendo la colonna i-esima della matrice dei coefficienti M con la colonna N dei termini noti.
Le soluzione del sistema si può rappresentare utilizzando le matrici sopra introdotte, nella forma:
Non tutti i punti di intersezione individuati corrispondono ad un cambiamento di visibilità dello spigolo. In figura 8 il punto di intersezione I è nascosto dalla faccia α del prisma. Prima e dopo I il lato AB rimane non visibile ed I non viene pertanto preso in considerazione. Figura 8 Terzo passoIl lato viene disegnato. Si distinguono diversi casi a seconda della visibilità dei vertici A e B del lato:
Visualizzazione facceCon la visualizzazione in modalità "facce" vengono disegnate le facce visibili dei solidi. I controlli per stabilire se una faccia sia visibile o meno vengono effettuati all'interno dello stesso solido. Una faccia è considerata nascosta se almeno uno dei punti medi degli spigoli che la compongono è nascosto da un'altra faccia appartenente allo stesso solido. Abbiamo considerato i punti medi dei lati e non i vertici poichè nel caso di facce triangolari i vertici possono essere tutti visibili pur essendo la faccia nascosta (fig. 9). Figura 9 Nel caso particolare del tetraedro è necessaria un'ulteriore condizione. Come si può vedere in figura 10, la faccia ABC è nascosta pur essendo visibili i punti medi degli spigoli AB, BC e CB. Controlliamo quindi in aggiunta se il vertice non appartenente alla faccia, in questo caso il punto D, viene visto all'interno dell'area da essa occupata: in questo caso sarà considerata nascosta. Figura 10 Una volta individuate le facce visibile all'interno di ogni solido la corretta visualizzazione è ottenuta ordinando i solidi rispetto alla loro distanza dal punto di vista. Vengono quindi disegnati in ordine decrescente, in modo che i solidi più vicini a PV risultino davanti a quelli più lontani. Riferimenti bibliografici[1] Penna, Patterson, "Projective Geometry and its application to Computer Graphics", ed. Prentice-Hall. [2] La pagina del corso di Geometria Computazionale: http://www.mat.unimi.it/users/alzati/Geometria_Computazionale_98-99/apps/Funzioni3D/Funzioni.html |