#blue #noise #sphere #distribution #random

spherical_blue_noise

球面上的蓝噪声发生器

1 个不稳定版本

0.1.1 2021年1月20日
0.1.0 2021年1月20日

#11 in #sphere

MIT 许可证

12KB
106

球面蓝噪声发生器

用于在单位球面上生成具有蓝噪声分布的点的库。

此算法的基本思想是

  • 首先在球面上生成随机(白色)分布的点。
  • 然后将每个点视为物理电荷粒子,并对每个点施加来自其他粒子的排斥力。
  • 随着时间的推移,粒子收敛到类似于蓝噪声的平衡状态。

因此,此算法的时间复杂度为 O(N^2),其中 N 是点的数量。(可以通过使用类似于 barnes-hut 算法的八叉树来加快速度)

可视化

plot

此动画的代码可在 examples 文件夹中找到。

示例

use spherical_blue_noise::*;

let blue_noise_vec: Vec<(f32, f32, f32)> = BlueNoiseSphere::new(16, &mut rand::thread_rng()).into_iter().collect();
println!("{:?}", blue_noise_vec);

参考

基本思想基于以下论文

Wong, Kin-Ming 和 Wong, Tien-Tsin. "Spherical Blue Noise", Pacific Graphics Short Papers, 2018, 链接

依赖项

~5.5MB
~135K SLoC