Spherical Voronoi Diagram

30 pointsposted 5 days ago
by marysminefnuf

9 Comments

srean

2 hours ago

The first thing I noticed was the spherical Dodadecahedron and if you turn on Delaunay triangulation button, then it's dual the Icosahedron, my favourite, the relationship is entirely platonic.

It would be fun to do Turtle graphics with geodesic motions on the sphere. If one adds Loxodromic motions, even better.

The geodesic turtle on the globe would be a good way to play with other platonic solids.

wood_spirit

2 hours ago

Beautiful :)

The idea that springs to my mind is to do Delaunay and Voronoi using spherical geometry. I think the article uses flat Euclidean geometry but if we tweak the fifth axiom we could do spherical or hyperbolic?

srean

2 hours ago

Curious about why you think he is using Euclidean.

From the looks of it the separators seem to be segments of great circles. That is what you would get as loci of angular bisectors.

Angular bisectors is what you would get when you use spherical geometry / arc length metric / Haversine metric.

You could still be right though. Euclidean would get you straight line bisectors, but when you project them back to the surface of the sphere, you get great circles again.

This connects with an important point (no pun intended):

People often use Haversine distance to find nearest neighbours on the globe. As long as you want to compute them modulo a hemisphere, this is unnecessary. Haversine distance and Euclidean restricted to the sphere are monotonic transforms of each other. Therefore the nearest point will be the same regardless of which one you used.

wood_spirit

an hour ago

As soon as I saw the beautiful rendering I wondered if it was using spherical geometry so I asked an AI. It dug and found discussion on d3 from the author about the algorithm :)

https://github.com/d3/d3/issues/1820

orthoxerox

2 hours ago

There's an algorithm that does it. I wrote a hobby implementation ten years ago. Basically, it's a modification of the sweeping line algorithm that sweeps the sphere from pole to pole.

edit: Found the code. Looks like I instead ended up simply building a convex hull (which is the Delaunay triangulation) and deriving the Voronoi diagram from it.

srean

2 hours ago

For spherical geometry you should not need to do anything special, no ?

Compute the Voronoi tessellation as usual and then project the linear separators back to the sphere (by connecting points on it to centre and extending the ray to the spherical surface).