Verifica se un tetraedro si trova all'interno di un poliedro


15

Ho un tetraedro e un poliedro p . t è vincolato in modo tale da condividere sempre tutti i suoi vertici con p . Voglio determinare se t sta dentro p .t ptpt p

Vorrei aggiungere un dettaglio al problema nel caso in cui possa contribuire alla soluzione: è un tetraedro di Delaunay e le facce di p sono triangolari e sono fortemente delaunay sia rispetto ai vertici di p . Un tetraedro è Delaunay se la circumsfera dei suoi vertici non contiene altri vertici al suo interno. Una faccia è fortemente delaunay se esiste una circumsfera contenente vertici di quella faccia sulla sua superficie ma nessun altro vertice su o all'interno di essa.tpp

Le figure seguenti mostrano lo stesso problema nello spazio : 2D

Il poligono originale p :

inserisci qui la descrizione dell'immagine

Triangolazione di Delaunay dei vertici di p :

inserisci qui la descrizione dell'immagine

Risultato del test interno / esterno sui triangoli t (i triangoli ombreggiati sono all'interno di e il resto è all'esterno ):p

inserisci qui la descrizione dell'immagine

Risultato desiderato (potatura dei triangoli esterni ) :

inserisci qui la descrizione dell'immagine


Il mio problema originale è nello spazio 3D, quindi i triangoli nelle figure sopra si traducono in tetraedri e il poligono p si traduce in un poliedro arbitrario p . Ho capito alcune formulazioni di questo problema:tpp

Formulazione 1
Le uniche parti di che possono essere al di fuori di p sono i suoi bordi e le facce triangolari ma in generale può esistere una p che ha i bordi di tutte le t esterne sulla sua superficie, quindi in alternativa, questo problema può anche essere formulato per verificare se un tetraedro t esiste una faccia che si trova all'esterno p ?tpp tt p

Formulazione 2
Ho un'altra possibile prospettiva verso questo problema, ma manca qualsiasi idea formale:
Geometricamente, se è fuori allora sarà sempre attaccare sulla esterno superficie di p . Quindi se possiamo calcolare i contorni (informalmente, il confine esterno) C V e C V p in modo tale che V = V tV p e V t , V p siano insiemi di vertici rispettivamente in t , p , quindi CtpCVCVpV=VtVpVt,Vpt,p ssettrova all'internop. CV=CVp tp

Mi piacerebbe sapere:

  • Come posso risolvere la Formulazione 1 o la Formulazione 2 ?
  • Oppure, c'è un approccio completamente diverso per risolvere questo?


tp pt p

p

Sulla base di quanto sopra, il mio problema principale ora sembra essere (suggerire se dovrebbe essere posto come una domanda separata):
esiste qualche algoritmo numericamente solido per il problema del punto nel poligono ?


ptptptp

tptp

1
p

1
la non convessità ha la stranezza che tutti i vertici possono essere all'interno del poliedro e tuttavia il tetraedro può essere all'esterno (poiché un bordo non deve necessariamente trovarsi all'interno nel suo insieme). Possibile algoritmo, vedi se i bordi (tra poliedro e tetraedro) possono avere intersezioni => prob che il tetraedro si trova all'esterno è fantastico
Nikos M.

1
Hai visto l'algoritmo di distanza Gilbert – Johnson – Keerthi? Dovresti prima scomporre il poligono / poliedro in forme convesse (come hai notato, un complesso simpliciale farebbe il lavoro). GJK è noto per essere molto stabile e molto veloce.
Pseudonimo del

Risposte:


2

Di recente ho trovato una soluzione a questo problema in un documento "Segmentazione interna-esterna robusta che utilizza numeri di avvolgimento generalizzati" di Alec Jacobson et.al., qui . Risolve il problema di localizzare se un punto si trova all'interno (o all'esterno) di una maglia poligonale arbitraria (una con autointersezioni, non-manifold, superfici aperte ecc.) Usando la nozione di numero di avvolgimento generalizzato .

tp


ptpptppttp
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.