相关疑难解决方法(0)

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

我需要一个算法,可以给我一个球体周围的位置N点(可能小于20),模糊地将它们展开.没有必要"完美",但我只是需要它,所以没有一个被捆绑在一起.

  • 这个问题提供了很好的代码,但是我找不到制作这种制服的方法,因为这似乎是100%随机化的.
  • 这个博客文章推荐有两种方式允许输入球体上的点数,但Saff和Kuijlaars算法完全是我可以转录的伪代码,我发现的代码示例包含"node [k]",我不能看到解释并破坏了这种可能性.第二个博客的例子是黄金分割螺旋,它给了我奇怪的,褶皱的结果,没有明确的方法来定义恒定的半径.
  • 这种算法这个问题好像它可能工作,但我无法拼凑出那是什么网页上成伪代码或任何东西.

我遇到的一些其他问题主题是随机均匀分布,这增加了我不关心的复杂程度.我很抱歉这是一个如此愚蠢的问题,但我想表明我真的很努力,但仍然很短暂.

所以,我正在寻找的是简单的伪代码,可以在单位球体周围均匀分布N个点,这些点可以返回球形或笛卡尔坐标.如果它甚至可以通过一点随机分布来更好(想想围绕恒星的行星,分散得很好,但有余地的余地).

python algorithm math geometry uniform

110
推荐指数
8
解决办法
8万
查看次数

单位球面上的均匀随机(Monte-Carlo)分布

我需要为我的宠物射线追踪器生成随机值的算法进行澄清.
我从一个点发射光线.我有这些光线分布的问题:我需要分布均匀,但它不是......

我现在面临的问题是,在我对结果空间的扭曲之后,最初的均匀分布是不均匀的.

因此,例如,如果极坐标系我生成r和t角.分布不均匀且不均匀:靠近每个极点的空间比靠近赤道的结果密度大得多.原因很清楚:我将均匀分布的点从圆柱空间转换为球形.而且我扭曲了结果.同样的问题是如果我规范化立方体中随机生成的点.

我现在的想法是这样的:我想创建一个四面体,对其顶点进行标准化,将每个面(三角形)与中间的点分开,对其进行标准化并递归重复,直到我有足够的点.然后我稍微"扭曲"这些点.然后我再次将它们标准化.而已.

据我所知,这种方法本身并不是纯粹的数学蒙特卡罗方法,因为除了最后一步之外,我不会在任何步骤中使用随机分布.我不喜欢这种复杂性的解决方案.

任何人都可以建议更简单但仍然

  • 随机
  • 制服
  • 快速
  • 简单

谢谢!

编辑:
我需要一个快速的方法,而不仅仅是正确的方法.这就是我问蒙特卡罗的原因.提供的答案是正确的,但不是很快.四面体的方法很快,但不是很"随机"=>不正确.
我真的需要一些更合适的东西.

random 3d montecarlo

9
推荐指数
2
解决办法
8500
查看次数

标签 统计

3d ×1

algorithm ×1

geometry ×1

math ×1

montecarlo ×1

python ×1

random ×1

uniform ×1