CelestNav™ tutorial

Buy it now

Pay for your CelestNavTM license online at Mobile Geographics.

What's new in version 2.4

CelestNavTM for PalmOS version 2.4 provides much more information on the Sailings computation screen, especially for Great Circle sailing. It also computes speed or time required for a voyage.

The "fix error" displayed is now the true standard deviation of your position, a circular position error.

Mass "purge" of sights or fixes is now provided (from the Fix or Sight menu; tap the "menu" silkscreen icon).

CelestNavTM is now PalmOS 5 Ready, and should run very well on the new ARM-powered PDAs when they are shipped.

CelestNavTM Tutorial

For an updated version of this document, of CelestNavTM, or other fine mapping software, check the Mobile Geographics web site.

The list of frequently asked questions there may have more information.



CelestNavTM is a full-featured celestial navigation solution for the PalmOS® family of handheld computers. It includes a perpetual nautical almanac for the Sun, the Moon, navigational planets, and navigational stars, as well as an electronic version of H.O. 229.

CelestNavTM guides you through the steps of computing a celestial fix. It records your sextant observations with sight times; applies the appropriate corrections for height of eye, atmospheric refraction, backsights, and sextant errors; combines multiple sights into a celestial fix; computes your position automatically; and maintains a dead reckoning position from your last known fix.

CelestNavTM had its start on a 3500 mile tall ship voyage. In 1998 I sailed on Søren Larsen from Vanuatu to New Caledonia, then to Sydney, and on to Auckland. I spent much of the trip practicing with my sextant, and found that the most frustrating part was the long delay between shooting my sight and finding out what the answer should have been--calculating by hand on paper just took too long. CelestNavTM is intended to take the drudgery out of celestial navigation and to encourage sailors everywhere to stay current in this important skill.


CelestNavTM runs on any PalmOS handheld with version 3.0 or higher of the operating system. This includes every PalmOS handheld made since 1998: the entire Palm m100/m500/i700 series, Palm III/V/VII families, Handspring Visors, Sony Clies, and Symbol, Handera, TRG, and IBM units.

Learning celestial navigation

CelestNavTM is not designed to teach you how to navigate. We suggest you take a class from a qualified instructor in your area.

Reference books, nautical almanacs, sight tables, and tutorials for celestial navigation are available for purchase at the Mobile Geographics web store, http://www.mobilegeographics.com/navbooks.html. The prudent mariner will not rely on electronic devices. Have the books on board, and know how to use them.


Installation is easy. Two files are required. The first is CelestNav.prc, the actual program. The second is MathLib.prc, a library written by Rick Huebner. MathLib.prc is used by many PalmOS add-on applications; you might already have installed it. If MathLib.prc is already installed, there is no need to install it again.

To install the two files, double-click on each of them. Or if you prefer, drag CelestNav.prc, and (if necessary) MathLib.prc into the "Install Handheld Files" or "Install Files" window of your Palm Desktop Software. Then perform a HotSync operation to transfer the files from your desktop computer to your handheld.

After the HotSync, you're ready to go. Tap the CelestNavTM icon on your handheld to start the program.

PalmOS basics

To use CelestNavTM, it helps to be able to bring up the menu. Do this by tapping the title bar of a screen, or by tapping the "menu" silk-screen icon in the lower left-hand corner of your screen, next to the Graffiti area.

You can reach all of the functions of CelestNavTM from the menus. The contents of the menus will change, depending on what program screen you're on.

On more recent devices (anything running PalmOS version 3.5 or later), you also have a shortcut to some menu items. It's called the Command Bar. To bring up the command bar, drag from lower left to upper right in your Graffiti area; then choose one of the icons that appears.

You can also write (in the Graffiti area) the shortcut letter for a menu item.

The Command Bar lists only a few menu operations, and it looks different on every program screen.

Getting started with CelestNavTM

Now we'll go through the different parts of CelestNavTM, and see it compute a fix. We'll use example 5-3 taken from Leonard Gray's excellent book One Hundred Problems in Celestial Navigation.


The first time you run CelestNavTM, you'll see a couple of licensing screens. The first displays the licensing agreement. After you read it, if you agree to the terms, tap on "Agree".

