Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/algorithm/10.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Algorithm 在单位半球上均匀分布点_Algorithm_Geometry_Sampling - Fatal编程技术网

Algorithm 在单位半球上均匀分布点

Algorithm 在单位半球上均匀分布点,algorithm,geometry,sampling,Algorithm,Geometry,Sampling,要在单位球体上均匀分布点,将使用保持恒定表面积的斐波那契螺旋 现在是否可以使用类似的方法在单位半球上均匀分布点而不拒绝点?将绝对值取为 cos_theta = abs(((i * offset) - 1) + (offset / 2)) 不起作用,因为它似乎将点成对聚集。通过for循环,将y值从-1+1/samples循环到1-1/samples: for i in range(samples): y = ((i * offset) - 1) + (offset / 2) 您想从0+

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

现在是否可以使用类似的方法在单位半球上均匀分布点而不拒绝点?将绝对值取为

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

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

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

for i in range(samples):
    y = ((i * offset) - 1) + (offset / 2)
您想从
0+1/samples
循环到
1-1/samples
。只需跳过第一个
示例/2
迭代:

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


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

请参见仅使用网格的一半初始化网格。此外,链接的Q/A还提供了其他方法来解决此问题…@Spektre球体三角剖分也是我考虑的一个选项,它更容易推理,但细分球体的开销似乎更大还有2个链接()与你的方法类似,但没有利用球坐标和圆周长的螺旋线。。。