Celestial Navigation Plugin for OpenCPN (revision 15 Dec 2025)


Introduction

The plugin helps determine your position (Latitude, Longitude) through sextant "altitude" observations of the Sun, Moon, planets, or stars. The plugin can work together with an OpenCPN DR Track, GPS Track, or without a route. The DR track could have been generated by Weather Routing. Celestial Navigation serves as a reliable independent backup when GPS is unavailable, spoofed, or fail during long ocean voyages. It displays a Circle of Position (COP) for each sight. On a small area scaled plot, COP appears as a Line of Position. It calculates Intercept and Azimuth, calculates and displays a FIX from multiple celestial body sights. And will calculate a Running Fix by advancing Lines of Position based on Vessel distance traveled and course between sights. It supports Lunar Distancing which was used to determine TIME (Greenwich Meridian, GMT, now UT/UTC) before widespread availability of chronometers. Also notable, Lunars can be done as a "backyard" sight without using a visible sea horizon. A future feature is Azimuth sights.

Sights Dialog

When the plugin is opened, the Sights dialog shows sights that have been input. Select New to enter a new sight. Duplicate an existing sight. Edit to view and make changes to an existing sight. Delete a sight or Delete All sights. Documents will display the training guide Which can be printed. Hide/Show Button will show or hide the sights. You can move the Celestial Nav plugin forms out of the way.

When a new sight is entered, its Circle of Position (COP) defaults on the chart. Select/unselect the Eye icon. There is no limit and no performance impact with the number of sights. But the more sights with the "eye" icon turned on, the longer it takes to open the plugin.

Sight Tab (required)

Sight Measurement (Hs) is an angular measurement of an astronomical body using a sextant. It can be one of these types:

Celestial Body: select the Sun, Moon, Venus, Mars, Jupiter, Saturn, Mercury, and 57 Navigation Stars plus Polaris that are visible in either the Northern or Southern Hemisphere. For Lunar sights, the Celestial body is the body paired with the Moon to measure the Angular distance to the Moon. Most common pair is the Sun, major Planets (Venus, Jupiter, Saturn, Mars), and 9 Stars known as the Lunar Stars (Aldebaran, Altair, Antares, Fomalhaut, Hamal, Markab, Pollux, Regulus, Spica).

Limb: For altitude shots of the Sun and Moon, choose lower limb unless obscured; then choose upper limb. For lunar sights select Near or Far to represent whether the celestial body's Near edge is brought across to the Near side or Far side of the Moon. Also for Lunar sights, if celestial body is the Sun, select Upper or Lower Limb for its Altitude sight. And choose a Limb of the Moon for its altitude sight. Limb is ignored for Planets and Stars.

Sight Measurement (Hs): Enter the sextant reading. 3 angle formats are supported: Degrees minutes, Degrees Minutes Seconds, Decimal Degrees. After input, the angle redisplay is per Open CPN's display settings. New feature: Back-sights are supported.

Minutes of certainty determine the width of the plotted circle or line of position COP/LOP. If too small, it is hard to see. 0.1 min. is visible after zooming into a small area chart. 10+ min. visible after zooming out to a large area chart. Try the +/- on Chart Scale

TIME (Lunars only). When TIME button is pressed, the computed UTC TIME and how much faster or slower it is to the sight's UTC input is displayed. Before pressing button, complete the remaining sight data.

FIND. When this button is pressed, the sight input data is "reduced" using the Law of Cosines. Before using the computations, confirm your vessel's DR Latitude & Longitude on the form and after that, finish the remaining sight data. Lat & Lon defaults from Open CPN's "Your Boat" position. Change Lat. & Long. using Open CPN Degree Minute, Deg. Min. Sec. or Decimal Deg. formats. Caution: input E or W for Longitude. N and S for Latitude is optional when using +degrees For North Lat, -degrees for South Lat. The position change is saved with the sight. After the rest of the sight data is input (Time tab, Parameters Tab), LOP/COP and Law of Cosines calculations are usable: Computed Altitude (Hc) is the altitude the celestial body should have per Almanac data (calculate form) and the DR Lat/Lon location input. Azimuth (Zn), is the bearing (True or Magnetic) to the body. Note That Magnetic uses the WMM World Magnetic Model. And Intercept, the distance (in nautical miles) from the vessel's DR position towards (Ho > Hc) or away (Ho < Hc) from the body's LOP. New feature: Estimated Altitude (Hs). An estimate for the sextant sight. Use it to pre-set your Sextant before taking sights. It, along with Azimuth (Zn) can be used as a "star or planet finder" for a future UTC time & DR.

Time (UTC) Tab (Required)

Must be the exact moment of your sight measurement at UTC. Know the time zone you are taking your sights from. Know your watch error and Add (slow) or Subtract (fast) it to your watch time.

