By the Stars! – Celestial Navigation with X-Plane 11

Old school navigators rejoice as we take a look at celestial navigation in X-Plane 11!

Part 1

We live in a time where navigation has become easy. Satellite based navigation is taken for granted and even our cell phones come with the ability to tell you exactly where you are, but it was not always this way. Back in the days before GPS and IRS/INS systems, aircraft navigated over the oceans in the same way sailing ships had done since the mid 1700’s – by Celestial Navigation. Using nothing more than a Sextant (modified for aircraft use), a chronometer (accurate clock), and a Celestial Almanac, it was possible to navigate with surprising accuracy.

Thanks to Casper ‘The AlmightySnark’ de Wit’s app, we can now try our hand at navigating in X-Plane 11 by using the stars, planets, the Sun and the Moon. It takes some effort to find your position using this method, but it is immensely satisfying when, after several hours of flying across an ocean, your planned destination airfield comes into view… and you didn’t look at a GPS or Moving Map at all during the flight.

All you need is X-Plane 11, Stellarium (freeware), Google Earth (also free), Casper’s app (free too) and either a nautical almanac or an app like ezAlmanac. Installation and setup instructions for Casper’s app can be found at his GitHub page linked above.


Optional, but recommended, you may want to pick up ezAlmanac, which will make navigating the tables very straight forward. You can pick up a Nautical Almanac online for free though, and so ezAlmanac is entirely optional.

ezAlmanac by ezCelestial LLC is an app available for both Windows 10 and iPad that I highly recommend. It is a one stop shop that includes all the almanac tables you will need. If you don’t want to manually wade through the look up tables for every fix then this app will do it all for you. Most importantly, if you let it do the work, it will show you how it came to it’s solution by highlighting where it pulled the data from within the lookup tables. Before long, you will soon have no trouble doing each step yourself (if you want to).

I recommend getting the student version, and then buying the current year’s almanac from within the app. The Pro version has many years worth of historical almanac data, but we are only really interested in the current year. If you prefer, you can also purchase a printed copy of their Almanac from Amazon at a reasonable price for the current year ($9.99)

Basic principles of celestial navigation and how we can make it work with X-Plane

This part of the tutorial is going to be a very basic discussion on how to calculate a position fix using at least three star ‘sightings’. We will then use Google Earth to plot our position. Cygon_Parrot will take things a step further in the next part. As a disclaimer, I should make it clear that I’m no expert. I have never actually used Celestial Navigation in the real world. Having said that, the basics are not all that hard to grasp.

First we need to understand a few abstract concepts. The first being that of the Celestial Sphere. To an observer on the Earth, the stars seem fixed in relation to each other and we have no sense of their distance. To the unaided eye, the stars could very well be all at the same distance from us, pin pricks of light fixed to the inside of a large sphere with the Earth at it’s center.

Let’s pick a star – we will say it is Arcturus.

Looking at Arcturus, we note that it is 50º above the horizon as we read it on a Sextant. If we were to move our location on the Earth, the star would appear in a different position in the sky from our perspective. If we move directly away from the star, it will appear to move closer to the horizon. If we move towards the star, it will appear higher in the sky. Continuing to move our position towards the star would eventually put it at 90º above the horizon, right above our heads, also referred to as being at Zenith. For every star that you see, there is a position on the surface of the Earth where it would appear to be directly above us. In Celestial Navigation, we call this position the Star’s Ground Point (GP).

If we measure the angular distance from the horizon to a star with a Sextant, we can quite easily determine how far we are away from it’s Ground Point. From the first location where we viewed Arcturus, we measured it to be 50° above the horizon. We call that the Sextant height (Hs).

For the star to be directly overhead, it would have to be 40° higher than we are seeing it now. With the knowledge that 1° of Latitude is equal to 60nm on the surface of the Earth, we can determine that we are 60 x 40 = 2400nm from the star’s Ground Point. So, to find the distance to the Star’s GP the math is 90º (Zenith), minus the star’s Sextant Height (Hs) and then you multiply by 60.

As another example, if the star was 43º above the horizon, we would be (90-43)x60 = 2820nm from the star’s ground point. Remember, that every full degree equals 60 nm, which makes it important to measure as accurately as possible, preferably to the nearest 10th of a degree or better if you can.

