This repository contains Python scripts that can be used to produce a cut-and-glue kit which allows you to make a cardboard model which demonstrates the precession of the astronomical equinoxes.
Full details of this cardboard model, including assembly instructions can be found here: https://in-the-sky.org/precession/.
The precession of the equinoxes is a gradual changing in the direction of the Earth's rotation axis, which causes the position of the celestial poles to drift through the constellations at a continuous rate of roughly 20 arcseconds per year. Although this effect is small on short timescales, the accumulated drift adds up to about one Moon diameter per century.
Currently the Earth's north celestial pole points close to the star Polaris, but this will not always be the case. By 2500, Polaris will be several degrees away from the true celestial pole.
A conventional planisphere is a simple hand-held device which shows a map of which stars are visible in the night sky at any particular time. By adapting the design of the planisphere, it is possible to build a similar instrument which, instead of demonstrating the rotation of the night sky around the celestial poles, instead demonstrates the movement of the celestial poles due to the precession of the equinoxes.
I have created kits for building two models of planisphere for demonstrating the precession of the equinoxes. One shows the effect of the precession of the equinoxes on the northern sky. Specifically, it shows the precession of the north celestial pole through the northern sky. The other shows the effect of the precession of the equinoxes on the southern sky.
You can download these here: https://in-the-sky.org/precession/
To make the default planisphere models, run the shell script main_planisphere.sh.
The scripts need Python 3 with the cairocffi and numpy packages, and LaTeX
to assemble the final PDF documents. Rather than installing these yourself, you
can run the scripts inside a Docker container, using the Dockerfile and
docker-compose.yml in this repository. The container uses Python 3.14 on
Debian.
To build the Docker image, and then make the planisphere models inside a container, run:
docker compose build
docker compose run --rm python
This runs main_planisphere.sh --theme default inside the container, and
removes the container when it finishes. The repository directory is shared with
the container, so the output appears in the output directory, replacing any
previous output.
The container runs as root, so the files it creates will be owned by root. To create them as your own user instead, run:
docker compose run --rm --user "$(id -u):$(id -g)" -e HOME=/tmp python
This code was developed by Dominic Ford https://dcford.org.uk. It is distributed under the Gnu General Public License V3.