【问题标题】:Circumcenter of Tetrahedron (in 4D)四面体的外圆心(4D)
【发布时间】:2015-08-05 22:51:54
【问题描述】:

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

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

【问题讨论】:

  • 认为你在 math.stackexchange.com/mate 上可能会更好
  • 嗯。对于某些固定的C,您可能需要找到将所有四个坐标转换为子空间{(x,y,z,C) : x,y,z in R} 的4D 旋转,然后您可以使用内置的triangulation.circumcenter 找到外心,然后将反向旋转重新应用到外心。
  • 您说“穿过四面体的所有 4 个顶点”,然后是“最小的封闭球体”。你想要哪一个?最小的封闭球体不一定会通过所有 4 个顶点。
  • 我想要通过所有 4 个顶点的最小球体。

标签: matlab delaunay tetrahedra


【解决方案1】:

我不知道一个明确的公式(如果存在,它可能不容易消化),但由于求解一个小型线性系统很容易得到中心 - 没有优化算法。给定点 P1、P2、P3、P4,应用平移使 P1 成为原点。任何包含 P1,...,P4 的球体的中心都将具有等距的性质:与 P1 和 P2 等距;来自 P1 和 P3;从 P1 和 P4。每一个都是一个线性方程。 4 个未知数有 3 个方程,因此系统是欠定的。您想要的解决方案是最小范数之一(最小二乘解决方案)。这不是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) 是否相等。

【讨论】:

  • 我的答案中的代码在Matlab中运行,没有任何工具箱; pinv 是标准的 Matlab 命令。
  • 在 4 个维度中,可以有无数个球体穿过一个四面体。这种方法是找到最小的球体还是接近最小的球体?
  • 是的,因为球体的半径是x的范数,而pinv(v)*bgives the solution with the smallest norm
  • 另外,我该如何扩展它以找到 5 个维度的 4-单纯形(具有 5 个顶点)的外心。
  • 完全一样,只是在矩阵v中再插入一行p5-p1,在向量b中再插入一行v(4,:)*v(4,:)'
猜你喜欢
  • 2020-12-29
  • 2016-11-27
  • 1970-01-01
  • 2022-10-17
  • 1970-01-01
  • 2017-02-10
  • 1970-01-01
  • 2017-12-04
  • 1970-01-01
相关资源
最近更新 更多