我正在尝试计算四维空间中四面体的圆心。基本上我要找的是穿过四面体所有4个顶点的最小球体的中心。我在网上搜索过,但似乎找不到任何具体的公式。我的总体目标是找到圆周中心,并检查给定数据集中是否有任何其他点位于围绕四面体顶点构建的球体内。类似于德劳内三角测量的原理。注意,四面体可以是正四面体,也可以是不规则四面体。
目前我正在使用自定义优化函数,该函数使用GA来定位与所有4个顶点等距的点。然而,这并不总是找到最小的封闭球体。我希望有一些具体的数学公式可以使这个计算更精确。
我不知道一个明确的公式(如果存在,它可能不容易消化),但很容易得到中心作为解决一个小的线性系统的结果-没有优化算法。给定点P1 P2 P3 P4,应用平移使P1成为原点。任何包含P1的球体的中心,…,P4与P1和P2的距离相等;从P1和P3;从P1到P4。每一个都是线性方程。有3个方程,4个未知数,所以系统是欠定的。你想要的解是最小范数的解(最小二乘解)。这不是反斜杠运算符给出的解决方案,但可以使用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)
相等。