Estou procurando a equação mais minimizada para encontrar as coordenadas centrais e o raio de uma circunsfera de tetraedro, com quatro pontos 3D.
O que encontrei na internet lida principalmente com a circunferência de um triângulo 3D plano, ou com algumas definições matemáticas grosseiras, ou com casos muito simples, como tetraedros comuns. Enfim, consegui encontrar a equação abaixo, mas perdi uma coisa:
-> -> ->
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 |
Meu conhecimento neste campo tem seus limites, mas acho que posso lidar com matrizes e operações de vetores. Mas a parte direita da equação é o quadrado da norma de cada vetor? (que estão em um vetor). A equação é válida? É apenas o escritor que se esqueceu de escrever | d1 | ^ 2? Ou é uma maneira comum de definir alguma propriedade matemática.
PS: É para uma implementação de Triangulação em Delaunay. A equação (número 9) está no seguinte link: https://www2.mps.mpg.de/homes/daly/CSDS/t4h/tetra.htm
Respostas:
Embora esse seja um tópico antigo, achei que seria bom para a posteridade ter um pouco de referência. A fonte da fórmula é de Geometric Tools for Computer Graphics, de Philip J. Schneider e David H. Eberly. Algo a observar, de acordo com o texto
Pelo que entendi o isomorfismo , pode haver vários significados diferentes quando usados em geometria. Se ele quer dizer isomórfico em relação à teoria dos grafos, o código a seguir deve se comportar corretamente, pois a topologia de qualquer tetraedro é a mesma (K4, um gráfico completo). Eu testei os resultados da função contra alfa wolfram usando várias permutações na ordenação dos vértices canônicas, e eu não vi nenhuma diferença no resultado. Se a ordem provar ser um problema, sugiro examinar o normal do triângulo formado pelos vértices V1, V2, V3 após a entrada nessa função e tratar os pontos como um meio espaço com um teste de produto a ponto para descobrir se esse triângulo estiver voltado para o lado certo. Se não for, um simples
std::swap
qualquer um dos dois vértices do triângulo reverterá a direção do normal e você poderá continuar. Mas, como eu disse, não vi diferença com várias permutações.Aqui está o código traduzido sem o uso de matrizes para evitar qualquer confusão na implementação; é bastante direto;
fonte