四面体的外心(在 4D 中)
Circumcenter of Tetrahedron (in 4D)
我正在尝试计算 4 维四面体的外心 space。基本上我正在寻找的是穿过四面体所有 4 个顶点的最小球体的中心。我在网上搜索过,但似乎找不到任何具体的公式。我的总体目标是找到外心并检查给定数据集中的任何其他点是否位于围绕四面体顶点构建的球体内。类似于 Delaunay 三角剖分的工作原理。注意,四面体可以是正四面体,也可以是不规则四面体。
目前我正在使用自定义优化函数,它使用 GA 来定位与所有 4 个顶点等距的点。然而,这并不总能找到最小的封闭球体。我希望有一些具体的数学公式可以使这个计算更准确。
我不知道一个明确的公式(如果存在,可能不容易理解),但是通过求解一个小的线性系统很容易得到中心——没有优化算法。给定点 P1、P2、P3、P4,应用平移,使 P1 成为原点。包含 P1,...,P4 的任何球体的中心将具有等距的 属性:从 P1 和 P2;来自 P1 和 P3;来自 P1 和 P4。其中每一个都是一个线性方程。 4 个未知数有 3 个方程,因此系统欠定。您想要的解决方案是最小范数之一(最小二乘解决方案)。这不是 backslash operator gives, but one can use 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)
是否相等。
我正在尝试计算 4 维四面体的外心 space。基本上我正在寻找的是穿过四面体所有 4 个顶点的最小球体的中心。我在网上搜索过,但似乎找不到任何具体的公式。我的总体目标是找到外心并检查给定数据集中的任何其他点是否位于围绕四面体顶点构建的球体内。类似于 Delaunay 三角剖分的工作原理。注意,四面体可以是正四面体,也可以是不规则四面体。
目前我正在使用自定义优化函数,它使用 GA 来定位与所有 4 个顶点等距的点。然而,这并不总能找到最小的封闭球体。我希望有一些具体的数学公式可以使这个计算更准确。
我不知道一个明确的公式(如果存在,可能不容易理解),但是通过求解一个小的线性系统很容易得到中心——没有优化算法。给定点 P1、P2、P3、P4,应用平移,使 P1 成为原点。包含 P1,...,P4 的任何球体的中心将具有等距的 属性:从 P1 和 P2;来自 P1 和 P3;来自 P1 和 P4。其中每一个都是一个线性方程。 4 个未知数有 3 个方程,因此系统欠定。您想要的解决方案是最小范数之一(最小二乘解决方案)。这不是 backslash operator gives, but one can use 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)
是否相等。