equationoftime 3.0.0 → 4.0.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- checksums.yaml +4 -4
- data/.buildpath +5 -0
- data/.project +17 -0
- data/.rvmrc +1 -0
- data/.settings/org.eclipse.ltk.core.refactoring.prefs +2 -0
- data/Makefile +238 -0
- data/Rakefile +40 -3
- data/analemma_data.yml +2925 -0
- data/equationoftime.gemspec +6 -3
- data/examples/analemma_data_generator.rb +12 -12
- data/examples/celes_parts/.RUBYARCHDIR.time +0 -0
- data/examples/celes_parts/.cproject +56 -0
- data/examples/celes_parts/.project +78 -0
- data/examples/celes_parts/a2af.c +120 -0
- data/examples/celes_parts/a2tf.c +116 -0
- data/examples/celes_parts/af2a.c +107 -0
- data/examples/celes_parts/anp.c +82 -0
- data/examples/celes_parts/anpm.c +82 -0
- data/examples/celes_parts/bi00.c +116 -0
- data/examples/celes_parts/bp00.c +173 -0
- data/examples/celes_parts/bp06.c +136 -0
- data/examples/celes_parts/bpn2xy.c +100 -0
- data/examples/celes_parts/c2i00a.c +139 -0
- data/examples/celes_parts/c2i00b.c +139 -0
- data/examples/celes_parts/c2i06a.c +136 -0
- data/examples/celes_parts/c2ibpn.c +142 -0
- data/examples/celes_parts/c2ixy.c +131 -0
- data/examples/celes_parts/c2ixys.c +123 -0
- data/examples/celes_parts/c2s.c +96 -0
- data/examples/celes_parts/c2t00a.c +154 -0
- data/examples/celes_parts/c2t00b.c +150 -0
- data/examples/celes_parts/c2t06a.c +152 -0
- data/examples/celes_parts/c2tcio.c +122 -0
- data/examples/celes_parts/c2teqx.c +122 -0
- data/examples/celes_parts/c2tpe.c +167 -0
- data/examples/celes_parts/c2txy.c +159 -0
- data/examples/celes_parts/cal2jd.c +139 -0
- data/examples/celes_parts/celes_core.c +2522 -0
- data/examples/celes_parts/cp.c +80 -0
- data/examples/celes_parts/cpv.c +82 -0
- data/examples/celes_parts/cr.c +83 -0
- data/examples/celes_parts/d2dtf.c +206 -0
- data/examples/celes_parts/d2tf.c +160 -0
- data/examples/celes_parts/dat.c +289 -0
- data/examples/celes_parts/depend +25 -0
- data/examples/celes_parts/dtdb.c +1213 -0
- data/examples/celes_parts/dtf2d.c +196 -0
- data/examples/celes_parts/ee00.c +128 -0
- data/examples/celes_parts/ee00a.c +135 -0
- data/examples/celes_parts/ee00b.c +141 -0
- data/examples/celes_parts/ee06a.c +122 -0
- data/examples/celes_parts/eect00.c +282 -0
- data/examples/celes_parts/eform.c +147 -0
- data/examples/celes_parts/eo06a.c +131 -0
- data/examples/celes_parts/eors.c +108 -0
- data/examples/celes_parts/epb.c +96 -0
- data/examples/celes_parts/epb2jd.c +91 -0
- data/examples/celes_parts/epj.c +93 -0
- data/examples/celes_parts/epj2jd.c +91 -0
- data/examples/celes_parts/epv00.c +2589 -0
- data/examples/celes_parts/eqeq94.c +131 -0
- data/examples/celes_parts/era00.c +136 -0
- data/examples/celes_parts/extconf.rb +4 -0
- data/examples/celes_parts/fad03.c +103 -0
- data/examples/celes_parts/fae03.c +102 -0
- data/examples/celes_parts/faf03.c +106 -0
- data/examples/celes_parts/faju03.c +102 -0
- data/examples/celes_parts/fal03.c +103 -0
- data/examples/celes_parts/falp03.c +103 -0
- data/examples/celes_parts/fama03.c +102 -0
- data/examples/celes_parts/fame03.c +102 -0
- data/examples/celes_parts/fane03.c +99 -0
- data/examples/celes_parts/faom03.c +104 -0
- data/examples/celes_parts/fapa03.c +103 -0
- data/examples/celes_parts/fasa03.c +102 -0
- data/examples/celes_parts/faur03.c +99 -0
- data/examples/celes_parts/fave03.c +102 -0
- data/examples/celes_parts/fk52h.c +143 -0
- data/examples/celes_parts/fk5hip.c +126 -0
- data/examples/celes_parts/fk5hz.c +160 -0
- data/examples/celes_parts/fw2m.c +134 -0
- data/examples/celes_parts/fw2xy.c +120 -0
- data/examples/celes_parts/gc2gd.c +134 -0
- data/examples/celes_parts/gc2gde.c +200 -0
- data/examples/celes_parts/gd2gc.c +134 -0
- data/examples/celes_parts/gd2gce.c +138 -0
- data/examples/celes_parts/gmst00.c +145 -0
- data/examples/celes_parts/gmst06.c +136 -0
- data/examples/celes_parts/gmst82.c +151 -0
- data/examples/celes_parts/gst00a.c +138 -0
- data/examples/celes_parts/gst00b.c +146 -0
- data/examples/celes_parts/gst06.c +140 -0
- data/examples/celes_parts/gst06a.c +131 -0
- data/examples/celes_parts/gst94.c +131 -0
- data/examples/celes_parts/h2fk5.c +148 -0
- data/examples/celes_parts/hfk5z.c +175 -0
- data/examples/celes_parts/ir.c +83 -0
- data/examples/celes_parts/jd2cal.c +155 -0
- data/examples/celes_parts/jdcalf.c +161 -0
- data/examples/celes_parts/num00a.c +121 -0
- data/examples/celes_parts/num00b.c +121 -0
- data/examples/celes_parts/num06a.c +125 -0
- data/examples/celes_parts/numat.c +109 -0
- data/examples/celes_parts/nut00a.c +2047 -0
- data/examples/celes_parts/nut00b.c +372 -0
- data/examples/celes_parts/nut06a.c +153 -0
- data/examples/celes_parts/nut80.c +325 -0
- data/examples/celes_parts/nutm80.c +117 -0
- data/examples/celes_parts/obl06.c +118 -0
- data/examples/celes_parts/obl80.c +118 -0
- data/examples/celes_parts/p06e.c +321 -0
- data/examples/celes_parts/p2pv.c +83 -0
- data/examples/celes_parts/p2s.c +91 -0
- data/examples/celes_parts/pap.c +139 -0
- data/examples/celes_parts/pas.c +96 -0
- data/examples/celes_parts/pb06.c +144 -0
- data/examples/celes_parts/pdp.c +84 -0
- data/examples/celes_parts/pfw06.c +165 -0
- data/examples/celes_parts/plan94.c +514 -0
- data/examples/celes_parts/pm.c +83 -0
- data/examples/celes_parts/pmat00.c +118 -0
- data/examples/celes_parts/pmat06.c +122 -0
- data/examples/celes_parts/pmat76.c +141 -0
- data/examples/celes_parts/pmp.c +85 -0
- data/examples/celes_parts/pn.c +109 -0
- data/examples/celes_parts/pn00.c +177 -0
- data/examples/celes_parts/pn00a.c +162 -0
- data/examples/celes_parts/pn00b.c +162 -0
- data/examples/celes_parts/pn06.c +187 -0
- data/examples/celes_parts/pn06a.c +152 -0
- data/examples/celes_parts/pnm00a.c +121 -0
- data/examples/celes_parts/pnm00b.c +121 -0
- data/examples/celes_parts/pnm06a.c +124 -0
- data/examples/celes_parts/pnm80.c +126 -0
- data/examples/celes_parts/pom00.c +115 -0
- data/examples/celes_parts/ppp.c +85 -0
- data/examples/celes_parts/ppsp.c +94 -0
- data/examples/celes_parts/pr00.c +142 -0
- data/examples/celes_parts/prec76.c +148 -0
- data/examples/celes_parts/pv2p.c +81 -0
- data/examples/celes_parts/pv2s.c +144 -0
- data/examples/celes_parts/pvdpv.c +102 -0
- data/examples/celes_parts/pvm.c +86 -0
- data/examples/celes_parts/pvmpv.c +87 -0
- data/examples/celes_parts/pvppv.c +87 -0
- data/examples/celes_parts/pvstar.c +207 -0
- data/examples/celes_parts/pvu.c +93 -0
- data/examples/celes_parts/pvup.c +88 -0
- data/examples/celes_parts/pvxpv.c +107 -0
- data/examples/celes_parts/pxp.c +94 -0
- data/examples/celes_parts/rm2v.c +111 -0
- data/examples/celes_parts/rv2m.c +118 -0
- data/examples/celes_parts/rx.c +110 -0
- data/examples/celes_parts/rxp.c +99 -0
- data/examples/celes_parts/rxpv.c +86 -0
- data/examples/celes_parts/rxr.c +99 -0
- data/examples/celes_parts/ry.c +110 -0
- data/examples/celes_parts/rz.c +110 -0
- data/examples/celes_parts/s00.c +371 -0
- data/examples/celes_parts/s00a.c +143 -0
- data/examples/celes_parts/s00b.c +143 -0
- data/examples/celes_parts/s06.c +368 -0
- data/examples/celes_parts/s06a.c +145 -0
- data/examples/celes_parts/s2c.c +85 -0
- data/examples/celes_parts/s2p.c +88 -0
- data/examples/celes_parts/s2pv.c +103 -0
- data/examples/celes_parts/s2xpv.c +87 -0
- data/examples/celes_parts/sepp.c +105 -0
- data/examples/celes_parts/seps.c +93 -0
- data/examples/celes_parts/sofa.h +379 -0
- data/examples/celes_parts/sofam.h +155 -0
- data/examples/celes_parts/sp00.c +118 -0
- data/examples/celes_parts/starpm.c +205 -0
- data/examples/celes_parts/starpv.c +264 -0
- data/examples/celes_parts/sxp.c +84 -0
- data/examples/celes_parts/sxpv.c +85 -0
- data/examples/celes_parts/taitt.c +110 -0
- data/examples/celes_parts/taiut1.c +112 -0
- data/examples/celes_parts/taiutc.c +182 -0
- data/examples/celes_parts/tcbtdb.c +132 -0
- data/examples/celes_parts/tcgtt.c +109 -0
- data/examples/celes_parts/tdbtcb.c +137 -0
- data/examples/celes_parts/tdbtt.c +122 -0
- data/examples/celes_parts/test_celes.rb +48 -0
- data/examples/celes_parts/tf2a.c +107 -0
- data/examples/celes_parts/tf2d.c +107 -0
- data/examples/celes_parts/tr.c +93 -0
- data/examples/celes_parts/trxp.c +93 -0
- data/examples/celes_parts/trxpv.c +93 -0
- data/examples/celes_parts/tttai.c +110 -0
- data/examples/celes_parts/tttcg.c +112 -0
- data/examples/celes_parts/tttdb.c +121 -0
- data/examples/celes_parts/ttut1.c +110 -0
- data/examples/celes_parts/ut1tai.c +111 -0
- data/examples/celes_parts/ut1tt.c +110 -0
- data/examples/celes_parts/ut1utc.c +193 -0
- data/examples/celes_parts/utctai.c +163 -0
- data/examples/celes_parts/utcut1.c +151 -0
- data/examples/celes_parts/xy06.c +2758 -0
- data/examples/celes_parts/xys00a.c +133 -0
- data/examples/celes_parts/xys00b.c +133 -0
- data/examples/celes_parts/xys06a.c +133 -0
- data/examples/celes_parts/zp.c +77 -0
- data/examples/celes_parts/zpv.c +79 -0
- data/examples/celes_parts/zr.c +83 -0
- data/examples/check_date_type.rb +2 -4
- data/examples/compare_geoc_long_ra.rb +19 -11
- data/examples/data_table_for_astro_dog.rb +40 -0
- data/examples/earth_rotation.rb +28 -3
- data/examples/eot.c +15 -0
- data/examples/eot.h +2 -0
- data/examples/eot_methods_list.rb +30 -3
- data/examples/eot_suntimes.rb +99 -95
- data/examples/extconf.rb +2 -0
- data/examples/{read_nutation_data.rb → gmst_gast_non_sofa.rb} +103 -98
- data/examples/nutation_table5_3a.yaml +1658 -1658
- data/examples/rbeot.c +24 -0
- data/examples/test_eot.rb +17 -0
- data/examples/test_poly_eval.rb +6 -17
- data/examples/time_scales.rb +4 -7
- data/examples/times_year.rb +50 -0
- data/examples/usage_example.rb +15 -5
- data/examples/use_angles.rb +151 -87
- data/lib/eot/angles.rb +130 -177
- data/lib/eot/constants.rb +41 -44
- data/lib/eot/displays.rb +40 -37
- data/lib/eot/geo_lat_lng_smt.rb +7 -6
- data/lib/eot/init.rb +62 -39
- data/lib/eot/nutation.rb +53 -45
- data/lib/eot/times.rb +32 -41
- data/lib/eot/utilities.rb +11 -90
- data/lib/eot/version.rb +3 -2
- data/rise_set_data.yml +1461 -0
- data/run_tests_eclipse.rb +1 -0
- data/tests/minitest/aliased_angles_spec.rb +119 -165
- data/tests/minitest/aliased_displays_spec.rb +41 -39
- data/tests/minitest/aliased_utilities_spec.rb +11 -22
- data/tests/minitest/angles_spec.rb +134 -181
- data/tests/minitest/constants_spec.rb +4 -10
- data/tests/minitest/delta_epsilon_spec.rb +13 -16
- data/tests/minitest/displays_spec.rb +39 -37
- data/tests/minitest/geo_spec.rb +15 -11
- data/tests/minitest/init_spec.rb +30 -16
- data/tests/minitest/nutation_spec.rb +19 -13
- data/tests/minitest/times_spec.rb +77 -75
- data/tests/minitest/utilities_spec.rb +10 -94
- data/wiki.md +7 -9
- metadata +218 -26
- data/examples/data_table.rb +0 -26
- data/lib/eot/nutation_table5_3a.yaml +0 -9532
- data/tests/minitest/aliased_times_spec.rb +0 -36
data/lib/eot/angles.rb
CHANGED
|
@@ -1,64 +1,72 @@
|
|
|
1
1
|
# angles.rb
|
|
2
2
|
|
|
3
|
-
|
|
3
|
+
require 'celes'
|
|
4
4
|
|
|
5
|
+
class Eot
|
|
6
|
+
include Math
|
|
5
7
|
# From angles.rb:<br>
|
|
6
8
|
# Apparent solar longitude = true longitude - aberation
|
|
7
|
-
def al_Sun(
|
|
8
|
-
|
|
9
|
-
tl_Sun( ta ) -
|
|
10
|
-
0.00569 -
|
|
11
|
-
0.00478 * sin( deg_to_rad( omega( ta ) ) )
|
|
9
|
+
def al_Sun()
|
|
10
|
+
Celes.anp(tl_Sun() - 0.00569 * D2R - 0.00478 * D2R * sin(omega()))
|
|
12
11
|
end
|
|
13
12
|
alias_method :apparent_longitude, :al_Sun
|
|
13
|
+
alias_method :alsun, :al_Sun
|
|
14
|
+
|
|
15
|
+
# From angles.rb:<br>
|
|
16
|
+
# delta epsilon
|
|
17
|
+
# component of equation of equinox
|
|
18
|
+
def angle_delta_epsilon()
|
|
19
|
+
Celes.nut06a(@ajd, 0)[ 1 ]
|
|
20
|
+
end
|
|
21
|
+
alias_method :delta_epsilon, :angle_delta_epsilon
|
|
14
22
|
|
|
15
23
|
# From angles.rb:<br>
|
|
16
24
|
# one time component to total equation of time
|
|
17
|
-
def angle_delta_oblique(
|
|
18
|
-
|
|
19
|
-
tl_Sun( ta ) -
|
|
20
|
-
ra_Sun( ta )
|
|
25
|
+
def angle_delta_oblique()
|
|
26
|
+
tl_Sun() - ra_Sun()
|
|
21
27
|
end
|
|
22
|
-
|
|
28
|
+
alias_method :delta_t_ecliptic, :angle_delta_oblique
|
|
29
|
+
alias_method :delta_oblique, :angle_delta_oblique
|
|
30
|
+
|
|
23
31
|
# From angles.rb:<br>
|
|
24
32
|
# one time component to total equation of time
|
|
25
|
-
def angle_delta_orbit(
|
|
26
|
-
|
|
27
|
-
@ma - ta_Sun( ta )
|
|
33
|
+
def angle_delta_orbit()
|
|
34
|
+
@ma - ta_Sun()
|
|
28
35
|
end
|
|
36
|
+
alias_method :delta_t_elliptic, :angle_delta_orbit
|
|
37
|
+
alias_method :delta_orbit, :angle_delta_orbit
|
|
38
|
+
|
|
29
39
|
|
|
30
40
|
# From angles.rb:<br>
|
|
31
41
|
# component of equation of equinox
|
|
32
|
-
def angle_delta_psi(
|
|
33
|
-
|
|
34
|
-
delta_equinox( ta )[ 1 ]
|
|
42
|
+
def angle_delta_psi()
|
|
43
|
+
Celes.nut06a(@ajd, 0)[ 0 ]
|
|
35
44
|
end
|
|
45
|
+
alias_method :delta_psi, :angle_delta_psi
|
|
36
46
|
|
|
37
47
|
# From angles.rb:<br>
|
|
38
48
|
# total equation of time
|
|
39
|
-
def angle_equation_of_time(
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
end
|
|
49
|
+
def angle_equation_of_time()
|
|
50
|
+
#~ @ma = ma_Sun()
|
|
51
|
+
angle_delta_oblique() + angle_delta_orbit()
|
|
52
|
+
end
|
|
53
|
+
alias_method :eot, :angle_equation_of_time
|
|
45
54
|
|
|
46
55
|
# From angles.rb:<br>
|
|
47
56
|
# equation of centre
|
|
48
57
|
# added to mean anomaly to get true anomaly.
|
|
49
|
-
def center(
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
sine_5M * 1097/960.0 * e**5 )
|
|
58
|
+
def center()
|
|
59
|
+
sine_1M = sin( 1.0 * @ma )
|
|
60
|
+
sine_2M = sin( 2.0 * @ma )
|
|
61
|
+
sine_3M = sin( 3.0 * @ma )
|
|
62
|
+
sine_4M = sin( 4.0 * @ma )
|
|
63
|
+
sine_5M = sin( 5.0 * @ma )
|
|
64
|
+
e = eccentricity_Earth()
|
|
65
|
+
sine_1M * ( 2.0 * e - e**3/4.0 + 5/96.0 * e**5 ) +
|
|
66
|
+
sine_2M * ( 5/4.0 * e**2 - 11/24.0 * e**4 ) +
|
|
67
|
+
sine_3M * ( 13/12.0 * e**3 - 43/64.0 * e**5 ) +
|
|
68
|
+
sine_4M * 103/96.0 * e**4 +
|
|
69
|
+
sine_5M * 1097/960.0 * e**5
|
|
62
70
|
# sine_1M *( 1.914602 - ta[ 0 ] * ( 0.004817 + ta[ 0 ] * 0.000014 )) + +
|
|
63
71
|
# sine_2M *( 0.019993 - ta[ 0 ] * 0.000101 ) + +
|
|
64
72
|
# sine_3M * 0.000289
|
|
@@ -68,180 +76,125 @@ class Eot
|
|
|
68
76
|
# From angles.rb:<br>
|
|
69
77
|
# cosine apparent longitude
|
|
70
78
|
# could be useful when dividing
|
|
71
|
-
def cosine_al_Sun(
|
|
72
|
-
|
|
73
|
-
cos( deg_to_rad( al_Sun( ta ) ) )
|
|
79
|
+
def cosine_al_Sun()
|
|
80
|
+
cos( alsun() )
|
|
74
81
|
end
|
|
75
82
|
alias_method :cosine_apparent_longitude, :cosine_al_Sun
|
|
83
|
+
alias_method :cosalsun, :cosine_al_Sun
|
|
76
84
|
|
|
77
85
|
# From angles.rb:<br>
|
|
78
86
|
# cosine true longitude
|
|
79
87
|
# used in solar right ascension
|
|
80
|
-
def cosine_tl_Sun(
|
|
81
|
-
|
|
82
|
-
cos( deg_to_rad( tl_Sun( ta ) ) )
|
|
88
|
+
def cosine_tl_Sun()
|
|
89
|
+
cos( tl_Sun() )
|
|
83
90
|
end
|
|
84
91
|
alias_method :cosine_true_longitude, :cosine_tl_Sun
|
|
85
92
|
|
|
86
93
|
# From angles.rb:<br>
|
|
87
94
|
# cosine true obliquity
|
|
88
|
-
# used in solar right ascension
|
|
89
|
-
def cosine_to_Earth(
|
|
90
|
-
|
|
91
|
-
cos( deg_to_rad( to_Earth( ta ) ) )
|
|
95
|
+
# used in solar right ascension and equation of equinox
|
|
96
|
+
def cosine_to_Earth()
|
|
97
|
+
cos( to_Earth() )
|
|
92
98
|
end
|
|
93
99
|
alias_method :cosine_true_obliquity, :cosine_to_Earth
|
|
94
100
|
|
|
95
101
|
# From angles.rb:<br>
|
|
96
102
|
# solar declination
|
|
97
|
-
def dec_Sun(
|
|
98
|
-
|
|
99
|
-
|
|
100
|
-
sine_al_Sun( ta )
|
|
101
|
-
rad_to_deg( asin( sine_declination ) )
|
|
103
|
+
def dec_Sun()
|
|
104
|
+
sine_declination = sine_to_Earth() * sine_al_Sun()
|
|
105
|
+
asin( sine_declination )
|
|
102
106
|
end
|
|
103
107
|
alias_method :declination, :dec_Sun
|
|
104
108
|
|
|
105
|
-
# From angles.rb:<br>
|
|
106
|
-
# delta epsilon
|
|
107
|
-
# component of equation of equinox
|
|
108
|
-
def delta_epsilon( ta = A2000 )
|
|
109
|
-
ta = check_jct_zero( ta )
|
|
110
|
-
delta_equinox( ta )[ 0 ]
|
|
111
|
-
end
|
|
112
|
-
|
|
113
|
-
# From angles.rb:<br>
|
|
114
|
-
# one time component to total equation of time
|
|
115
|
-
def delta_oblique( ta = A2000 )
|
|
116
|
-
ta = check_jct_zero( ta )
|
|
117
|
-
tl_Sun( ta ) -
|
|
118
|
-
ra_Sun( ta )
|
|
119
|
-
end
|
|
120
|
-
alias_method :delta_t_ecliptic, :delta_oblique
|
|
121
|
-
|
|
122
|
-
# From angles.rb:<br>
|
|
123
|
-
# one time component to total equation of time
|
|
124
|
-
def delta_orbit( ta = A2000 )
|
|
125
|
-
ta = check_jct_zero( ta )
|
|
126
|
-
@ma - ta_Sun( ta )
|
|
127
|
-
end
|
|
128
|
-
alias_method :delta_t_elliptic, :delta_orbit
|
|
129
|
-
|
|
130
|
-
# From angles.rb:<br>
|
|
131
|
-
# component of equation of equinox
|
|
132
|
-
def delta_psi( ta = A2000 )
|
|
133
|
-
ta = check_jct_zero( ta )
|
|
134
|
-
delta_equinox( ta )[ 1 ]
|
|
135
|
-
end
|
|
136
109
|
|
|
137
110
|
# From angles.rb:<br>
|
|
138
111
|
# eccentricity of elliptical Earth orbit around Sun
|
|
139
|
-
#
|
|
140
|
-
def eccentricity_Earth(
|
|
141
|
-
|
|
142
|
-
# 0.016708617 - ta[ 0 ] * ( 0.000042037 + ta[ 0 ] * 0.0000001235 )
|
|
143
|
-
[-0.0000001235, -0.000042037, 0.016708617].inject(0.0) {|p, a| p * ta[0] + a}
|
|
112
|
+
# Horners' calculation method
|
|
113
|
+
def eccentricity_Earth()
|
|
114
|
+
[-0.0000001235, -0.000042037, 0.016708617].inject(0.0) {|p, a| p * @ta + a}
|
|
144
115
|
end
|
|
145
116
|
alias_method :eccentricity_earth_orbit, :eccentricity_Earth
|
|
146
117
|
|
|
147
118
|
# From angles.rb:<br>
|
|
148
|
-
# equation of equinox
|
|
149
|
-
|
|
150
|
-
|
|
151
|
-
|
|
152
|
-
|
|
119
|
+
# equation of equinox
|
|
120
|
+
# used for true longitude of Aries
|
|
121
|
+
# Depricated by Celes.gst06a()
|
|
122
|
+
def eq_of_equinox()
|
|
123
|
+
cosine_to_Earth() * delta_psi()
|
|
153
124
|
end
|
|
154
125
|
|
|
155
|
-
# From angles.rb:<br>
|
|
156
|
-
# total equation of time
|
|
157
|
-
def eot()
|
|
158
|
-
ta = time_julian_century( @ajd )
|
|
159
|
-
@ma = ma_Sun()
|
|
160
|
-
delta_orbit( ta ) + delta_oblique( ta )
|
|
161
|
-
end
|
|
162
|
-
|
|
163
|
-
# From angles.rb:<br>
|
|
164
|
-
# angle factor for daily sidereal time (experimental)
|
|
165
|
-
def factor
|
|
166
|
-
jda = Date.parse("2000-01-01").jd
|
|
167
|
-
jdb = jda + 1
|
|
168
|
-
tjca = time_julian_century( jda )
|
|
169
|
-
tjcb = time_julian_century( jdb )
|
|
170
|
-
tlaa = tl_Aries( tjca )
|
|
171
|
-
tlab = tl_Aries( tjcb )
|
|
172
|
-
dif = tlab - tlaa
|
|
173
|
-
dr = dif + 360.0
|
|
174
|
-
360 / dr
|
|
175
|
-
end
|
|
176
126
|
|
|
177
127
|
# From angles.rb:<br>
|
|
178
128
|
# angle geometric mean longitude
|
|
179
129
|
# needed to get true longitude for low accuracy.
|
|
180
|
-
def gml_Sun(
|
|
181
|
-
|
|
182
|
-
|
|
183
|
-
|
|
184
|
-
mod_360( total.inject(0.0) {|p, a| p * ta[0] + a} )
|
|
130
|
+
def gml_Sun()
|
|
131
|
+
total = [ 1.0/-19880000.0, 1.0/-152990.0, 1.0/499310.0,
|
|
132
|
+
0.0003032028, 36000.76982779, 280.4664567 ]
|
|
133
|
+
mod_360(total.inject(0.0) {|p, a| p * @ta + a}) * D2R
|
|
185
134
|
end
|
|
186
135
|
alias_method :geometric_mean_longitude, :gml_Sun
|
|
187
136
|
|
|
188
137
|
# From angles.rb:<br>
|
|
189
138
|
# horizon angle for provided geo coordinates
|
|
190
|
-
# used for angles from transit to
|
|
191
|
-
def ha_Sun(
|
|
192
|
-
|
|
193
|
-
|
|
194
|
-
|
|
195
|
-
|
|
196
|
-
|
|
197
|
-
|
|
198
|
-
sine_latitude = sin( deg_to_rad( @latitude ) )
|
|
139
|
+
# used for angles from transit to horizons
|
|
140
|
+
def ha_Sun()
|
|
141
|
+
zenith = 90.8333 * D2R
|
|
142
|
+
cosine_zenith = cos( zenith )
|
|
143
|
+
cosine_declination = cos( dec_Sun() )
|
|
144
|
+
sine_declination = sin( dec_Sun() )
|
|
145
|
+
cosine_latitude = cos( @latitude * D2R )
|
|
146
|
+
sine_latitude = sin( @latitude * D2R )
|
|
199
147
|
top = cosine_zenith - sine_declination * sine_latitude
|
|
200
148
|
bottom = cosine_declination * cosine_latitude
|
|
201
149
|
t_cosine = top / bottom
|
|
202
150
|
t_cosine > 1.0 || t_cosine < -1.0 ? cos = 1.0 : cos = t_cosine
|
|
203
|
-
|
|
151
|
+
acos( cos )
|
|
204
152
|
end
|
|
205
153
|
alias_method :horizon_angle, :ha_Sun
|
|
206
154
|
|
|
207
155
|
# From angles.rb:<br>
|
|
208
156
|
# angle of Suns' mean anomaly
|
|
157
|
+
# calculated in nutation.rb via celes function
|
|
158
|
+
# sets ta attribute for the rest the methods needing it.
|
|
209
159
|
# used in equation of time
|
|
210
|
-
# and to get true anomaly
|
|
160
|
+
# and to get true anomaly true longitude via center equation
|
|
211
161
|
def ma_Sun()
|
|
212
|
-
ta =
|
|
213
|
-
|
|
214
|
-
@ma =
|
|
162
|
+
@ta = ( @ajd - DJ00 ) / DJC
|
|
163
|
+
# @ma = delta_equinox()[2]
|
|
164
|
+
@ma = Celes.falp03(@ta)
|
|
215
165
|
end
|
|
216
166
|
alias_method :mean_anomaly, :ma_Sun
|
|
217
167
|
|
|
218
168
|
# From angles.rb:<br>
|
|
219
169
|
# Mean equinox point where right ascension is measured from as zero hours.
|
|
220
170
|
# # see http://www.iausofa.org/publications/aas04.pdf
|
|
221
|
-
def ml_Aries(
|
|
222
|
-
|
|
223
|
-
jd = ta[ 0 ] * DJC # convert first term back to jdn - J2000
|
|
171
|
+
def ml_Aries()
|
|
172
|
+
# jd = @ta * DJC # convert first term back to jdn - J2000
|
|
224
173
|
# old terms
|
|
225
174
|
# angle = (36000.770053608 / DJC + 360) * jd # 36000.770053608 = 0.9856473662862 * DJC
|
|
226
175
|
# total = [ -1.0/3.8710000e7, 3.87930e-4, 0, 100.460618375 ].inject(0.0) {|p, a| p * ta[0] + a} + 180 + angle
|
|
227
176
|
# newer terms seem to be in arcseconds / 15.0
|
|
228
177
|
# 0.0000013, - 0.0000062, 0.0931118, 307.4771600, 8639877.3173760, 24110.5493771
|
|
229
|
-
angle = (35999.4888224 / DJC + 360) * jd
|
|
230
|
-
total = angle + 280.460622404583 +
|
|
231
|
-
|
|
232
|
-
|
|
233
|
-
|
|
234
|
-
|
|
235
|
-
|
|
178
|
+
# angle = (35999.4888224 / DJC + 360) * jd
|
|
179
|
+
# total = angle + 280.460622404583 +
|
|
180
|
+
# @ta[ 0 ] * 1.281154833333 +
|
|
181
|
+
# @ta[ 1 ] * 3.87965833333e-4 +
|
|
182
|
+
# @ta[ 2 ] * -2.58333333333e-8 +
|
|
183
|
+
# @ta[ 3 ] * 5.41666666666e-9
|
|
184
|
+
# total = [5.41666666666e-9, -2.58333333333e-8, 3.87965833333e-4, 1.281154833333, 280.460622404583].inject(0.0) {|p, a| p * @ta + a}
|
|
185
|
+
# mod_360( angle + total ) * D2R
|
|
186
|
+
dt = 67.184
|
|
187
|
+
tt = @ajd + dt / 86400.0#Celes.ut1tt(@ajd, 0, dt)
|
|
188
|
+
Celes.gmst06(@ajd, 0, tt, 0)
|
|
236
189
|
end
|
|
237
190
|
alias_method :mean_longitude_aries, :ml_Aries
|
|
238
191
|
|
|
239
192
|
# From angles.rb:<br>
|
|
240
193
|
# mean obliquity of Earth
|
|
241
|
-
def mo_Earth(
|
|
242
|
-
|
|
243
|
-
|
|
244
|
-
|
|
194
|
+
def mo_Earth()
|
|
195
|
+
# [ -0.0000000434, -0.000000576, 0.00200340,
|
|
196
|
+
# -0.0001831, -46.836769, 84381.406 ].inject(0.0) {|p, a| p * @ta + a} * DAS2R
|
|
197
|
+
Celes.obl06(@ajd, 0)
|
|
245
198
|
end
|
|
246
199
|
alias_method :mean_obliquity_of_ecliptic, :mo_Earth
|
|
247
200
|
alias_method :mean_obliquity, :mo_Earth
|
|
@@ -251,79 +204,79 @@ class Eot
|
|
|
251
204
|
# in apparent longitude
|
|
252
205
|
# omega is the longitude of the mean ascending node of the lunar orbit
|
|
253
206
|
# on the ecliptic plane measured from the mean equinox of date.
|
|
254
|
-
def omega(
|
|
255
|
-
|
|
256
|
-
|
|
207
|
+
def omega()
|
|
208
|
+
# delta_equinox()[ 3 ]
|
|
209
|
+
Celes.faom03(@ta)
|
|
257
210
|
end
|
|
258
211
|
|
|
259
212
|
# From angles.rb:<br>
|
|
260
213
|
# solar right ascension
|
|
261
|
-
def ra_Sun(
|
|
262
|
-
|
|
263
|
-
|
|
264
|
-
180.0 +
|
|
265
|
-
rad_to_deg( atan2( -y0, -cosine_al_Sun( ta ) ) )
|
|
214
|
+
def ra_Sun()
|
|
215
|
+
y0 = sine_al_Sun() * cosine_to_Earth()
|
|
216
|
+
Celes.anp(180.0 * PI / 180.0 + atan2( -y0, -cosine_al_Sun() ) )
|
|
266
217
|
end
|
|
267
218
|
alias_method :right_ascension, :ra_Sun
|
|
268
219
|
|
|
269
220
|
# From angles.rb:<br>
|
|
270
221
|
# sine apparent longitude
|
|
271
222
|
# used in solar declination
|
|
272
|
-
def sine_al_Sun(
|
|
273
|
-
|
|
274
|
-
sin( deg_to_rad( al_Sun( ta ) ) )
|
|
223
|
+
def sine_al_Sun()
|
|
224
|
+
sin( al_Sun() )
|
|
275
225
|
end
|
|
276
226
|
alias_method :sine_apparent_longitude, :sine_al_Sun
|
|
277
227
|
|
|
278
228
|
# From angles.rb:<br>
|
|
279
229
|
# sine true longitude
|
|
280
230
|
# used in solar right ascension
|
|
281
|
-
def sine_tl_Sun(
|
|
282
|
-
|
|
283
|
-
sin( deg_to_rad( tl_Sun( ta ) ) )
|
|
231
|
+
def sine_tl_Sun()
|
|
232
|
+
sin( tl_Sun() )
|
|
284
233
|
end
|
|
285
234
|
alias_method :sine_true_longitude, :sine_tl_Sun
|
|
235
|
+
|
|
236
|
+
# From angles.rb:<br>
|
|
237
|
+
# sine true obliquity angle of Earth
|
|
238
|
+
# used in solar declination
|
|
239
|
+
def sine_to_Earth()
|
|
240
|
+
sin(to_Earth())
|
|
241
|
+
end
|
|
286
242
|
|
|
287
243
|
# From angles.rb:<br>
|
|
288
244
|
# angle true anomaly
|
|
289
245
|
# used in equation of time
|
|
290
|
-
def ta_Sun(
|
|
291
|
-
|
|
292
|
-
@ma + center( ta )
|
|
246
|
+
def ta_Sun()
|
|
247
|
+
Celes.anp(@ma + center())
|
|
293
248
|
end
|
|
294
249
|
alias_method :true_anomaly, :ta_Sun
|
|
295
250
|
|
|
296
251
|
# From angles.rb:<br>
|
|
297
252
|
# true longitude of equinox 'first point of aries'
|
|
298
253
|
# considers nutation
|
|
299
|
-
def tl_Aries(
|
|
300
|
-
|
|
301
|
-
|
|
302
|
-
|
|
254
|
+
def tl_Aries()
|
|
255
|
+
# Celes.anp(eq_of_equinox() + ml_Aries())
|
|
256
|
+
dt = 67.184
|
|
257
|
+
tt = @ajd + dt / 86400.0#Celes.ut1tt(@ajd, 0, dt)
|
|
258
|
+
Celes.gst06a(@ajd, 0, tt, 0)
|
|
303
259
|
end
|
|
304
260
|
alias_method :true_longitude_aries, :tl_Aries
|
|
305
261
|
|
|
306
262
|
# From angles.rb:<br>
|
|
307
263
|
# angle of true longitude sun
|
|
308
264
|
# used in equation of time
|
|
309
|
-
def tl_Sun(
|
|
310
|
-
|
|
311
|
-
mod_360(
|
|
312
|
-
gml_Sun( ta ) +
|
|
313
|
-
center( ta )
|
|
314
|
-
)
|
|
265
|
+
def tl_Sun()
|
|
266
|
+
Celes.anp(gml_Sun() + center())
|
|
315
267
|
end
|
|
316
268
|
alias_method :true_longitude, :tl_Sun
|
|
269
|
+
alias_method :ecliptic_longitude, :tl_Sun
|
|
270
|
+
alias_method :lambda, :tl_Sun
|
|
317
271
|
|
|
318
272
|
# From angles.rb:<br>
|
|
319
273
|
# true obliquity considers nutation
|
|
320
|
-
def to_Earth(
|
|
321
|
-
|
|
322
|
-
delta_epsilon( ta ) +
|
|
323
|
-
mo_Earth( ta )
|
|
274
|
+
def to_Earth()
|
|
275
|
+
Celes.anp(delta_epsilon() + mo_Earth())
|
|
324
276
|
end
|
|
325
277
|
alias_method :obliquity_correction, :to_Earth
|
|
326
278
|
alias_method :true_obliquity, :to_Earth
|
|
279
|
+
alias_method :toearth, :to_Earth
|
|
327
280
|
|
|
328
281
|
end
|
|
329
282
|
|