Ok, so, we now know our distance from the ground point. If we can determine the exact position of the Ground Point, we could plot it on a map and draw a circle around it with a radius of the distance we calculated. Our position would be somewhere on the edge of that circle.

Finding the position of a star’s Ground Point would be simple enough if the Earth was not spinning. The Ground Point would be a fixed position on the surface of the Earth and it would never change. But the Earth does spin, one revolution every 24 hours (roughly), which means a star’s ground point is a moving target. Fortunately the Earth’s rotation is about a single axis, and is predictable. The Latitude of the Ground Point doesn’t change much over the course of a day/night. So little in fact that we can consider it a constant value for our purposes.

Due to the planet’s rotation, the GP moves West at a rate of 15º of Longitude per hour (360°/24 hours in a day = 15° per hour). At the Equator, where 1º of Longitude = 60nm, a star’s GP would race West at 15 x 60nm = 900 knots! This makes it very important to take careful note of the time when you record your sightings, and to take them in as short a time span as possible.

When we talk about a position on the Earth, we use Latitude and Longitude. We use a similar system for the sky. Because we can’t gauge the distance of the stars through naked eye observation, to us, looking at the night sky is like looking at a flat 2D image projected onto the inside of a huge sphere, with the Earth at it’s center (see link above for the Celestial Sphere). As with the surface of the Earth, we have a prime meridian for the sky, that stretches from the Celestial North Pole, which is directly over the Earth’s Geographic North pole, down to the Celestial South pole, which is, as you might have guessed, directly above the Earth’s Geographic South Pole. This line in sky is known as “The First Point of Aries” and is often labeled simply as :aries:︎. It is in effect, the Greenwich Meridian of the sky. We derive all the star co-ordinates based on this meridian and the celestial equator. The direct equivalent of Latitude is referred to as Declination, and for Longitude, we have the Sidereal Hour Angle (SHA). Unlike longitude for the earth, the Sidereal Hour Angle values are all West of the First Point of Aries :aries:︎. It all sounds rather complex, but once you get your head around it, it all makes sense (trust me :wink: ).

To find the ground point of a star, we look up the Star’s Declination, which equals the Latitude, and then we need to work out where the First Point of Aries :aries:︎ is in relation to the Greenwich Meridian. This is called the Greenwich Hour Angle. We then add the star’s SHA value to the Aries Greenwich Hour Angle. All this information can be found on the daily page of the Nautical Almanac.

This is part of the Daily Page taken from the Nautical Almanac:

To find the Ground Point of the Star Arcturus at 12:00 UTC/Zulu on July 21st 2019, we look up the Greenwich Hour Angle of Aries, which is 118° 57.9 Minutes West (of the Greenwich Meridian), and add 145° 51.9 Minutes (the Sidereal Hour Angle of Arcturus).

The easiest way to add the two angles is to first add the minutes together (57.9 + 51.9 = 109.8 minutes). We subtract 60 (a whole degree) to leave 49.8 minutes, and add the degree to the sum of the Aries Greenwich Hour Angle (118°) and Arcturus’ Sidereal Hour Angle (145º)… so 118+145+1 = 264º and 49.8 minutes West of the Greenwich Meridian.

We talk about Longitude co-ordinates as being either East or West of Greenwich. This means we can only have Longitude up to a maximum of 180º West of Greenwich. Any more than 180º and we move into the Eastern Hemisphere. And so we have a final step because 264° 49.8’ West of Greenwich is actually 95° 10.2’ East of the Prime Meridian. We can work this out a couple of ways. If we want to work within the degrees, decimal minutes format, we just subtract 264º from 360º which gives us 96º and then subtract the 49.8 minutes, which leaves 95º 10.2 minutes.

The other way is to convert 264º 49.8 minutes into a decimal value. To do that we divide 49.8 by 60 to give 0.83 and tag it onto the 264º to give 264.83º. We now subtract that from 360 to give 95.17º East. We can convert back to Degrees and minutes by multiplying the .17º by 60 which equals 10.2 minutes, so 95º 10.2 Minutes East.

