在单位半球上均匀分布点

Distribute points evenly on a unit hemisphere

为了在单位球体上均匀分布点,answer 使用保持恒定表面积的斐波那契螺旋线。

现在是否可以用类似的方法在一个单位半球上均匀分布点而不排斥点?取绝对值如

cos_theta = abs(((i * offset) - 1) + (offset / 2))

不起作用,因为它似乎将点成对聚集。

y 值通过 for 循环从 -1+1/samples 循环到 1-1/samples

for i in range(samples):
    y = ((i * offset) - 1) + (offset / 2)

您想从 0+1/samples 循环到 1-1/samples。只需跳过前 sample/2 次迭代:

for i in range(samples / 2, samples):
    y = ((i * offset) - 1) + (offset / 2)

当然,现在稍微重写表达式会更简洁,这样您就可以再次从 0 循环到 samples',但这应该是进行更多重构的良好起点。