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 CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
- SHA1:
3
- metadata.gz: fa8ede1b3c58383c1fc41348959bedb24e34c72f
4
- data.tar.gz: da78fd2c8b82bc794e3986ccbcebc2d4118e0a99
2
+ SHA256:
3
+ metadata.gz: a7e77bfad4e9fc932ae2a28c072926cf08f2f290b0fe26cd6933c7ceae350f26
4
+ data.tar.gz: bf32b745440ef0c312bfe918a594d2260b48472413db5e8e26daa85400ec20d3
5
5
  SHA512:
6
- metadata.gz: f6473dd4869c17c5f1881ec19881de77acab0738a81d4abfdbf0253071c9503df892f37b9922be14bb9ad6b22ec34aeea402212de64269c343bcbbeaa587d963
7
- data.tar.gz: 570c104c39aca9be932492d883e247ff17960b43b9a248422ceb1d1534b4bba8721d7c95250ee0c4e50961d7df21c2ab8dc7f030ef8201e90c796d7aea572654
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
@@ -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
- return [eq_pol_s, ec_pol_s]
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
- return [eq_pol_m, ec_pol_m]
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 || m > 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)
@@ -1,3 +1,3 @@
1
1
  module MkApos
2
- VERSION = "0.1.0"
2
+ VERSION = "0.2.1"
3
3
  end
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 "rake", "~> 10.0"
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.0
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: 2016-09-14 00:00:00.000000000 Z
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: '1.12'
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: '1.12'
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: '10.0'
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: '10.0'
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
- rubyforge_project:
157
- rubygems_version: 2.6.6
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: []