The method

How one is
actually made.

Eight stages run between typing a place name and a file leaving for the printer. Most of them are astronomy. This page is the whole method, including the parts that are easy to get wrong, because the claim that the sky is calculated rather than illustrated is only worth anything if it can be checked.

01

The place becomes two numbers

A poster cannot be calculated from the word "Edinburgh". The first job is to turn what you typed into a latitude and a longitude, which is done through a geocoder as you type, before you have finished the word.

We keep two labels from that lookup and use them for different things. The long one disambiguates in the dropdown, because Edinburgh in Scotland and Edinburgh in Indiana are 5,700 kilometres apart and would produce visibly different skies. The short one is the only part that reaches the print, because a piece on a wall wants the name of a place, not an address.

The geocoder was chosen for a reason that has nothing to do with accuracy: it imposes no attribution requirement. Several good ones oblige you to print a credit line on anything derived from them, which would mean a licence notice on the bottom of your poster forever.

02

The moment becomes a single number

Calendars are hostile to arithmetic. Months are different lengths, leap years are irregular, time zones move by political decision, and daylight saving deletes an hour every spring and repeats one every autumn. None of that can appear anywhere near a rotation calculation.

So the moment is converted immediately into a Julian Date: a continuous count of days that has been running without interruption since 4713 BC. Once your evening is a single real number, every later step is ordinary arithmetic instead of calendar handling.

JD = t / 86 400 000 + 2 440 587.5
t is the moment in milliseconds since 1970. The constant is the Julian Date of that instant, so the addition simply moves the origin back to where astronomers keep it.
03

The Earth is asked where it has turned to

This is the step people expect to be simple and is not. A day is not one rotation. In the twenty four hours between one noon and the next, the Earth has also travelled roughly one degree along its orbit, so it has to turn slightly more than a full circle to point the same face at the Sun again. Measured against the fixed stars, which is what a star map cares about, the planet turns about 360.9856 degrees per solar day.

That extra 0.9856 degrees is not a rounding detail. Ignore it and the sky drifts by roughly four minutes a day, which is two hours after a month and a completely different set of constellations after six. Getting it right is the difference between a star map and a decorative circle of dots.

The quantity that comes out is Greenwich Mean Sidereal Time: how far the sky above the Greenwich meridian has rotated, in degrees.

T    = (JD - 2 451 545.0) / 36 525
GMST = 280.46061837
     + 360.98564736629 × (JD - 2 451 545.0)
     + 0.000387933 × T²
     - T³ / 38 710 000
The last two terms are small corrections for the slow wobble of the Earth's axis. They matter over decades, and a piece bought for a date in 1997 is exactly the case where they do.
04

Longitude and the hour angle

Greenwich sidereal time describes the sky over one meridian in London. Your longitude rotates it to the sky over you, giving local sidereal time. Subtracting the star's right ascension from that gives the hour angle: how far past your meridian that particular star has already swung.

Every star in the catalogue gets its own hour angle, because every star has its own right ascension. This is the point where the calculation stops being about the Earth and starts being about 5,044 individual objects.

LST = GMST + longitude
H   = LST - right ascension
Both are reduced back into the range 0 to 360 degrees. Skipping that produces negative angles that survive the trigonometry silently and mirror the sky.
05

Equatorial coordinates become horizontal ones

Star catalogues do not describe the sky as you see it. They use equatorial coordinates, right ascension and declination, which are fixed to the celestial sphere and take no view on where you are standing. They are the same for an observer in Reykjavík and one in Sydney, which is precisely what makes them useless for a poster.

What a poster needs is horizontal coordinates: altitude, the angle above your horizon, and azimuth, the compass bearing. Converting between the two is the mathematical centre of the whole product, and it is done separately for every star, for your latitude, at your moment.

The azimuth has to be computed with a two argument arctangent rather than a plain one. An ordinary arctangent cannot tell northeast from southwest, because it only receives the ratio of the two components and has lost their signs. Use the wrong one and half the sky is reflected into the other half, which looks plausible enough to ship and is completely wrong.

The clamp on the last line is not decoration either. Floating point arithmetic can return 1.0000000000000002 for a quantity that mathematically cannot exceed 1, and the arcsine of that is not a number. One star at the exact zenith would quietly vanish from the print.

