Eu tenho um tetraedro e um poliedro p . t é restringido de forma que sempre compartilhe todos os seus vértices com p . Quero determinar se t está dentro de p .
Gostaria de acrescentar um detalhe ao problema, caso ele possa contribuir para a solução: é um tetraedro de Delaunay e as faces de p são triangulares e são fortemente Delaunay, ambas em relação aos vértices de p . Um tetraedro é Delaunay se a circunsfera de seus vértices não contiver outro vértice dentro dele. Uma face é fortemente Delaunay se existe uma circumsphere contendo vértices desse cara na sua superfície, mas nenhum outro vértice em ou dentro dela.
As figuras a seguir mostram o mesmo problema no espaço :
O polígono original :
Triangulação de Delaunay dos vértices de :
Resultado do teste interno / externo dos triângulos (os triângulos sombreados estão dentro de e o resto está fora ):
Resultado desejado (poda de triângulos externos ) :
Meu problema original está no espaço 3D, então os triângulos nas figuras acima se traduzem em tetraedros e o polígono p se traduz em um poliedro arbitrário p . Eu descobri algumas formulações desse problema:
Formulação 1
As únicas partes de que podem estar fora de p são suas bordas e faces triangulares, mas em geral pode existir um p que tenha bordas de todos os t 's externos em sua superfície; portanto, alternativamente, esse problema também pode ser formulado como testar se para um tetraedro t existe uma face que se encontra fora de p ?
Formulação 2
Tenho outra perspectiva possível em relação a esse problema, mas sem qualquer idéia formal:
Geometricamente, se estiver do lado de fora, ele sempre ficará grudado na superfície externa de p . Portanto, se pudermos calcular os contornos (informalmente, o limite externo) C V e C V p de modo que V = V t ∪ V p e V t , V p sejam conjuntos de vértices em t , p respectivamente, então C ssetmentiras dentrop.
Eu gostaria de saber:
- Como posso resolver a Formulação 1 ou a Formulação 2 ?
- Ou existe alguma abordagem completamente diferente para resolver isso?
Atualização:
Agora percebo que esse problema pode ser reduzido a ponto no problema do poliedro . Como um tetraedro externo terá pelo menos uma face que fica fora de p , então qualquer ponto arbitrário nessa face (exceto seus vértices, em geral) sempre estará fora de p . Portanto, para cada face de t , preciso tomar um ponto arbitrário e testar se esse ponto está fora de p .
A partir do ponto no artigo de polígono, eu vim a conhecer o algoritmo de fundição de Ray e o algoritmo de número de enrolamento . A projeção de raios não é numericamente estável nos casos em que o ponto está na superfície de . Mas a robustez numérica do algoritmo de número de enrolamento não foi abordada lá.
Com base no exposto, meu problema principal agora parece ser (sugira se for feito como uma pergunta separada):
Existe algum algoritmo numericamente robusto para apontar no problema de polígono ?