使用(d + 1)个点(或更少)在d维中创建球体

时间:2014-09-25 20:22:45

标签: multidimensional-array geometry linear-algebra computational-geometry

说我在D维空间中有N个点;其中N可以是从4到D + 1的数字。

我想创建由这N个点定义的最小可能球体,或者换句话说,创建一个包含所有N个点的最小球体(它完全通过所有N个点)。

解决方案的变量是它的中心和半径。

我对矩阵不好,我猜这个问题需要它们吗?

1 个答案:

答案 0 :(得分:1)

我相信你正在为你的积分x寻找(最小)circumsphere。正如你所建议的那样,这样的对象可以通过一些线性代数来计算。

m维度x中给出一组n(m <= n+1),以便:

x = [x_11, x_12, ..., x_1n]
    [x_21, x_22, ..., x_2n]
    .
    .
    .
    [x_m1, x_m2, ..., x_mn]

可以记下半径R的公共球体的方程式,以X = [X_1,X_2,...,X_n]为中心,通过x中的每个点:

(x_11 - X_1)^2 + (x_12 - X_2)^2 + ... + (x_1n - X_n)^2 = R^2      (1)
(x_21 - X_1)^2 + (x_22 - X_2)^2 + ... + (x_2n - X_n)^2 = R^2      (2)
.
.
.
(x_m1 - X_1)^2 + (x_m2 - X_2)^2 + ... + (x_mn - X_n)^2 = R^2      (m)

扩展每个等式中的二次项,从等式(1)中减去(2)--(m),并进行一些操作,得到一组中心X的线性方程:

M * X = B

其中:

M = [x_11-x_21, x_12-x_22, ..., x_1n-x_2n]
    .
    .
    .
    [x_11-x_m1, x_12-x_m2, ..., x_1n-x_mn]

B = [x_11^2-x_21^2 + x_12^2-x_22^2 + ... + x_1n^2-x_2n^2] * (1/2)
    .
    .
    .
    [x_11^2-x_m1^2 + x_12^2-x_m2^2 + ... + x_1n^2-x_mn^2] * (1/2)

请注意,M(m-1) x n矩阵,而B(m-1) x 1向量。

显然,当m = n+1时,矩阵是方形的,并且中心X有一个唯一的解决方案,完全描述与点x相关联的环球。 (半径可以作为从X到任何x_i的距离获得。

m < n+1解决方案不是唯一的时候,并且有一个无限的环球家族。在这种情况下,需要将其他约束添加到矩阵M以提供解决方案。

在你的情况下,我相信你可能希望约束X躺在点x所描述的共同超平面上,但我会更多地考虑这个问题。 ...