[This is a work in progress, some interactives might not work]
It is a widely known scientific fact that a cow is a sphere. Further, one might trivially observe that, a sphere is a point. Hence, points are the infimum of world models, earning their canonical reverence by representing any object and describing any phenomenon. So, we have much incentive in studying points and the arrangements of points.
The point is the only geometry in the lowest dimension. The complication of dimensions allows us to make lines, squares, cubes, tesseracts, and so on. But since each of those objects can be discretized into the simpler forms – cubes made of squares, square of lines, and ultimately lines made of points, we can see that points truly can be thought of as building blocks of everything.
Kusama was right on money when she said “With just one polka dot, nothing can be achieved”. Points are interesting when they play with each other. In this post, I want to explore how points come together to create a complex myriad of patterns and phenomenon that we see in the world.
Let’s begin where the worlds end – the state of highest entropy or pure randomness! What does it look like to randomly sample points from a Uniform Distribution Function for our dots?
|Number of Points|
One might think "What's in a randomly scattered set of points?" – Quite a bit actually! For instance, Monte Carlo method to Calculate π
[Todo Demo] Finding ~pi.
Wes Anderson-esque patterns such as these are pleasing to look at. But they are not always useful, especially when we are modelling something more natural like trees on the forest floor, placing fur on characters etc.
Let's now try to hit a soft spot between the extremes of disorderliness and orderliness. One such way is Poisson Disk Sampling that I will demonstrate below.
One of the simplest structed random distributions is Jittered Grid. In this method, we divide our space into $n\times n$ grid and choose a random point in each grid block.
While this method is a step towards less regularity, we still see grid layout in low jitter values. On the other had, for higher jitter values, there are significant number of point too close to each other. There is no way to guarantee a good spaced out distribution with this approach. Fret not, because we have other tricks up our sleeve to fix these issues and get a better result.
Let's now look at Blue Noise, an even, isotropic, yet unstructured distribution of points using Poisson Disk Sampling. We will later see how minor variations of this allows us to make the night sky, or even make our own dithering engine.
But for now, here's a $O(n)$ implementation of the paper Fast Poisson Disk Sampling in Arbitrary Dimensions by Prof. Robert Bridson of University of British Columbia.