2015-05-24 3 views
1

Я пытаюсь вычислить окружность тетраэдра в 4-мерном пространстве. В основном то, что я ищу, является центром наименьшей сферы, проходящей через все 4 вершины тетраэдра. Я искал в Интернете, но, похоже, не нашел какой-либо конкретной формулы для этого. Моя общая цель - найти окружность и проверить, находится ли какая-либо другая точка в заданном наборе данных внутри сферы, построенной вокруг вершин тетраэдра. Подобно тому, как работает триангуляция Делоне. Заметим, что тетраэдр может быть правильным тетраэдром, а также нерегулярным тетраэдром.Circumcenter of Tetrahedron (in 4D)

В настоящее время я использую пользовательскую функцию оптимизации, которая использует GA для нахождения точки, которая эквидистантна из всех 4 вершин. Однако это не всегда находит наименьшую охватывающую сферу. Я надеялся на какую-то конкретную математическую формулу, которая может сделать этот расчет более точным.

+3

Думайте, что вам может быть лучше на math.stackexchange.com/ mate –

+0

Hm. Вероятно, вам нужно найти 4D-поворот, который преобразует все четыре координаты в подпространство '{(x, y, z, C): x, y, z в R}' для некоторого фиксированного 'C', тогда вы можете найти окружность используя встроенный 'triangulation.circumcenter', после чего повторно примените обратное вращение к окружности. – knedlsepp

+0

Вы сказали, что «проходит через все четыре вершины тетраэдра», а затем «наименьшая охватывающая сфера». Какой вы хотите? Наименьшая охватывающая сфера не обязательно проходит через все 4 вершины. –

ответ

0

Я не знаю явной формулы (и если она существует, ее, вероятно, нелегко переварить), но легко получить центр в результате решения небольшой линейной системы - без алгоритмов оптимизации. При заданных точках P1, P2, P3, P4 применять перевод так, чтобы P1 стал началом. Центр любой сферы, содержащей P1, ..., P4, будет иметь свойство быть равноудаленным: из P1 и P2; из P1 и P3; из P1 и P4. Каждое из них является линейным уравнением. Существует 3 уравнения для 4 неизвестных, поэтому система недоопределена. Решение, которое вы хотите, является наименьшей нормой (решение наименьших квадратов). Это не решение, которое дает backslash operator, но можно использовать pinv, чтобы получить его, что для небольших матриц не дорого.

p1 = rand(1,4); p2 = rand(1,4); p3 = rand(1,4); p4 = rand(1,4); % test input 
v = [p2-p1; p3-p1; p4-p1];  % matrix of linear system 
b = 0.5*[v(1,:)*v(1,:)' ; v(2,:)*v(2,:)' ; v(3,:)*v(3,:)']; % RHS of the system 
x = p1 + (pinv(v)*b)' % least squares solution, translated back 

Вы можете проверить, что norm(x-p1) ... norm(x-p4) равны.

+0

Код в моем ответе работает в Matlab без каких-либо наборов инструментов; 'pinv' - стандартная команда Matlab. –

+0

В четырех измерениях бесконечное число сфер проходит через тетраэдр. Подходит ли этот подход к наименьшей сфере или к самой маленькой сфере? – user1234

+0

Да, поскольку радиус сферы является нормой x, а 'pinv (v) * b' [дает решение с наименьшей нормой] (http://en.wikipedia.org/wiki/Moore%E2% 80% 93Penrose_pseudoinverse # Minimum_norm_solution_to_a_linear_system). –

 Смежные вопросы

  • Нет связанных вопросов^_^