mk_apos 0.1.0 → 0.2.1

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 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: []