Great Elliptic Arc Length for the HP-41
Overview
a) Computing Parametric Latitudes
b) With Geocentric Latitudes ( without computing parametric latitudes )
2°) Triaxial Ellipsoid
a) With Andoyer's Formula of order 2
b) With a Formula of order 3 ( 2 programs )
c) Andoyer's Formula of order 3
d) Numerical Integration ( 2 programs )
1°) Ellipsoid of Revolution
a) Computing Parametric Latitudes
-This program employs WGS84 ellipsoid: a = 6378.137 km & flattening f = 1/298.25722 ( lines 166 & 18 )
-The latitudes are geodetic.
"GEL" employs a formula of order 3 given in reference 1 ( page 69
)
With L , L' = longitudes & p , p' = parametric latitudes , f = earth flattening , e2 = f ( 2 - f )
Tan p = (1-f) Tan l where l = geodetic latitude
H = ( L' - L )/2 ; F = ( p + p' )/2 ; G = ( p' - p )/2
S = sin2 G cos2 H + cos2 F sin2 H µ = 2 Arc Sin S1/2
we define A = ( sin2 G cos2 F )/S
+ ( sin2 F cos2 G )/( 1-S )
and
B = ( sin2 G cos2
F )/S - ( sin2 F
cos2 G )/( 1-S )
Dist / a = µ - (e2/4) ( A µ + B Sin µ ) - (e4/128) [ A2 ( 6 µ - Sin 2µ ) + 8 A B Sin µ + 2 B2 Sin 2µ ]
- (e6/1536) [ 3 A3 ( 10 µ - 3 Sin 2µ ) + 3 A2 B ( 15 Sin µ - Sin 3µ ) + 18 A B2 Sin 2µ + 4 B3 Sin 3µ ]
Data Registers: R00 = µ
R01 = A R02 = B R03 to R07: temp
Flags: /
Subroutines:
/
01 LBL "GEL" 02 DEG 03 HR 04 STO 01 05 X<> T 06 HMS- 07 HR 08 2 09 / 10 COS 11 X^2 12 STO 00 13 X<>Y 14 HR 15 1 16 P-R 17 LASTX 18 298.25722 19 1/X 20 STO 05 21 - 22 STO 06 23 / 24 R-P |
25 X<> 01 26 1 27 P-R 28 RCL 06 29 / 30 R-P 31 RDN 32 + 33 2 34 / 35 ST- Y 36 1 37 P-R 38 X^2 39 STO 02 40 STO T 41 RDN 42 X^2 43 STO 01 44 SIGN 45 P-R 46 X^2 47 ST* 01 48 RDN |
49 X^2 50 ST* 02 51 - 52 RCL 00 53 * 54 - 55 ST/ 02 56 RCL 02 57 RCL 01 58 1 59 R^ 60 STO 01 61 - 62 / 63 ST- 02 64 + 65 X<> 01 66 SQRT 67 ASIN 68 ST+ X 69 STO 04 70 ST+ X 71 SIN 72 STO 03 |
73 3 74 * 75 RCL 04 76 D-R 77 STO 00 78 10 79 * 80 - 81 RCL 01 82 * 83 RCL 04 84 3 85 * 86 SIN 87 STO 06 88 RCL 04 89 SIN 90 STO 04 91 15 92 * 93 - 94 RCL 02 95 * 96 + |
97 RCL 01 98 * 99 RCL 03 100 6 101 * 102 RCL 02 103 X^2 104 STO 07 105 * 106 - 107 3 108 * 109 RCL 01 110 * 111 RCL 06 112 4 113 * 114 RCL 02 115 * 116 RCL 07 117 * 118 - 119 2 120 RCL 05 |
121 ST- Y 122 * 123 4 124 / 125 STO 05 126 * 127 3 128 / 129 RCL 03 130 RCL 00 131 6 132 * 133 - 134 RCL 01 135 * 136 RCL 04 137 8 138 * 139 RCL 02 140 * 141 - 142 RCL 01 143 * 144 + |
145 RCL 03 146 ST+ X 147 RCL 07 148 * 149 - 150 RCL 05 151 * 152 8 153 / 154 RCL 00 155 RCL 01 156 * 157 - 158 RCL 02 159 RCL 04 160 * 161 - 162 RCL 05 163 * 164 RCL 00 165 + 166 6378.137 167 * 168 END |
(
206 bytes / SIZE 008 )
STACK | INPUTS | OUTPUTS |
T | L ( ° ' " ) | / |
Z | b ( ° ' " ) | / |
Y | L' ( ° ' " ) | / |
X | b' ( ° ' " ) | D ( km ) |
b & b' = geodetic latitudes
Example:
Calculate the great elliptic arc distance between the Sydney
Observatory ( Long = 151°12'17"8 E , Lat = 33°51'41"1
S )
and the Palomar Observatory ( Long = 116°51'50"4 W
, Lat = 33°21'22"4 N )
151.12178 ENTER^
-33.51411
ENTER^
-116.51504
ENTER^
33.21224
XEQ "GEL" >>>> D =
12138.68553 km
---Execution time = 13s---
Notes:
-If b & b' are geocentric latitudes, simply replace lines 23 & 29 ( / ) with *
-If µ is almost 180° , we have a better accuracy if µ is computed with:
S = Sin2 (µ/2) = Sin2 G Cos2 H + Cos2 F Sin2 H
C = Cos2 (µ/2) = Cos2 G Cos2 H + Sin2 F Sin2 H
Data Registers: R00 = µ
R01 = A R02 = B R03 to R07: temp
Flags: /
Subroutines:
/
01 LBL "GEL" 02 DEG 03 STO 01 04 X<> T 05 - 06 STO 02 07 CLX 08 SIGN 09 STO 04 10 P-R 11 LASTX 12 298.25722 13 1/X 14 STO 07 15 - 16 STO 05 17 * 18 R-P 19 X<> 01 20 RCL 04 21 P-R 22 RCL 05 23 * 24 R-P 25 RDN 26 X<>Y |
27 - 28 2 29 ST/ 02 30 / 31 ST+ Y 32 RCL 02 33 X<>Y 34 RCL 04 35 P-R 36 STO 03 37 RDN 38 STO 05 39 STO 06 40 X<> L 41 P-R 42 ST* 06 43 R^ 44 * 45 X^2 46 X<>Y 47 STO 00 48 R^ 49 RCL 04 50 P-R 51 ST* 05 52 ST* 00 |
53 RDN 54 ST* 03 55 * 56 X^2 57 + 58 RCL 05 59 X^2 60 RCL 06 61 X^2 62 RCL 00 63 X^2 64 + 65 STO 01 66 / 67 STO 02 68 RCL 03 69 X^2 70 R^ 71 / 72 ST- 02 73 + 74 X<> 01 75 SQRT 76 X<>Y 77 SQRT 78 R-P |
79 X<>Y 80 ST+ X 81 STO 04 82 ST+ X 83 SIN 84 STO 03 85 3 86 * 87 RCL 04 88 D-R 89 STO 00 90 10 91 * 92 - 93 RCL 01 94 * 95 RCL 04 96 3 97 * 98 SIN 99 STO 06 100 RCL 04 101 SIN 102 STO 04 103 15 104 * |
105 - 106 RCL 02 107 * 108 + 109 RCL 01 110 * 111 RCL 03 112 6 113 * 114 RCL 02 115 X^2 116 STO 05 117 * 118 - 119 3 120 * 121 RCL 01 122 * 123 RCL 06 124 4 125 * 126 RCL 02 127 * 128 RCL 05 129 * 130 - |
131 2 132 RCL 07 133 ST- Y 134 * 135 4 136 / 137 STO 07 138 * 139 3 140 / 141 RCL 03 142 RCL 00 143 6 144 * 145 - 146 RCL 01 147 * 148 RCL 04 149 8 150 * 151 RCL 02 152 * 153 - 154 RCL 01 155 * |
156 + 157 RCL 03 158 ST+ X 159 RCL 05 160 * 161 - 162 RCL 07 163 * 164 8 165 / 166 RCL 00 167 RCL 01 168 * 169 - 170 RCL 02 171 RCL 04 172 * 173 - 174 RCL 07 175 * 176 RCL 00 177 + 178 6378.137 179 * 180 END |
(
220 bytes / SIZE 008 )
STACK | INPUTS | OUTPUTS |
T | L ( deg ) | / |
Z | b ( deg ) | / |
Y | L' ( deg ) | / |
X | b' ( deg ) | D ( km ) |
Example: (
L , b ) = ( -30° , -40° ) ( L' , b' ) = ( 120° ,
50° )
-30 ENTER^
-40
ENTER^
120 ENTER^
50
XEQ "GEL" >>>> D = 17433.98161
km
---Execution time = 13.3s---
Note:
-If b & b' are geodetic latitudes, simply replace lines 17 & 23 ( * ) with /
b) With Geocentric Latitudes ( without computing parametric latitudes
)
-If we need less accurate distances, we can use the following formula:
D / ( a.µ ) ~ 1 + (f/2) ( -A + B ( Sin µ ) / µ )
+ (f2/4) [ -3 A + ( A2/4 ) ( 13 + ( Sin µ ) ( Cos µ ) / µ ) - ( B2/2 ) ( Sin µ ) ( Cos µ ) / µ + 3 B ( 1 - A ) ( Sin µ ) / µ ]
+ (f3/8) { B3 ( -7 ( Sin µ ) / µ + 10 ( Sin3 µ ) / µ ) + A2 B ( 7 ( Sin µ ) / µ - 7 ( Sin3 µ ) / µ ) + ( 1 - A ) { A ( 14 A - 9 ) + B ( ( Sin µ ) / µ ) [ - 3 B ( Cos µ ) + 4 ( 1 - A ) ] } }
Data Registers: R00 = µ
R01 = A R02 = B R03 to R07: temp
Flags: /
Subroutines:
/
01 LBL "GEL" 02 DEG 03 X<> T 04 - 05 X<> Z 06 - 07 2 08 ST/ Z 09 / 10 ST+ Z 11 1 12 STO 04 13 P-R 14 STO 03 15 RDN 16 STO 05 17 STO 06 18 X<> L 19 P-R 20 ST* 06 21 R^ 22 * 23 X^2 |
24 X<>Y 25 STO 00 26 R^ 27 RCL 04 28 P-R 29 ST* 00 30 ST* 05 31 RDN 32 ST* 03 33 * 34 X^2 35 + 36 RCL 05 37 X^2 38 RCL 00 39 X^2 40 RCL 06 41 X^2 42 + 43 STO 01 44 / 45 STO 02 46 RCL 03 |
47 X^2 48 R^ 49 / 50 ST- 02 51 + 52 X<> 01 53 SQRT 54 X<>Y 55 SQRT 56 R-P 57 X<>Y 58 ST+ X 59 D-R 60 STO 00 61 LASTX 62 RCL 04 63 P-R 64 STO 03 65 RDN 66 STO 07 67 ST* 07 68 / 69 STO 06 |
70 RCL 04 71 RCL 01 72 - 73 STO 04 74 4 75 * 76 RCL 02 77 RCL 03 78 * 79 3 80 * 81 - 82 X<>Y 83 ST/ 03 84 / 85 RCL 02 86 * 87 RCL 01 88 14 89 * 90 9 91 - 92 RCL 01 |
93 * 94 + 95 RCL 04 96 * 97 RCL 07 98 10 99 * 100 7 101 ST* 07 102 ST- 07 103 - 104 RCL 02 105 X^2 106 * 107 RCL 07 108 RCL 01 109 X^2 110 * 111 - 112 RCL 02 113 * 114 RCL 06 115 / |
116 + 117 596.51444 118 STO 05 119 / 120 RCL 03 121 13 122 + 123 RCL 01 124 * 125 4 126 / 127 3 128 ST* 04 129 - 130 RCL 01 131 * 132 + 133 RCL 04 134 RCL 06 135 / 136 RCL 02 137 RCL 03 138 * |
139 2 140 / 141 - 142 RCL 02 143 * 144 + 145 RCL 05 146 / 147 RCL 02 148 RCL 06 149 / 150 + 151 RCL 01 152 - 153 RCL 05 154 / 155 RCL 00 156 ST* Y 157 + 158 6378.137 159 * 160 END |
(
204 bytes / SIZE 008 )
STACK | INPUTS | OUTPUTS |
T | L ( deg ) | / |
Z | b ( deg ) | / |
Y | L' ( deg ) | / |
X | b' ( deg ) | D ( km ) |
Example: (
L , b ) = ( -30° , -40° ) ( L' , b' ) = ( 120° ,
50° )
-30 ENTER^
-40 ENTER^
120 ENTER^
50 XEQ "GEL" >>>> D = 17433.98161 km ---Execution time = 9.9s---
-Here are a few root-mean-square & maximal errors in centimeters.
| λ'-λ | |
1° |
45° |
90° |
120° |
150° |
160° |
170° |
175° |
179° |
rms | 0.9 |
0.9 |
0.9 |
0.9 |
1.1 |
1.2 |
1.4 |
1.6 |
1.8 |
max |
2.4 |
2.4 |
2.4 |
2.4 |
2.4 |
2.4 |
2.7 |
2.9 |
2.9 |
2°) Triaxial Ellipsoid
a) With Andoyer's Formula of order 2
-The semi-axes are:
a = 6378.172 km
b = 6378.102 km and the longitude of the equatorial major-axis = 14°92911 West
c = 6356.752314 km
-So, the mean radius of the equator and the flattening correspond to WGS84.
-The center O of the ellipsoid and 2 points M & N define a plane (
at least if they are not aligned ) that intersects the ellipsoid.
and we can compute the distance
of the arc of ellipse MN thus defined.
-A point P on the arc MN may be determined by the vectorial equality:
With OM / OM = ( x , y , z ) & ON / ON = ( x' , y' ,z' ) ( the unit vectors defined by OM & ON ) we have
OP = ( Sin W ) / ( A2 + B2 + C2 )1/2 for a point P on the ellipsoid and with µ = ( OM , OP )
A = [ x Sin ( W - µ ) + x' Sin µ
] / a
B = [ y Sin ( W - µ ) + y'
Sin µ ] / b
W = the angle ( OM , ON )
C = [ z Sin ( W - µ ) + z'
Sin µ ] / c
N P
/ /
/ /
/ / µ
O//-----------------------------M
>>> The value of µ for the axes of the great ellipse (E) is found by equating to zero the derivative of OP with respect to µ
-After some calculations, it yields: ( Sin 2µ ) / ( Cos 2µ ) = P / Q with
P = -2 [ ( x Sin W ) ( x Cos W - x' ) /
a2
+ ( y Sin W ) ( y Cos W - y' ) / b2
+ ( z Sin W ) ( z Cos W - z' ) / c2 ]
Q = [ x2 Sin2
W - ( x Cos W - x' )2 ] / a2
+ [ y2 Sin2
W - ( y Cos W - y' )2 ] / b2
+ [ z2 Sin2 W - ( z Cos W - z'
)2 ] / c2
>>> However, it's simpler & faster to compute
A2 + B2 + C2 = T Sin2 ( W - µ ) + S Sin2 µ + 2 U Sin µ Sin ( W - µ )
where S = x'2 / a2 + y'2 / b2 + z'2 / c2 , T = x2 / a2 + y2 / b2 + z2 / c2 , U = xx' / a2 + yy' / b2 + zz' / c2
and P = 2 U - 2 T Cos W , Q
= T Sin W + (
2 U Cos W - S - T Cos2 W ) / Sin
W
-Then, the distance on the great ellipse of the triaxial ellipsoid - between M & N is computed by Andoyer's formula of order 2, re-written with geocentric "latitudes":
D/a' = W + (f/2) (-W+(Cos2F)(SinW)) +(f2/4) [W/4+(SinW)(CosW)/4-(Cos2(2F))(SinW)(CosW)/2]
a' = major axis of the great ellipse , f = eccentricity
W = angular separation
2F = b1+b2 where b = geocentric "latitudes"
Flags: /
Subroutines: /
01 LBL "GEL" 02 DEG 03 HR 04 STO 14 05 RDN 06 HR 07 14.92911 08 STO 11 09 + 10 STO 13 11 RDN 12 HR 13 STO 12 14 X<>Y 15 HR 16 ST+ 11 17 6378.172 18 STO 01 19 .07 20 - 21 STO 02 22 21.349686 23 - 24 STO 03 25 RCL 11 26 RCL 12 27 XEQ 01 28 STO 05 |
29 RCL 09 30 STO 06 31 RCL 10 32 STO 07 33 RCL 13 34 RCL 14 35 XEQ 01 36 XEQ 00 37 STO 04 38 RCL 01 39 ST/ 05 40 ST/ 08 41 RCL 02 42 ST/ 06 43 ST/ 09 44 RCL 03 45 ST/ 07 46 ST/ 10 47 RCL 08 48 X^2 49 RCL 09 50 X^2 51 RCL 10 52 X^2 53 + 54 + 55 STO 13 56 RCL 05 |
57 X^2 58 RCL 06 59 X^2 60 RCL 07 61 X^2 62 + 63 + 64 STO 00 65 - 66 RCL 04 67 ACOS 68 STO 02 69 SIN 70 STO 15 71 * 72 RCL 08 73 XEQ 00 74 ST+ X 75 STO 09 76 RCL 00 77 RCL 13 78 + 79 RCL 04 80 * 81 - 82 R-P 83 X<>Y 84 STO 08 |
85 2 86 / 87 STO 05 88 XEQ 02 89 STO 06 90 RCL 05 91 90 92 + 93 XEQ 02 94 STO 07 95 RCL 02 96 D-R 97 RCL 08 98 COS 99 STO 05 100 X^2 101 ST+ X 102 RCL 04 103 RCL 15 104 ST* 05 105 * 106 ST* Y 107 - 108 - 109 4 110 / 111 RCL 06 112 ST/ 15 |
113 RCL 07 114 ST- Y 115 ST+ X 116 / 117 STO 07 118 * 119 RCL 05 120 - 121 + 122 RCL 07 123 * 124 + 125 RCL 15 126 * 127 GTO 03 128 LBL 00 129 RCL 05 130 * 131 RCL 09 132 RCL 06 133 * 134 + 135 RCL 10 136 RCL 07 137 * 138 + 139 RTN 140 LBL 01 |
141 1 142 P-R 143 X<>Y 144 RCL 03 145 X^2 146 * 147 STO 10 148 RDN 149 P-R 150 RCL 01 151 X^2 152 * 153 STO Z 154 X^2 155 X<>Y 156 RCL 02 157 X^2 158 * 159 STO 09 160 X^2 161 RCL 10 162 X^2 163 + 164 + 165 SQRT 166 ST/ 09 167 ST/ 10 168 / 169 STO 08 |
170 RTN 171 LBL 02 172 RCL 02 173 2 174 / 175 + 176 ENTER 177 SIN 178 ENTER 179 X^2 180 RCL 13 181 * 182 RCL 02 183 R^ 184 - 185 SIN 186 ST* Z 187 X^2 188 RCL 00 189 * 190 + 191 X<>Y 192 RCL 09 193 * 194 + 195 SQRT 196 RTN 197 LBL 03 198 END |
(
262 bytes / SIZE 016 )
STACK | INPUTS | OUTPUTS |
T | L ( ° ' " ) | / |
Z | b ( ° ' " ) | / |
Y | L' ( ° ' " ) | / |
X | b' ( ° ' " ) | D ( km ) |
Example:
Calculate the great elliptic arc distance between the
Sydney Observatory ( Long = 151°12'17"8 E , Lat = 33°51'41"1
S )
and the Palomar Observatory ( Long = 116°51'50"4 W
, Lat = 33°21'22"4 N )
151.12178 ENTER^
-33.51411 ENTER^
-116.51504 ENTER^
33.21224 XEQ "GEL" >>>> D = 12138.65875 km ---Execution time = 16s---
b) With a Formula of Order 3
-We can calculate D more directly:
m = [ y2 (a2/b2 - 1)/2 + z2 (a2/c2 - 1)/2 ] / ( Sin2 W )
With n = [ y'2 (a2/b2 - 1)/2 + z'2 (a2/c2 - 1)/2 ] / ( Sin2 W )
p = 2 [ y.y' (a2/b2 - 1)/2 + z.z' (a2/c2 - 1)/2 ] / ( Sin2 W )
R/a = 1 / SQRT [ 1 + m Sin2 (W-µ) + n Sin2 µ + p Sin µ Sin (W-µ) ] = 1 / SQRT ( 1 + q ) where q is a small number
-After some calculations, it yields:
1 + q = ( 1 + m Sin2 W ) [ 1 + e Sin2 µ + g Sin µ Cos µ ] = ( 1 + m Sin2 W ) ( 1 + e/2 ) [ 1 + E Cos 2.µ + F Sin 2.µ ] = ( 1 + m Sin2 W ) ( 1 + e/2 ) [ 1 + G Sin ( 2.µ + D ) ]
= ( 1 + m Sin2 W ) ( 1 + e/2 ) ( 1 + h )
-The formula of order 3 to compute the arc length = §0W [ R2 + ( dR/dµ )2 ] 1/2 dµ is
[ R2 + ( dR/dµ )2 ] 1/2 ~ a ( 1 + m Sin2 W ) -1/2 (1 + e/2 )-1/2 [ 1 - h/2 + (3/8) h2 - (5/16) h3 + (1/8) h'2 - (5/16) h h'2 ] where h' = dh/dµ
D / a = ( 1 + m Sin2 W )-1/2 ( 1 + e/2 )-1/2 { W + ( G / 4 ) [ - Cos D + Cos ( 2.µ + D ) ] + ( G2 / 32 ) [ 14 W - ( Sin D ) ( Cos D ) + Sin ( 2.W + D ) Cos ( 2.W + D ) ]
+ ( G3 / 32 ) [ -5 Cos D + 5 Cos ( 2.W + D ) - 5 Cos3 D + 5 Cos3 ( 2.W + D ) ] }
Data Registers: R00 to R15: temp
Flags: /
Subroutines: /
01 LBL "GEL" 02 DEG 03 HR 04 STO 14 05 RDN 06 HR 07 14.92911 08 STO 11 09 + 10 STO 13 11 RDN 12 HR 13 STO 12 14 X<>Y 15 HR 16 ST+ 11 17 6378.172 18 STO 01 19 .07 20 - 21 STO 02 22 21.349686 23 - 24 STO 03 25 RCL 11 26 RCL 12 27 XEQ 01 28 STO 05 29 RCL 09 30 STO 06 31 RCL 10 32 STO 07 |
33 RCL 13 34 RCL 14 35 XEQ 01 36 RCL 05 37 * 38 RCL 09 39 RCL 06 40 * 41 STO 05 42 + 43 RCL 10 44 RCL 07 45 * 46 STO 08 47 + 48 STO 00 49 RCL 09 50 X^2 51 RCL 01 52 RCL 02 53 / 54 X^2 55 1 56 - 57 ST* 05 58 STO 09 59 * 60 RCL 01 61 RCL 03 62 / 63 X^2 64 1 |
65 - 66 STO 04 67 ST* 08 68 RCL 10 69 X^2 70 * 71 + 72 STO 10 73 RCL 06 74 X^2 75 RCL 09 76 * 77 RCL 07 78 X^2 79 RCL 04 80 * 81 + 82 STO 06 83 RCL 05 84 RCL 08 85 + 86 ST+ X 87 RCL 00 88 ACOS 89 STO 08 90 SIN 91 STO 07 92 X^2 93 ST/ 06 94 ST/ 10 95 / 96 STO 09 |
97 RCL 00 98 * 99 RCL 10 100 - 101 RCL 08 102 ST+ X 103 STO 05 104 COS 105 RCL 06 106 * 107 - 108 RCL 09 109 RCL 00 110 ST+ X 111 RCL 06 112 * 113 - 114 RCL 06 115 RCL 07 116 ST* Z 117 X^2 118 * 119 1 120 + 121 STO 03 122 ST+ X 123 ST/ Z 124 / 125 1 126 RCL Z 127 - 128 ST* 03 |
129 ST/ Z 130 / 131 R-P 132 STO 10 133 X<>Y 134 STO 02 135 1 136 P-R 137 STO 00 138 X<>Y 139 STO 06 140 RCL 02 141 RCL 05 142 + 143 1 144 P-R 145 STO 07 146 ST* Y 147 X^2 148 LASTX 149 ST* Y 150 + 151 RCL 00 152 ST* 06 153 ST- 07 154 X^2 155 LASTX 156 ST* Y 157 + 158 - 159 RCL 10 |
160 STO T 161 * 162 5 163 * 164 + 165 RCL 06 166 - 167 RCL 08 168 D-R 169 STO 00 170 14 171 * 172 + 173 * 174 8 175 / 176 RCL 07 177 + 178 * 179 4 180 / 181 RCL 00 182 + 183 GTO 02 184 LBL 01 185 1 186 P-R 187 X<>Y 188 RCL 03 189 X^2 190 * |
191 STO 10 192 RDN 193 P-R 194 RCL 01 195 X^2 196 * 197 STO Z 198 X^2 199 X<>Y 200 RCL 02 201 X^2 202 * 203 STO 09 204 X^2 205 RCL 10 206 X^2 207 + 208 + 209 SQRT 210 ST/ 09 211 ST/ 10 212 / 213 STO 08 214 RTN 215 LBL 02 216 RCL 03 217 SQRT 218 / 219 RCL 01 220 * 221 END |
(
282 bytes / SIZE 016 )
STACK | INPUTS | OUTPUTS |
T | L ( ° ' " ) | / |
Z | b ( ° ' " ) | / |
Y | L' ( ° ' " ) | / |
X | b' ( ° ' " ) | D ( km ) |
Example:
Calculate the great elliptic arc distance between the
Sydney Observatory ( Long = 151°12'17"8 E , Lat = 33°51'41"1
S )
and the Palomar Observatory ( Long = 116°51'50"4 W
, Lat = 33°21'22"4 N )
151.12178 ENTER^
-33.51411 ENTER^
-116.51504 ENTER^
33.21224 XEQ "GEL" >>>> D = 12138.65875 km ---Execution time = 15s---
Note:
-We can simplify a little this program if the coordinates are geocentric.
-In the following version, the geocentric longitudes are measured from the equatorial major-axis
Data Registers: R00 to R08: temp
Flags: /
Subroutines: /
01 LBL "GEL" 02 DEG 03 HR 04 STO 02 05 RDN 06 HR 07 STO 06 08 X<> Z 09 HR 10 X<>Y 11 HR 12 1 13 STO 04 14 P-R 15 X<>Y 16 STO 07 17 RDN 18 P-R 19 STO 05 20 X<>Y 21 X<> 06 22 RCL 02 23 RCL 04 24 P-R 25 X<>Y |
26 STO 01 27 RDN 28 P-R 29 RCL 05 30 * 31 X<>Y 32 STO 02 33 RCL 06 34 * 35 STO 05 36 + 37 RCL 01 38 RCL 07 39 * 40 STO 08 41 + 42 STO 00 43 RCL 02 44 X^2 45 2195 E-8 46 ST* 05 47 STO 02 48 * 49 6750546 E-9 50 STO 03 |
51 ST* 08 52 RCL 01 53 X^2 54 * 55 + 56 STO 01 57 RCL 06 58 X^2 59 RCL 02 60 * 61 RCL 07 62 X^2 63 RCL 03 64 * 65 + 66 STO 06 67 RCL 05 68 RCL 08 69 + 70 ST+ X 71 RCL 00 72 ACOS 73 STO 08 74 SIN 75 STO 07 |
76 X^2 77 ST/ 01 78 ST/ 06 79 / 80 STO 02 81 RCL 00 82 * 83 RCL 01 84 - 85 RCL 08 86 ST+ X 87 STO 05 88 COS 89 RCL 06 90 * 91 - 92 RCL 02 93 RCL 00 94 ST+ X 95 RCL 06 96 * 97 - 98 RCL 06 99 RCL 07 100 ST* Z |
101 X^2 102 * 103 RCL 04 104 + 105 STO 03 106 ST+ X 107 ST/ Z 108 / 109 RCL 04 110 RCL Z 111 - 112 ST* 03 113 ST/ Z 114 / 115 R-P 116 STO 01 117 X<>Y 118 STO 02 119 RCL 04 120 P-R 121 STO 00 122 X<>Y 123 STO 06 124 RCL 02 |
125 RCL 05 126 + 127 RCL 04 128 P-R 129 STO 07 130 ST* Y 131 X^2 132 LASTX 133 ST* Y 134 + 135 RCL 00 136 ST* 06 137 ST- 07 138 X^2 139 LASTX 140 ST* Y 141 + 142 - 143 RCL 01 144 STO T 145 * 146 5 147 * 148 + |
149 RCL 06 150 - 151 RCL 08 152 D-R 153 STO 00 154 14 155 * 156 + 157 * 158 8 159 / 160 RCL 07 161 + 162 * 163 4 164 / 165 RCL 00 166 + 167 RCL 03 168 SQRT 169 / 170 6378.172 171 * 172 END |
(
224 bytes / SIZE 009 )
STACK | INPUTS | OUTPUTS |
T | L ( ° ' " ) | / |
Z | b ( ° ' " ) | / |
Y | L' ( ° ' " ) | / |
X | b' ( ° ' " ) | D ( km ) |
Example:
L = 166°08'02"2 L' = -101°56'06"0
b = -33°41'00"9 b' = 33°10'47"0
166.08022 ENTER^
-33.41009 ENTER^
-101.56060 ENTER^
33.10470 XEQ "GEL" >>>> D = 12138.70371 km ---Execution time = 12s---
Notes:
-With free42 , replace line 45 by 2195022 E-11 and line 49 by 675054581 E-11
-The maximum error ( except with ~ antipodal points ) is only 1 mm (!)
c) Andoyer's Formula of order 3
-Though it seems impossible to find a formula of order 3 without calculating parametric latitudes in general case, I've found such a formula if the longitudes are the same.
-So, to compute the great elliptic arc distance with the geocentric coordinates, here is the formula employed by the following program ( lines 134... ):
D/a = W + (f/2) ( -W + B.SinW ) + (f 2 /4) [ W/4 + ( 1-2B2 ) ( SinW ) ( CosW )/4 ] + (f 3/8) [ W/4 + ( 1 - 2B2 + 30.B.CosW ) ( SinW ) ( CosW )/4 - (5/2) B3 Sin (3W) ]
a = major axis of the great ellipse , f = eccentricity
2F = b1+b2 where b1 & b2 = geocentric "latitudes" B = Cos(2F)
W = | b1 - b2 |
Data Registers: R00 to R14: temp
Flags: /
Subroutines: /
01 LBL "GEL" 02 DEG 03 HR 04 STO 14 05 RDN 06 HR 07 STO 13 08 RDN 09 HR 10 STO 12 11 6378.172 12 STO 01 13 .07 14 - 15 STO 02 16 21.349686 17 - 18 STO 03 19 R^ 20 HR 21 14.92911 22 ST+ 13 23 + 24 STO 11 25 RCL 12 26 XEQ 01 27 STO 07 28 RCL 09 29 STO 06 30 RCL 08 31 STO 05 32 RCL 13 |
33 RCL 14 34 XEQ 01 35 RCL 07 36 - 37 X^2 38 RCL 09 39 RCL 06 40 - 41 X^2 42 RCL 08 43 RCL 05 44 - 45 X^2 46 + 47 + 48 SQRT 49 2 50 / 51 STO 00 52 RCL 01 53 ST/ 05 54 ST/ 08 55 RCL 02 56 ST/ 06 57 ST/ 09 58 RCL 03 59 ST/ 07 60 ST/ 10 61 RCL 08 62 X^2 63 RCL 09 64 X^2 |
65 RCL 10 66 X^2 67 + 68 + 69 STO 13 70 RCL 05 71 ST* 08 72 X^2 73 RCL 06 74 ST* 09 75 X^2 76 RCL 07 77 ST* 10 78 X^2 79 + 80 + 81 ST+ 13 82 - 83 RCL 00 84 ASIN 85 ST+ X 86 STO 02 87 1 88 P-R 89 STO 04 90 RDN 91 STO 11 92 * 93 RCL 08 94 RCL 09 95 RCL 10 96 + |
97 + 98 ST+ X 99 STO 09 100 RCL 13 101 ST+ 09 102 RCL 04 103 * 104 - 105 R-P 106 X<>Y 107 STO 08 108 2 109 / 110 X<>Y 111 SQRT 112 P-R 113 X^2 114 CHS 115 X<>Y 116 X^2 117 RCL 00 118 X^2 119 RCL 09 120 * 121 ST+ Z 122 + 123 STO 05 124 SQRT 125 STO 06 126 X<>Y 127 X<=0? 128 X<> 05 |
129 SQRT 130 ST- Y 131 ST+ X 132 / 133 STO 05 134 3 135 RCL 11 136 ST+ X 137 X^2 138 - 139 10 140 * 141 RCL 08 142 COS 143 STO 09 144 X^2 145 ST* Y 146 ST+ X 147 1 148 - 149 STO 13 150 RCL 09 151 ST* Z 152 RCL 04 153 * 154 30 155 * 156 - 157 RCL 04 158 * 159 + 160 RCL 11 |
161 ST* 09 162 ST* 13 163 * 164 RCL 02 165 D-R 166 STO 00 167 STO Z 168 - 169 RCL 05 170 * 171 RCL 04 172 RCL 13 173 * 174 - 175 + 176 RCL 05 177 * 178 4 179 / 180 RCL 09 181 - 182 + 183 RCL 05 184 * 185 + 186 RCL 06 187 / 188 GTO 02 189 LBL 01 190 1 191 P-R 192 X<>Y |
193 RCL 03 194 X^2 195 * 196 STO 10 197 RDN 198 P-R 199 RCL 01 200 X^2 201 * 202 STO 08 203 X^2 204 X<>Y 205 RCL 02 206 X^2 207 * 208 STO 09 209 X^2 210 RCL 10 211 X^2 212 + 213 + 214 SQRT 215 ST/ 08 216 ST/ 09 217 ST/ 10 218 RCL 10 219 RTN 220 LBL 02 221 RCL 11 222 * 223 END |
(
290 bytes / SIZE 015 )
STACK | INPUTS | OUTPUTS |
T | L ( ° ' " ) | / |
Z | b ( ° ' " ) | / |
Y | L' ( ° ' " ) | / |
X | b' ( ° ' " ) | D ( km ) |
Example:
Calculate the great elliptic arc distance between the
Sydney Observatory ( Long = 151°12'17"8 E , Lat = 33°51'41"1
S )
and the Palomar Observatory ( Long = 116°51'50"4 W
, Lat = 33°21'22"4 N )
151.12178 ENTER^
-33.51411 ENTER^
-116.51504 ENTER^
33.21224 XEQ "GEL" >>>> D = 12138.65875 km ---Execution time = 15s---
d) Numerical Integration
-The arc length: §0W
[ R2 + ( dR/dµ )2 ] 1/2
dµ is calculated by Newton-Cotes formula
of order 9
Data Registers: R00 to R22: temp
Flags: /
Subroutines: /
-Line 48 is a three-byte GTO 03
01 LBL "GEL" 02 DEG 03 HR 04 STO 04 05 RDN 06 HR 07 14.929 08 STO 01 09 + 10 STO 03 11 RDN 12 HR 13 STO 02 14 X<>Y 15 HR 16 ST+ 01 17 6378.172 18 STO 05 19 .07 20 - 21 STO 06 22 21.349686 23 - 24 STO 07 25 RCL 01 26 RCL 02 27 XEQ 02 28 STO 08 29 RCL 12 30 STO 09 31 RCL 13 32 STO 10 33 RCL 03 34 RCL 04 35 XEQ 02 |
36 RCL 08 37 * 38 RCL 09 39 RCL 12 40 * 41 + 42 RCL 10 43 RCL 13 44 * 45 + 46 ACOS 47 STO 14 48 GTO 03 49 LBL 01 50 STO 01 51 1 52 P-R 53 STO 03 54 X<>Y 55 STO 04 56 RCL 14 57 RCL 01 58 - 59 1 60 P-R 61 STO 01 62 X<>Y 63 STO 02 64 RCL 08 65 * 66 RCL 04 67 RCL 11 68 * 69 + 70 RCL 05 |
71 / 72 STO 16 73 X^2 74 RCL 02 75 RCL 09 76 * 77 RCL 04 78 RCL 12 79 * 80 + 81 RCL 06 82 / 83 STO 17 84 X^2 85 + 86 RCL 02 87 RCL 10 88 * 89 RCL 04 90 RCL 13 91 * 92 + 93 RCL 07 94 / 95 STO 18 96 X^2 97 + 98 STO 15 99 RCL 03 100 RCL 11 101 * 102 RCL 01 103 RCL 08 104 * 105 - |
106 RCL 16 107 * 108 RCL 05 109 / 110 RCL 03 111 RCL 12 112 * 113 RCL 01 114 RCL 09 115 * 116 - 117 RCL 17 118 * 119 RCL 06 120 / 121 + 122 RCL 03 123 RCL 13 124 * 125 RCL 01 126 RCL 10 127 * 128 - 129 RCL 18 130 * 131 RCL 07 132 / 133 + 134 RCL 15 135 / 136 X^2 137 1 138 + 139 RCL 15 140 / |
141 SQRT 142 RTN 143 LBL 02 144 1 145 P-R 146 X<>Y 147 RCL 07 148 X^2 149 * 150 STO 13 151 X^2 152 X<> Z 153 X<>Y 154 P-R 155 RCL 05 156 X^2 157 * 158 STO 11 159 X^2 160 X<>Y 161 RCL 06 162 X^2 163 * 164 STO 12 165 X^2 166 + 167 + 168 SQRT 169 ST/ 11 170 ST/ 12 171 ST/ 13 172 RCL 11 173 RTN 174 LBL 03 175 CLX |
176 XEQ 01 177 STO 19 178 RCL 14 179 XEQ 01 180 ST+ 19 181 RCL 14 182 9 183 / 184 STO 00 185 XEQ 01 186 STO 20 187 RCL 00 188 8 189 * 190 XEQ 01 191 ST+ 20 192 RCL 00 193 ST+ X 194 XEQ 01 195 STO 21 196 RCL 00 197 7 198 * 199 XEQ 01 200 ST+ 21 201 RCL 00 202 3 203 * 204 XEQ 01 205 STO 22 206 RCL 00 207 6 208 * 209 XEQ 01 210 ST+ 22 |
211 RCL 00 212 4 213 * 214 XEQ 01 215 X<> 00 216 5 217 * 218 XEQ 01 219 RCL 00 220 + 221 5778 222 * 223 RCL 22 224 19344 225 * 226 + 227 RCL 21 228 1080 229 * 230 + 231 RCL 20 232 15741 233 * 234 + 235 RCL 19 236 2857 237 * 238 + 239 RCL 14 240 ST* Y 241 SIN 242 * 243 D-R 244 89600 245 / 246 END |
(
349 bytes / SIZE 023 )
STACK | INPUTS | OUTPUTS |
T | L ( ° ' " ) | / |
Z | b ( ° ' " ) | / |
Y | L' ( ° ' " ) | / |
X | b' ( ° ' " ) | D ( km ) |
Example:
Calculate the great elliptic arc distance between the
Sydney Observatory ( Long = 151°12'17"8 E , Lat = 33°51'41"1
S )
and the Palomar Observatory ( Long = 116°51'50"4 W
, Lat = 33°21'22"4 N )
151.12178 ENTER^
-33.51411 ENTER^
-116.51504 ENTER^
33.21224 XEQ "GEL" >>>> D = 12138.65876 km ---Execution time = 56s---
Notes:
W is computed from Cos W = x x' + y y' + z z' so the precision may be small if W is very small
-With the formula: W = 2 Arc Sin ( || u - v || / 2 ) the accuracy is better with small W-values.
-But the precision will be even better if we use
|| u x v || = Sin W & u.v = Cos W
-Gauss-Legendre 10-point formula is employed.
-The interval [0,W] is divided in n subintervals
Data Registers: • R00 = n ( Register R00 is to be initialized before executing "GEL" )
R05 = a R06 = b R07 = c R01 to R34: temp
Flags: /
Subroutines: /
-Line 76 is a three-byte GTO 03
01 LBL "GEL" 02 DEG 03 HR 04 STO 04 05 RDN 06 HR 07 14.929 08 STO 01 09 + 10 STO 03 11 RDN 12 HR 13 STO 02 14 X<>Y 15 HR 16 ST+ 01 17 6378.172 18 STO 05 19 .07 20 - 21 STO 06 22 21.349686 23 - 24 STO 07 25 RCL 01 26 RCL 02 27 XEQ 02 28 STO 08 29 RCL 12 30 STO 09 31 RCL 13 32 STO 10 33 RCL 03 34 RCL 04 35 XEQ 02 36 RCL 10 37 * 38 RCL 08 |
39 RCL 13 40 * 41 - 42 X^2 43 RCL 09 44 RCL 13 45 * 46 RCL 10 47 RCL 12 48 * 49 - 50 X^2 51 + 52 RCL 08 53 RCL 12 54 * 55 RCL 09 56 RCL 11 57 * 58 - 59 X^2 60 + 61 SQRT 62 RCL 08 63 RCL 11 64 * 65 RCL 09 66 RCL 12 67 * 68 + 69 RCL 10 70 RCL 13 71 * 72 + 73 R-P 74 X<>Y 75 STO 14 76 GTO 03 |
77 LBL 01 78 STO 01 79 1 80 P-R 81 STO 03 82 X<>Y 83 STO 04 84 RCL 14 85 RCL 01 86 - 87 1 88 P-R 89 STO 01 90 X<>Y 91 STO 02 92 RCL 08 93 * 94 RCL 04 95 RCL 11 96 * 97 + 98 RCL 05 99 / 100 STO 16 101 X^2 102 RCL 02 103 RCL 09 104 * 105 RCL 04 106 RCL 12 107 * 108 + 109 RCL 06 110 / 111 STO 17 112 X^2 113 + 114 RCL 02 |
115 RCL 10 116 * 117 RCL 04 118 RCL 13 119 * 120 + 121 RCL 07 122 / 123 STO 18 124 X^2 125 + 126 STO 15 127 RCL 03 128 RCL 11 129 * 130 RCL 01 131 RCL 08 132 * 133 - 134 RCL 16 135 * 136 RCL 05 137 / 138 RCL 03 139 RCL 12 140 * 141 RCL 01 142 RCL 09 143 * 144 - 145 RCL 17 146 * 147 RCL 06 148 / 149 + 150 RCL 03 151 RCL 13 152 * |
153 RCL 01 154 RCL 10 155 * 156 - 157 RCL 18 158 * 159 RCL 07 160 / 161 + 162 RCL 15 163 / 164 X^2 165 1 166 + 167 RCL 15 168 / 169 SQRT 170 RTN 171 LBL 02 172 1 173 P-R 174 X<>Y 175 RCL 07 176 X^2 177 * 178 STO 13 179 X^2 180 X<> Z 181 X<>Y 182 P-R 183 RCL 05 184 X^2 185 * 186 STO 11 187 X^2 188 X<>Y 189 RCL 06 190 X^2 |
191 * 192 STO 12 193 X^2 194 + 195 + 196 SQRT 197 ST/ 11 198 ST/ 12 199 ST/ 13 200 RCL 11 201 RTN 202 LBL 03 203 .2955242247 204 STO 21 205 .148874339 206 STO 22 207 .2692667193 208 STO 23 209 .4333953941 210 STO 24 211 .2190863625 212 STO 25 213 .6794095683 214 STO 26 215 .1494513492 216 STO 27 217 .8650633667 218 STO 28 219 6.667134431 E-2 220 STO 29 221 .9739065285 222 STO 30 223 CLX 224 STO 19 225 STO 20 226 RCL 14 227 RCL 00 228 STO 31 |
229 ST+ X 230 / 231 STO 32 232 LBL 04 233 ST+ 20 234 30.02 235 STO 33 236 LBL 05 237 RCL 20 238 STO 34 239 RCL 32 240 RCL IND 33 241 * 242 ST+ 34 243 - 244 XEQ 01 245 X<> 34 246 XEQ 01 247 RCL 34 248 + 249 DSE 33 250 RCL IND 33 251 * 252 ST+ 19 253 DSE 33 254 GTO 05 255 RCL 32 256 ST+ 20 257 DSE 31 258 GTO 04 259 RCL 19 260 * 261 RCL 14 262 SIN 263 * 264 D-R 265 END |
(
436 bytes / SIZE 035 )
STACK | INPUTS | OUTPUTS |
T | L ( ° ' " ) | / |
Z | b ( ° ' " ) | / |
Y | L' ( ° ' " ) | / |
X | b' ( ° ' " ) | D ( km ) |
Example:
Calculate the great elliptic arc distance between the
Sydney Observatory ( Long = 151°12'17"8 E , Lat = 33°51'41"1
S )
and the Palomar Observatory ( Long = 116°51'50"4 W
, Lat = 33°21'22"4 N )
• With n = 1 STO 00
151.12178 ENTER^
-33.51411 ENTER^
-116.51504 ENTER^
33.21224 XEQ "GEL" >>>> D = 12138.65876 km ---Execution time = 63s---
-Same result with n = 2
Notes:
-For the Earth, n = 1 is enough for a good precision.
-If the ellipsoid has larger flattenings, test this program with different n-values to obtain the best accuracy.
( modify lines 07 & 17 to 24 to store the different axis-values )
Reference:
[1] Paul D. Thomas - "MATHEMATICAL MODELS FOR NAVIGATION SYSTEMS" - US Naval Oceanographic Office.