How GoRhyme Star Charts Are Calculated
Our charts are calculated with our own software, so if you give us a date, a time, and a place, we can give you back a work of art that shows the sky as it was, or as it will be. Our goal is to place the stars, the planets, and the Moon exactly where they were. This page explains our star chart calculation step by step, and what the charts do and do not do.
The short version
The chart begins with a published catalog of 8,920 stars. It nudges each one slightly to account for the fact that stars drift. It then rotates the entire sky to account for the slow wobble of Earth’s axis, which shifts the coordinate grid measurably over even a couple of decades. It works out how high each star stood above your horizon and in which compass direction.
We then project the celestial sphere onto a circle. The center of the circle is the point directly overhead. The rim is the horizon, all the way around you. Brighter stars are drawn larger. The same process applies to the five planets visible without a telescope and to the Moon, including which side of the Moon was lit that night.
Where the stars come from
The catalog is the HYG Stellar Database, version 4.2, a merge of the Hipparcos, Yale Bright Star, and Gliese catalogs. It is embedded, not downloaded, which is what makes the chart reproducible. There are exactly 8,920 stars in it, filtered to visual magnitude 6.5 and brighter. That is roughly what a person with good eyes can see from a genuinely dark site. Brightness runs from Sirius at magnitude -1.44 down to 6.5, with nothing fainter included.
Every star carries its catalog number, its common name where it has one, its position for the standard J2000 reference epoch, its rate of drift across the sky, its brightness, and its constellation. We have chosen the constellation lines for a selection of 39 constellations, drawn from the standard constellation figures. They are chosen for legibility on a printed sheet, so the chart is not a solid mass of dots.
The five calculation steps
Every star goes through the same sequence.
One, proper motion. Stars drift slowly, and over decades the movement adds up. The chart measures the elapsed time from the standard reference date of January 1, 2000, to your moment, then shifts each star by its measured rate of drift. This is applied to all 8,920 stars because every star in this catalog carries drift values.
Two, precession and nutation. Earth’s axis wobbles like a slowing top, which means the coordinate grid astronomers used in the year 2000 does not line up with the sky’s grid on your date. Ignore this, and the error runs to about 50 arcseconds a year, which becomes minutes of arc within a couple of decades and is visible on a printed chart. The chart converts each star’s position into a three-dimensional vector and rotates the whole sky with a single matrix that carries year-2000 coordinates to the true sky of your date. That matrix handles precession and nutation together. It is computed once and applied to every star.
Three, your horizon. The corrected position is combined with your latitude and longitude and the sidereal time at your moment, which gives each star an altitude above your horizon and an azimuth, its compass bearing. The observer is placed at sea level. Elevation does not move the stars: the direction to a star changes by less than a hundredth of an arcsecond, whether you stand at sea level or on a mountain. What elevation moves is the horizon, which drops away from you as you climb, by roughly a degree and a half at the altitude of Quito, and it changes the air pressure that governs refraction at the rim.
Four, atmospheric refraction. Air bends starlight, lifting objects near the horizon by roughly half a degree right at the rim and by rapidly less as you look higher. That correction is applied here, using the standard Bennett formula, to the stars, the planets, and the Moon alike. A star sitting just below the true geometric horizon can therefore still be lifted into view on your chart, as it would have been in the real sky. Many chart makers skip this step.
Five, projection. The dome of sky is projected onto the circle using a zenithal stereographic projection, centered on the point overhead. A star directly overhead lands at the center. A star on the horizon lands on the rim. A star below the horizon is dropped, not drawn outside the circle. Stereographic projection preserves angles, which is the reason it was chosen. It means the constellation shapes on your paper match the shapes in the sky, though they grow somewhat larger toward the rim. The chart is drawn as the sky looks when you lie on your back and look up, so north is at the top and east is on the left. That east-west flip is deliberate and is the correct orientation for a sky map.
The planets and the Moon
Mercury, Venus, Mars, Jupiter, and Saturn are not read from the star catalog. They are computed directly for your moment, then run through the same horizon and projection steps as the stars. Their brightness on the night in question sets the size of the dot, so Venus at its brightest is drawn largest.
The planets and the Moon are computed in more detail than the stars. Their positions include annual aberration, the small apparent shift caused by Earth’s own motion through space, along with light travel time and your specific position on the globe instead of Earth’s center. The Moon is positioned the same way, and the chart also reads its phase angle and the fraction of its face that was lit, so the Moon on your print is drawn at the correct phase and lit from the correct side.
Brightness and dot size
Brightness controls dot size, and for the brightest stars, a soft glow. There is no color coding and no fading. The mapping is done in brightness space, not magnitude space, meaning the sizes reflect how much more light a bright star delivers, not just its number on a scale. Sizes are then clamped at both ends so that Sirius does not swallow its neighbors, and a magnitude 6 star still prints as a visible dot. Planets use the same curve, scaled up slightly so they read as planets. The Moon is drawn larger than any planet. Stars brighter than magnitude 2.5 carry a glow that grows with brightness. Everything is calculated in chart units at 300 dpi on a 3600 by 3600 unit canvas, which is a 12 by 12 inch print at full resolution.
The backgrounds are computed too
The ground your chart is printed on is generated the same way the sky is, by algorithms, not stock textures. There are five engines behind the styles on offer. Like many of GoRhyme’s tools, they are mathematical and often fractal-based.
Fractal-based: A WebGL2 procedural field: simplex noise fed into fractal Brownian motion with an explicit Hurst exponent and a two-stage domain warp, then modulated by a fractal flame system using the Scott Draves variations, colored via a gradient lookup, and grained with paper noise.
Marbled: A true fluid marbling simulation, using the area-preserving ink-drop map from the marbling literature and the true exponential falloff of the comb and tine, decomposed so that the bulk drag of the sheet and the ripple stay separate, and the rake marks stay crisp. This is the math of Ebru, the craft used for marbled endpapers.
Watercolor: A watercolor simulation built on a single shared paper height field, so pooling, wet-in-wet bleed, edge bite, granulation, and backrun blooms all arise from one sheet topography instead of separate noises stacked on top of each other.
Textures: The remaining two are full noise cores, value, simplex, fBm, domain warp, and Worley, with line and speck systems for clouds, water, and print grounds.
Everything is specified in physical units, not pixels: grain in cells per inch, noise in inches per noise unit, so a pattern is the same physical size on a 5 by 7 as on a 12 by 16, at any resolution. Output is a true 16-bit PNG with blue-noise dither, exported in tiles, so full print resolution is not capped by the canvas or the GPU. The render path is deterministic, with seeded streams and no random calls, so the same seed reproduces the exact same ground, which is what makes a reorder or a correction possible years later. The engines also share a coordinate contract. The window aperture in one is written to match the aperture in another, so grounds, washes, and the chart window stack in register without being aligned by eye.
What the chart is not
This is a map of the stars, not a photograph. It does not know whether the time was day or night, and it does not compute the Sun at all, so there is no sunrise, sunset, or twilight. A chart made for noon will plot every star that was geometrically above the horizon at noon, none of which you could have seen. It does not dim stars near the horizon, where you are looking through more air, and it does not wash out faint stars near a bright Moon. Every star above the horizon, down to the chosen brightness limit, is drawn at full strength. By default, your chart prints stars down to magnitude 5.5, not the full catalog’s 6.5. This gives a realistic naked-eye sky and keeps the print from turning to grain. Fainter and brighter limits are available.
Stellar parallax is not applied. Every star is treated as infinitely distant. The largest real parallax for any star is under one arcsecond, which is well below what a print can show. Aberration is not applied to the stars, though it is applied to the planets and the Moon. This is the largest omission we make by design, worth up to about 20 arcseconds. To put that in scale, the full Moon is about 1,800 arcseconds across, so it is roughly a ninetieth of the Moon’s width. Under independent review, five star cases differed by up to 0.584 degrees, and the reasons for each are documented on our verification page.
On verification
The chart runs a startup check every time before it draws anything. It confirms the astronomy library loaded, that the specific functions it needs are present and callable, that an observer and a time can be constructed, and that the star catalog is fully loaded. If any of that fails, the chart refuses to render instead of producing an incorrect result. A second check refuses to draw if any part of the color palette is missing. These checks catch a broken file, not an astronomy error; that is what the rest of this section is for.
The accuracy itself rests on two things. First, the calculation is done by Astronomy Engine 2.1.19, an open-source library by Don Cross, pinned to a specific version, with its cryptographic hash recorded so anyone can confirm the library is the unmodified original. Second, the end-to-end output was rebuilt independently and checked by hand by an outside astronomer against Stellarium Web and NASA JPL Horizons, case by case, including the cases that did not confirm.
Why we document this
We believe a star chart is only worth having if it is accurate. Like much of GoRhyme, this rests on the idea that beauty and order are knowable. The stars that shine like diamonds above us can also be understood through mathematics. Such loveliness should be honored with honesty, and if a chart does not show the sky as it was, it is only decoration. For this reason, every claim on this page can be checked, and the verification is published.