【发布时间】:2019-12-13 02:34:07
【问题描述】:
如果我有一个中心 (x,y,z) 和半径 r 的球体,是否存在一种算法来在球体内放置 X 个点 (x,y,z)彼此最大化?
例如一个点将简单地放置在中间,两个点将放置在相对的边界上,三个点将在边界上以“三角形”形式放置等等。
正如已经指出的那样,不能为每个点找到彼此相等的距离。因此,要求是最大化点之间的最小距离。
更新:
以下代码在半径为 1.0 的球体内生成点,但不会最大化距离。
function getPoint() {
var d, x, y, z;
do {
x = Math.random() * 2.0 - 1.0;
y = Math.random() * 2.0 - 1.0;
z = Math.random() * 2.0 - 1.0;
d = x*x + y*y + z*z;
} while(d > 1.0);
return {x: x, y: y, z: z};
}
我想我之后需要某种迭代。我尝试使用 n 体问题作为灵感来应用力模型,虽然看起来很有趣,但效果并不好。
【问题讨论】:
-
四面体格子?
-
“同时最大化占用空间”是什么意思?
-
你接受随机的统一布局还是只接受一个格子?
-
给定 4 个点,解是一个内接在球体中的四面体。但是对于 5 个或更多点,在 3D 中没有解决方案,其中 所有 对不同的点具有相同的距离(就像 2D 中没有 4 个或更多点的解决方案)。您想最大化不同点之间的最小距离吗?
-
你是对的,这是一个更好的解释。