球体肯定包含给定的点列表[点数用x,y和z坐标]

时间:2011-04-21 05:05:10

标签: math geometry computational-geometry

我正在尝试找到乖乖包含给定点列表的球体。 点将具有x,y和z坐标[点为3D]。

实际上我试图根据给定的点列表找到新的三个点,通过一些计算找到MinX,MaxX,MinY,MaxY,MinZ和MaxZ并做一些操作并找到新的三个点

我将从这三点中提取球体。

我还将在球体直径上采用所有这些三个点,这样我就有了一个独特的球体。

是否有任何标准方法可以找到包含给定点数列表的范围?

2 个答案:

答案 0 :(得分:3)

是的,标准算法是Welzl's algorithm(假设你想要点周围的最小球)。特别是Gaertner的改进版本非常有用,强大且数值稳定!它也能很好地处理所有退化情况。

算法的核心是(随机)置换点以找到位于球体边界上的1-4个点。它基本上是一个聪明的试错算法。从这些点,您可以通过找到与所有这些点具有相同距离的点来找到中心。 Gärtner的版本使用改进的数字设备来找到中心。此外,它采用了额外的旋转步骤,可能会使算法更好地适用于大量输入点。

如果您想要的是一个围绕三个点的球体,我建议您仍然使用Gärtners“设备”来计算三角形的圆周。否则,该方法可能很容易退化(即当三角形非常平坦时)。

答案 1 :(得分:0)

您需要3分或任意数量的分数吗?

如果您只需要3个点的答案,则每对点定义一个线段。采取最长的线段。取一个以该线段中间为中心的球体,其半径为线段长度的一半。有两种情况。

  1. 第三点是初始球体内部。如果是这样,那么你就拥有最小的球体。
  2. 第三点是在初始球体之外。然后Find Circum Center of Three point of Triangle [Not using Compass]处的解将给出包含这3个点的最小球体的中心。
  3. 如果你需要任意数量的点,我会做一些迭代近似算法。由于您似乎不需要,我不会详细说明。