Skip to content

Navigation Slidewheel

Two sides of the navigation slide wheel

As part of developing the sunwheel for correcting sextant height measurements, I also wanted to elmininate the need for the Pub249 almanacs that contain precomputed tables of the height H_c and azimuth Z_n for a celestial object as a function of the Latitude, Declination and Local Hour Angle.

For the Z_n value I reinvented the universal astrolabe and added it to the back of the sun wheel since a 1 degree accuracy is sufficient. But the height calculation needs to be much more exact, within a few minutes, to be useful, so the estimate that the sun wheel gives for height was not adaquate.

Other folks have designed "emergency navigation" methods or made flattened versions of the Bygrave slide rule, although, since I am full of hubris, I think mine has several advantages...

Operation

On the LHA side:

  1. Rotate the inner wheel to align the red declination with the outer index
  2. Align the pointer to the inner index (red declination 0)
  3. Rotate the inner wheel to align the LHA with the pointer
  4. Rotate the pointer clockwise to the latitude on the outer scale (passing the index once if the declination is also very high)
  5. If the pointer crossed the inner index, move inwards one scale on the spiral
  6. Read the adjustment angle from the correct scale of the spiral

Flip to the Height side:

  1. Align the pointer to the outer index
  2. Rotate the inner wheel to align the adjustment angle with the pointer. Make note of the carry value.
  3. Align the pointer to the inner index
  4. Rotate the inner wheel to align the Latitude - Declination with the pointer (or Declination - Latitude if that is easier)
  5. Rotate the pointer clockwise to the outer index
  6. If the pointer crossed the inner index, move inwards one scale on the spiral
  7. Move inwards on the spiral based on the carry value
  8. Read the H_c value from the red numbers on the correct scale of the spiral.

With practice this is very fast and since you don't have to interpolate between the whole degree values as you do when using Pub249, I find it is significantly faster.

Example

As a worked example, let's say our DR latitude is 54°, the sun's declination is -11.25°, and Our observation is at a Local Hour Angle of 50.3° (before or after meridian; it doesn't matter).

LHA side

Close up of the Local Hour Angle side, with the declination set to 11.25 degreees

On the LHA side, set the Declination to 11.25° by lining it up with the zero (called the "Index") on the outer scale. Note that the sign for the declination does not matter -- north or south both use the same value. Then rotate the pointer so that it holds this position, relative to the outer scale.

Log scale in use

Next rotate the inner wheel so that the LHA, 50.3° lines up under the pointer.

Log scale in use

Now rotate the pointer clockwise so that it lines up with the Latitude, 54° on the outer scale.

Log scale in use

Since the pointer crossed the inner index, move to the next spiral inwards. The pointer is now indicating the Adjustment Angle of 37.65° It is usually more comfortable to turn the entire wheel in your hands so that the pointer is level and you can easily read the numbers underneath it.

Height side

Haversine scale in use

Flip the nav wheel to the Height side and align the pointer to the outer index, and use it to select the Adjustment Angle 37.65° on the black digits of the inner spiral. Note that this spiral goes the other way from the LHA spiral, so the desired value is more clockwise than the digit. Make note of the Carry value of 1 for this Adjustment Angle.

Haversine scale in use

Move the pointer to the inner index, and then rotate the inner wheel to select the Latitude minus the Declination, 54 - -11.25 = 65.25° We've rotate the wheel back again so that the pointer is horizontal to make it easier to read.

Haversine scale in use

Finally rotate the pointer clockwise to the outer index, making note if we cross the inner index (in this case we don't). We move 1 step inwards on the spiral since there is a Carry from the Adjust angle, allowing us to read the H_c in red as slightly less than 12.15° so perhaps 12.148°

The actual value from the formula is 12.1465°, so this is quite close!

Conversion scale

If you want to convert the decimal degree to minutes, you can use the outer wheel on this side to select 14.8 and read 8.9', so the final result would be 12° 8.9'. Note that this outer scale does not have any connection to the inner Havesine scale and is only for performing this conversion (as well as having a visual guide to ensure that the pointer doesn't spin when you rotate the inner).

The Math

The function that we need to compute is

Hav(90 - H_c) = Hav(LHA) * \cos(Dec) * \cos(Lat) + Hav(Lat - Dec)

Note that Haversine is symmetric around 0, so LHA can be positive or negative (before or after the meridian passage), and that the last term can be Latitude minus the Declination or Declination minus Latitude, only the absolute value matters.

Another thing to note is that if LHA is 0 or very small, which means the sight is near the meridian passage, then the first term goes to almost zero, so the result is going to be very close to the the simplified H_c = 90 - (Lat - Dec)

LHA side

The spiral on the first side of the slide rule computes \log(Hav(LHA) and the outer markings compute \log(\cos(Lat)) and \log(\cos(Dec)). Since adding logarithms performs multiplication, this allows us to compute the log of the adjustment angle:

\begin{align} \alpha & = \log(hav(LHA)) + \log(\cos(Dec)) + \log(\cos(Lat)) \\ & = \log(hav(LHA) * \cos(Dec) * \cos(Lat)) \end{align}

By "backing up" an amount equal to \log(\cos(Dec)) and then going forward to an amount equal to \log(\cos(Lat)), the rule efficiently computes the product. Adding that to the the \log(hav(LHA)) value multiplies that as well, producing the intermediate product that we require.

The outer scale is \log(\cos(60\deg)) radians since that is the maximum longitude that is supported, and which means that each wrap of the spiral is of the same length. It starts to get very spread out at smaller angles, so a cutoff of 10° was chosen for practical purposes. LHA less than that means the sun is almost directly overhead and you're within a few minutes of the merdian passage, so just do a normal latitude calculation instead.

And by then reading the value from the spiral, it computes:

\begin{align} A & = hav^{-1}(e^\alpha) \\ & = hav^{-1}(e^{\log(hav(LHA) * \cos(Dec) * \cos(Lat))}) \\ & = hav^{-1}(Hav(LHA) * \cos(Dec) * \cos(Lat)) \end{align}

This value is recorded and then transfered to the Height side.

Height side

This spiral computes hav(A) without the logarithm, so adding values on it is normal addition. The adjustment angle from the LHA side is hav(hav^{-1}(A))) = A, when we set the pointer to A this results in the partial value Hav(LHA) * \cos(Dec) * \cos(Lat) on the outer ring (plus a carry value that indicates how many loops on this spiral have been traversed).

By adding the length of the intermediate term to the length of Hav(Lat-Dec) and by inwards by the number of carries, this results in the sum Hav(Lat-Dec) + Hav(LHA)*\cos(Dec)*\cos(Lat), modulo the number of turn. Add the carry value to move inward by that many turns and now the inverse Haversine can be applied to read the H_c value from the red numbers along the spiral (since the red values are ninety minus the black).

Source Code

2026 Sailing