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 .
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.
Las siguientes figuras muestran el mismo problema en el espacio :
El polígono original :
Delaunay triangulación de vértices de :
Resultado de la prueba interior / exterior sobre los triángulos (los triángulos sombreados están dentro de y el resto están fuera ):
Resultado deseado (poda fuera de triángulos) :
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:
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 ?
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 t ∪ V p y V t , V p son conjuntos de vértices en t , p respectivamente, entonces C sitestá dentro dep.
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 .
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í.
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 ?
Respuestas:
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 .
fuente