Date and Time defaults to the system clock date & time and time zone when a New sight form is opened. Date & Time needs to be the UTC date & time. Example: twilight sight is recorded at 20:25:35 April 22 at UTC-4, also known as ZD+4. The UTC is April 23, 20xx and UTC is 00:25:35. The next day!

Time (Hours, Minutes, Seconds) needs to be UTC after accounting for Watch error. Be aware of Daylight savings time. There is no Daylight Savings time for UT/UTC. A digital watch or quartz watch with UTC and local time is best. Be sure to manually adjust Time to correspond with the exact UTC moment the sight was taken. Example: If your quartz watch is 5 sec Fast, then convert to UTC and subtract 5 sec. If your watch is 1 minute 10 seconds slow, then ADD 1 minute 10 seconds to your UTC.

Recording: In preparation, set the stopwatch and record UTC time. When the sight is taken, say “Mark”, so the assistant can record stopwatch time and the sight body and altitude, or if you are solo, try using a recording timer app on your cell phone with a wired microphone. A plot of stopwatch time against Hs can show outlier sights.

Time Certainty: default is 0 seconds which shows a single darker line in the COP. A time Certainty of > 0 shows two darker lines, equivalent to that many seconds apart. For Lunar Sights, Time Certainty is used to bracket your watches's +/- error. The default of 10800 sec can be changed. A COP or LOP is not shown for Lunar Sights. You can duplicate The lunar sight and EDIT the duplicates to type = altitude and see the COP/LOPs.

Parameters Tab (to review and update as required)

This is where Index Error, Height of Eye, Temp/Pressure of the sight is input. You can save these settings as a default. Then they become default for future NEW sights (not used for past sights or Duplicate sights).

New feature: Artificial Horizon sights are supported.

New feature: Dip Short sights are supported. For Dip short, determine the Distance in nautical miles from your DR to the shoreline where the celestial body will or was brought down to. Use an OpenCPN chart and use the measure tool to measure distance and bearing.

Back to the Sights Tab

After the Sight is completely input, REVIEW. Look at the FIND Form and TIME form (Lunars only) found in the Sights Tab. Look at the LOP/COP that was redrawn. Look at the Intercept. Do they make sense?

Calculations Tab (optional)

Shows the corrections or adjustments of sextant measured sight to Altitude Observed (Ho). Includes formulas and adjustments like Index Correction, Dip or Dip Short correction, Limb Correction, Refraction correction, and Parallax Correction. All angles are shown in decimal degrees and degrees minutes. This is to support verification of the sight data and collaboration. For Lunars, it shows the complete calculation from the Sextant measurements to TIME determination.

Config Tab (optional)

Changing color and transparency appearance does not affect the results.

DR Shift Tab (only if Vessel moved between sights used for a FIX).

Update the DR Shift Tab for the 1st through next to last sight that you'll use for a FIX. Enter Distance and TRUE Bearing from the first sight to the Last Sight of the Fix. If you maintain a DR Plot, Open CPN's Measure tool is available for the distance and bearing (course). You’ll see the earlier LOP/COP shifted or advanced. Do the same for the 2nd sight, 3rd sight, etc. The Last sight is not shifted.

Fix Button (Sights dialog form)

The Fix with a 2cm large red X is placed using the sights with COPs made visible if the sights are without DR Shift (advanced a LOP/COP). Careful! Hide the sights you don't want included in the Fix. If the vessel moved between sights and DR Shift was not input, the FIX places the 2cm Red X at Lat/Long as if the vessel didn't move. If the DR Shift was input, the red X won't appear. But, the LOP/COP will have been advanced per the DR Shift inputs and the FIX form allows an Open CPN Mark to be Drop where you visually determine the Fix. Two or more sights with COP visible are needed. The algorithm first seeks a Fix nearest "Your Boat". If it doesn’t find it, enter the closest dead reckoning latitude and longitude, and try again. When a Fix is found, a 2 cm long red X is displayed on the chart. Does the FIX make sense? If not, you might have included some unintended sights. Find them and make them invisible.

After finding the Fix, use Core CPN functionality to drop a mark and label it at the FIX position so Fix is shown on your chart.

When the Fix button is closed the X disappears from the chart.

The Fix algorithm uses the least squares regression to find a position at sea level for altitude type of sights. It is not implemented for shifted sights, sights taken above sea level altitudes, and true north azimuth type of sights.

Clock Offset Tab (Sights Dialog form). (Optional)

Many traditional navigators set Clock Offset to 0 because they already compensated for watch error in the individual sights before UTC input. Clock Offset or Correction adjusts and redraws all stored sights (shown or not). It can be used to set DeltaT, although the plugin calculates celestial objects value using current DeltaT formulas. Sean suggests adjusting the global "Clock Offset" until COP converge to determine local clock accuracy. No matter how Watch Error is adjusted, do it consistently to ensure precise navigational calculations based on celestial observations.

