为了账号安全,请及时绑定邮箱和手机立即绑定

均匀地在球体上分布n个点

均匀地在球体上分布n个点

均匀地在球体上分布n个点我需要一个算法,可以给我一个球体周围的位置N点(可能小于20),模糊地将它们展开。没有必要“完美”,但我只是需要它,所以没有一个被捆绑在一起。这个问题提供了很好的代码,但是我找不到制作这种制服的方法,因为这似乎是100%随机化的。这个博客文章推荐有两种方式允许输入球体上的点数,但Saff和Kuijlaars算法完全是我可以转录的伪代码,我发现的代码示例包含“node [k]”,我不能看到解释并破坏了这种可能性。第二个博客的例子是黄金分割螺旋,它给了我奇怪的,褶皱的结果,没有明确的方法来定义恒定的半径。这种算法从这个问题好像它可能工作,但我无法拼凑出那是什么网页上成伪代码或任何东西。我遇到的一些其他问题主题是随机均匀分布,这增加了我不关心的复杂程度。我很抱歉这是一个如此愚蠢的问题,但我想表明我真的很努力,但仍然很短暂。所以,我正在寻找的是简单的伪代码,可以在单位球体周围均匀分布N个点,这些点可以返回球形或笛卡尔坐标。如果它甚至可以通过一点随机分布来更好(想想围绕恒星的行星,分散得很好,但有余地的余地)。
查看完整描述

3 回答

?
郎朗坤

TA贡献1921条经验 获得超9个赞

这被称为球体上的包装点,并且没有(已知的)通用的完美解决方案。但是,有很多不完美的解决方案。最受欢迎的三个似乎是:

  1. 创建一个模拟。将每个点视为约束到球体的电子,然后运行模拟一定数量的步骤。电子的排斥力自然会使系统处于更稳定的状态,在这种状态下,这些点可以得到的距离彼此相差很远。

  2. 超立方体拒绝。这种奇特的方法实际上非常简单:你在球体周围的立方体内统一选择点(远远超过n它们),然后拒绝球体外的点。将剩余的点视为向量,并将它们标准化。这些是你的“样本” - n使用某种方法(随机,贪婪等)选择它们。

  3. 螺旋近似。您在球体周围追踪螺旋线,并均匀分布螺旋周围的点。由于所涉及的数学,这些比模拟更复杂,但更快(并且可能涉及更少的代码)。最受欢迎的似乎是Saff等人

一个很多关于这个问题的更多信息,可以发现这里


查看完整回答
反对 回复 2019-08-15
  • 3 回答
  • 0 关注
  • 1282 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信