在单位半球上均匀分布点

3
要在单位球面上均匀分布点,答案使用了一个保持表面积恒定的斐波那契螺旋线。
现在是否可以使用类似的方法在单位半球面上均匀分布点,而不必拒绝某些点?像这样取绝对值:
cos_theta = abs(((i * offset) - 1) + (offset / 2))

似乎没有起到作用,因为它似乎将点成对聚集在一起。


1
请参考sphere triangulation。只需使用其一半初始化网格即可。此外,链接的问答提供了其他解决方法... - Spektre
@Spektre 球面三角剖分也是我考虑的一个选项,它更容易理解,但球面细分的开销似乎更大。 - Matthias
1
还有两个链接(https://dev59.com/0oHba4cB1Zd3GeqPYPjS#25031737)与您类似,但没有利用球面坐标和圆周长来进行螺旋处理的方法。 - Spektre
1个回答

4

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

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

您想从0 +1 /样本循环到1-1 /样本。只需跳过前样本/ 2 次迭代即可:

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

当然,现在重写表达式会更加简洁,使循环从0samples',但这应该是更多重构的好起点。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接