1 |
torben |
2671 |
// 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: StVenus.pas 4.04 *}
|
30 |
|
|
{*********************************************************}
|
31 |
|
|
{* SysTools: Astronomical Routines (for Venus) *}
|
32 |
|
|
{*********************************************************}
|
33 |
|
|
|
34 |
|
|
{$I StDefine.inc}
|
35 |
|
|
|
36 |
|
|
unit StVenus;
|
37 |
|
|
|
38 |
|
|
interface
|
39 |
|
|
|
40 |
|
|
uses
|
41 |
|
|
StAstroP;
|
42 |
|
|
|
43 |
|
|
function ComputeVenus(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 := 3.17614666770 * cos(0.00000000000 + 0.00000000000 * Tau)
|
55 |
|
|
+ 0.01353968419 * cos(5.59313319620 + 10213.28554600000 * Tau)
|
56 |
|
|
+ 0.00089891645 * cos(5.30650048470 + 20426.57109200000 * Tau)
|
57 |
|
|
+ 0.00005477201 * cos(4.41630652530 + 7860.41939240000 * Tau)
|
58 |
|
|
+ 0.00003455732 * cos(2.69964470780 + 11790.62908900000 * Tau)
|
59 |
|
|
+ 0.00002372061 * cos(2.99377539570 + 3930.20969620000 * Tau)
|
60 |
|
|
+ 0.00001664069 * cos(4.25018935030 + 1577.34354240000 * Tau)
|
61 |
|
|
+ 0.00001438322 * cos(4.15745043960 + 9683.59458110000 * Tau)
|
62 |
|
|
+ 0.00001317108 * cos(5.18668219090 + 26.29831980000 * Tau)
|
63 |
|
|
+ 0.00001200521 * cos(6.15357115320 + 30639.85663900000 * Tau)
|
64 |
|
|
+ 0.00000769314 * cos(0.81629615911 + 9437.76293490000 * Tau)
|
65 |
|
|
+ 0.00000761380 * cos(1.95014702120 + 529.69096509000 * Tau)
|
66 |
|
|
+ 0.00000707676 * cos(1.06466707210 + 775.52261132000 * Tau)
|
67 |
|
|
+ 0.00000584836 * cos(3.99839884760 + 191.44826611000 * Tau)
|
68 |
|
|
+ 0.00000499915 * cos(4.12340210070 + 15720.83878500000 * Tau)
|
69 |
|
|
+ 0.00000429498 * cos(3.58642859750 + 19367.18916200000 * Tau)
|
70 |
|
|
+ 0.00000326967 * cos(5.67736583710 + 5507.55323870000 * Tau)
|
71 |
|
|
+ 0.00000326221 * cos(4.59056473100 + 10404.73381200000 * Tau)
|
72 |
|
|
+ 0.00000231937 * cos(3.16251057070 + 9153.90361600000 * Tau)
|
73 |
|
|
+ 0.00000179695 * cos(4.65337915580 + 1109.37855210000 * Tau)
|
74 |
|
|
+ 0.00000155464 * cos(5.57043888950 + 19651.04848100000 * Tau)
|
75 |
|
|
+ 0.00000128263 * cos(4.22604493740 + 20.77539549200 * Tau)
|
76 |
|
|
+ 0.00000127907 * cos(0.96209822685 + 5661.33204920000 * Tau)
|
77 |
|
|
+ 0.00000105547 * cos(1.53721191250 + 801.82093112000 * Tau);
|
78 |
|
|
|
79 |
|
|
L1 := 10213.52943100000 * cos(0.00000000000 + 0.00000000000 * Tau)
|
80 |
|
|
+ 0.00095707712 * cos(2.46424448980 + 10213.28554600000 * Tau)
|
81 |
|
|
+ 0.00014444977 * cos(0.51624564679 + 20426.57109200000 * Tau)
|
82 |
|
|
+ 0.00000213374 * cos(1.79547929370 + 30639.85663900000 * Tau)
|
83 |
|
|
+ 0.00000173904 * cos(2.65535879440 + 26.29831980000 * Tau)
|
84 |
|
|
+ 0.00000151669 * cos(6.10635282370 + 1577.34354240000 * Tau)
|
85 |
|
|
+ 0.00000082233 * cos(5.70234133730 + 191.44826611000 * Tau)
|
86 |
|
|
+ 0.00000069734 * cos(2.68136034980 + 9437.76293490000 * Tau)
|
87 |
|
|
+ 0.00000052408 * cos(3.60013087660 + 775.52261132000 * Tau)
|
88 |
|
|
+ 0.00000038318 * cos(1.03379038030 + 529.69096509000 * Tau)
|
89 |
|
|
+ 0.00000029633 * cos(1.25056322350 + 5507.55323870000 * Tau)
|
90 |
|
|
+ 0.00000025056 * cos(6.10664792860 + 10404.73381200000 * Tau);
|
91 |
|
|
|
92 |
|
|
L2 :=
|
93 |
|
|
+ 0.00054127076 * cos(0.00000000000 + 0.00000000000 * Tau)
|
94 |
|
|
+ 0.00003891460 * cos(0.34514360047 + 10213.28554600000 * Tau)
|
95 |
|
|
+ 0.00001337880 * cos(2.02011286080 + 20426.57109200000 * Tau)
|
96 |
|
|
+ 0.00000023836 * cos(2.04592119010 + 26.29831980000 * Tau)
|
97 |
|
|
+ 0.00000019331 * cos(3.53527371460 + 30639.85663900000 * Tau)
|
98 |
|
|
+ 0.00000009984 * cos(3.97130221100 + 775.52261132000 * Tau)
|
99 |
|
|
+ 0.00000007046 * cos(1.51962593410 + 1577.34354240000 * Tau)
|
100 |
|
|
+ 0.00000006014 * cos(0.99926757893 + 191.44826611000 * Tau);
|
101 |
|
|
|
102 |
|
|
L3 :=
|
103 |
|
|
+ 0.00000135742 * cos(4.80389020990 + 10213.28554600000 * Tau)
|
104 |
|
|
+ 0.00000077846 * cos(3.66876371590 + 20426.57109200000 * Tau)
|
105 |
|
|
+ 0.00000026023 * cos(0.00000000000 + 0.00000000000 * Tau);
|
106 |
|
|
|
107 |
|
|
L4 :=
|
108 |
|
|
+ 0.00000114016 * cos(3.14159265360 + 0.00000000000 * Tau)
|
109 |
|
|
+ 0.00000003209 * cos(5.20514170160 + 20426.57109200000 * Tau)
|
110 |
|
|
+ 0.00000001714 * cos(2.51099591710 + 10213.28554600000 * Tau);
|
111 |
|
|
|
112 |
|
|
L5 := 0.00000000874 * cos(3.14159265360 + 0.00000000000 * Tau);
|
113 |
|
|
Result := (L0 + L1*Tau + L2*Tau2 + L3*Tau3 + L4*Tau4 + L5*Tau5);
|
114 |
|
|
end;
|
115 |
|
|
|
116 |
|
|
{-------------------------------------------------------------------------}
|
117 |
|
|
|
118 |
|
|
function GetLatitude(Tau, Tau2, Tau3, Tau4, Tau5 : Double) : Double;
|
119 |
|
|
var
|
120 |
|
|
B0, B1,
|
121 |
|
|
B2, B3,
|
122 |
|
|
B4, B5 : Double;
|
123 |
|
|
begin
|
124 |
|
|
B0 := 0.05923638472 * cos(0.26702775813 + 10213.28554600000 * Tau)
|
125 |
|
|
+ 0.00040107978 * cos(1.14737178110 + 20426.57109200000 * Tau)
|
126 |
|
|
+ 0.00032814918 * cos(3.14159265360 + 0.00000000000 * Tau)
|
127 |
|
|
+ 0.00001011392 * cos(1.08946123020 + 30639.85663900000 * Tau)
|
128 |
|
|
+ 0.00000149458 * cos(6.25390296070 + 18073.70493900000 * Tau)
|
129 |
|
|
+ 0.00000137788 * cos(0.86020146523 + 1577.34354240000 * Tau)
|
130 |
|
|
+ 0.00000129973 * cos(3.67152483650 + 9437.76293490000 * Tau)
|
131 |
|
|
+ 0.00000119507 * cos(3.70468812800 + 2352.86615380000 * Tau)
|
132 |
|
|
+ 0.00000107971 * cos(4.53903677650 + 22003.91463500000 * Tau);
|
133 |
|
|
|
134 |
|
|
B1 := 0.00513347602 * cos(1.80364310800 + 10213.28554600000 * Tau)
|
135 |
|
|
+ 0.00004380100 * cos(3.38615711590 + 20426.57109200000 * Tau)
|
136 |
|
|
+ 0.00000199162 * cos(0.00000000000 + 0.00000000000 * Tau)
|
137 |
|
|
+ 0.00000196586 * cos(2.53001197490 + 30639.85663900000 * Tau);
|
138 |
|
|
|
139 |
|
|
B2 := 0.00022377665 * cos(3.38509143880 + 10213.28554600000 * Tau)
|
140 |
|
|
+ 0.00000281739 * cos(0.00000000000 + 0.00000000000 * Tau)
|
141 |
|
|
+ 0.00000173164 * cos(5.25563766920 + 20426.57109200000 * Tau)
|
142 |
|
|
+ 0.00000026945 * cos(3.87040891570 + 30639.85663900000 * Tau);
|
143 |
|
|
|
144 |
|
|
B3 := 0.00000646671 * cos(4.99166565280 + 10213.28554600000 * Tau)
|
145 |
|
|
+ 0.00000019952 * cos(3.14159265360 + 0.00000000000 * Tau)
|
146 |
|
|
+ 0.00000005540 * cos(0.77376923951 + 20426.57109200000 * Tau)
|
147 |
|
|
+ 0.00000002526 * cos(5.44493763020 + 30639.85663900000 * Tau);
|
148 |
|
|
|
149 |
|
|
B4 := 0.00000014102 * cos(0.31537190181 + 10213.28554600000 * Tau);
|
150 |
|
|
|
151 |
|
|
B5 := 0.00000000000;
|
152 |
|
|
Result := (B0 + B1*Tau + B2*Tau2 + B3*Tau3 + B4*Tau4 + B5*Tau5);
|
153 |
|
|
end;
|
154 |
|
|
|
155 |
|
|
{-------------------------------------------------------------------------}
|
156 |
|
|
|
157 |
|
|
function GetRadiusVector(Tau, Tau2, Tau3, Tau4, Tau5 : Double) : Double;
|
158 |
|
|
var
|
159 |
|
|
R0, R1,
|
160 |
|
|
R2, R3,
|
161 |
|
|
R4, R5 : Double;
|
162 |
|
|
begin
|
163 |
|
|
R0 := 0.72334820905 * cos(0.00000000000 + 0.00000000000 * Tau)
|
164 |
|
|
+ 0.00489824185 * cos(4.02151832270 + 10213.28554600000 * Tau)
|
165 |
|
|
+ 0.00001658058 * cos(4.90206728010 + 20426.57109200000 * Tau)
|
166 |
|
|
+ 0.00001632093 * cos(2.84548851890 + 7860.41939240000 * Tau)
|
167 |
|
|
+ 0.00001378048 * cos(1.12846590600 + 11790.62908900000 * Tau)
|
168 |
|
|
+ 0.00000498399 * cos(2.58682187720 + 9683.59458110000 * Tau)
|
169 |
|
|
+ 0.00000373958 * cos(1.42314837060 + 3930.20969620000 * Tau)
|
170 |
|
|
+ 0.00000263616 * cos(5.52938185920 + 9437.76293490000 * Tau)
|
171 |
|
|
+ 0.00000237455 * cos(2.55135903980 + 15720.83878500000 * Tau)
|
172 |
|
|
+ 0.00000221983 * cos(2.01346776770 + 19367.18916200000 * Tau)
|
173 |
|
|
+ 0.00000125896 * cos(2.72769833560 + 1577.34354240000 * Tau)
|
174 |
|
|
+ 0.00000119467 * cos(3.01975365260 + 10404.73381200000 * Tau);
|
175 |
|
|
|
176 |
|
|
R1 :=
|
177 |
|
|
+ 0.00034551039 * cos(0.89198710598 + 10213.28554600000 * Tau)
|
178 |
|
|
+ 0.00000234203 * cos(1.77224942710 + 20426.57109200000 * Tau)
|
179 |
|
|
+ 0.00000233998 * cos(3.14159265360 + 0.00000000000 * Tau);
|
180 |
|
|
|
181 |
|
|
R2 :=
|
182 |
|
|
+ 0.00001406587 * cos(5.06366395190 + 10213.28554600000 * Tau)
|
183 |
|
|
+ 0.00000015529 * cos(5.47321687980 + 20426.57109200000 * Tau)
|
184 |
|
|
+ 0.00000013059 * cos(0.00000000000 + 0.00000000000 * Tau);
|
185 |
|
|
|
186 |
|
|
R3 :=
|
187 |
|
|
+ 0.00000049582 * cos(3.22263554520 + 10213.28554600000 * Tau);
|
188 |
|
|
|
189 |
|
|
R4 :=
|
190 |
|
|
+ 0.00000000573 * cos(0.92229697820 + 10213.28554600000 * Tau);
|
191 |
|
|
|
192 |
|
|
R5 := 0.00000000000;
|
193 |
|
|
Result := (R0 + R1*Tau + R2*Tau2 + R3*Tau3 + R4*Tau4 + R5*Tau5);
|
194 |
|
|
end;
|
195 |
|
|
|
196 |
|
|
{-------------------------------------------------------------------------}
|
197 |
|
|
|
198 |
|
|
function ComputeVenus(JD : Double) : TStEclipticalCord;
|
199 |
|
|
var
|
200 |
|
|
Tau,
|
201 |
|
|
Tau2,
|
202 |
|
|
Tau3,
|
203 |
|
|
Tau4,
|
204 |
|
|
Tau5 : Double;
|
205 |
|
|
begin
|
206 |
|
|
Tau := (JD - 2451545.0) / 365250.0;
|
207 |
|
|
Tau2 := sqr(Tau);
|
208 |
|
|
Tau3 := Tau * Tau2;
|
209 |
|
|
Tau4 := sqr(Tau2);
|
210 |
|
|
Tau5 := Tau2 * Tau3;
|
211 |
|
|
|
212 |
|
|
Result.L0 := GetLongitude(Tau, Tau2, Tau3, Tau4, Tau5);
|
213 |
|
|
Result.B0 := GetLatitude(Tau, Tau2, Tau3, Tau4, Tau5);
|
214 |
|
|
Result.R0 := GetRadiusVector(Tau, Tau2, Tau3, Tau4, Tau5);
|
215 |
|
|
end;
|
216 |
|
|
|
217 |
|
|
|
218 |
|
|
end.
|