No estoy seguro de si este es el lugar adecuado para preguntar, pero aquí va ...geometría computacional, tetraedro firmó volumen
versión corta: Estoy tratando de calcular la orientación de un triángulo en un avión, formado por la intersección de 3 aristas, sin calcular explícitamente los puntos de intersección.
Versión larga: Necesito triangular un PSLG en un triángulo en 3D. Los vértices del PSLG están definidos por las intersecciones de segmentos de línea con el plano a través del triángulo, y se garantiza que se encuentran dentro del triángulo. Asumiendo que tenía los puntos de intersección, podría proyectar a 2D y usar una prueba del lado de la línea de puntos (o triángulo con signo) para determinar la orientación de un triángulo entre cualquiera de los 3 puntos de intersección.
El problema es que no puedo calcular explícitamente los puntos de intersección debido al error de coma flotante que se acumula cuando encuentro la intersección del plano de línea. Para averiguar si los segmentos de línea chocan con el triángulo en primer lugar, estoy usando algunos predicados geométricos robustos disponibles libremente, que dan el signo del volumen de un tetraedro, o de manera equivalente en qué lado de un avión se encuentra un punto. Puedo determinar si los puntos finales del segmento de línea están en lados opuestos del plano a través del triángulo, luego formar tetraedros entre el segmento de línea y cada borde del triángulo para determinar si el punto de intersección se encuentra dentro del triángulo.
Como no puedo calcular explícitamente los puntos de intersección, me pregunto si hay una forma de expresar el mismo cálculo de oriente 2D en 3D usando solo los puntos originales. Si hay 3 bordes golpeando el triángulo que me da 9 puntos en total para jugar. Asumiendo que lo que estoy preguntando es incluso posible (utilizando solo las pruebas de orientación 3D), entonces supongo que tendré que formar un subconjunto de todos los tetraedros posibles entre esos 9 puntos. Estoy teniendo dificultades incluso para visualizar esto, y mucho menos destilarlo en una fórmula o código. Ni siquiera puedo googlear esto porque no sé cuál sería la terminología estándar de la industria para este tipo de problema.
¿Alguna idea de cómo proceder con esto? Gracias. Tal vez debería preguntar también a MathOverflow ...
EDITAR: Después de leer algunos de los comentarios, una cosa que se me ocurre ... Tal vez si pudiera ajustar tetraedros no superpuestos entre los 3 segmentos de línea, entonces la orientación de cualquiera de los que cruzaron el avión sería la respuesta que estoy buscando. Además de cuando los bordes encierran un simple prisma triangular, no estoy seguro de que este sub-problema sea solucionable tampoco.
EDITAR: La imagen solicitada.
Recomendaría MathOverflow para esto. No estoy diciendo que no haya nadie aquí que pueda resolverlo, solo que probablemente obtendrás una respuesta más rápido allí (y no arriesgarías que tu pregunta se cerrara porque no está relacionada con la programación). – bta
¿Los segmentos de línea son ortogonales al triángulo? –
No lo estoy viendo. Tal vez un diagrama ayudaría. –