NavList:
A Community Devoted to the Preservation and Practice of Celestial Navigation and Other Methods of Traditional Wayfinding
Nautical Almanac Moon Correction Tables
From: Frank Reed CT
Date: 2006 Jul 24, 18:19 -0500
A few weeks ago, Stan asked how the Moon altitude correction tables in the
back of the Nautical Almanac were constructed. There's no mystery about
calculating the total correction. The only tricky part was understanding how the
upper and lower tables are separately created. I thought some of the rest of
the group might be interested in this.
The upper table is constructed using a mean value of the Moon's HP of 57.7
minutes of arc. The lower part then gives the increment in the correction for
the difference between the actual HP and that mean value. In order to keep
the corrections additive, 5 minutes of arc are added to the correction for the
Lower Limb and 35 to the correction for the Upper Limb. In trade, 5 minutes
of arc are subtracted from the upper table. Note: in the lower table, find the
Lower Limb correction for HP=57.7 ...it's 5.0 all the way across. Makes
sense.
I have a request: could someone please check the value for the Moon's
altitude correction for 0 degrees altitude from a post-2004 Nautical Almanac (I
don't have one). I'm curious whether they remembered to update that table to
keep it consistent with the minor revision of the refraction tables for the Sun
and stars. From a pre-2004 Nautical Almanac, the corrections are 33.8 from
the Upper Table and 0.3/0.9 (LL/UL) from the Lower Table. This has no
significance for practical navigation. I'm just curious.
And here is some Basic code that will generate the values in the table to
0.1 minutes of arc accuracy. If you see any problems with it or know of any
simplifications in the calculational steps, I would be interested to hear about
them.
>>>>>>
kk = 180 / 3.141593
'The mean value of the Moon's Horizontal Parallax:
HP0 = 57.7
'The ratio of SD to HP. 0.2724 would probably be more accurate but 0.2711
'reproduces the values in the almanac tables.
SDcon = .2711
INPUT "HP:", HP
FOR h1 = 0 TO 89 STEP 1
PRINT h1
'The observed altitude, h1, determines the refraction
h2 = h1 - refr0(h1 / kk) / 60
'The semi-diameter is proportional to HP0. Augmentation is
'proportional to sine altitude:
SD = SDcon * HP0 * (1 + .016 * SIN(h1 / kk)) / 60
'Add the semi-diameter to the LL sight, subtract for UL:
h2LL = h2 + SD
h2UL = h2 - SD
'After clearing refraction and semi-diameter, correct for the
'parallax at the mean value HP0.
h3LL = h2LL + HP0 * COS(h2LL / kk) / 60
h3UL = h2UL + HP0 * COS(h2UL / kk) / 60
'The Upper Table correction is essentially the difference between
'h3 for LL and the observed altitude h1.
h3 = h3LL
'The Lower Table uses the average altitude from the upper column:
havg = 2.5 + 5 * INT(h1 / 5)
'h4 (LL/UL) is the increment in the Moon's semi-diameter and
'its parallax for the difference between the actual HP and the mean
'Horizontal Parallax, HP0.
SD = SDcon * (1 + .016 * SIN(havg / kk))
dHP = (HP - HP0) / 60
h4LL = h3LL + SD * dHP + dHP * COS(havg / kk)
h4UL = h3UL - SD * dHP + dHP * COS(havg / kk)
'To keep the Lower Table corrections always positive, add
'5 minutes to the LL correction and 35 to the UL correction.
'To compensate, subtract 5 minutes from the Upper Table.
UTcorr = 60 * (h3 - h1) - 5
LTcorrLL = 60 * (h4LL - h3) + 5
LTcorrUL = 60 * (h4UL - h3) + 35
'output the results:
PRINT "Upper Table Correction: ";
PRINT USING "###.##"; UTcorr
PRINT "Lower Table LL Correction: ";
PRINT USING "###.##"; LTcorrLL
PRINT "Lower Table UL Correction: ";
PRINT USING "###.##"; LTcorrUL
IF LEN(INKEY$) THEN EXIT FOR
SLEEP
NEXT
END
FUNCTION refr0 (objectalt)
'refraction for a given observed altitude
altdeg = objectalt * kk
IF altdeg < 15 THEN
IF ABS(altdeg - INT(altdeg)) > .001 THEN
PRINT "No refraction data."
END
END IF
'these refraction values are taken directly from the Nautical Almanac:
SELECT CASE INT(altdeg)
CASE 0
totalref = 34.5
CASE 1
totalref = 24.3
CASE 2
totalref = 18.3
CASE 3
totalref = 14.4
CASE 4
totalref = 11.8
CASE 5
totalref = 9.9
CASE 6
totalref = 8.5
CASE 7
totalref = 7.4
CASE 8
totalref = 6.6
CASE 9
totalref = 5.9
CASE 10
totalref = 5.3
CASE 11
totalref = 4.85
CASE 12
totalref = 4.45
CASE 13
totalref = 4.1
CASE 14
totalref = 3.8
CASE 15
totalref = 3.6
END SELECT
ELSE
tanz = 1 / TAN(objectalt)
totalref = .9716 * tanz - .00111 * tanz ^ 3
END IF
'returned in minutes of arc
refr0 = totalref
END FUNCTION
<<<<<<
-FER
42.0N 87.7W, or 41.4N 72.1W.
www.HistoricalAtlas.com/lunars
--~--~---------~--~----~------------~-------~--~----~
To post to this group, send email to NavList@fer3.com
To , send email to NavList-@fer3.com
-~----------~----~----~----~------~----~------~--~---
From: Frank Reed CT
Date: 2006 Jul 24, 18:19 -0500
A few weeks ago, Stan asked how the Moon altitude correction tables in the
back of the Nautical Almanac were constructed. There's no mystery about
calculating the total correction. The only tricky part was understanding how the
upper and lower tables are separately created. I thought some of the rest of
the group might be interested in this.
The upper table is constructed using a mean value of the Moon's HP of 57.7
minutes of arc. The lower part then gives the increment in the correction for
the difference between the actual HP and that mean value. In order to keep
the corrections additive, 5 minutes of arc are added to the correction for the
Lower Limb and 35 to the correction for the Upper Limb. In trade, 5 minutes
of arc are subtracted from the upper table. Note: in the lower table, find the
Lower Limb correction for HP=57.7 ...it's 5.0 all the way across. Makes
sense.
I have a request: could someone please check the value for the Moon's
altitude correction for 0 degrees altitude from a post-2004 Nautical Almanac (I
don't have one). I'm curious whether they remembered to update that table to
keep it consistent with the minor revision of the refraction tables for the Sun
and stars. From a pre-2004 Nautical Almanac, the corrections are 33.8 from
the Upper Table and 0.3/0.9 (LL/UL) from the Lower Table. This has no
significance for practical navigation. I'm just curious.
And here is some Basic code that will generate the values in the table to
0.1 minutes of arc accuracy. If you see any problems with it or know of any
simplifications in the calculational steps, I would be interested to hear about
them.
>>>>>>
kk = 180 / 3.141593
'The mean value of the Moon's Horizontal Parallax:
HP0 = 57.7
'The ratio of SD to HP. 0.2724 would probably be more accurate but 0.2711
'reproduces the values in the almanac tables.
SDcon = .2711
INPUT "HP:", HP
FOR h1 = 0 TO 89 STEP 1
PRINT h1
'The observed altitude, h1, determines the refraction
h2 = h1 - refr0(h1 / kk) / 60
'The semi-diameter is proportional to HP0. Augmentation is
'proportional to sine altitude:
SD = SDcon * HP0 * (1 + .016 * SIN(h1 / kk)) / 60
'Add the semi-diameter to the LL sight, subtract for UL:
h2LL = h2 + SD
h2UL = h2 - SD
'After clearing refraction and semi-diameter, correct for the
'parallax at the mean value HP0.
h3LL = h2LL + HP0 * COS(h2LL / kk) / 60
h3UL = h2UL + HP0 * COS(h2UL / kk) / 60
'The Upper Table correction is essentially the difference between
'h3 for LL and the observed altitude h1.
h3 = h3LL
'The Lower Table uses the average altitude from the upper column:
havg = 2.5 + 5 * INT(h1 / 5)
'h4 (LL/UL) is the increment in the Moon's semi-diameter and
'its parallax for the difference between the actual HP and the mean
'Horizontal Parallax, HP0.
SD = SDcon * (1 + .016 * SIN(havg / kk))
dHP = (HP - HP0) / 60
h4LL = h3LL + SD * dHP + dHP * COS(havg / kk)
h4UL = h3UL - SD * dHP + dHP * COS(havg / kk)
'To keep the Lower Table corrections always positive, add
'5 minutes to the LL correction and 35 to the UL correction.
'To compensate, subtract 5 minutes from the Upper Table.
UTcorr = 60 * (h3 - h1) - 5
LTcorrLL = 60 * (h4LL - h3) + 5
LTcorrUL = 60 * (h4UL - h3) + 35
'output the results:
PRINT "Upper Table Correction: ";
PRINT USING "###.##"; UTcorr
PRINT "Lower Table LL Correction: ";
PRINT USING "###.##"; LTcorrLL
PRINT "Lower Table UL Correction: ";
PRINT USING "###.##"; LTcorrUL
IF LEN(INKEY$) THEN EXIT FOR
SLEEP
NEXT
END
FUNCTION refr0 (objectalt)
'refraction for a given observed altitude
altdeg = objectalt * kk
IF altdeg < 15 THEN
IF ABS(altdeg - INT(altdeg)) > .001 THEN
PRINT "No refraction data."
END
END IF
'these refraction values are taken directly from the Nautical Almanac:
SELECT CASE INT(altdeg)
CASE 0
totalref = 34.5
CASE 1
totalref = 24.3
CASE 2
totalref = 18.3
CASE 3
totalref = 14.4
CASE 4
totalref = 11.8
CASE 5
totalref = 9.9
CASE 6
totalref = 8.5
CASE 7
totalref = 7.4
CASE 8
totalref = 6.6
CASE 9
totalref = 5.9
CASE 10
totalref = 5.3
CASE 11
totalref = 4.85
CASE 12
totalref = 4.45
CASE 13
totalref = 4.1
CASE 14
totalref = 3.8
CASE 15
totalref = 3.6
END SELECT
ELSE
tanz = 1 / TAN(objectalt)
totalref = .9716 * tanz - .00111 * tanz ^ 3
END IF
'returned in minutes of arc
refr0 = totalref
END FUNCTION
<<<<<<
-FER
42.0N 87.7W, or 41.4N 72.1W.
www.HistoricalAtlas.com/lunars
--~--~---------~--~----~------------~-------~--~----~
To post to this group, send email to NavList@fer3.com
To , send email to NavList-@fer3.com
-~----------~----~----~----~------~----~------~--~---