The Declination of Arcturus is N19º 05.2, which directly relates to Latitude, and so the Ground Point of Arcturus at 12:00Z on the 21st July 2019 was N19º 05.2’ E095º 10.2’

The table above works well for star sightings taken at precisely the top of each hour, but that isn’t always practical. You might want to get a positional fix at a different point in the hour. Fortunately, there are separate Increments and Corrections tables that will give you the correction needed for every minute and second of an hour…

The page above provides the incremental correction needed for sightings taken at 28, and 29 minutes past the hour. If we took our sighting of Arcturus at 12:28 and 35 seconds UTC, we would add an additional 7º and 9.9 minutes to the Aries Greenwhich Hour Angle for 12:00 UTC, and then add the Sidereal Hour Angle of the star in question. Therefore, at 12:28:35 UTC the Ground Point for Arcturus would be N19º 05.2 W271º 59.7’ , which we would convert into N19º05.2 E088º 0.3’ and we know we are 2400nm away from it.

We can also make a small correction for atmospheric defraction, based on the angular height of the star when we observed it. When a star is closer to the horizon, you are looking through more of the Earth’s atmosphere than you would for a star high in the sky, and this can slightly bend(defract) the light of the star, giving you a slightly inaccurate sextant reading. The following table gives you the required correction:

We said that Arcturus was at 50º when we observed it with our sextant. Looking at the Stars and Planets column, we can see that between 48º 47’ and 52º 18’, we should subtract 0.8 minutes from the sextant reading for the star. In our example, 50º – 0.8’ = 49º 59.2’ = 49.98°. Before, we were using ‘Sextant Height’ for our calculation of distance, but with corrections applied, we end up with a value called Height Observed (Ho). If we re-run our distance calculation with Height Observed instead of Sextant Height, we get (90º (Zenith) – 49.98) x 60 = 2401.2nm from the star’s Ground Point. In this case, it made our calculation 1.2 nm farther out from the Star’s Ground Point. For the purposes of navigating an airplane, where we hopefully have a good view of our surroundings for several miles, or we just need to get close enough to our destination to pick up a NDB, 1.2 nm shouldn’t make all that much difference to us, but errors do add up, and so it makes sense to apply these corrections and be as accurate as possible.

Now we have all the information we need to plot the Star’s Ground Point using Google Earth. You just drop a pin, and enter the Lat and Long values we have calculated. Once the Pin is in place, we can use the Circle tool to draw a circle around the position of the pin, and extend it out to have a radius of 2401.2 NM (be sure to set the distance units to NM for the circle). With the circle drawn at the desired radius, we can say that our position, at the time we took the star sighting, was somewhere on the edge of the circle we just drew. The Circle is called a line of position. We know we are somewhere on that line.

To complete our position fix, we need to repeat this whole process using more star sightings, taken at the same time as the one we took for Arcturus. When we plot the different star’s positions and lines of position, the circles should all cross at a common point. Your position is at that point.

Here is an example of a fix using four star sightings, plotted on Google Earth… In this case we seem to be somewhere close to Boston, MA.

As I am sure you can see, this process takes some time. I am still new to this, and so a 3 star fix can take me about 30 minutes to complete from start to finish. That means my position fix is half an hour old by the time I have everything plotted. If I am flying along with a ground speed of 200 knots, I’m already 100nm farther along my track than the position fix I have just finished with. I would now have to use dead reckoning based on my calculated ground speed and track to get an updated position estimate.

After all that, we can break the workflow down into the following steps:

  1. Take your star sightings. Record the Altitude as precisely as you can, and the UTC time you took the measurement down to the second (as close as possible). Do his for at least 3 of the navigation stars, as quickly as you can.
  2. Work out the distance from your location to the first star’s Ground Point (GP)
    Observed Height = Sextant Height – atmospheric correction.
    90° (Zenith) – the Observed Height of the star then multiply by 60. It is easier to convert the observed height into decimal degrees. Eg. if we have an observed height of 50° 35’ , 35 minutes divided by 60 = 0.583, so we have an observed height of 50.583°

90-50.583 = 39.417
39.417 x 60 = 2365nm

  1. From the daily page in the Almanac, find the GHA for Aries at the hour of your star sightings (UTC). Use the increments table to add correction for minutes and seconds past the hour.