sin(altitude) = sin(dec)·sin(lat)
              + cos(dec)·cos(lat)·cos(H)

azimuth = atan2(
    -sin(H)·cos(dec),
     cos(lat)·sin(dec) - sin(lat)·cos(dec)·cos(H)
)

altitude = asin(clamp(sin(altitude), -1, 1))
Run 5,044 times per render. Anything with a negative altitude is below your horizon that night and is discarded rather than drawn.
06

The sky is flattened onto a disc

The sky is a hemisphere and paper is not, so something has to give. The choice of how to flatten it is a real decision with a visible consequence.

The obvious approach is to space stars linearly by altitude: something halfway up the sky lands halfway to the rim. It is easy, and it is wrong in a way anyone can see, because it stretches everything near the horizon and the constellations come out distorted. Orion arrives looking like it has been pulled sideways.

We use a stereographic projection about the zenith instead. It is conformal, meaning it preserves angles locally, so shapes survive. The point directly overhead lands in the centre of the disc and your horizon becomes the rim exactly, which is why the circle on the finished piece is not a decorative frame. It is the horizon.

r = R · tan((90° - altitude) / 2)
R is the radius of the disc. At the zenith the altitude is 90 degrees and r is 0. At the horizon the altitude is 0 and r is exactly R.
07

Brightness becomes geometry

A star has no size on paper, only a brightness, so brightness has to be turned into something a printer can lay down. The astronomical magnitude scale makes this awkward twice over: it runs backwards, so smaller numbers are brighter, and it is logarithmic, so a difference of five magnitudes is a factor of a hundred in light.

Mapping that linearly onto a radius produces a page of near identical dots that reads as static. The curve below is deliberately steep, so the handful of genuinely bright stars separate from the field and the constellations become findable. Opacity is varied alongside radius, which is what stops the faint end from looking like print noise.

m = clamp(magnitude, -1.5, 6.5)
t = (6.5 - m) / 8
r = (0.0008 + t^2.6 × 0.0165) × R
The exponent is the entire look of the piece. Lower it and the sky flattens into noise; raise it and only a dozen stars survive.
08

Type, then a print file

The disc, the rim, your heading, the date, the place and the coordinates to four decimal places are composed into vector artwork, which is then rasterised to 4500 by 6000 pixels for the large print.

The proportions are not an aesthetic choice. Every frame we sell is 3:4, so the artwork is 3:4. An earlier version rendered at 5:7 and would have been cropped to fit, and the crop would have taken a bite out of the lettering on every single order before anyone noticed.

The last detail is the one worth insisting on: the preview on the site and the file sent to the printer come from the same function. The preview is not a mock-up of the artwork, it is the artwork, rendered narrower and stamped. Nothing is substituted between what you approve and what is printed.

How we know
it is right

Maths that looks plausible on screen is the failure mode here, because a wrong sky still looks like a sky. So the engine is tested against a star whose behaviour is known in advance.

Polaris sits within a degree of the north celestial pole. Its altitude should equal your latitude, it should not move as the Earth turns, and it should be invisible from the entire southern hemisphere. A sign error, a longitude error or a degrees and radians mix-up each break at least one of those.

CheckExpectedMeasured
Polaris from LondonShould stand at the observer's latitude, 51.51°50.78°, out by 0.73°
The same star six hours laterShould not move, it marks the poleMoved 0.82°
Polaris from the equatorShould sit on the horizon, 0°0.53° below it
Polaris from SydneyShould never be visible33.18° below the horizon
Its bearing from New YorkShould be due north, 360°359.11°, off by 0.89°
Catalogue above the horizonShould be about half the sphere2,280 of 5,044, 45.2%

Every check passes inside 1.2 degrees. For scale, that is roughly two and a half times the width of a full moon, on a printed disc where a single star is a fraction of a millimetre across. The error is far finer than paper can resolve, and the tests run against the same module the printer uses.

All of that happens while you type.

Change the hour by one and the whole disc turns, because it is recalculated from the beginning rather than adjusted. What you see on the page is the print file.

Make yours