This brings you to the Status Page, which is the control screen for CelestNavTM. On the Status Page, you can see your most recent fix and your current DR position.

At the beginning of a voyage, and periodically through the voyage, you should recheck the settings for time/time zone, height of eye, and index error.

Time zone

Celestial navigation depends on knowing the time quite exactly. You need to tell CelestNavTM exactly what time it is. Tap the "time" button in the Status Page to switch to the Handheld Clock page, or choose "Time" from the "Setup" menu.

There are two different formats for this screen. Which one you see depends on which version of PalmOS your handheld is running.

Newer handhelds (PalmOS 4.0 and later) Older handhelds

Device time, at the top of the page, is the time shown on your handheld's internal clock. You can change that with the Prefs program included on your handheld. CelestNavTM does not modify your handheld's internal clock. CelestNavTM assumes that your handheld's clock is set to approximate ship's time or local time. You can tap the "Set internal clock" or "Set internal clock and timezone" button to shift to the PalmOS Control Panel that sets your clock.

All clocks gain or lose time, and your handheld's clock is no exception. If your handheld has drifted a few seconds fast or slow, enter that as a "watch error". Tap the "Fast" or "Slow" pushbutton, and enter the watch error in seconds. You will see your "Local time" updated immediately.

New PalmOS handhelds keep track of the time zone for you. But on older devices, you need to tell CelestNavTM what time zone you are in, relative to UTC (sometimes called by its old name GMT). Enter the difference between your local time and UTC, expressed in minutes. Tap the "-" pushbutton if you are east of Greenwich, or the "+" if you are west of Greenwich. For the east coast of the USA, during the winter (not observing daylight savings time), enter "300" minutes and tap the "+" pushbutton. CelestNavTM will display the computed UTC time, as well as the longitude that corresponds to the UTC offset that you entered.

Height of eye

When you make a sextant observation, you must know how far above sea level you were. A difference of a few feet can make a large difference in your computed location.

CelestNavTM lets you store multiple observing locations. You can edit these by choosing "Observer height of eye" from the "Setup" menu. You might just need one location. But if you sometimes shoot from the bridge wing, sometimes from the signal bridge, and sometimes from the flight deck, or if you sail on more than one boat, it can be handy to have multiple locations defined.

To create a new location, tap the "New" button. Enter a short text description, and then the height of eye. Tap "Use this location" to tell CelestNavTM that this is where you are now; CelestNavTM will use that height of eye for future sextant sights, but will not change existing sights.

To delete the currently-visible observation location, use the Delete entry from the Observer menu. If there are sextant sights in the sight database that were made from this location, you will not be able to delete it.

For practice, create a new entry. Enter "Leonard Gray chap 5" for the description, and 2.44 meters (8 feet) as the height of eye. Tap "Use this location". Now tap the "Status" button to return to the Status Page.

Shooting a star

Now we're ready to enter some sextant observations. Tap the "New sight" button on the status page.

Index error

Index error is the error in your sextant reading. You can determine your own sextant's index error by observing the horizon. When the horizon is lined up with itself, your sextant should read 0.0. The actual reading of your sextant is the index error.

For this example we will use an index error of 1.0'. Tap the selector box next to "Index error:", and you'll bring up CelestNav's angle entry form.

