adec314
Joined 3 months ago
Joined 3 months ago
https://github.com/For-a-few-DPPs-more/hyperuniform-samplers...
Stippling is an old topic. The question is simple: how to optimaly place points to fit a target distribution. Artists do that, and mathematicians search for algorithms to do it with computers, which is quite a challenge because naive formulations are intractable.
- Implementation based on Gaussian Blue Noise (me, both notebook and package): Feel free to explore stippling on your own images, from google Colab https://colab.research.google.com/drive/1W15QE8Boj0-Ld4Dx3N2... or directly by using the package from github https://github.com/For-a-few-DPPs-more/Recursive-Gaussian-Bl...
-Source for the theory of Gaussian Blue Noise (not me): Ahmed, Abdalla G. M. and Ren, Jing and Wonka, Peter (2022, doi 10.48550/arXiv.2206.07798)
Alternated 1d sorts make the [ij] grid structure converge to monotonic, spatially coherent multi index with a simple and fast algorithm (<80 lines basic C++ code, <200 ms runtime / million points)
https://news.ycombinator.com/item?id=49042861
Then I realised that to make the multi-indexing procedure more effective, I need some kind of preprocessing, to make the points flat (2d insteed of 3d). When they are already flat I can sort them better.
Then I heard about mesh flattening, https://geometrycollective.github.io/boundary-first-flatteni... geometry images https://hhoppe.com/proj/gim/ and thought: this is something I need to try with point clouds, whenever they have a latent surfacic distribution. And well, it seems to work. At least now I can have bunnys dragon and elephants all to fit in the grid and not getting half of the legs, ears or whatever lost in the process.