四面体的圆周(4D)

时间:2015-05-24 08:56:42

标签: matlab delaunay tetrahedra

我试图计算四维空间中四面体的外心。基本上我所寻找的是最小球体的中心,它通过四面体的所有4个顶点。我在网上搜索过,但似乎找不到任何具体的公式。我的总体目标是找到外心并检查给定数据集中的任何其他点是否位于围绕四面体顶点构造的球体内。类似于Delaunay三角测量的工作原理。注意,四面体可以是正四面体,也可以是不规则的四面体。

目前我正在使用自定义优化功能,该功能使用GA来定位与所有4个顶点等距的点。但是,这并不总能找到最小的封闭球体。我希望有一些具体的数学公式可以使这个计算更准确。

1 个答案:

答案 0 :(得分:1)

我不知道一个明确的公式(如果存在一个公式,它可能不容易消化),但是通过求解一个小的线性系统很容易得到中心 - 没有优化算法。给定点P1,P2,P3,P4,应用平移使P1成为原点。包含P1,...,P4的任何球体的中心将具有等距的性质:从P1和P2;来自P1和P3;来自P1和P4。这些中的每一个都是线性方程。有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)是否相等。