Saturday AM, a story in two acts...
(Incl. placing crumbs by approaching it like a #PoissonDisk / #BlueNoise problem... π )
Saturday AM, a story in two acts...
(Incl. placing crumbs by approaching it like a #PoissonDisk / #BlueNoise problem... π )
Just posted a new #ThingUmbrella example: Image-based Poisson-disk sampling, using the image brightness as minium distance function between points to spatially vary densities...
Demo:
https://demo.thi.ng/umbrella/poisson-image/
Commented source code (<50 lines):
https://github.com/thi-ng/umbrella/blob/develop/examples/poisson-image/src/index.ts
Benchmark:
31506 points @ 719.10ms
(max. 500 failed attempts to place a point, using a kD-Tree as spatial index)
/cc @nkint
#PoissonDisk #Sampling #Pixel #Graphics #TypeScript #JavaScript #Canvas
Still only on a feature branch, but over the past few days I've been working on updating https://thi.ng/geom to add support for polygons with holes and paths with holes (or more generally support for sub-paths, e.g. multiple curves). Since both of these shape types are containers of multiple geometries and therefore require in some situations (e.g. shape conversions) different handling than the other shapes with a single boundary/geometry, adding support for these also includes updating a dozen or so polymorphic shape operators/functions and unfortunately will involve a few of breaking changes. For instance, some of these functions are returning an array of shapes now, instead of just a single one. Also related, some of the other geom support packages (e.g. https://thi.ng/geom-axidraw, https://thi.ng/geom-sdf) will have to be refactored more and partially have been already (likely only internally, though)...
As part of this work, I've also just added example #160(!!!) to demonstrate & test out some of this new functionality:
Demo:
https://demo.thi.ng/umbrella/geom-complex-poly/
Commits:
https://github.com/thi-ng/umbrella/compare/feature/geom-complex-paths
I will of course send another update once this all has been merged & released...
#ThingUmbrella #Geometry #Polygons #Shapes #PoissonDisk #TypeScript #JavaScript #OpenSource
Since some of you seem to like that above animation, here's an interactive version where you can disturb the cells via mouse/touch:
https://demo.thi.ng/umbrella/boids-voronoi/
#Boids #Voronoi #Algorithm #PoissonDisk #ComputationalDesign #Physics #Simulation #GenerativeDesign #ThingUmbrella #TypeScript
Nothing new, but maybe a little unusual: Using boids as alternative to Lloyd relaxation and/or Poisson-disk sampling. The boids here are using only two behaviors: local separation, plus a randomized attractor to create global disturbances. Cell density could also be varied by spatially adjusting the separation distance between boids. Overall convergence/relaxation can be much faster than shown here...
#Boids #Voronoi #Algorithm #PoissonDisk #ComputationalDesign #Physics #Simulation #GenerativeDesign #ThingUmbrella #TypeScript