Cosa sono i poligoni degeneri?


9

Cosa sono i poligoni degeneri? Come si controlla se una determinata coppia di poligoni è degenerata o no?


2
Contesto? Non credo che "poligono degenerato" abbia una definizione standard.
Peter Shor,

Se avessi due poligoni convessi, come sarebbe degenerato? se condividono un lato comune o se si sovrappongono? o nessuno? o entrambi?
Alice

1
La mia ipotesi è che si tratti di poligoni in cui due vertici adiacenti sono uguali.
Yuval Filmus,

Risposte:


9

Un poligono è degenerato se alcuni dei suoi vertici si trovano uno sull'altro. ad es. il triangolo (0,0), (0,1), (0,0) è degenerato. Ha 3 lati e 3 vertici, ma due di vertici si ripetono. È possibile ripetere più volte un vertice (ad esempio (0,0), (0,0), (0,0) è un altro triangolo degenerato). Per definizione, controllare se un poligono è degenerato o meno è facile.

Ma quali sono gli usi dei poligoni degeneri? Un'applicazione dall'accelerazione grafica (disegno 3D) è la seguente:

Nel disegno 3D le GPU normalmente usano la triangolazione per il rendering delle immagini. La (semplice) ragione per usare i triangoli è perché sono oggetti 2D più semplici possibili, quindi non hanno bisogno di molto hardware.

Se vogliamo disegnare un'immagine 3D complessa, con questa limitazione GPU, dobbiamo scomporla in più triangoli. Ma se chiamiamo la GPU per renderizzare ciascun triangolo separatamente, sarebbe molto lento (a causa del numero di chiamate). Quindi la striscia triangolare viene utilizzata per ridurre il numero di chiamate alla GPU. Una buona spiegazione delle strisce triangolari può essere trovata nella documentazione Microsoft: Triangle Strips , inoltre puoi vedere il wiki per: Triangle Strip .

Ma il problema sorge quando vogliamo disegnare due oggetti separati in una striscia. In questo caso i triangoli degenerati aiutano. La GPU può rilevare i triangoli degeneri e saltare il loro disegno. Quindi possiamo collegare due strisce separate con un triangolo degenerato.

In generale, se disponiamo di componenti diversi, in modo tale da disporre già delle corrispondenti strisce triangolari, possiamo disegnarli tutti con una sola chiamata alla GPU. Ciò causa un ulteriore utilizzo della memoria, ma è un compromesso tra il numero di chiamate alla GPU per il rendering e il sovraccarico dell'uso di un triangolo aggiuntivo e degenerato.n


1
Potresti chiarire se degenerare significa solo vertici uguali adiacenti o se la definizione include vertici uguali non adiacenti? (Una domanda sincera - non sto solo cercando di migliorare la risposta)
Erik Hermansen,

0

Un poligono degenerato è uno che ha un'area zero.


Se la risposta di user742 è corretta, ciò non sarebbe vero. Prendi un quadrato. Se due e solo due vertici sono uguali, allora è un triangolo e quindi l'area è> 0.
HankCa,

e lo hai chiarito bene. un triangolo non è degenerato.
Gabriel Rohweder,

0

Come altri hanno notato, dipende. In generale, un poligono non è degenerato se non ha punti anomali, ma questo fa tornare indietro il problema di un passo; cos'è "anomalo"?

La vera risposta è che un poligono è degenerato se viola le specifiche. La risposta leggermente scortese è che un poligono è degenerato se si tratta di un caso limite che l'algoritmo non è in grado di gestire.

Ecco un esempio dal mondo di GIS. La specifica delle caratteristiche semplici OGC ha una definizione molto attenta di ciò che rende un poligono "valido". Citando dalla Sezione 6.1.11.1:

Le affermazioni per i poligoni (le regole che definiscono i poligoni validi) sono le seguenti:

a) i poligoni sono topologicamente chiusi;

b) Il confine di un poligono è costituito da un insieme di anelli lineari che ne compongono i confini esterni e interni;

c) Non ci sono due Anelli nella croce di confine e gli Anelli nel limite di un Poligono possono intersecarsi in un Punto ma solo come tangenti, ad es.

PPoligono,c1,c2P.Boundary,c1c2,p,qPunto,p,qc1,pq,[pc2][δ>0|[|p-q|<δ] [qc2]]

Nota: quest'ultima condizione afferma che in un punto comune alle due curve, i punti vicini non possono essere comuni. Questo obbliga ogni punto comune ad essere un punto di tangenza.

PPolygon,P=P.Interior.Closure

e) L'interno di ogni poligono è un insieme di punti collegati;

f) L'esterno di un poligono con 1 o più fori non è collegato. Ogni foro definisce un componente collegato dell'esterno.

Nelle affermazioni di cui sopra, interno, chiusura ed esterno hanno le definizioni topologiche standard. La combinazione di (a) e (c) rende un poligono un normale insieme di punti chiusi.

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.