1 / 24

Intersezioni e distanze

Intersezioni e distanze. Daniele Marini. Definizioni utili. raggio r (t) semiretta dotata di origine e direzione (solitamente la direzione è normalizzata) superfici: implicite e esplicite implicite: f( p )=0 - es: x 2 +y 2 +z 2 -r 2 =0

caraf
Download Presentation

Intersezioni e distanze

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


  1. Intersezioni e distanze Daniele Marini

  2. Definizioni utili • raggio r(t) semiretta dotata di origine e direzione (solitamente la direzione è normalizzata) • superfici: implicite e esplicite • implicite: f(p)=0 - es: x2+y2+z2-r2=0 • dato il punto p si valuta se appartiene alla superficie risolvendo l’equazione (se =0) • esplicite: f(u,v)=(fx(u,v),fy(u,v),fz(u,v)) - es: f(a,b)=((r sina cosb), (r sina sinb), (r cosb))

  3. Rette • dato un punto p =(x0,y0,z0)per cui passa la retta, la sua forma parametrica è: r(t)=p+td dove d è la direzione (vettore normalizzato) e t il parametro, per t>0 abbiamo una semiretta (tipicamente il raggio) • le componenti:

  4. Bounding volume • si definiscono tre tipi di bounding volumes: AABB, OBB, k-DOP • AABB axis aligned bounding box, un parallelepipedo con le facce parallele ai piani coordinati, si definisce con due valori estremi amin,, amax amin amax

  5. OBB oriented bounding box è un AABB ruotato rispetto agli assi principali, si può definire con un centro e tre vettori normalizzati che descrivono le direzioni dei lati • k-DOP discrete oriented polytope definito da k/2 vettori normalizzati con associati due valori scalari per definire una porzione di piano; in pratica definiscono un poliedro

  6. Bounding sfera • Si utilizza anche la sfera come volume di contenimento • lo studio delle intersezioni con i BV è essenziale per l’efficienza

  7. Intersecare rette • usato in ray tracing / ray casting • usato per calcolare collisioni • il raggio è una semiretta, con direzione data, e un punto di applicazione • la retta è specificata con coseni direttori e un punto da cui passa

  8. la distanza di un punto q dalla retta r si ottiene proiettando q su r e valutando la norma: q-p q d (q-p)-w p w r

  9. Intersezione con segmenti • segmento per due punti (vettore): • il calcolo della intersezione di un raggio con tutti gli oggetti di una scena può essere molto costoso, si riduce sfruttando boundig volumes • caso più semplice di BV è la sfera

  10. Intersezione con una sfera • raggio in forma parametrica (vettore): • sfera con centro in (l,m,n) e raggio r:

  11. (x2,y2,z2) t>1 • sostituendo nell’equazione della circonferenza x,y,z (vediamo solo x): (x1,y1,z1) 0<t<1 t<0

  12. la forma quadratica generale è quindi: • da risolvere come equazione di II grado; se il determinate è <0 non ci sono intersezioni, se =0 il vettore è tangente, se >0 due intersezioni, e le radici t1,t2 danno il punto di entrata e di uscita del raggio • i,j,k sono le differenze (x2-x1) ecc. non sono coseni direttori !

  13. si ricava anche la normale alla sfera nel punto di intersezione (tangenza):

  14. per accelerare il calcolo si valuta prima il test di rifiuto rejection test • le intersezioni “dietro” non interessano • si valuta il vettore origine_raggio-centro_sfera, se ne calcola il modulo l2, se < r2 l’origine è interna alla sfera • il raggio interseca certamente, se ci interessa solo questo si termina (es: picking) altrimenti si procede) • si calcola la proiezione del vettore sul raggio, se <0 e se l’origine è esterna allora la sfera è dietro al raggio e si termina • altrimenti si calcola la distanza al quadrato dal centro sfera alla proiezione del vettore sul raggio m2 se > r2il raggio non colpisce la sfera altrimenti si calcola l’intersezione

  15. fare figura

  16. Intersezione raggio triangolo (poligono) • 3 passi: • determinare il piano su cui giace il triangolo • determinare l’intersezione piano-raggio • valutare se e’ interna al triangolo (poligono) • usata anche per clipping, i raggi in questo caso sono i bordi del poligono e il piano è uno dei piani del frustum di visione; trovate tutte le intersezioni si genera un nuovo poligono

  17. Determinare il piano • equazione del piano: Ax+By+Cz+D=0 • A,B,C sono le componenti della normale al piano • il prodotto vettore tra due vettori identifica la normale • dati due lati V, W del triangolo calcoliamo la normale: • dove i,j,k sono i versori, quindi A,B,C sono: • D si ottiene sostituendo un vertice del poligono nell’equazione (un punto che giace nel piano)

  18. Intersezione raggio / piano • si sostituisce x,y,z dalla equazione parametrica del raggio: • se t<0 il raggio è nel semispazio che non contiene il poligono • se il denominatore = 0 raggio e piano sono paralleli; per verificare se il raggio è nel semispazio che non contiene il poligono basta testare il segno del numeratore: se > 0 è esterno

  19. Casi negativi • raggio esterno al semispazio che contiene il poligono: t<0 • raggio parallelo al piano del poligono: denominatore = 0 • nel semispazio esterno al poligono: numeratore >0 raggio esterno esterno interno interno

  20. Test di appartenenza del punto • nei casi “positivi” si verifica se l’intersezione col piano cade nel poligono (triangolo) • metodo diretto: se interno la somma degli angoli dal punto ai vertici è 360°

  21. il metodo diretto è costoso, se il punto è su un bordo dà errore, non si può valutare se il poligono è orientato “back face” rispetto alla direzione del raggio (può interessare solo la prima intersezione con un poliedro) • algoritmo di Haines: (inizializza tnear come minimo valore negativo e tfar come massimo positivo) if piano-è-back-face and (t<tfar) then tfar=t if (piano-è-front-face) and (t>tnear) then tnear=t if (tnear>tfar) then exit (raggio non interseca)

  22. fare figura

  23. Intersezione con OBB • si considerano a turno coppie di piani paralleli determinando tneare tfar • si conserva nel confronto tnear maggiore e tfar minore • se il massimo tnear è maggiore del minimo tfar non c’è intersezione

  24. tnear tfar tnear tfar tnear tnear tfar tfar

More Related