Add the star’s SHA value to give the GHA of the star.

If the star’s GHA the value is less than 180° then the GHA = Longitude in Degrees West.

If the star’s GHA is greater than 180° then subtract it from 360. If the resulting figure has a negative value then you have the GP Longitude in degrees East. If the resulting figure is a positive value, then you have the Longitude in degrees West

The star’s Dec value on the daily page is equal to the Ground Point’s Latitude.

  1. In Google Earth, drop a pin at the Lat and Long co-ordinates we have just worked out, and then draw a circle around it with a radius of our calculated distance from the GP.
  2. Repeat steps 2 through 4 for the other star sightings that you recorded. Your position is where the circles intersect.
  3. Use dead reckoning to calculate the position at the current time based on your ground speed and track to account for the time spent working on the celestial fix.

1:60 rule for drift correction.

Invariably, after you have worked out your position fix, and compare it to your planned course line, you will find that you will have drifted a little to the left or right of the intended track. We know that we are going to have to turn back towards the destination point for that leg. The question is, how much of a turn do we have to make? Fortunately, we have the 1 in 60 rule that will give us the answer.

The 1 in 60 rule states that if we fly 60nm and find that we are 1nm off track, then our track error is 1º.

We can utilize this rule for other distances and drift errors using some simple math:

(Nautical Miles off track x 60) / Nautical Miles flown = Track error in degrees.

Turning back towards the desired track by this number of degrees would take out the drift, but leave you flying parallel to it. You will have to apply an additional correction to fly towards the destination.

(Nautical Miles off track x 60) / Nautical Miles remaining to the destination.

Your course correction would then be the sum of the two.

As an example, if we want to fly from Airport A to airport B. The distance is 145nm on a magnetic heading of 230°. After flying for 95nm we find we are 12nm right of track.
So, the math is: (12×60)/95 = 7.57° off track.
We have 50nm to go, and so the additional correction will be (12×60) / 50 = 14.4°
This means that we we should turn left 7.57+14.4 = 21.97° (ok, just fly 22° left ;), and if nothing changes (airspeed, wind speed and direction), you should fly directly to the destination.

Example flight:

Here is a quick example flight. I intentionally used a rough figure for the cruise speed and altitude, as I wanted to create some drift that would need to be corrected. For this flight, we are going to take a B25 from LaGuardia International Airport, and fly directly to the L. F. Wade International Airport on the island of Bermuda. This is a 671nm flight, mostly over featureless ocean. I planned at a true airspeed of 200 Knots at 8000 ft.

The navlog generated by

We can see the important details are the Magnetic Heading, which is pretty much 150° for the whole leg, and the ETE, which is 3 hours and 8 minutes.

We take off and I make a note of the coast out point…

We crossed the coast at 2200z, 2nm East of the planned course. I placed a pin to mark this in Google Earth.

Although I planned to fly at 8000ft, I had to climb up to 20000ft to get above the cloud layer (we need to be able to see the stars if we are going to keep within the spirit of things)…

We then continued on a heading of 150° for the next hour. At this point, I jumped into Stellarium to take our star sightings…

My sightings were as follows:

  • Star Enif at 2301Z was 45° 57’ above the horizon.
  • Star Rasalhague at 2302Z was 57° 28’ above the horizon.
  • Star Vega at 2303Z was at 82° 44’ above the horizon.

For Enif, the Altitude correction was zero and so 45° 57’ is good:

45° 57’ translates to 45.95° in decimal degrees. To find the distance from Enif’s Ground Point we subtract 45.95 from 90 to give us 44.05 and multiply that by 60 to give us 2643nm.

We now look up the Aries GHA for the hour of the sighting (hour 23 as the sighting was taken at 2301), which is found on the Daily Pages of the Almanac. For 2300Z on the 2nd October 2019, the Aires GHA is 356° 22.1’.

Next we add the increments for 1 minute, zero seconds past the hour, using the appropriate Increments page. For 1 minute and zero seconds past the hour, we add 15.0’.

This gives the Greenwich Hour Angle (GHA) for Aries at 2301z as being 356° 37.1’

