Boundary representations (B-Reps)

Descrizione della geometria

In una suddivisione piana, assumendo lati rettilinei, le sole entita' che necessitano una descrizione geometrica sono i vertici. Per ogni vertice servono 2 coordinate.

In un complesso cellulare immerso nello spazio, ciascun vertice ha 3 coordinate. Inoltre si pone il problema di descrivere la geometria delle facce.

Primo modo: solo facce piane

Si ammettono solo spigoli rettilinei e facce piane. Allora la geometria del complesso cellulare e' univocamente determinata dalle posizioni dei vertici. Come nel caso piano, non e' necessario associare informazioni geometriche a spigoli e facce.

Le facce devono essere triangoli. Il complesso e' un complesso simpliciale.

Rappresentazioni di questo tipo si usano per visualizzazione grafica (il triangolo e' la primitiva base per i dispositivi di rendering), e per altre applicazioni che necessitano di lavorare su facce con geometria semplice (es: analisi agli elementi finiti).

Secondo modo: facce e spigoli arbitrari

Si ammettono spigoli non rettilinei e facce non piane. Ogni spigolo e ogni faccia necessita di una descrizione della sua geometria = equazione della curva o della superficie a cui appartiene.

Spesso si tengono descrizioni per le facce, e la geometria degli spigoli e' indotta da quella delle facce (spigolo = intersezione di due facce).

Le rappresentazioni parametriche sono le piu' usate. Di solito f1, f2, f3 sono funzioni razionali (rapporti fra polinomi), e sono definite come combinazione di certe funzioni base.

Classi di funzioni usate: Curve e superfici di Bezier, B-Splines, NURBS (Non-Uniform Rational B-Splines).


La forma della superficie si puo' controllare agendo su punti di controllo: punti che sono in corrispondenza con gli incroci della griglia, non sono necessariamente interpolati dalla superficie, ma determinano i parametri in base ai quali la superficie viene calcolata.
Spostando un punto di controllo la forma della superficie cambia localmente alle maglie interessate.

Le funzioni fi non sono necessariamente univoche. Piu' punti (s,t) possono avere stessa immagine nello spazio, definendo cosi' superfici che si ripiegano su se stesse (cilindro, cono, toro...).

In casi piu' generali il dominio in (s,t) e' ottenuto ritagliando il rettangolo con lati rettilinei o curvi (trimmed NURBS). Nel caso di lati curvi, ciascun lato e' definito a sua volta in forma parametrica.

Inconsistenza geometrica

La geometria di un lato e' definita implicitamente da quella delle facce a cui appartiene, ed e' definita in ciascuna delle due facce in modo indipendente. Non sempre la geometria del lato coincide esattamente nelle due facce, per cui le due facce possono non combaciare.
Nei modellatori esistenti sono comuni effetti come spaccature o sovrapposizioni parziali o intersezioni tra facce che dovrebbero essere adiacenti.

Facce con buchi

Un oggetto solido puo' avere fori passanti che lo attraversano, e/o fori che definiscono cavita'.

Tipicamente, l'imbocco di un foro segna un buco su una faccia. Tale faccia non e' piu' omemomnorfa a un disco, ma e' una regione piana con buchi. Dunque il contorno del solido non e' piu' descrivibile come un complesso cellulare (le facce non sono celle).

Due alternative:

Nel primo caso la suddivisione delle facce e' arbitraria e puo' sembrare una forzatura. Ci consente di lavorare con complessi cellulari e di usare le relative strutture dati.

Nel secondo caso occorre estendere le strutture dati viste per complessi cellulari in modo da poter rappresentare complessi dove le facce contengono buchi.

In una faccia con buchi, il contorno ha piu' componenti connesse. Ciascuna componente e' chiamata un ciclo (loop). Una faccia ha un loop esterno e zero o piu' loop interni.

Estensione delle strutture dati per trattare facce con buchi

Introduciamo una nuova entita' (entita' derivata): il loop. Simbolo: L.

Ciascuna faccia ha uno o piu' loop, ciascun loop e' composto da una sequenza circolare di spigoli.

Ciascuno spigolo appartiene a un loop di una faccia e a un loop di un'altra faccia.

Nota: un loop puo' essere comune a due facce, anche se raramente.

Interponiamo il loop come entita' di collegamento fra spigolo e faccia.

FL associa a una faccia tutti i loop che la contornano, per primo quello esterno.

LE associa a un loop la lista ordinata dei suoi spigoli.

EL associa ad uno spigolo i due loop che lo contengono.

LF associa a un loop le facce (di solito una, raramente due) che lo contengono.

Struttura simmetrica estesa

Le relazioni FE e EF sono sostituite da FL, LE, EL, LF.

Come ricaviamo le relazioni FE e EF?

Struttura winged-edge estesa

La relazione EF e' sostituita da EL e LF. La relazione FE* e' sostituita da FL e LE*.

Come ricaviamo la relazione FE*?