Estoy buscando la ecuación más minimizada para encontrar las coordenadas centrales y el radio de una circunsfera de tetraedro dados cuatro puntos 3D.
Lo que encontré en Internet se ocupa principalmente de la circunferencia de un triángulo plano 3D, o de algunas definiciones matemáticas aproximadas, o de casos muy simples, como los tetraedros regulares. De todos modos logré encontrar la ecuación a continuación, pero me perdí algo:
-> -> ->
let d1, d2, and d3 three vectors of any face of the triangle :
| d1x d1y d1z | | x | | d1^2 |
2 * | d2x d2y d2z | * | y | = | d2^2 |
| d3x d3y d3z | | z | | d3^2 |
Mi conocimiento en este campo tiene sus límites, pero creo que puedo manejar matrices y operaciones de vectores. Pero, ¿es la parte correcta de la ecuación el cuadrado de la norma de cada vector? (que están en un vector). ¿Es válida la ecuación? ¿Es solo el escritor que perezosamente olvidó escribir | d1 | ^ 2? O ¿Es una forma común de definir alguna propiedad matemática?
PD: es para una implementación de triangulación de Delaunay. La ecuación (número 9) se encuentra en el siguiente enlace: https://www2.mps.mpg.de/homes/daly/CSDS/t4h/tetra.htm
Respuestas:
Si bien este es un hilo antiguo, pensé que sería bueno para la posteridad tener un poco de referencia. La fuente de la fórmula es de Herramientas geométricas para gráficos por computadora de Philip J. Schneider y David H. Eberly. Algo a tener en cuenta, según el texto.
Según entiendo el isomorfismo , puede haber varios significados diferentes cuando se usa en geometría. Si quiere decir isomorfo con respecto a la teoría de grafos, entonces el siguiente código debería comportarse correctamente, ya que la topología de cualquier tetraedro es la misma (K4, un gráfico completo). I probaron los resultados de la función contra wolfram alpha utilizando diversas permutaciones en el orden de los vértices canónicas, y vi ninguna diferencia en el resultado. Si el orden demuestra ser un problema, sugiero examinar la normalidad del triángulo formado por los vértices V1, V2, V3 al ingresar a esta función, y tratar los puntos como un medio espacio con una prueba de producto de punto para descubrir si ese triángulo está orientado en la dirección correcta. Si no es así, un simple
std::swap
de cualquiera de los dos vértices del triángulo invertirá la dirección de lo normal y puede continuar. Pero como dije, no vi diferencia con varias permutaciones.Aquí está el código traducido sin usar matrices para evitar confusiones de implementación, es bastante sencillo;
fuente