1 |
// Upgraded to Delphi 2009: Sebastian Zierer
|
2 |
|
3 |
(* ***** BEGIN LICENSE BLOCK *****
|
4 |
* Version: MPL 1.1
|
5 |
*
|
6 |
* The contents of this file are subject to the Mozilla Public License Version
|
7 |
* 1.1 (the "License"); you may not use this file except in compliance with
|
8 |
* the License. You may obtain a copy of the License at
|
9 |
* http://www.mozilla.org/MPL/
|
10 |
*
|
11 |
* Software distributed under the License is distributed on an "AS IS" basis,
|
12 |
* WITHOUT WARRANTY OF ANY KIND, either express or implied. See the License
|
13 |
* for the specific language governing rights and limitations under the
|
14 |
* License.
|
15 |
*
|
16 |
* The Original Code is TurboPower SysTools
|
17 |
*
|
18 |
* The Initial Developer of the Original Code is
|
19 |
* TurboPower Software
|
20 |
*
|
21 |
* Portions created by the Initial Developer are Copyright (C) 1996-2002
|
22 |
* the Initial Developer. All Rights Reserved.
|
23 |
*
|
24 |
* Contributor(s):
|
25 |
*
|
26 |
* ***** END LICENSE BLOCK ***** *)
|
27 |
|
28 |
{*********************************************************}
|
29 |
{* SysTools: StNeptun.pas 4.04 *}
|
30 |
{*********************************************************}
|
31 |
{* SysTools: Astronomical Routines (for Neptune) *}
|
32 |
{*********************************************************}
|
33 |
|
34 |
{$I StDefine.inc}
|
35 |
|
36 |
unit StNeptun;
|
37 |
|
38 |
interface
|
39 |
|
40 |
uses
|
41 |
StAstroP;
|
42 |
|
43 |
function ComputeNeptune(JD : Double) : TStEclipticalCord;
|
44 |
|
45 |
|
46 |
implementation
|
47 |
|
48 |
function GetLongitude(Tau, Tau2, Tau3, Tau4, Tau5 : Double) : Double;
|
49 |
var
|
50 |
L0, L1,
|
51 |
L2, L3,
|
52 |
L4, L5 : Double;
|
53 |
begin
|
54 |
L0 := 5.31188633050 * cos(0.00000000000 + 0.00000000000 * Tau)
|
55 |
+ 0.01798475509 * cos(2.90101273050 + 38.13303563800 * Tau)
|
56 |
+ 0.01019727662 * cos(0.48580923660 + 1.48447270830 * Tau)
|
57 |
+ 0.00124531845 * cos(4.83008090680 + 36.64856292900 * Tau)
|
58 |
+ 0.00042064450 * cos(5.41054991610 + 2.96894541660 * Tau)
|
59 |
+ 0.00037714589 * cos(6.09221834950 + 35.16409022100 * Tau)
|
60 |
+ 0.00033784734 * cos(1.24488865580 + 76.26607127600 * Tau)
|
61 |
+ 0.00016482741 * cos(0.00007729261 + 491.55792946000 * Tau)
|
62 |
+ 0.00009198582 * cos(4.93747059920 + 39.61750834600 * Tau)
|
63 |
+ 0.00008994249 * cos(0.27462142569 + 175.16605980000 * Tau)
|
64 |
+ 0.00004216235 * cos(1.98711914360 + 73.29712585900 * Tau)
|
65 |
+ 0.00003364818 * cos(1.03590121820 + 33.67961751300 * Tau)
|
66 |
+ 0.00002284800 * cos(4.20606932560 + 4.45341812490 * Tau)
|
67 |
+ 0.00001433512 * cos(2.78340432710 + 74.78159856700 * Tau)
|
68 |
+ 0.00000900240 * cos(2.07606702420 + 109.94568879000 * Tau)
|
69 |
+ 0.00000744996 * cos(3.19032530140 + 71.81265315100 * Tau)
|
70 |
+ 0.00000506206 * cos(5.74785370250 + 114.39910691000 * Tau)
|
71 |
+ 0.00000399552 * cos(0.34972342569 + 1021.24889460000 * Tau)
|
72 |
+ 0.00000345195 * cos(3.46186210170 + 41.10198105400 * Tau)
|
73 |
+ 0.00000340323 * cos(3.30369900420 + 77.75054398400 * Tau)
|
74 |
+ 0.00000323004 * cos(2.24815188610 + 32.19514480500 * Tau)
|
75 |
+ 0.00000306338 * cos(0.49684039897 + 0.52126486180 * Tau)
|
76 |
+ 0.00000287322 * cos(4.50523446020 + 0.04818410980 * Tau)
|
77 |
+ 0.00000282170 * cos(2.24565579690 + 146.59425172000 * Tau)
|
78 |
+ 0.00000266605 * cos(4.88932609480 + 0.96320784650 * Tau)
|
79 |
+ 0.00000251941 * cos(5.78166597290 + 388.46515524000 * Tau)
|
80 |
+ 0.00000244722 * cos(1.24693337930 + 9.56122755560 * Tau)
|
81 |
+ 0.00000232887 * cos(2.50459795020 + 137.03302416000 * Tau)
|
82 |
+ 0.00000227079 * cos(1.79713054540 + 453.42489382000 * Tau)
|
83 |
+ 0.00000170404 * cos(3.32390630650 + 108.46121608000 * Tau)
|
84 |
+ 0.00000151401 * cos(2.19153094280 + 33.94024994400 * Tau)
|
85 |
+ 0.00000150180 * cos(2.99706110410 + 5.93789083320 * Tau)
|
86 |
+ 0.00000148295 * cos(0.85948986145 + 111.43016150000 * Tau)
|
87 |
+ 0.00000118672 * cos(3.67706204310 + 2.44768055480 * Tau)
|
88 |
+ 0.00000109300 * cos(2.41599378050 + 183.24281465000 * Tau)
|
89 |
+ 0.00000103305 * cos(0.04078966679 + 0.26063243090 * Tau)
|
90 |
+ 0.00000103054 * cos(4.40441222000 + 70.32818044200 * Tau)
|
91 |
+ 0.00000101821 * cos(5.70539236950 + 0.11187458460 * Tau);
|
92 |
|
93 |
L1 := 38.37687716700 * cos(0.00000000000 + 0.00000000000 * Tau)
|
94 |
+ 0.00016604187 * cos(4.86319129560 + 1.48447270830 * Tau)
|
95 |
+ 0.00015807148 * cos(2.27923488530 + 38.13303563800 * Tau)
|
96 |
+ 0.00003334701 * cos(3.68199676020 + 76.26607127600 * Tau)
|
97 |
+ 0.00001305840 * cos(3.67320813490 + 2.96894541660 * Tau)
|
98 |
+ 0.00000604832 * cos(1.50477747550 + 35.16409022100 * Tau)
|
99 |
+ 0.00000178623 * cos(3.45318524150 + 39.61750834600 * Tau)
|
100 |
+ 0.00000106537 * cos(2.45126138330 + 4.45341812490 * Tau)
|
101 |
+ 0.00000105747 * cos(2.75479326550 + 33.67961751300 * Tau)
|
102 |
+ 0.00000072684 * cos(5.48724732700 + 36.64856292900 * Tau)
|
103 |
+ 0.00000057355 * cos(1.85767603380 + 114.39910691000 * Tau)
|
104 |
+ 0.00000057069 * cos(5.21649804970 + 0.52126486180 * Tau)
|
105 |
+ 0.00000035368 * cos(4.51676827540 + 74.78159856700 * Tau)
|
106 |
+ 0.00000032216 * cos(5.90411489680 + 77.75054398400 * Tau)
|
107 |
+ 0.00000029871 * cos(3.67043294110 + 388.46515524000 * Tau)
|
108 |
+ 0.00000028866 * cos(5.16877529160 + 9.56122755560 * Tau)
|
109 |
+ 0.00000028742 * cos(5.16732589020 + 2.44768055480 * Tau)
|
110 |
+ 0.00000025507 * cos(5.24526281930 + 168.05251280000 * Tau);
|
111 |
|
112 |
L2 := 0.00053892649 * cos(0.00000000000 + 0.00000000000 * Tau)
|
113 |
+ 0.00000295693 * cos(1.85520292250 + 1.48447270830 * Tau)
|
114 |
+ 0.00000281251 * cos(1.19084538890 + 38.13303563800 * Tau)
|
115 |
+ 0.00000270190 * cos(5.72143228150 + 76.26607127600 * Tau)
|
116 |
+ 0.00000023023 * cos(1.21035596450 + 2.96894541660 * Tau)
|
117 |
+ 0.00000009057 * cos(4.42544992040 + 35.16409022100 * Tau)
|
118 |
+ 0.00000007333 * cos(0.54033306830 + 2.44768055480 * Tau);
|
119 |
|
120 |
L3 := 0.00000031254 * cos(0.00000000000 + 0.00000000000 * Tau)
|
121 |
+ 0.00000014541 * cos(1.35337075860 + 76.26607127600 * Tau)
|
122 |
+ 0.00000012461 * cos(6.04431418810 + 1.48447270830 * Tau)
|
123 |
+ 0.00000011547 * cos(6.11257808370 + 38.13303563800 * Tau);
|
124 |
|
125 |
L4 := 0.00000113998 * cos(3.14159265360 + 0.00000000000 * Tau);
|
126 |
|
127 |
L5 := 0.00000000000;
|
128 |
Result := (L0 + L1*Tau + L2*Tau2 + L3*Tau3 + L4*Tau4 + L5*Tau5);
|
129 |
end;
|
130 |
|
131 |
{---------------------------------------------------------------------------}
|
132 |
|
133 |
function GetLatitude(Tau, Tau2, Tau3, Tau4, Tau5 : Double) : Double;
|
134 |
var
|
135 |
B0, B1,
|
136 |
B2, B3,
|
137 |
B4, B5 : Double;
|
138 |
begin
|
139 |
B0 := 0.03088622933 * cos(1.44104372630 + 38.13303563800 * Tau)
|
140 |
+ 0.00027780087 * cos(5.91271882840 + 76.26607127600 * Tau)
|
141 |
+ 0.00027623609 * cos(0.00000000000 + 0.00000000000 * Tau)
|
142 |
+ 0.00015448133 * cos(3.50877080890 + 39.61750834600 * Tau)
|
143 |
+ 0.00015355490 * cos(2.52123799480 + 36.64856292900 * Tau)
|
144 |
+ 0.00001999919 * cos(1.50998669500 + 74.78159856700 * Tau)
|
145 |
+ 0.00001967540 * cos(4.37778195770 + 1.48447270830 * Tau)
|
146 |
+ 0.00001015137 * cos(3.21561035880 + 35.16409022100 * Tau)
|
147 |
+ 0.00000605767 * cos(2.80246601410 + 73.29712585900 * Tau)
|
148 |
+ 0.00000594878 * cos(2.12892708110 + 41.10198105400 * Tau)
|
149 |
+ 0.00000588805 * cos(3.18655882500 + 2.96894541660 * Tau)
|
150 |
+ 0.00000401830 * cos(4.16883287240 + 114.39910691000 * Tau)
|
151 |
+ 0.00000279964 * cos(1.68165309700 + 77.75054398400 * Tau)
|
152 |
+ 0.00000261647 * cos(3.76722704750 + 213.29909544000 * Tau)
|
153 |
+ 0.00000254333 * cos(3.27120499440 + 453.42489382000 * Tau)
|
154 |
+ 0.00000205590 * cos(4.25652348860 + 529.69096509000 * Tau)
|
155 |
+ 0.00000140455 * cos(3.52969556380 + 137.03302416000 * Tau);
|
156 |
|
157 |
B1 := 0.00227279214 * cos(3.80793089870 + 38.13303563800 * Tau)
|
158 |
+ 0.00001803120 * cos(1.97576485380 + 76.26607127600 * Tau)
|
159 |
+ 0.00001433300 * cos(3.14159265360 + 0.00000000000 * Tau)
|
160 |
+ 0.00001385733 * cos(4.82555548020 + 36.64856292900 * Tau)
|
161 |
+ 0.00001073298 * cos(6.08054240710 + 39.61750834600 * Tau)
|
162 |
+ 0.00000147903 * cos(3.85766231350 + 74.78159856700 * Tau)
|
163 |
+ 0.00000136448 * cos(0.47764957338 + 1.48447270830 * Tau)
|
164 |
+ 0.00000070285 * cos(6.18782052140 + 35.16409022100 * Tau)
|
165 |
+ 0.00000051899 * cos(5.05221791890 + 73.29712585900 * Tau)
|
166 |
+ 0.00000042568 * cos(0.30721737205 + 114.39910691000 * Tau)
|
167 |
+ 0.00000037273 * cos(4.89476629250 + 41.10198105400 * Tau)
|
168 |
+ 0.00000037104 * cos(5.75999349110 + 2.96894541660 * Tau)
|
169 |
+ 0.00000026399 * cos(5.21566335940 + 213.29909544000 * Tau);
|
170 |
|
171 |
B2 := 0.00009690766 * cos(5.57123750290 + 38.13303563800 * Tau)
|
172 |
+ 0.00000078815 * cos(3.62705474220 + 76.26607127600 * Tau)
|
173 |
+ 0.00000071523 * cos(0.45476688580 + 36.64856292900 * Tau)
|
174 |
+ 0.00000058646 * cos(3.14159265360 + 0.00000000000 * Tau)
|
175 |
+ 0.00000029915 * cos(1.60671721860 + 39.61750834600 * Tau)
|
176 |
+ 0.00000006472 * cos(5.60736756580 + 74.78159856700 * Tau);
|
177 |
|
178 |
B3 := 0.00000273423 * cos(1.01688979070 + 38.13303563800 * Tau)
|
179 |
+ 0.00000002393 * cos(0.00000000000 + 0.00000000000 * Tau)
|
180 |
+ 0.00000002274 * cos(2.36805657130 + 36.64856292900 * Tau)
|
181 |
+ 0.00000002029 * cos(5.33364321340 + 76.26607127600 * Tau);
|
182 |
|
183 |
B4 := 0.00000005728 * cos(2.66872693320 + 38.13303563800 * Tau);
|
184 |
|
185 |
B5 := 0.00000000000;
|
186 |
Result := (B0 + B1*Tau + B2*Tau2 + B3*Tau3 + B4*Tau4 + B5*Tau5);
|
187 |
end;
|
188 |
|
189 |
{---------------------------------------------------------------------------}
|
190 |
|
191 |
function GetRadiusVector(Tau, Tau2, Tau3, Tau4, Tau5 : Double) : Double;
|
192 |
var
|
193 |
R0, R1,
|
194 |
R2, R3,
|
195 |
R4, R5 : Double;
|
196 |
begin
|
197 |
R0 := 30.07013206100 * cos(0.00000000000 + 0.00000000000 * Tau)
|
198 |
+ 0.27062259490 * cos(1.32999458930 + 38.13303563800 * Tau)
|
199 |
+ 0.01691764281 * cos(3.25186138900 + 36.64856292900 * Tau)
|
200 |
+ 0.00807830737 * cos(5.18592836170 + 1.48447270830 * Tau)
|
201 |
+ 0.00537760613 * cos(4.52113902850 + 35.16409022100 * Tau)
|
202 |
+ 0.00495725642 * cos(1.57105654810 + 491.55792946000 * Tau)
|
203 |
+ 0.00274571970 * cos(1.84552256800 + 175.16605980000 * Tau)
|
204 |
+ 0.00135134095 * cos(3.37220607380 + 39.61750834600 * Tau)
|
205 |
+ 0.00121801825 * cos(5.79754444300 + 76.26607127600 * Tau)
|
206 |
+ 0.00100895397 * cos(0.37702748681 + 73.29712585900 * Tau)
|
207 |
+ 0.00069791722 * cos(3.79617226930 + 2.96894541660 * Tau)
|
208 |
+ 0.00046687838 * cos(5.74937810090 + 33.67961751300 * Tau)
|
209 |
+ 0.00024593778 * cos(0.50801728204 + 109.94568879000 * Tau)
|
210 |
+ 0.00016939242 * cos(1.59422166990 + 71.81265315100 * Tau)
|
211 |
+ 0.00014229686 * cos(1.07786112900 + 74.78159856700 * Tau)
|
212 |
+ 0.00012011825 * cos(1.92062131640 + 1021.24889460000 * Tau)
|
213 |
+ 0.00008394731 * cos(0.67816895547 + 146.59425172000 * Tau)
|
214 |
+ 0.00007571800 * cos(1.07149263430 + 388.46515524000 * Tau)
|
215 |
+ 0.00005720852 * cos(2.59059512270 + 4.45341812490 * Tau)
|
216 |
+ 0.00004839672 * cos(1.90685991070 + 41.10198105400 * Tau)
|
217 |
+ 0.00004483492 * cos(2.90573457530 + 529.69096509000 * Tau)
|
218 |
+ 0.00004420804 * cos(1.74993796500 + 108.46121608000 * Tau)
|
219 |
+ 0.00004353790 * cos(0.67985662370 + 32.19514480500 * Tau)
|
220 |
+ 0.00004270202 * cos(3.41343865820 + 453.42489382000 * Tau)
|
221 |
+ 0.00003380930 * cos(0.84810683275 + 183.24281465000 * Tau)
|
222 |
+ 0.00002881063 * cos(1.98600105120 + 137.03302416000 * Tau)
|
223 |
+ 0.00002878942 * cos(3.67415901850 + 350.33211960000 * Tau)
|
224 |
+ 0.00002635535 * cos(3.09755943420 + 213.29909544000 * Tau)
|
225 |
+ 0.00002530149 * cos(5.79839567010 + 490.07345675000 * Tau)
|
226 |
+ 0.00002523132 * cos(0.48630800015 + 493.04240217000 * Tau)
|
227 |
+ 0.00002306293 * cos(2.80962935720 + 70.32818044200 * Tau)
|
228 |
+ 0.00002087303 * cos(0.61858378281 + 33.94024994400 * Tau);
|
229 |
|
230 |
R1 := 0.00236338502 * cos(0.70498011235 + 38.13303563800 * Tau)
|
231 |
+ 0.00013220279 * cos(3.32015499890 + 1.48447270830 * Tau)
|
232 |
+ 0.00008621863 * cos(6.21628951630 + 35.16409022100 * Tau)
|
233 |
+ 0.00002701740 * cos(1.88140666780 + 39.61750834600 * Tau)
|
234 |
+ 0.00002154735 * cos(2.09431198090 + 2.96894541660 * Tau)
|
235 |
+ 0.00002153150 * cos(5.16873840980 + 76.26607127600 * Tau)
|
236 |
+ 0.00001603165 * cos(0.00000000000 + 0.00000000000 * Tau)
|
237 |
+ 0.00001463924 * cos(1.18417031050 + 33.67961751300 * Tau)
|
238 |
+ 0.00001135773 * cos(3.91891199650 + 36.64856292900 * Tau)
|
239 |
+ 0.00000897650 * cos(5.24122933530 + 388.46515524000 * Tau)
|
240 |
+ 0.00000789908 * cos(0.53315484580 + 168.05251280000 * Tau)
|
241 |
+ 0.00000760030 * cos(0.02051033644 + 182.27960680000 * Tau)
|
242 |
+ 0.00000607183 * cos(1.07706500350 + 1021.24889460000 * Tau)
|
243 |
+ 0.00000571622 * cos(3.40060785430 + 484.44438246000 * Tau)
|
244 |
+ 0.00000560790 * cos(2.88685815670 + 498.67147646000 * Tau);
|
245 |
|
246 |
R2 := 0.00004247412 * cos(5.89910679120 + 38.13303563800 * Tau)
|
247 |
+ 0.00000217570 * cos(0.34581829080 + 1.48447270830 * Tau)
|
248 |
+ 0.00000163025 * cos(2.23872947130 + 168.05251280000 * Tau)
|
249 |
+ 0.00000156285 * cos(4.59414467340 + 182.27960680000 * Tau)
|
250 |
+ 0.00000127141 * cos(2.84786298080 + 35.16409022100 * Tau);
|
251 |
|
252 |
R3 := 0.00000166297 * cos(4.55243893490 + 38.13303563800 * Tau);
|
253 |
|
254 |
R4 := 0.00000000000;
|
255 |
|
256 |
R5 := 0.00000000000;
|
257 |
Result := (R0 + R1*Tau + R2*Tau2 + R3*Tau3 + R4*Tau4 + R5*Tau5);
|
258 |
end;
|
259 |
|
260 |
{---------------------------------------------------------------------------}
|
261 |
|
262 |
function ComputeNeptune(JD : Double) : TStEclipticalCord;
|
263 |
var
|
264 |
Tau,
|
265 |
Tau2,
|
266 |
Tau3,
|
267 |
Tau4,
|
268 |
Tau5 : Double;
|
269 |
begin
|
270 |
Tau := (JD - 2451545.0) / 365250.0;
|
271 |
Tau2 := sqr(Tau);
|
272 |
Tau3 := Tau * Tau2;
|
273 |
Tau4 := sqr(Tau2);
|
274 |
Tau5 := Tau2 * Tau3;
|
275 |
|
276 |
Result.L0 := GetLongitude(Tau, Tau2, Tau3, Tau4, Tau5);
|
277 |
Result.B0 := GetLatitude(Tau, Tau2, Tau3, Tau4, Tau5);
|
278 |
Result.R0 := GetRadiusVector(Tau, Tau2, Tau3, Tau4, Tau5);
|
279 |
end;
|
280 |
|
281 |
|
282 |
end.
|