mk_apos 0.1.0 → 0.2.1
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +5 -5
- data/README.md +1 -1
- data/lib/mk_apos/apos.rb +9 -2
- data/lib/mk_apos/compute.rb +17 -6
- data/lib/mk_apos/const.rb +1 -0
- data/lib/mk_apos/version.rb +1 -1
- data/mk_apos.gemspec +4 -2
- metadata +14 -15
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
|
-
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
2
|
+
SHA256:
|
3
|
+
metadata.gz: a7e77bfad4e9fc932ae2a28c072926cf08f2f290b0fe26cd6933c7ceae350f26
|
4
|
+
data.tar.gz: bf32b745440ef0c312bfe918a594d2260b48472413db5e8e26daa85400ec20d3
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 91d96455290ff35d3b70c440beee1ee086057479e831fc01d9481d2550df8192c19dba3b8abcbfa7c74d6ee0c20febd48d5a91855c4bc8dd09999e6d87f5fca2
|
7
|
+
data.tar.gz: 05a88b3e92064649c0e2b50e182d22f5de25e913507df1faef5fab8f184221f7c4d5704afa804ca92e92f42052fc628380782401534fdcc8cb9bad9e6a314e6c
|
data/README.md
CHANGED
@@ -38,7 +38,7 @@ Or install it yourself as:
|
|
38
38
|
a = MkApos.new("/path/to/<JPLEPH binary>")
|
39
39
|
|
40
40
|
* You can set UTC formatted `YYYYMMDD` or `YYYYMMDDHHMMSS` or `YYYYMMDDHHMMSSU...` as an argument. (`U` is microsecond)
|
41
|
-
* If you don't set a second argument, this class considers the system time to have been set as a second argument.
|
41
|
+
* If you don't set a second argument, this class considers the system time to have been set as a second argument(UTC).
|
42
42
|
|
43
43
|
### Calculation
|
44
44
|
|
data/lib/mk_apos/apos.rb
CHANGED
@@ -15,13 +15,19 @@ module MkApos
|
|
15
15
|
Const::BODIES.each { |k, v| @icrs_2[k] = get_icrs(v, @jd_tdb) }
|
16
16
|
# === 時刻 t2(= TDB) における地球と太陽・月の距離
|
17
17
|
@r_e = get_r_e
|
18
|
+
# === 太陽/月/地球の半径取得
|
19
|
+
e = EphJpl.new(@bin_path, 11, 3, @jd_tdb)
|
20
|
+
@asun = e.bin[:cvals][e.bin[:cnams].index("ASUN")]
|
21
|
+
@am = e.bin[:cvals][e.bin[:cnams].index("AM")]
|
22
|
+
@re = e.bin[:cvals][e.bin[:cnams].index("RE")]
|
18
23
|
end
|
19
24
|
|
20
25
|
#=========================================================================
|
21
26
|
# SUN
|
22
27
|
#
|
23
28
|
# @param: <none>
|
24
|
-
# @return: [lambda, beta, d]
|
29
|
+
# @return: [[lambda, beta, d], [alpha, delta, d], [apparent_radius, parallax]]
|
30
|
+
# (太陽視黄経、視黄緯、地心距離、視赤経、視赤緯、地心距離、視半径、視差))
|
25
31
|
#=========================================================================
|
26
32
|
def sun
|
27
33
|
return compute_sun
|
@@ -31,7 +37,8 @@ module MkApos
|
|
31
37
|
# MOON
|
32
38
|
#
|
33
39
|
# @param: <none>
|
34
|
-
# @return: [alpha, delta]
|
40
|
+
# @return: [[lambda, beta, d], [alpha, delta, d], [apparent_radius, parallax]]
|
41
|
+
# (月視黄経、視黄緯、地心距離、視赤経、視赤緯、地心距離、視半径、視差))
|
35
42
|
#=========================================================================
|
36
43
|
def moon
|
37
44
|
return compute_moon
|
data/lib/mk_apos/compute.rb
CHANGED
@@ -21,7 +21,7 @@ module MkApos
|
|
21
21
|
# @return: jd (Julian Day(Numeric))
|
22
22
|
#=========================================================================
|
23
23
|
def get_jd(t)
|
24
|
-
return MkTime.new(t.strftime("%Y%m%d%H%M%S")).jd
|
24
|
+
return MkTime.new(t.strftime("%Y%m%d%H%M%S%6N")).jd
|
25
25
|
rescue => e
|
26
26
|
raise
|
27
27
|
end
|
@@ -82,7 +82,7 @@ module MkApos
|
|
82
82
|
# 視黄経・視黄緯の計算(太陽)
|
83
83
|
#
|
84
84
|
# @param: <none>
|
85
|
-
# @return: [[視赤経, 視赤緯, 地心距離], [視黄経, 視黄緯, 地心距離]]
|
85
|
+
# @return: [[視赤経, 視赤緯, 地心距離], [視黄経, 視黄緯, 地心距離], [視半径, 視差]]
|
86
86
|
#=========================================================================
|
87
87
|
def compute_sun
|
88
88
|
# === 太陽が光を発した時刻 t1(JD) の計算
|
@@ -101,7 +101,12 @@ module MkApos
|
|
101
101
|
eq_pol_s = MkCoord.rect2pol(pos_sun_bpn)
|
102
102
|
ec_rect_s = MkCoord.rect_eq2ec(pos_sun_bpn, bpn.eps)
|
103
103
|
ec_pol_s = MkCoord.rect2pol(ec_rect_s)
|
104
|
-
|
104
|
+
# === 視半径/(地平)視差計算
|
105
|
+
radius = Math.asin(@asun / (eq_pol_s[2] * Const::AU / 1000))
|
106
|
+
radius *= 180 / Math::PI * 3600
|
107
|
+
parallax = Math.asin(@re / (eq_pol_s[2] * Const::AU / 1000))
|
108
|
+
parallax *= 180 / Math::PI * 3600
|
109
|
+
return [eq_pol_s, ec_pol_s, [radius, parallax]]
|
105
110
|
rescue => e
|
106
111
|
raise
|
107
112
|
end
|
@@ -110,7 +115,7 @@ module MkApos
|
|
110
115
|
# 視黄経・視黄緯の計算(月)
|
111
116
|
#
|
112
117
|
# @param: <none>
|
113
|
-
# @return: [[視赤経, 視赤緯, 地心距離], [視黄経, 視黄緯, 地心距離]]
|
118
|
+
# @return: [[視赤経, 視赤緯, 地心距離], [視黄経, 視黄緯, 地心距離], [視半径, 視差]]
|
114
119
|
#=========================================================================
|
115
120
|
def compute_moon
|
116
121
|
# === 月が光を発した時刻 t1(jd) の計算
|
@@ -129,7 +134,12 @@ module MkApos
|
|
129
134
|
eq_pol_m = MkCoord.rect2pol(pos_moon_bpn)
|
130
135
|
ec_rect_m = MkCoord.rect_eq2ec(pos_moon_bpn, bpn.eps)
|
131
136
|
ec_pol_m = MkCoord.rect2pol(ec_rect_m)
|
132
|
-
|
137
|
+
# === 視半径/(地平)視差計算
|
138
|
+
radius = Math.asin(@am / (eq_pol_m[2] * Const::AU / 1000))
|
139
|
+
radius *= 180 / Math::PI * 3600
|
140
|
+
parallax = Math.asin(@re / (eq_pol_m[2] * Const::AU / 1000))
|
141
|
+
parallax *= 180 / Math::PI * 3600
|
142
|
+
return [eq_pol_m, ec_pol_m, [radius, parallax]]
|
133
143
|
rescue => e
|
134
144
|
raise
|
135
145
|
end
|
@@ -150,7 +160,7 @@ module MkApos
|
|
150
160
|
t_2 = t_1
|
151
161
|
pv_1 = @icrs_2[target]
|
152
162
|
df, m = 1.0, 0
|
153
|
-
while df > 1.0e-10
|
163
|
+
while df > 1.0e-10
|
154
164
|
r_12 = (0..2).map { |i| pv_1[i] - @icrs_2[:earth][i] }
|
155
165
|
r_12_d = calc_dist(pv_1, @icrs_2[:earth])
|
156
166
|
df = (Const::C * Const::DAYSEC / Const::AU) * (t_2 - t_1) - r_12_d
|
@@ -158,6 +168,7 @@ module MkApos
|
|
158
168
|
df /= ((Const::C * Const::DAYSEC / Const::AU) + (df_wk) / r_12_d)
|
159
169
|
t_1 += df
|
160
170
|
m += 1
|
171
|
+
raise Const::MSG_ERR_5 if m > 10
|
161
172
|
pv_1 = get_icrs(Const::BODIES[target], t_1)
|
162
173
|
end
|
163
174
|
return t_1
|
data/lib/mk_apos/const.rb
CHANGED
@@ -4,6 +4,7 @@ module MkApos
|
|
4
4
|
MSG_ERR_2 = "[ERROR] Format: YYYYMMDD or YYYYMMDDHHMMSS or YYYYMMDDHHMMSSU..."
|
5
5
|
MSG_ERR_3 = "[ERROR] Invalid date-time!"
|
6
6
|
MSG_ERR_4 = "[ERROR] Binary file is not found!"
|
7
|
+
MSG_ERR_5 = "[ERROR] Newton method error!"
|
7
8
|
BODIES = {earth: 3, moon: 10, sun: 11} # 天体名と JPL での天体番号
|
8
9
|
AU = 149597870700 # 1天文単位 (m)
|
9
10
|
C = 299792458 # 光速 (m/s)
|
data/lib/mk_apos/version.rb
CHANGED
data/mk_apos.gemspec
CHANGED
@@ -31,7 +31,9 @@ Gem::Specification.new do |spec|
|
|
31
31
|
spec.add_dependency "eph_jpl"
|
32
32
|
spec.add_dependency "mk_coord"
|
33
33
|
spec.add_dependency "mk_time"
|
34
|
-
spec.add_development_dependency "bundler", "~> 1.12"
|
35
|
-
spec.add_development_dependency "
|
34
|
+
#spec.add_development_dependency "bundler", "~> 1.12"
|
35
|
+
spec.add_development_dependency "bundler", ">= 2.2.10"
|
36
|
+
#spec.add_development_dependency "rake", "~> 10.0"
|
37
|
+
spec.add_development_dependency "rake", ">= 12.3.3"
|
36
38
|
spec.add_development_dependency "rspec", "~> 3.0"
|
37
39
|
end
|
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: mk_apos
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.1
|
4
|
+
version: 0.2.1
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- komasaru
|
8
|
-
autorequire:
|
8
|
+
autorequire:
|
9
9
|
bindir: exe
|
10
10
|
cert_chain: []
|
11
|
-
date:
|
11
|
+
date: 2021-05-25 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: eph_bpn
|
@@ -70,30 +70,30 @@ dependencies:
|
|
70
70
|
name: bundler
|
71
71
|
requirement: !ruby/object:Gem::Requirement
|
72
72
|
requirements:
|
73
|
-
- - "
|
73
|
+
- - ">="
|
74
74
|
- !ruby/object:Gem::Version
|
75
|
-
version:
|
75
|
+
version: 2.2.10
|
76
76
|
type: :development
|
77
77
|
prerelease: false
|
78
78
|
version_requirements: !ruby/object:Gem::Requirement
|
79
79
|
requirements:
|
80
|
-
- - "
|
80
|
+
- - ">="
|
81
81
|
- !ruby/object:Gem::Version
|
82
|
-
version:
|
82
|
+
version: 2.2.10
|
83
83
|
- !ruby/object:Gem::Dependency
|
84
84
|
name: rake
|
85
85
|
requirement: !ruby/object:Gem::Requirement
|
86
86
|
requirements:
|
87
|
-
- - "
|
87
|
+
- - ">="
|
88
88
|
- !ruby/object:Gem::Version
|
89
|
-
version:
|
89
|
+
version: 12.3.3
|
90
90
|
type: :development
|
91
91
|
prerelease: false
|
92
92
|
version_requirements: !ruby/object:Gem::Requirement
|
93
93
|
requirements:
|
94
|
-
- - "
|
94
|
+
- - ">="
|
95
95
|
- !ruby/object:Gem::Version
|
96
|
-
version:
|
96
|
+
version: 12.3.3
|
97
97
|
- !ruby/object:Gem::Dependency
|
98
98
|
name: rspec
|
99
99
|
requirement: !ruby/object:Gem::Requirement
|
@@ -138,7 +138,7 @@ homepage: https://github.com/komasaru/mk_apos
|
|
138
138
|
licenses:
|
139
139
|
- MIT
|
140
140
|
metadata: {}
|
141
|
-
post_install_message:
|
141
|
+
post_install_message:
|
142
142
|
rdoc_options: []
|
143
143
|
require_paths:
|
144
144
|
- lib
|
@@ -153,9 +153,8 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
153
153
|
- !ruby/object:Gem::Version
|
154
154
|
version: '0'
|
155
155
|
requirements: []
|
156
|
-
|
157
|
-
|
158
|
-
signing_key:
|
156
|
+
rubygems_version: 3.2.9
|
157
|
+
signing_key:
|
159
158
|
specification_version: 4
|
160
159
|
summary: Apparent position calculation tool.
|
161
160
|
test_files: []
|