问题描述
假设我在 v-if
中有一些 n
点(在我的例子中为 4
点)。我想确定点 3 dimensions
最小化到这些 a
点中的每一个的平方距离,以及与任意点 n
和这些 b
点中的任意两个(即两个“最远点”)。
如何才能最有效地做到这一点?我知道,在 n
和 2 dimensions
点中,最小距离的点的解是由 3
点形成的三角形的质心,以及最大差异的解可以通过取一个恰好位于 3
点中的一个(任何?)的点来找到。看来 3
也应该如此,虽然我不确定。
解决方法
我想确定与这 n 个点中的每一个的距离最小的点
质心最小化到集合中每个点的平方距离之和。但不会最小化到点的最大距离(更远的距离)。
我怀疑您对计算包含集合中每个点的最小球体的中心和半径感兴趣。这是 CG 中的一个经典问题,可以很容易地以近似方式在线性时间内解决,或者完全可以通过编写 Emmerich Welzl 提出的算法来解决。
如果点数小到 4,则近似的解决方案是搜索距离最大的点对(有 12 对可能的点),并计算中点为中心,半距离为半径。然后,确保另外两个点也在球体内,或者在必要时使其增长。
查看更多信息,请访问 https://en.wikipedia.org/wiki/Bounding_sphere https://en.wikipedia.org/wiki/Smallest-circle_problem
,当三个点对齐并且未知点在“外部”(有无限多个解)时,可以实现一个点到两个给定点的距离之间的最大差异。在此配置中,差异只是两个给定点之间的距离。
如果您想同时最大化所有差异(或者更确切地说是差异的总和),您必须在某个方向上趋于无穷大。该方向使所有边的投影长度之和最大化。