Per fare geometry processing, quindi applicare tutti gli algoritmi visti finora, ne necessario prima di tutto garantire la possibilità di operazioni ancora più basilari che hanno lo scopo di darmi le informazioni che poi sfrutto per il geometry processing.
Queste operazioni basilari non sono applicabili con la lista facce e la lista vertici (connettività e geometria) mi servono strutture dati più adatte a queste operazioni basilari:
Nuova soluzione: half-edge
half-edge = edge orientato, detto half-edge perché rappresenta “la metà di un edge”. Ogni edge della mesh è composto da due half-edge
- H_k = indice half edge
- V = vertice di inizio HE
- F = faccia adiacente all’HE interno
- se esterno nn c’è nulla
- NEXT= HE successivo
ESEMPIO
- H0 è half-edge esterno, senza faccie adiacenti. Il HE successivo è H2 e quello opposto (interno) è H1
- se V mi dive il vertice di inizio, quello di fine lo ottengo al V di NEXT oppure di OPP
OSSERVAZIONI
caratteristiche a confronto (lettura veloce)
Pro e contro
- Ci sono anche varianti di strutture half edge per mesh NON 2 manifold
esempi d’uso
- Funziona anche su mesh con “dangling edge” → semplicemente edge esterni