http://www.geocities.com/suntheorem/index.html astronomy url
Index to HP orbit programs
======
EQ1 Find m, Mean anomaly from K, T, A
----
EQ2 Find EE, Eccentric Anomaly from E and M
----
EQ3 Find Ra, DC, RO from Elements, IE, K, T
----
E4 Find direction Cosines ABC,123
----
E5A Set up for time 1=35 days
----
E5B Set up for time 1=40 days
----
E5C Set up for time 1=45 days
----
E6 Prepare for R01 RO3 Problem
----
E7 Find EA, QA, T1A, TH1A, TH3A from TT1, TT3, K
----
E8 Find XYZ,123 from RA, DC,1,3, RO1A, RO3A
----
E9 Find RO1A, RO2A, RO3A from DET, N1A, N3A
----
E10 Insert real elements
----
E11 Find N1A, N3A from N10, N30, V1, V3
----
E12 Find WA, OA, IA from P,Q,XYZ, IE
----
E13 Find F, M, Y for YB,XYZ31A, R1A, R3A
----
E14 Find YB
====
E15 Find P,Q XYZ from X31A Y31A Z31A X33A Y33A Z33A
====
E16 Find W O I from T1A, TT2, TT1
====
E17 Vary RO to improve Elements
====
E18 Error Report
====
E19 Find true RA DC RO,123
====
E20 Find RO, RA, DC
=====
To start with RA DC 123 XS YS ZS 123 IE K TT1 TT2 TT3
E21
<>
results in the real elements
======
HP Programs
-/ is square root
----
EQ1 Find M, Mean anomaly from K, T, Q
<<"EQ1" CLEAR Q 1 E - / 'A'
STO K T * A 1.5 ^ /
'M' STO >>
------
EQ2 Find EE, Eccentric Anomaly from E and M
<<"EQ2" RAD CLEAR { 'EE-E*SIN(EE)-M' }
{ EE } { 0 } ROOT >>
------
EQ3 Find Ra, DC, RO from Elements, IE, K, T
<< "EQ3" CLEAR RAD
RECT EE COS E - A *
1 E SQ - \v/ A * EE
SIN * ->V2 DEG CYLIN
V-> 'TH' STO 'R' STO
TH W + 'U' STO
CYLIN R U ->V2 RECT
V-> 'Y' STO 'X1' STO
CYLIN Y I ->V2 RECT
V-> 'Z2' STO 'Y1'
STO X1 Y1 ->V2 CYLIN
V-> O + ->V2 RECT V->
'Y2' STO 'X3' STO
Y2 Z2 ->V2 CYLIN V->
IE + ->V2 RECT V->
'Z3' STO 'Y3' STO
X3 XS + 'S1' STO Y3
YS + 'S2' STO Z3 ZS
+ 'S3' STO RECT S1
S2 S3 ->V3 SPHERE V->
NEG 90 + 'DC' STO
'RA' STO 'R0' STO
R0 "R0" ->TAG RA
"RA" ->TAG DC "DC"
->TAG RECT >>
Standard Elements
Q .4255
E .2
W 105
O -67
I 72
TT1 35
TT2 40
TT3 45
Results
RA1 142.094574218 AU
DC1 2.0658878565
RA2 146.007690781
DC2 -3.3966901959
RA3 150.362559348
DC3 -8.7211448805
XS1 -.893557086283
YS1 .441098630334
ZS1 .191255546456
XS2 -.931108260968
YS2 .371439715781
ZS2 .161052202235
XS3 -.962082097969
YS3 .299156786197
ZS3 .129711113762
IE 23.441028 Deg.
K .01720209895 Gauss Gravity Constant
===========
E4 Find direction Cosines ABC,123
<< "E4" CLEAR DEG
SPHERE 1 RA1 90 DC1
- ->V3 RECT V-> 'C1'
STO 'B1' STO 'A1'
STO SPHERE 1 RA2 90
DC2 - ->V3 RECT V->
'C2' STO 'B2' STO
'A2' STO SPHERE 1
RA3 90 DC3 - ->V3
RECT V-> 'C3' STO
'B3' STO 'A3' STO
A1 "A1" ->TAG B1
"B1" ->TAG C1 "C1"
->TAG A2 "A2" ->TAG
B2 "B2" ->TAG C2
"C2" ->V3 A3 "A3"
->TAG B3 "B3" ->TAG
C3 "C3" ->TAG >>
====
E5A Set up for time 1=35 days
<< "E5A" CLEAR XS1
'XS' STO YS1 'YS'
STO ZS1 'ZS' STO 35
'T' STO >>
====
E5B Set up for time 1=40 days
<<"E5B" CLEAR XS2
'XS' STO YS2 'YS'
STO ZS2 'ZS' STO 40
'T' STO >>
===
E5C Set up for time 1=45 days
<< "E5C" CLEAR XS3
'XS' STO YS3 'YS'
STO ZS3 'ZS' STO 45
'T' STO >>
====
E6 Prepare for R01 RO3 Problem
<< "E6" CLEAR A1 A2
A3 B1 B2 B3 C1 C2
C3 { 3 3 } ->ARRY
'DD' STO DD 2 XS1
PUT 5 YS1 PUT 8 ZS1
PUT 'D1' STO DD 2
XS2 PUT 5 YS2 PUT 8
ZS2 PUT 'D2' STO DD
2 XS3 PUT 5 YS3 PUT
8 ZS3 PUT 'D3' STO
DD DET 'DDA' STO D1
DET 'D1A' STO D2
DET 'D2A' STO D3
DET 'D3A' STO TT3
TT2 - K * 'TU1' STO
TT3 TT1 - K * 'TU2'
STO TT2 TT1 - K *
'TU3' STO TU1 TU2 /
'N10' STO TU3 TU2 /
'N30' STO 1 N10 +
TU3 * TU1 * 6 /
'V1' STO 1 N30 +
TU3 * TU1 * 6 /
'V3' STO XS2 SQ YS2
SQ ZS2 SQ + + \v/
'RS2' STO A2 XS2 *
B2 YS2 * C2 ZS2 * +
+ -2 * 'RC' STO D1A
N10 * D2A - D3A N30
* + DDA NEG / 'K0'
STO D1A V1 * D3A V3
* + DDA / 'L0' STO >>
----
E7 Find EA, QA, T1A, TH1A, TH3A
<< "E7" CLEAR TT3 TT1
- K * 'TU2' STO
RECT RAD R1A R3A *
F 2 * SIN * TU2 /
YB * SQ 'PA' STO PA
R1A / 1 - 'Q1' STO
PA R3A / 1 - 'Q3'
STO Q1 F 2 * COS *
Q3 - F 2 * SIN /
'Q2' STO Q1 Q2 ->V2
CYLIN V-> 'TH1A' STO
'EA' STO TH1A
"TH1A" ->TAG EA "EA"
->TAG PA 1 EA + /
'QA' STO QA "QA"
->TAG QA 1 EA - /
'A' STO RECT R1A
TH1A COS * A / EA +
'S1' STO R1A TH1A
SIN * A / 1 EA SQ -
\v/ / 'S2' STO S1 S2
->V2 RAD CYLIN V->
'EE' STO EE EE SIN
EA * - A 1.5 ^ * K
/ 'T1A' STO DROP
T1A "T1A" ->TAG DEG
RECT F 2 * TH1A +
'TH3A' STO TH3A
"TH3A" ->TAG >>
====
E8 Find XYZ,123 from RA, DC,1,3, RO1A, RO3A
<< "E8" CLEAR DEG
SPHERE R01A RA1 DC1
NEG 90 + ->V3 RECT
V-> ZS1 - 'Z31A' STO
YS1 - 'Y31A' STO
XS1 - 'X31A' STO
SPHERE R03A RA3 DC3
NEG 90 + ->V3 RECT
V-> ZS3 - 'Z33A' STO
YS3 - 'Y33A' STO
XS3 - 'X33A' STO
SPHERE R02A RA2 DC2
NEG 90 + ->V3 RECT
V-> ZS2 - 'Z32A' STO
YS2 - 'Y32A' STO
XS2 - 'X32A' STO
"XYZ3,123A" RECT
X31A Y31A Z31A ->V3
ABS 'R1A' STO X32A
Y32A Z32A ->V3 ABS
'R2A' STO X33A Y33A
Z33A ->V3 ABS 'R3A'
STO >>
====
E9 Find RO1A, RO2A, RO3A from DET, N1A, N3A
<< "E9" CLEAR A1 N1A
* A2 NEG A3 N3A *
B1 N1A * B2 NEG B3
N3A * C1 N1A * C2
NEG C3 N3A * { 3 3
} ->ARRY 'S1' STO
N1A XS1 * XS2 - N3A
XS3 * + N1A YS1 *
YS2 - N3A YS3 * +
N1A ZS1 * ZS2 - N3A
ZS3 * + { 3 1 }
->ARRY 'S2' STO S1
INV S2 * 'S3' STO
S3 1 GET S3 2 GET
S3 3 GET 'R03A' STO
'R02A' STO 'R01A'
STO R01A "R01A"
->TAG R02A "R02A"
->TAG R03A "R03A"
->TAG
RO3A 'RO3B' STO
RO1A 'RO1B' STO
>>
====
E10 Insert real elements
<< "E10" CLEAR .4255
'Q' STO .2 'E' STO
105 'W' STO -67 'O'
STO 72 'I' STO
"REAL EL" >>
===
E11 Find N1A, N3A from N10, N30, V1, V3
<< "E11" CLEAR TU1 TU2
/ 'N10' STO TU3 TU2
/ 'N30' STO N10 1 +
TU1 * TU3 * 6 /
'V1' STO N30 1 +
TU1 * TU3 * 6 /
'V3' STO N10 V1 R2A
3 ^ / + 'N1A' STO
N1A "N1A" ->TAG N30
V3 R2A 3 ^ / +
'N3A' STO N3A "N3A"
->TAG >>
====
E12 Find WA, OA, IA from P,Q,XYZ, IE
<< "E12" CLEAR DEG
PZ IE COS * PY IE
SIN * - 'S1' STO QZ
IE COS * QY IE SIN
* - 'S2' S2 S1
RECT ->V2 CYLIN V->
'WA' STO 'S6' STO
WA "WA" ->TAG RECT
PX WA COS * QX WA
SIN * - 'S3' STO PY
WA COS * QY WA SIN
* - IE COS / 'S4'
STO S3 S4 ->V2 CYLIN
V-> 'OA' STO DROP OA
"OA" ->TAG PX WA SIN
* QX WA COS * + NEG
OA SIN / 'S5' STO
S5 S6 RECT ->V2
CYLIN V-> 'IA' STO
DROP IA "IA" ->TAG
RECT >>
====
E13 Find F, M, Y for YB,XYZ31A, R1A, R3A
<< "E13" CLEAR RAD
X31A X33A * Y31A
Y33A * + Z31A Z33A
* + R1A / R3A /
ACOS 2 / 'F' STO F
"F" ->TAG K TT3 TT1
- * SQ R1A R3A * \v/
'S1' STO S1 2 * F
COS * 3 ^ / 'M' STO
"M" ->TAG R1A R3A +
4 / S1 / F COS / .5
- 'Y' STO Y "Y"
->TAG >>
===
E14 Find YB
<< "E14" RAD CLEAR {
<< M YB SQ / Y
- \v/ ASIN 2 * 'X'
STO X 2 * X 2 * SIN
- M * X SIN 3 ^ /
YB SQ + YB 3 ^ -
\ >> } { YB } {
1 } ROOT >>
=====
E15 Find P,Q XYZ from X31A Y31A Z31A X33A Y33A Z33A
<< "E15" CLEAR RAD
X31A Y31A Z31A ->V3
ABS 'R1A' STO X33A
Y33A Z33A ->V3 ABS
'R3A' STO TH3A TH1A
- 2 / 'F' STO X31A
R3A * TH3A SIN *
X33A R1A * TH1A SIN
* - R1A R3A * F 2 *
SIN * 'S1' STO S1 /
'PX' STO PX "PX"
->V3 X33A R1A *
TH1A COS * X31A R3A
* TH3A COS * - S1 /
'QX' STO QX "QX"
->V3 Y31A R3A *
TH3A SIN * Y33A R1A
* TH1A SIN * - S1 /
'PY' STO PY "PY"
->V3 Y33A R1A *
TH1A COS * Y31A R3A
* TH3A COS * - S1 /
'QY' STO QY "QY"
->V3 Z31A R3A *
TH3A SIN * Z33A R1A
* TH1A SIN * - S1 /
'PZ' STO PZ "PZ"
->V3 Z33A R1A *
TH1A COS * Z31A R3A
* TH3A COS * - S1 /
'QZ' STO QZ "QZ"
->V3 >>
=====
E16 Find W O I from T1A, TT2, TT1
<< "E16" CLEAR T1A
TT2 + TT1 - 'T' STO
EA 'E' STO QA 'Q'
STO XS2 'XS' STO
YS2 'YS' STO ZS2
'ZS' STO WA 'W' STO
OA 'O' STO IA 'I'
STO W "W" ->TAG O
"O" ->TAG I "I" ->TAG >>
=====
E17 Vary RO to improve Elements
<< "E17" CLEAR .001
'B' STO R01B 'R01A'
STO R03B B + 'R03A'
STO E20 'DCZ3' STO
'RAZ3' STO R01B B +
'R01A' STO R03B
'R03A' STO E20
'DCZ2' STO 'RAZ2'
STO R01B 'R01A' STO
R03B 'R03A' STO E20
'DCZ1' STO 'RAZ1'
STO E "E" ->TAG T
"T" ->TAG Q "Q" ->TAG
I "I" ->TAG W "W"
->TAG O "O" ->TAG E18
3000 1 BEEP >>
====
E18 Error Report
<< "E18" CLEAR RAZ2
RAZ1 - RAZ3 RAZ1 -
DCZ2 DCZ1 - DCZ3
DCZ1 - { 2 2 }
->ARRY 'S1' STO RA2
RAZ1 - DC2 DCZ1 - {
2 1 } ->ARRY 'S2'
STO S1 INV S2 *
'S3' STO S3 OBJ->
DROP 'Y' STO 'X'
STO Y X R01B B X *
+ 'R01B' STO R01B
R03B B Y * + 'R03B'
STO R01B "R01B"
->TAG R03B "R03B"
->TAG X Y >>
=====
E19 Find true RA DC RO,123
<< "E19" CLEAR E10
E5A EQ1 EQ2 EQ3
'DC1' STO 'RA1' STO
'RO1' STO E5B EQ1
EQ2 EQ3 'DC2' STO
'RA2' STO 'RO2' STO
E5C EQ1 EQ2 EQ3
'DC3' STO 'RA3' STO
'RO3' STO >>
====
E20 Find RO, RA, DC
<< "E20" CLEAR E8
E13 E14 E7 E15 E12
E16 EQ1 EQ2 EQ3 >>
===
This solves the RO1-RO3 problem
Needs Q E I W O IE
E21
<< E10 E19 E4 E6 E17 E17 E17 E17 E17 E17 -> >>
==
E23 Find R2A, RO2A from KO, LO, XYZS
<< "E23" CLEAR { '-R2A
^2+RS2^2+RC*(K0-L0/
R2A^3)+(K0-L0/R2A^3
)^2' } { R2A } { .5
} ROOT CLEAR R2A
"R2A" ->TAG K0 L0
R2A 3 ^ / - 'R02A'
STO R02A "R02A"
->TAG >>
===
E30 Find (Velocity) DXYZ3 From Element
<< "E30" E10 DEG Q 1
E + * 'P' STO E5B
EQ1 EQ2 EQ3 CLEAR P
\v/ K * R SQ / 'DTH'
STO K E * TH SIN *
P \v/ / 'DRT' STO DRT
U COS * R U SIN *
DTH * - 'DX1' STO
DRT U SIN * R U COS
* DTH * + 'DY' STO
DY I COS * 'DY1'
STO DY I SIN *
'DZ2' STO DX1 DY1
->V2 CYLIN V-> O +
->V2 RECT V-> 'DY2'
STO 'DX3' STO RECT
DY2 DZ2 ->V2 CYLIN
V-> IE + ->V2 RECT V->
'DZ3' STO 'DY3' STO
DX3 "DX3" ->TAG DY3
"DY3" ->TAG DZ3
"DZ3" ->TAG >>
====
E31 Find Elements from Position and Velocity
<< "E31" CLEAR DEG
RECT DX3 DY3 DZ3
->V3 ABS 'VEA' STO
X3 Y3 Z3 ->V3 ABS
'R' STO 2 R / VEA K
/ SQ - INV 'A' STO
X3 Y3 Z3 ->V3 'S1'
STO DX3 DY3 DZ3 ->V3
'S2' STO S1 S2 DOT
'S3' STO S3 S1 ABS
/ S2 ABS / ACOS
'S4' STO VEA S4
CYLIN ->V2 RECT V-> R
/ 'DTHA' STO 'DRTA'
STO DTHA R SQ * K /
SQ 'PA' STO PA R /
1 - DRTA PA \v/ * K /
RECT ->V2 CYLIN V->
'THA' STO 'EA' STO
PA 1 EA + / 'QA'
STO R THA COS * A /
EA + R THA SIN * A
/ 1 EA SQ - \v/ /
RECT ->V2 RAD CYLIN
V-> 'EEA' STO CLEAR
EEA EEA SIN EA * -
A 1.5 ^ * K / 'TA'
STO DEG RECT CLEAR
R THA COS * 'S1'
STO R THA SIN *
'S2' STO DRTA THA
COS * R THA SIN *
DTHA * - 'S3' STO
DRTA THA SIN * R
THA COS * DTHA * +
'S4' STO S1 S2 S3
S4 { 2 2 } ->ARRY
INV 'S5' STO S5 X3
DX3 { 2 1 } ->ARRY *
OBJ-> DROP 'QX' STO
'PX' STO S5 Y3 DY3
{ 2 1 } DROP 'QY' STO
'PY' STO S5 Z3 DZ3
{ 2 1 } ->ARRY *
OBJ-> DROP 'QZ' STO
'PZ' STO E12 EA
"EA" ->TAG QA "QA"
->TAG TA "TA" ->TAG >>