You can use the angle entry form to enter angles as decimal degrees (36.2341°), degrees and decimal minutes (36° 14.043'), or degrees, minutes, and seconds (36° 14' 3"). Tap the "DDD", "DMM", or "DMS" pushbutton to change modes.

Use either the numeric buttons or Graffiti to enter the numeric values in the proper fields. Use the "° ' "" button to cycle through the degrees, minutes, and seconds fields. The backspace button (left arrow) deletes one character at a time. The "000" button truncates the current field and sets all fields to the right equal to zero; it's handy for quickly turning 36° 14' 3" into exactly 36°. The Revert button restores the value that you had when you started, but leaves you in the form. "Cancel" restores the original value and exits. "Done" saves your changes and exits.

You will always see a pair of pushbuttons to change the sign of the angle. They will be "-" and "+" for angles and bearings, "W" and "E" for longitudes, or "N" and "S" for latitudes.

Enter 0° 1.0' for the index error, and then tap "Done".

Once you enter an index error, it will persist and be used for all future sights until you enter a new index error. Check your index error each time you use your sextant.

Entering observations

We will go, step-by-step, through one entry. We observed the star Regulus on December 18, 1993 at 17:20:35 UTC, azimuth 007°, sextant reading 37°34.3'.

Timing the sight

When you use CelestNavTM at sea, you'll want to let your handheld be your stopwatch. Suppose you're working alone, and that it takes you 3 seconds to put down your sextant and pick up your handheld after making an observation. Tap the "delay" popup trigger (just to the left of the "Now" button. Choose "3 second delay". You'll make your observation, say to yourself "now", and count "thousand-one, thousand-two, thousand-three". As you say "three", tap the "Now" button. When you tap the "Now" button, CelestNavTM will record a time that was 3 seconds in the past.

If you have an assistant, choose "No delay" and have your assistant tap "Now" when you say (out loud!) "now!".

When you use CelestNavTM to practice, you will be entering times manually. For this example, the sight was made at 17:20:35 UTC on December 18, 1993. Tap the time selector (just above the "delay" trigger) and you'll bring up the Date and Time Entry screen.

Tap the "Date" selector trigger to bring up the usual PalmOS date selector. Use it to enter the date of your observation (December 18, 1993).

Tap each part of the time in turn to set hours, minutes, and seconds. Tap the up and down arrows to adjust the values. The "00..." button zeros the minutes and seconds; the "00" button zeros only the seconds. "Now" sets the sight's date and time to the handheld's current date and time. "Revert", "Cancel", and "Done" work as they did in the Angle Entry Screen. Enter 17:20:35 for the time, and tap "Done".

Where in the sky?

Tap the "Sextant" selector trigger to bring up another angle entry form, this one for the sextant reading. Enter 37°34.3' for the sextant reading.

You may, if you wish, enter an observed azimuth value. This information is not used currently, but a future release of CelestNavTM will allow you to match azimuth and height of an unknown body with the nautical almanac values so that you can identify the body. To enter an azimuth, tap the "Azimuth" checkbox and then enter a value into the selector trigger that appears. For this body, use 007° for the azimuth.

Which body?

There are two popup lists that you will use to enter the name of a celestial body. The first one is always visible, just below the "Azimuth" checkbox. Tap it, and choose "Selected star:", since Regulus is a star. You would use just this first popup if you had taken a sight of a planet or the sun.

When you choose "Selected star:" from the upper popup, the lower one appears. It contains only the names of stars. Tap it, and choose "Regulus".

Sextant sight variations

Tap the "Extras" button to see the special cases that CelestNavTM can handle.

When practicing with problems from a book, you might have occasion to enter samples that already have all sextant corrections made, or that have already corrected for dip/height of eye. Check those items on the form if they apply.

A backsight is a sextant observation made over your shoulder, to the opposite horizon. Turn your back on the body, and shoot it over your shoulder (this is useful if you can't see the horizon below the body itself). Check "backsight" if you made your observation this way.

CelestNavTM assumes standard atmospheric conditions of 10° Celsius, 1010 millibars. If you have observed other conditions, enter those here for a more accurate correction.

A "noon/meridian passage" sight is made when a celestial body (usually the Sun) reaches its highest point in the sky. This sight gives you a latitude value only, but does not require accurate timekeeping. At present CelestNavTM allows you to record that a sight was made at local apparent noon, but still treats the sight as a timed sight.

Adding it all up

From the "Sights" menu, choose "Show corrections". You'll see an overview of all of the steps CelestNavTM takes to adjust your sextant reading to a corrected height above horizon.

Putting it on paper

Tap the "LOP" button to display the information you need to plot this single LOP on your paper chart. Tap each of the selector fields in the upper left corner to enter a DR latitude and longitude, which for this example is 40°17' South, 158°06.0' East.

Tap the "Sight edit" button to return to the Sight Edit screen.

Knowing where to look

Tap the "Find" button to switch to the "Almanac data" page. In the upper left corner, enter your dead reckoning position using the angle entry screen. In this example your DR is 40°17' South, 158°06.0' East. CelestNavTM shows you the predicted azimuth and elevation of Regulus, as well as the sidereal hour angle, declination, local hour angle, and Greenwich hour angle of Regulus and of Aries.

Optionally, you can display times of rise, set, and meridian passage. These calculations take a while, so you should leave them turned off unless you want to see them. Meridian passage is the time that the body's LHA is 0. For the sun, it is local apparent noon ("high noon", when the sun is at its highest point). If an event does not occur (the body does not rise or set), "////" is displayed. On the almanac screen, the times of rise, set, and meridian passage are in UTC, with the date in parentheses. "(18) 12:29" means 12:29 UTC on the 18th of the month.

Tap the "Sight edit" button to enter the rest of the example.

The rest of the round

Tap "New" on the "Sextant sight" page to create a new sight entry. This one is for the star Spica, observed December 18, 1993 at 17:22:04 UTC, with a sextant reading of 34°25.8'.

Here are the sextant observations you made (including the first two, which we have already entered). Create new entries for the rest of them.

December 18, 1993 Celestial Observations
Body GMT Hs (sextant reading)
Regulus 17:20:35 37°34.3'
Spica 17:22:04 34°25.8'
Procyon 17:23:44 35°31.2'
Canopus 17:25:16 53°09.9'
Jupiter 17:26:50 25°42.5'
Sirius 17:29:01 42°46.9'

Note that Jupiter's entry is a bit different, since it is a planet and not a star.

Now tap the "Sights" button to see all of your sextant sights.

This page lists date and time of observation, sextant reading in degrees and tenths, and the name of the body. The most recent fix you entered (Sirius, at 17:29:01) should be highlighted. If not, tap its entry once to highlight it. Then tap the "Build fix" button.

Building a fix

When you first see this page, it looks like this. No dead reckoning position has been entered yet, so CelestNavTM uses 0 for both latitude and longitude.

AP, course/speed

In this example, the last fix we had was at 0950 on December 18, 1993, at 40°17' South, 158°06' East. Since then we have been on course 090° true, at a speed of 7.5 knots.

Enter the last known position as "AP/DR", using the two Angle Entry Forms that will pop up when you tap the selector triggers. Enter the time of that fix as "time of DR", using a Date and Time Entry form. Enter the speed to the left of "knots" as a normal PalmOS field; use Graffiti for this entry. Enter the course in the lower right using an Angle Entry Form.

At sea, you can tap the "Use DR/Now" button to automatically enter your DR from the Status Page and the current date and time into the lower part of the page.

Time of fix

Most of the time you'll want the time of the fix to be the time of the last celestial observation. Check the "(auto) time" box for this. Uncheck it if you want to set the time of fix manually; use the selector trigger next to "(auto) time" to do so.

Adding sights

The last sextant sight you entered has its box checked. Check the boxes next to each of the other 5 new celestial observations. Each time you add a sight, you'll see a pause as CelestNavTM computes the nautical almanac information for that sight. Your updated fix is displayed at the top of the screen. An "A" to the left of a sight means that the almanac information has been computed and saved.

The final answer

When all 6 celestial observations have been added to the fix, CelestNavTM computes your position at 17:29, December 18, 1993 as S 40°17.4' E 159°16.5'. The intercept value (difference between Ho and Ha) is displayed for each sight, and the mean squared intercept for the entire fix is listed as "Err".

More information about the fix is available. Tap the "Details" button. CelestNavTM computes the DR position at the time of the fix (based on the information you entered), the actual celestial position, and the difference between them (expressed as miles and as set and drift).

The Mean Squared Intercept (sum of the squares of the individual sight intercepts) is displayed again here, as well as some internal calculation results (explained in the back pages of the Nautical Almanac).

Tap "Celestial fixes" from the Status Page, and you'll see your newly-created fix in the database.

Other features of CelestNavTM

Dead reckoning

At sea, you can use the fix you just computed as the basis for a continuously updated DR position. Tap the "Start DR" button, or choose "Start DR" from the Fixes menu. Your DR position is displayed on the Status Page, as long as the time of your DR is fairly recent.

To test this feature using our example, you'll have to set your handheld's clock back to December 1993. If you'd rather not do that, then go back to the status page and change the "Fix UTC" to something in the last few days.

Sight reduction/HO 229

CelestNavTM includes a page which performs the same calculations that are tabulated in Publication H.O. 229. From the "Almanac data" page, tap the "Sight reduc" button, or from anywhere choose "Sight reduction table" from the "Nav" menu.

An Example

Switch to the "Almanac data" page.

At 20:45:47 UTC, June 21 2000, your dead reckoning position is N 31°56.1', W 14°56.8'. Enter those values in the two DR fields and the date/time field.

You want to observe the star Antares. CelestNav's perpetual nautical almanac tells you that the uncorrected height should be 20°01.0'. Tap the "Sight reduc" button to switch to the HO229 page.

After making your observation and correcting for index error, dip, and atmospheric conditions, you calculate a height Ho of 20°19.4'. Enter that value for Ho.

Check the "Calc from GHA?" box to enter your GHA and have CelestNavTM compute your LHA. Antares's GHA and declination have been pre-entered for you from the Nautical Almanac page. Since your DR latitude is north and the star's declination is south, CelestNavTM displays "contrary". Your LHA, as computed by CelestNavTM, is 319°00.0'.

Check the "Round AP" box This will display an AP (assumed position) of W 15°26.1', N 32°00.0'. AP is rounded to give a whole integer latitude and a whole integer LHA.

CelestNavTM displays a value of 19°42.5' for Hc, and azimuth of 141°, with an inter cept of 36.9 nautical miles "toward".

To plot this LOP on your paper chart, begin from the displayed AP position. Draw a line from your AP on bearing 141. At a point on that line 36.9 nm from the AP, place a dot, the intercept point. Draw a perpendicular to your first line (the azimuth line), through the intercept point. Your position was somewhere along that line.

Now turn to volume 3 of HO 229, page 85 (the page that lists LHA of 319, contrary latitude/declination names). Look under the column for latitude 32°. Interpolation between the values for declination 26 and 27 gives an Hc of 19°42.1', and both Z and azimuth of 141.4°.

To use the Sight Reduction/HO 299 screen by itself, without knowing GHA, simply uncheck the "Cal from GHA?" box. Now you can use the screen the same way you would use HO 229.

Purging many sights or fixes at once

Pop up the "Sights" or "Fixes" menu from the appropriate browse page, and you can bring up a dialog to delete a group of fixes or sights.

Plotting a single LOP

Sometimes you will want to draw a single celestial line of position on your chart without computing a fix--for example, to plot a single sun line in the middle of the afternoon.

For this example, assume that on December 19, 1993, you observe the lower limb of the sun at 03:04:10 UTC, with Hs of 61° 12.7', index error +1.0', height of eye 8 feet (as in the examples using the full fix). Your DR position is 40°17' South, 160°15' East.

First enter your height of eye (or use the one you saved earlier) and enter the sight.

Then tap "LOP" to bring up the "Sight reduction/HO 229" page. CelestNavTM copies your DR position from the Almanac page, and Ho from the Sight Edit page. Assumed Position is shown at the upper right. In this example you would plot an azimuth line from the AP extending on bearings 297 and 117, plot a point on the azimuth line 26.5 miles from the AP along bearing 117, and the draw your celestial LOP through that point, perpendicular to the azimuth line.

You can, of course, use this sight in a full-blown CelestNavTM fix computation, also.

Finding height and range with your sextant

CelestNavTM can compute height, range, and angle for terrestrial objects. This is useful for determining your distance from an object of known height, or the height of an object at a known location, or for maintaining a minimum or maximum range from an object of known height, such as a lighthouse.

Tap "Find height", "Find distance", or "Find angle" to choose the computation you want. CelestNavTM assumes that you can see both the top and the bottom of the object; its algorithm fails if the base of the object is below the horizon.

Suppose you want to stay at least 1 kilometer away from a 145 foot lighthouse. Enter the lighthouse's height and the desired range; check your index error and enter it if necessary. CelestNavTM shows that you must observe an angle of no more than 2° 32.8' in your sextant. If the angle exceeds that, you are too close to the lighthouse.

Daylight, sunrise, sunset

To compute approximate times for sunrise, sunset, local apparent noon, and twilights, use the "Daylight" page. Times are displayed both in "local" time (the time set on your PalmOS handheld) and UTC, using the time zone that you set on the "Time" page. "////" means that an event does not occur on that day, for instance a sunrise or sunset during extreme polar winter or summer.

Sailings and route planning

CelestNavTM can compute the great circle or rhumb line distance (Mercator sailing) between two points, including the locations of waypoints. Great circle sailing gives the shortest distance; Mercator or rhumb line sailing gives the route for a constant heading.

From the Status Page, tap "Sailings". Choose "Mercator" from the popup list in the upper right corner. Tap "Find course/dist", and enter your desired start and end points.

To display waypoint locations at fixed percentages along the route, enter that percentage in the field provided. Then tap "Next Wpt" and "Prev Wpt" to cycle through the waypoints.

To compute the time required to travel a given distance, or the speed required to make a deadline, enter the known distance or speed, in days or hours.

You can also find the place you will be after sailing from an origin for a given heading and distance. Tap "Find dest lat/long", and enter your heading and distance.

CelestNavTM can also compute the great circle distance, and initial heading, between two points. Note the difference in distance traveled between Great Circle and Mercator sailings. Switch to "Great Circle" using the popup list in the upper right corner.

In the rhumb line (Mercator) approximation to a Great Circle route, you'll change course for each leg, and you'll travel a greater distance than if you sailed a pure Great Circle route. When you tap "Prev Wpt" or "Next Wpt", CelestNavTM will show you the position of each intermediate point that joins two rhumb line legs.

The more legs you sail, the more course changes you have, but the shorter your distance traveled is. Total distance on the rhumb line approximation is listed in the last line, on the right, and changes depending on how many legs you use. Change the size of the leg by entering a value in the "%" field at the bottom.

To see the courses and waypoint positions for the return voyage, tap the "Reverse" button.

How to license your demo version

CelestNavTM uses a registration code based on your HotSync name. When you buy it, you will need to provide your HotSync name. You may also provide the RegCode, which appears in the middle of the screen. The RegCode is helpful if your name uses international characters; it is simply a different way of recording your HotSync name.

You can find the HotSync name in the upper right corner of the screen in your Palm HotSync application, or in the upper left corner of CelestNav's "License purchase" page.

Go to the "Register" page by choosing "Licensing" from the Setup menu.

Purchase CelestNavTM for $49.95 through the Mobile Geographics Online Store, or through a PalmOS software retailer.

When you buy CelestNavTM, you will receive a temporary unlock key immediately, and a permanent key in a few days. The temporary key will work for 60 days. The permanent key will not expire.

Feel free to beam the online version of CelestNavTM to your friends. CelestNavTM will function as a demonstration version for 10 days, just as if they had downloaded CelestNavTM from a PalmOS software vendor.

How to buy a CD-ROM version

CelestNavTM is also available on CD. The CD contains the same material as the online version. You can read this CD on Windows, Unix, and Macintosh computers.

Celestaire logo

Order the CD from Celestaire, Inc. in Wichita, KS. 1-888-navigate, 1-316-686-9785, or order online.

How to upgrade CelestNavTM

When you receive a new version of CelestNavTM, simply install the new celestnav.prc on your PalmOS device. Your existing data and unlock key will be preserved. You should always keep a record of your unlock key in a safe place, though.

Inner workings

CelestNavTM would not have been possible without the previous work of many people.

The algorithms for the nautical almanac calculations for the Sun and planets are taken from Jean Meeus's book Astronomical Algorithms. The star positions are given by a modified version of the NOVAS vector astrometry package, from the U.S. Naval Observatory.

The algorithms for sight reduction and fix computation come from the 2000 edition of the Nautical Almanac.

The project would have been a lost cause without Rick Huebner's MathLib.

CelestNavTM was developed on MacOS using the Metrowerks CodeWarrior development environment for PalmOS. It is written entirely in C.

Finally, a heartfelt thanks to everybody I sailed with on the Søren Larsen.

© 2000-2002 Mobile Geographics LLC.
Mobile Geographics LLC <hal@mobilegeographics.com>