In the Archives

Charting Constellations into Nations

Over the last two work sessions I've been learning how to coax a fictional world map into existence with the care a cartographer gives coastlines and an astronomer gives constellations. The nations of Mortum Caelum have always traced their roots to the stars, so my aim was to take the sky’s geometry and bend it into believable land. That path led through a few false starts, a handful of stubborn equations, and at last a geometric solution that feels both rigorous and lyrical.

From stars to borders

I began by pulling in the official constellation boundary tables from the International Astronomical Union. Those are the straight lines that divide the sky by right ascension and declination. My mapping library, Leaflet, can draw polygons, so the first plan was simple: convert those celestial coordinates into Mortum Caelum’s world grid and use them as national borders. Easy, right?

Early trials used affine transforms and polynomial fits. (Yes, I had to look those up and ask ChatGPT to explain them.) On paper they worked, but the map looked wrong. Some nations stretched like pulled dough while others shrank to crumbs, and the edges refused to sit comfortably against the terrain. It was the classic case of a model that is technically correct but visually false. I tried to use offsets to force it, but no matter how I poked things didn't line up.

Grounding the sky

So I reversed course. Instead of forcing the sky onto the land, I let the land speak first! Each nation and city already had latitude and longitude anchors from worldbuilding notes I wrote decades ago, so I built polygons that wrapped around those points. The first pass used convex hulls (the mathematical version of pulling a tight rubber band around a set of pins) but overlaps and gaps quickly appeared where borders met like puzzle pieces that didn't quite fit.

The breakthrough came with a Voronoi approach. Imagine every city sending out a signal and every spot on the map pledging allegiance to whichever signal is nearest. By computing that pattern and merging cells belonging to the same nation, I ended up with a complete tiling of the map. No overlaps, no empty space, and every settlement resting safely inside its own borders. Huzzah!

Cleaning and trimming those cells into GeoJSON gave me a working political layer that Leaflet renders in real time. Watching the shapes lock together like stained glass was its own quiet reward.

Refinement and rhythm

This round of work built on last session’s improvements: faster load times, better label avoidance (so they don't overlap when cities are close to one another), smoother panel animations. There is still polishing to do, especially along the coasts. For now the sea boundaries spill to a broad bounding box so that every nation touches water. In a later pass I’ll draw the maritime lines by hand, guided by the printed sketches in ancient notebooks. Oh, and I should probably do something about the poles. Things get goofy at the extremes.

Why this matters

None of this labor is about perfection in code. It’s about creating a world that feels inhabited. Readers will never check if a Voronoi tessellation defined a border or if I adjusted an outline with polynomial regression, but they will sense whether the geography holds weight. The mix of astronomy, geometry, and storytelling is what makes Mortum Caelum breathe, and the map should honor that.

Now a single command can regenerate every border. Add a city, run the script, and the land rearranges itself around the newcomer, a quiet, almost magical act of creation. It may seem an indulgent effort, but each small calculation ensures that when someone zooms in to explore, they meet a landscape tended with patience, curiosity, and a trace of wonder.

Voronoi-derived national borders alongside their guiding constellations
Voronoi-derived national borders alongside their guiding constellations