Common Problems

Circle of Position or sight is not appearing. If you do not see a COP, ensure the visible (eye) icon appears in the Sight List, zoom out and pan the earth to find it. change certainty minutes to make the COP/LOP line thicker, change UTC, DR location and use the Estimated Hs. Hs of 90 degrees is almost a point and is the Latitude and Longitude of the GP of the body. Calculations tab show the Body’s Latitude, Longitude,

The Find button’s Altitude (Hc) and Azimuth (Zn) is way off from what you expected. The Hc and Zn defaults to the "Your Boat" DR location position. Was "move boat" used to move the boat to the DR location of the sight? When using the "your boat" Default, the location of the boat is not saved. The sight's DR moves because the Boat Moves (e.g. hooked up to GPS for instance). New Feature: Options. Move the boat to the Sight DR location, uncheck "Boat Position". Then the sight's DR is saved. An easier option is to input (or copy/paste) the DR location of where the sight was taken.

The Find button Intercept doesn't make sense. The reason could be that The DR Longitude is not correct. You need to identify the Longitude With the West/W or East/E tag. If not input, even though you typed a negative number for Longitude, OpenCPN thinks it is East Longitude.

You are prevented from entering data and you hear a beep warning. There is a Cel Nav form that is open which you must close. Move the forms around your display until you find it.

With this new release, old sights with the DR location manually input will be initialized with Latitude 0, Longitude 0. Reason - previously release didn't save the DR location to the sight. There was a single DR location that applied to every sight in the Sights Log.

For the sight changes to be saved, the Celestial Navigation Forms must be closed. The upper left corner red button is a cancel. When you Press the upper left red button, the changes you made are not saved.

Reduce Errors:

Adjustable errors. Prior to sight taking, adjust your sextant to remove errors.

Index Error. Reverify your index error using the horizon. IE is part of your sight measurement. At night, reverify your index error using a Star. The star should be a pin. During the day, the Sun can be used to determine index error. And at the same time, verify Semi-Diameter.

Height of Eye. Measure your height of eye above the water line. This is part of your sight measurements. Natural Horizon, Dip Short, Artificial Horizon are supported.

Run of Sights: For each body, take a run of 3 to 5 sights, a minute or so between sights. Input the entire run into the Celestial Navigation Sights form. Look at the Circle of Positions for these sights. Delete the sights that look like errors. If they look good, consider calculating an average sight altitude and average sight time. Average has been shown to reduce sight error.

Multi-Body Sights: To get the best possible Fix, try to take a 3-body sight within 20-minutes. Sun, Moon, Venus can make a good 3 body sight. Ensure the celestial bodies are adequately spaced. Two bodies should be 45 to 135 degrees apart. For three bodies, the 3rd outer bodies should be over 30 and less than 120 degrees from the other two bodies. Consider inputing all sights of each run into the Sights form. The duplicate sight feature makes this quick and easy. All sights can be visible. The FIX form can calculate a Fix from of all this data. Or make visible the best of each body’s COP. The three body COPs will make a triangle.

Running Fix: If the bodies were taken hours apart and are 45 to 135 degrees apart, it could be considered a Running Fix, the next best thing to a Fix. The quality of the running fix depends on maintaining a careful DR plot. The morning Sun and afternoon Sun make a good Running Fix. Use the DR Shift tab to advance the morning's to the afternoon's sight. Bearing should consider set and drift (current)

Correct Time: Celestial navigation requires precise time.

Watch Error: Monitor the quartz watch against Marine Radio frequencies to determine its accuracy for the day. The navigator records and tracks their watch's error trend to estimate the day’s watch error.

Practice: The more sights you take and input into Celestial Navigation Plugin, the more accurate your sights will become. Many beginners start off with 5 nm accuracy and improve to 3 nm accuracy. Experts are accurate to better than 1 nm. And the inscribed circle of a 3 or 4 Body fix can consistently be better than 0.5 nm.

Personal Bias Error: To determine their average personal bias error, navigators track their sight history (hundreds of sights) to determine average personal bias. Most understand the reason for bias.

For Lunars, review the Lunars Training document. There is extensive suggestions on achievable accuracy and methods to improve accuracy. Bowditch before the 1880s included suggestions on how to improve Lunars accuracy. Some of the historic books are on the net.

Navigation in principle

Of course, if you already know where you are, there is no point in trying to determine it from the formulas above. But when you actually navigate, the odds are you don't know quite where you are, so how do we use the above formulas?

We draw what is called a position line or Sumner line. Although the modern position line is not quite a real Sumner line, but it is close enough.