We now add Enif’s Sidereal Hour Angle, found in the right hand column of the Daily Page. In this case, it is 33° 42.7’. To get the GHA for Enif, we add the SHA to the Aires GHA to give us 390° 19.8’

Because Enif’s GHA is greater than 360°, we subtract 360°, leaving us with 30° 19.8’ West of the Greenwich Meridian. Enif’s Declination value is N 09° 8.1’ (found in the right side column of the daily page).

At the end of all that, we have the Ground Point at 2301Z at N09° 58.1 W030° 19.8’ and a distance of 2643nm.

We now repeat the process for the Rasalhague and Vega sightings. After that, we plot the ground points in Google Earth and draw circles around them with an appropriate radius…

Here we can see the ground points plotted with their range rings. The smaller circle is for the Vega sighting. The Ground Point was just 436nm away from our position at the time we took the sightings.

Zooming in, I dropped a pin at the point where the circles all converge…

Our Fix position is N36°50’40.66″ W68°53’23.36″

It took me almost 40 minutes to go through that process with the three stars. With practice that will get much quicker but some dead reckoning will always be necessary to estimate your position in the present moment.

From the position fix, and using the measuring tool in Google Earth, we traveled 314nm in the hour from Coast Out to the Fix. That means we are moving quite a bit faster than anticipated, probably due to higher winds at 20000ft. To give us some time for the Dead Reckoning calculations, I pick a time a few minutes in the future to use for our position estimate 2345Z. That is almost 45 minutes after the sightings were taken. So we should be 0.75 x 314nm = 235.5 nm beyond the fix, on a straight line that starts at the coast out point, passes through the fix and continues on… So I drop a pin at that point, and measure how far off course I am, again, using the measuring tool in Google Earth:

At this point we will be 21.6nm left of our intended course 550nm from the coast out point. Using the 1 in 60 rule:
(21.6 x 60) / 550 = 2.35° left of course.
We estimate that we have 105nm left to run before arriving at Bermuda.
(21.6 x 60) / 105 = 12.34° of correction.

So that is 2.35+12.34 = 14.69° total correction to the right. At 2345Z I turned 15° to the right.

With 105nm left to run and at an estimated ground speed of 314 Knots, we should be in the vicinity of Bermuda in about 20 minutes or 00:05Z.

After anxiously looking ahead into the inky black night, it was with immense relief that I spotted lights at our 11 O’Clock. There is nothing else out here, so that has to be Bermuda.

Mission accomplished! Although for some reason they didn’t want to turn on the runway lights for me. That made things interesting!

Actual route flown…

As you can see, with even just a single position fix, we were able to make a good estimate of our position at a later time, estimate how far off course we would be at that point, and then calculate a course correction to get us close enough to find the destination.

Celestial Navigation is increasingly a lost art, especially in the aviation world. Learning the basic theory and using it with X-Plane will give you a new perspective on something we take for granted these days, along with a whole new level of respect for those who flew (or sailed) across the globe using nothing but dead reckoning, the stars, the Sun and Planets to find their way.

This concludes this part of the Tutorial. The use of Google Earth has simplified the process significantly, but they didn’t have that tool back in the day. With the basic knowledge you now have of how celestial navigation works, Cygon_Parrot will walk us through ‘Sight Reduction’, the method used by real world celestial navigators for plotting, and also obtaining an Estimated Position using a single sighting, which is useful when you only have a single celestial body available (ie in the daytime when you only have the Sun to play with).

– Paul Rix

Thanks to Paul Rix, Casper “The Almighty Snark” de Wit, and Cygon Parrot for this fascinating look into celestial navigation in X-Plane. Casper wrote the app that pulls the data from X-Plane and injects it into Stellarium. Part 1 of the tutorial (by Paul Rix), is aimed at introducing the concepts and illustrates a basic way to navigate using Google Earth as your plotting chart. Cygon_Parrot takes things to a more advanced level in Part 2. Cygon Parrot also developed the Sight Reduction Form app used in Part 2 of the tutorial. We hope you enjoy the journey ahead of you! Oh, and the obligatory disclaimer, this tutorial is intended purely for simulator use, not for real world navigation.

Part 2 – coming in a few days!