Prueba de si un tetraedro se encuentra dentro de un poliedro

15

Tengo un tetraedro un poliedro p . t está restringido de tal manera que siempre comparte todos sus vértices con p . Quiero determinar si t se encuentra dentro de p .t pagtpagt pag

Me gustaría agregar un detalle al problema en caso de que pueda contribuir a la solución: es un tetraedro de Delaunay y las caras de p son triangulares y son fuertemente Delaunay con respecto a los vértices de p . Un tetraedro es Delaunay si la circunferencia de sus vértices no contiene ningún otro vértice dentro de él. Una cara es fuertemente Delaunay si existe una circunferencia que contenga vértices de esa cara en su superficie pero ningún otro vértice sobre o dentro de ella.tpagpag

Las siguientes figuras muestran el mismo problema en el espacio : 2re

El polígono original pag :

ingrese la descripción de la imagen aquí

Delaunay triangulación de vértices de pag :

ingrese la descripción de la imagen aquí

Resultado de la prueba interior / exterior sobre los triángulos t (los triángulos sombreados están dentro de y el resto están fuera ):pag

ingrese la descripción de la imagen aquí

Resultado deseado (poda fuera de triángulos) :

ingrese la descripción de la imagen aquí


Mi problema original está en el espacio 3D, por lo que los triángulos en las figuras anteriores se traducen en tetraedros y el polígono p se traduce en un poliedro arbitrario p . He descubierto algunas formulaciones de este problema:tpagpag

Formulación 1
Las únicas partes de que pueden estar fuera de p son sus bordes y caras triangulares, pero en general puede existir una p que tenga bordes de todas las t exteriores en su superficie, por lo que, alternativamente, este problema también puede formularse para pruebe si para un tetraedro t existe una cara que se encuentra fuera de p ?tpagpag tt p

Formulación 2
que tienen otra perspectiva posible hacia este problema, pero carente de cualquier idea formal:
Geométricamente, si está fuera entonces siempre se pegaba en el exterior de la superficie de p . Entonces, si podemos calcular los contornos (informalmente, el límite exterior) C V y C V p de modo que V = V tV p y V t , V p son conjuntos de vértices en t , p respectivamente, entonces CtpCVCVpV=VtVpVt,Vpt,p sitestá dentro dep. CV=CVp tp

Me gustaría saber:

  • ¿Cómo puedo resolver la Formulación 1 o la Formulación 2 ?
  • O, ¿hay algún enfoque completamente diferente para resolver esto?

Actualización:
ahora me doy cuenta de que este problema puede reducirse a Punto en problema de poliedro . Dado que un tetraedro exterior tendrá al menos una cara que se encuentra fuera de p , cualquier punto arbitrario en esa cara (excepto sus vértices, en general) siempre estará fuera de p . Por lo tanto, para cada cara de t , necesito tomar un punto arbitrario y probar si ese punto se encuentra fuera de p .tp pt p

Desde el punto en el artículo del polígono , llegué a conocer el algoritmo de fundición de Ray y el algoritmo de número de Winding . La proyección de rayos no es numéricamente estable para los casos en que el punto se encuentra en la superficie de . Pero la robustez numérica del algoritmo de número de Winding no se ha abordado allí. p

Con base en lo anterior, mi problema principal ahora parece ser (sugiera si debería hacerse como una pregunta separada):
¿Hay algún algoritmo numéricamente robusto para el problema de punto en el polígono ?

Pranav
fuente
Solo para aclarar: 1) ¿Puede el poliedro ser no convexo, y 2) si t y p comparten una cara o un borde (o parte de uno), ¿eso descalifica a t de estar "dentro" de p ? (Obviamente, basadas en sus requisitos, t y p se debe permitir que los vértices de las acciones.)pagtpagtpagtpag
Ilmari Karonen
tpagtpag
1
pag
1
la no convexidad tiene la rareza de que todos los vértices pueden estar dentro del poliedro y, sin embargo, el tetraedro puede estar afuera (ya que un borde no tiene por qué estar dentro como un todo). Posible algoritmo, vea si los bordes (entre el poliedro y el tetraedro) pueden tener intersecciones => el problema de que el tetraedro se encuentra afuera es genial
Nikos M.
1
¿Has visto el algoritmo de distancia Gilbert – Johnson – Keerthi? Tendría que descomponer el polígono / poliedro en formas convexas primero (como notó, un complejo simplicial haría el trabajo). Se sabe que GJK es muy estable y muy rápido.
Seudónimo

Respuestas:

2

Recientemente encontré una solución a este problema en un documento 'Segmentación robusta de adentro hacia afuera usando números de bobinado generalizados' de Alec Jacobson et.al., aquí . Resuelve el problema de localizar si un punto está dentro (o fuera) de una malla poligonal arbitraria (una con auto-intersecciones, no múltiples, superficies abiertas, etc.) utilizando la noción de número de devanado generalizado .

tpag

Pranav
fuente
pagtpagpagtpagpagttpag