This is a project for a class on Time. It is also an extension of an ongoing personal project to create a procedural universe. The overarching idea here is to be able to recreate an ancient astronomical timekeeping device (an Astrolabe) for any latitude on any procedurally generated planet.
Before tackling the ambitious end goal of a generalisable astrolabe, I first needed to wrap my head around how a standard, earth-based one works.
The above gif helped a lot in my understanding. The trick of an astrolabe, or rather the bulk of the mechanism, is a stereographic projection of the hemisphere you’re interested in onto the equator from the point of view or the opposite pole.
‘Stereographic’ is a fancy term with lots of maths behind it. In short, though, the idea is ‘how do you get a representation of a 3D world onto a 2D plane?’ In the years since the Astrolabe’s conception we’ve developed a much more abstracted solution to that problem – a camera!
A camera is just a stereographic projection tool that works out the maths for you! With the above image I was able to set a field of view (FOV) for the south pole projection camera at (90+epsilon)/2 * 2 , or 90 + epsilon where epsilon is the obliquity of ecliptic (i.e. how tilted the planet is)
One way that I could have constructed the Astrolabe in Unity would be to ‘simulate’ the workings of the solar system as we currently know it. In this case I would program the planet to rotate about its axis, offset that axis from the Sun a little, then rotate that around the Sun. This would achieve the desired relative celestial positions as it would most closely resemble the way things actually work.
In the spirit of the original astrolabes, however, I did not do that. In my program the ‘planet’, or the reference for all the projection and maths, is fixed. It’s the center of the universe and all other bodies rotate around it in strange and exciting ways.
At the core of my scene are two cameras rendering separately.
The first is the ‘observer’ camera, which shows in the main viewport. This camera sees an infinitely far away dome with the starmap texture on it. This camera is what you would see if you were standing on the surface of the planet.
The second camera is at the south pole and points directly North along the axis of rotation. Because the stereographic projection requires the sphere representing the celestial dome to be the same size as the planet, there was some trickery involved in getting both cameras to see -and ignore – the right things.
As the Obliquity parameter changes, the celestial sphere (star map) rotates around an axis perpendicular to the north-south axis. This creates the effect that the planet is ’tilting’ where in actuality it is everything around that is tilting. This will determine which section of the celestial dome is visible to the observer, by shifting the dome itself
As Latitude changes, the observer camera moves around the surface of the planet. Latitude will determine many things such as how high the ‘north star’ is, the day/night ratio, and the curviness of the astrolabe’s interface. This will determine which section of the dome is visible to the observer, by shifting the equator line.
As the Rotation changes, the celestial dome and all its innards rotate around the north-south axis of the planet. This simulates one day/night cycle of the planet.
The Seasons setting tilts the sun up and down in the sky, simulating an orbit of the planet around its sun. the ‘summer’ season means that the sun is furthest “up” along the north/south axis (if “up” is North), and the winter season means that the sun is furthest “down”.
The astrolabes that I read about had incredibly complex mechanisms for telling the time. In my sketch I have tried to pare down the time system to be as simple as possible. Precision not guaranteed.
There are three elements requires to tell the general time on this astrolabe:
- The “Hand” – the single white line that points up in standard mode (as opposed to “track” mode.
- The numbered dial around the outside that looks like a clock face.
- Some recognisable star in the sky near that line.
The Hand” represents an imaginary line that shoots up out of the horizon and crosses through the north star (or equivalent). When a star crosses that line, move the astrolabe so that the star map shows that star crossing The Hand. The Hand will now point at (around) the correct time.