Like all good inventions, Sumner lines were discovered by chance by a fellow called, you guessed right, "Sumner", Thomas H. Sumner to be precise (maybe related to the late professor Julius Sumner-Miller). Sumner was a ship captain on his way from Charleston (South Carolina) to Greenock (Scotland). And he was worried because he had been sailing for several days in bad weather, the wind was blowing from the Southeast making Ireland a lee shore, and he had not been able to see the sun or any stars, the coast was getting near, and he did not know exactly where he was. Suddenly there was a break in the clouds, so he grabbed his sextant and snatched a quick sun sight, before the clouds covered the sky again.

Now he was wondering what to do with this information, so he played a "what if" game. He did not use the bearing formula above, because nobody had worked it out in quite that form yet, but he knew the altitude formula and he said, "what if my latitude is... " and calculated the corresponding longitude and he plotted it on the chart, then he tried it again with another latitude, got another point on the chart. After doing that three or four times he suddenly realized that all the points he was marking on the chart seemed to fall on a straight line. Without thinking about it anymore, he saw that the line needed pushing north by a few odd miles to lead straight over Small's light, so he turned north for those few miles, then turned to starboard until he was sailing parallel to that very first "Sumner line". His crew were a bit perplexed at that, wondering if the captain had gone mad, but when suddenly they arrived right at the very light, they thought he was a flaming genius. And so did the rest of the sailing community.

So why did the points fall on a straight line? They did not really but Sumner did not realize it at the time. The points Sumner was plotting were the points on earth from which anyone would have seen, at the same moment as he did, the sun with exactly the same altitude. All those points are on a circle centered at the point on earth directly below the sun. Because this circle is usually huge, a small part of it appears straight on a Mercator projection chart.

So this is how we proceed in practice:

  1. We assume we know where we are, we call this DR (for Dead Reckoning).
  2. We calculate, based on the latitude and longitude of the DR, what the bearing and the altitude of the celestial object would be at the time of observation.
  3. We draw the bearing line passing through DR.
  4. We compare the actual measured altitude with what it would have been had we been at DR, the difference, in minutes of arc, is equal to the number of nautical miles that we have to move along the bearing line to find our position line. ie if the angle measured is greater than the calculated one by say 13' of arc, then we move towards the celestial object by 13 nautical miles, and if say the measured angle was less by 7' of arc than the calculated one, we would move away from the celestial object by 7 nautical miles.
  5. Finally, draw a line at the right angle to the bearing line, passing by the point we have just found. This line is our position line and all we can tell is we are somewhere on this line.

Note the difference between our position line and Sumner's original one: our line is the tangent to the circle at the point nearest to DR, Sumner's was the circle. Sumner's line is in theory more accurate, but the circle is usually so large that the loss of accuracy is insignificant. Note also that in the tropics the circles can be extremely small, I remember reading about a P&O captain who used to obtain all his fixes without any calculation, he would take several observations when the sun was nearly dead overhead (say over a 15 minute period) for each time observation, he would plot the coordinates (GHA,DEC) of the Sun on his map then draw a circle of radius equal to (90 degrees - measured altitude). Since over the 15-minute period he would probably have collected 4 or 5 observations, he would draw 4 or 5 circles which would all intersect at one point. Simple but effective, especially as in the tropics, position lines usually end up running almost North-South giving good longitude information but lousy intercepts and large errors in latitude. The noon sight is damn important then.

If you wait a few hours, the sun will change position, and you will be able to repeat the operation and determine a 2nd position line which will intersect the first. Provided you haven't moved in the interval, you are at the intersection.

If you have moved (and the odds, are you would because it can be pretty boring sitting around doing nothing on a boat that's just bobbing up and down in the middle of the ocean), then all you need do is translate the original position line in the same direction, and the same distance as you have travelled. Your position will be at the intercept of the new line and the translated one. Sailors call this the SUN RUN SUN method.

The above information was edited from Eric De Man siranah.de

Accuracy Testing Procedures

  1. Periodic report of Celestial Navigation Plugin accuracy and precision against the Commercial Edition of the Nautical Almanac. To be done during upgrades or as part of an annual or every other year review.
  2. Calculation (NA versus Plugin) using 3 statistics (see below)
  3. Results are summarized on the Celestial Navigation Plugin webpage.
  4. Users will know the accuracy and precision to expect from the plugin.

Established Accuracy Goal

  1. Mean and Standard Deviation of the Differences. Our target standard deviation is 0.1 nm or 0.1 minutes.
  2. Percent of observations with 0 difference. Nautical Almanac data is no finer than 0.1 minutes. Celestial Navigation data will normalize to the same precision for purpose of apples-to-apples comparison.
  3. Percent of observations greater than 0.1 minute or less than 0.1 minutes. Due to rounding at .1, these observation differences would be .2 minutes or larger.
  4. 0.1 minutes, which is equivalent to 0.1 nautical miles is 600 feet, 185 meters

Celestial Navigation Team