mk_greenwich 0.1.1

Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml ADDED
@@ -0,0 +1,7 @@
1
+ ---
2
+ SHA1:
3
+ metadata.gz: 577c15044a40fd368c0dc1922bdcfad86ce2adbc
4
+ data.tar.gz: ab54e375e1c5a4a0aaafebdbb96bc0fbc317057c
5
+ SHA512:
6
+ metadata.gz: 630c3cfe10dc9758910c0a625adcdb7042023479fc617931aae646df771172e4977fa9d30bad5ec51f74299afca6dab5ef175e6336be4c3323d2ae8fd47c101d
7
+ data.tar.gz: 5148bcaff4f812c041e3419752b9522de2e262a41defc3429e04b4e7b24be1649377f0e8f691f019f4ea741e74d3235380769bbc915f21457466b6511bcd7525
data/.gitignore ADDED
@@ -0,0 +1,9 @@
1
+ /.bundle/
2
+ /.yardoc
3
+ /Gemfile.lock
4
+ /_yardoc/
5
+ /coverage/
6
+ /doc/
7
+ /pkg/
8
+ /spec/reports/
9
+ /tmp/
data/.rspec ADDED
@@ -0,0 +1,2 @@
1
+ --format documentation
2
+ --color
data/.travis.yml ADDED
@@ -0,0 +1,5 @@
1
+ sudo: false
2
+ language: ruby
3
+ rvm:
4
+ - 2.3.1
5
+ before_install: gem install bundler -v 1.12.5
data/Gemfile ADDED
@@ -0,0 +1,10 @@
1
+ source 'https://rubygems.org'
2
+
3
+ # Specify your gem's dependencies in mk_greenwich.gemspec
4
+ gemspec
5
+
6
+ group :development do
7
+ gem "guard"
8
+ gem "guard-rspec", "~> 4.7.0"
9
+ end
10
+
data/Guardfile ADDED
@@ -0,0 +1,70 @@
1
+ # A sample Guardfile
2
+ # More info at https://github.com/guard/guard#readme
3
+
4
+ ## Uncomment and set this to only include directories you want to watch
5
+ # directories %w(app lib config test spec features) \
6
+ # .select{|d| Dir.exists?(d) ? d : UI.warning("Directory #{d} does not exist")}
7
+
8
+ ## Note: if you are using the `directories` clause above and you are not
9
+ ## watching the project directory ('.'), then you will want to move
10
+ ## the Guardfile to a watched dir and symlink it back, e.g.
11
+ #
12
+ # $ mkdir config
13
+ # $ mv Guardfile config/
14
+ # $ ln -s config/Guardfile .
15
+ #
16
+ # and, you'll have to watch "config/Guardfile" instead of "Guardfile"
17
+
18
+ # Note: The cmd option is now required due to the increasing number of ways
19
+ # rspec may be run, below are examples of the most common uses.
20
+ # * bundler: 'bundle exec rspec'
21
+ # * bundler binstubs: 'bin/rspec'
22
+ # * spring: 'bin/rspec' (This will use spring if running and you have
23
+ # installed the spring binstubs per the docs)
24
+ # * zeus: 'zeus rspec' (requires the server to be started separately)
25
+ # * 'just' rspec: 'rspec'
26
+
27
+ guard :rspec, cmd: "bundle exec rspec" do
28
+ require "guard/rspec/dsl"
29
+ dsl = Guard::RSpec::Dsl.new(self)
30
+
31
+ # Feel free to open issues for suggestions and improvements
32
+
33
+ # RSpec files
34
+ rspec = dsl.rspec
35
+ watch(rspec.spec_helper) { rspec.spec_dir }
36
+ watch(rspec.spec_support) { rspec.spec_dir }
37
+ watch(rspec.spec_files)
38
+
39
+ # Ruby files
40
+ ruby = dsl.ruby
41
+ dsl.watch_spec_files_for(ruby.lib_files)
42
+
43
+ ## Rails files
44
+ #rails = dsl.rails(view_extensions: %w(erb haml slim))
45
+ #dsl.watch_spec_files_for(rails.app_files)
46
+ #dsl.watch_spec_files_for(rails.views)
47
+
48
+ #watch(rails.controllers) do |m|
49
+ # [
50
+ # rspec.spec.call("routing/#{m[1]}_routing"),
51
+ # rspec.spec.call("controllers/#{m[1]}_controller"),
52
+ # rspec.spec.call("acceptance/#{m[1]}")
53
+ # ]
54
+ #end
55
+
56
+ ## Rails config changes
57
+ #watch(rails.spec_helper) { rspec.spec_dir }
58
+ #watch(rails.routes) { "#{rspec.spec_dir}/routing" }
59
+ #watch(rails.app_controller) { "#{rspec.spec_dir}/controllers" }
60
+
61
+ ## Capybara features specs
62
+ #watch(rails.view_dirs) { |m| rspec.spec.call("features/#{m[1]}") }
63
+ #watch(rails.layouts) { |m| rspec.spec.call("features/#{m[1]}") }
64
+
65
+ ## Turnip features and steps
66
+ #watch(%r{^spec/acceptance/(.+)\.feature$})
67
+ #watch(%r{^spec/acceptance/steps/(.+)_steps\.rb$}) do |m|
68
+ # Dir[File.join("**/#{m[1]}.feature")][0] || "spec/acceptance"
69
+ #end
70
+ end
data/LICENSE.txt ADDED
@@ -0,0 +1,21 @@
1
+ The MIT License (MIT)
2
+
3
+ Copyright (c) 2016 Masaru Koizumi
4
+
5
+ Permission is hereby granted, free of charge, to any person obtaining a copy
6
+ of this software and associated documentation files (the "Software"), to deal
7
+ in the Software without restriction, including without limitation the rights
8
+ to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
9
+ copies of the Software, and to permit persons to whom the Software is
10
+ furnished to do so, subject to the following conditions:
11
+
12
+ The above copyright notice and this permission notice shall be included in
13
+ all copies or substantial portions of the Software.
14
+
15
+ THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
16
+ IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
17
+ FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
18
+ AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
19
+ LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
20
+ OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
21
+ THE SOFTWARE.
data/README.md ADDED
@@ -0,0 +1,64 @@
1
+ # MkGreenwich
2
+
3
+ ## Installation
4
+
5
+ This is the gem library which calculates Greenwich time.
6
+
7
+ ```ruby
8
+ gem 'mk_greenwich'
9
+ ```
10
+
11
+ And then execute:
12
+
13
+ $ bundle
14
+
15
+ Or install it yourself as:
16
+
17
+ $ gem install mk_greenwich
18
+
19
+ ## Usage
20
+
21
+ ### Instantiation
22
+
23
+ require 'mk_greenwich'
24
+
25
+ g = MkGreenwich.new("20160906")
26
+ g = MkGreenwich.new("20160906123456")
27
+ g = MkGreenwich.new
28
+
29
+ * You can set UTC formatted "YYYYMMDD" or "YYYYMMDDHHMMSS" as an argument.
30
+ * If you don't set an argument, this class considers the system time to have been set as an argument.
31
+
32
+ ### Calculation
33
+
34
+ puts " UTC: #{g.utc.instance_eval { '%s.%03d' % [strftime('%Y-%m-%d %H:%M:%S'), (usec / 1000.0).round] }}"
35
+ puts " TT: #{g.tt.instance_eval { '%s.%03d' % [strftime('%Y-%m-%d %H:%M:%S'), (usec / 1000.0).round] }}"
36
+ puts " UT1: #{g.ut1.instance_eval { '%s.%03d' % [strftime('%Y-%m-%d %H:%M:%S'), (usec / 1000.0).round] }}"
37
+ puts " TDB: #{g.tdb.instance_eval { '%s.%03d' % [strftime('%Y-%m-%d %H:%M:%S'), (usec / 1000.0).round] }}"
38
+ puts " ERA: #{g.era}"
39
+ puts " EO: #{g.eo}"
40
+ puts "GAST: #{g.gast} rad"
41
+ puts " = #{g.gast_deg} °"
42
+ puts " = #{g.gast_hms}"
43
+ puts "GMST: #{g.gmst} rad"
44
+ puts " = #{g.gmst_deg} °"
45
+ puts " = #{g.gmst_hms}"
46
+ puts " EE: #{g.ee} rad"
47
+ puts " = #{g.ee_deg} °"
48
+ puts " = #{g.ee_hms}"
49
+
50
+ ## Development
51
+
52
+ After checking out the repo, run `bin/setup` to install dependencies. Then, run `rake spec` to run the tests. You can also run `bin/console` for an interactive prompt that will allow you to experiment.
53
+
54
+ To install this gem onto your local machine, run `bundle exec rake install`. To release a new version, update the version number in `version.rb`, and then run `bundle exec rake release`, which will create a git tag for the version, push git commits and tags, and push the `.gem` file to [rubygems.org](https://rubygems.org).
55
+
56
+ ## Contributing
57
+
58
+ Bug reports and pull requests are welcome on GitHub at https://github.com/komasaru/mk_greenwich.
59
+
60
+
61
+ ## License
62
+
63
+ The gem is available as open source under the terms of the [MIT License](http://opensource.org/licenses/MIT).
64
+
data/Rakefile ADDED
@@ -0,0 +1,6 @@
1
+ require "bundler/gem_tasks"
2
+ require "rspec/core/rake_task"
3
+
4
+ RSpec::Core::RakeTask.new(:spec)
5
+
6
+ task :default => :spec
data/bin/console ADDED
@@ -0,0 +1,14 @@
1
+ #!/usr/bin/env ruby
2
+
3
+ require "bundler/setup"
4
+ require "mk_greenwich"
5
+
6
+ # You can add fixtures and/or initialization code here to make experimenting
7
+ # with your gem easier. You can also use a different console, if you like.
8
+
9
+ # (If you use this, don't forget to add pry to your Gemfile!)
10
+ # require "pry"
11
+ # Pry.start
12
+
13
+ require "irb"
14
+ IRB.start
data/bin/setup ADDED
@@ -0,0 +1,8 @@
1
+ #!/usr/bin/env bash
2
+ set -euo pipefail
3
+ IFS=$'\n\t'
4
+ set -vx
5
+
6
+ bundle install
7
+
8
+ # Do any other automated setup that you need to do here
data/exe/mk_greenwich ADDED
@@ -0,0 +1,21 @@
1
+ #!/usr/bin/env ruby
2
+
3
+ require "mk_greenwich"
4
+
5
+ g = MkGreenwich.new(ARGV[0]) # argument should be UT
6
+ puts " UTC: #{g.utc.instance_eval { '%s.%03d' % [strftime('%Y-%m-%d %H:%M:%S'), (usec / 1000.0).round] }}"
7
+ puts " TT: #{g.tt.instance_eval { '%s.%03d' % [strftime('%Y-%m-%d %H:%M:%S'), (usec / 1000.0).round] }}"
8
+ puts " UT1: #{g.ut1.instance_eval { '%s.%03d' % [strftime('%Y-%m-%d %H:%M:%S'), (usec / 1000.0).round] }}"
9
+ puts " TDB: #{g.tdb.instance_eval { '%s.%03d' % [strftime('%Y-%m-%d %H:%M:%S'), (usec / 1000.0).round] }}"
10
+ puts " ERA: #{g.era}"
11
+ puts " EO: #{g.eo}"
12
+ puts "GAST: #{g.gast} rad"
13
+ puts " = #{g.gast_deg} °"
14
+ puts " = #{g.gast_hms}"
15
+ puts "GMST: #{g.gmst} rad"
16
+ puts " = #{g.gmst_deg} °"
17
+ puts " = #{g.gmst_hms}"
18
+ puts " EE: #{g.ee} rad"
19
+ puts " = #{g.ee_deg} °"
20
+ puts " = #{g.ee_hms}"
21
+
@@ -0,0 +1,24 @@
1
+ module MkGreenwich
2
+ class Argument
3
+ def initialize(arg)
4
+ @arg = arg
5
+ end
6
+
7
+ #=========================================================================
8
+ # 引数取得
9
+ #
10
+ # * コマンドライン引数を取得して日時の妥当性チェックを行う
11
+ # * コマンドライン引数無指定なら、現在日時とする。
12
+ #
13
+ # @return: utc (Time Object)
14
+ #=========================================================================
15
+ def get_utc
16
+ (puts Const::MSG_ERR_1; return) unless @arg =~ /^\d{8}$|^\d{14}$/
17
+ year, month, day = @arg[ 0, 4].to_i, @arg[ 4, 2].to_i, @arg[ 6, 2].to_i
18
+ hour, min, sec = @arg[ 8, 2].to_i, @arg[10, 2].to_i, @arg[12, 2].to_i
19
+ (puts Const::MSG_ERR_2; return) unless Date.valid_date?(year, month, day)
20
+ (puts Const::MSG_ERR_2; return) if hour > 23 || min > 59 || sec > 59
21
+ return Time.new(year, month, day, hour, min, sec, "+00:00")
22
+ end
23
+ end
24
+ end
@@ -0,0 +1,92 @@
1
+ require "mk_greenwich/fundamental_argument"
2
+
3
+ module MkGreenwich
4
+ class CipCio
5
+ include MkGreenwich::FundamentalArgument
6
+
7
+ #-------------------------------------------------------------------------
8
+ # Initialization
9
+ #
10
+ # @param: t (Julian Century)
11
+ #-------------------------------------------------------------------------
12
+ def initialize(t)
13
+ @t = t
14
+ end
15
+
16
+ #-------------------------------------------------------------------------
17
+ # Extract from the bias-precession-nutation matrix the X,Y coordinates
18
+ # of the Celestial Intermediate Pole.
19
+ #
20
+ # @param: r (Rotation Matrix)
21
+ # @return: [x, y] (x, y cordinates of CIP)
22
+ #-------------------------------------------------------------------------
23
+ def bpn2xy(r)
24
+ return [r[2][0], r[2][1]]
25
+ rescue => e
26
+ raise
27
+ end
28
+
29
+ #-------------------------------------------------------------------------
30
+ # The CIO locator s, positioning the Celestial Intermediate Origin on
31
+ # the equator of the Celestial Intermediate Pole, given the CIP's X,Y
32
+ # coordinates. Compatible with IAU 2006/2000A precession-nutation.
33
+ #
34
+ # @param: x (x coordinate of CIP)
35
+ # @param: y (y coordinate of CIP)
36
+ # @return: s (CIO locator (Unit: rad))
37
+ #-------------------------------------------------------------------------
38
+ def calc_s_06(x, y)
39
+ # Fundamental Arguments (from IERS Conventions 2003)
40
+ fa = [
41
+ # Mean anomaly of the Moon.(Ref: iauFal03(t))
42
+ calc_l_iers2003(@t),
43
+ # Mean anomaly of the Sun.(Ref: iauFalp03(t))
44
+ calc_p_iers2003(@t),
45
+ # Mean longitude of the Moon minus that of the ascending node.(Ref: iauFaf03(t))
46
+ calc_f_iers2003(@t),
47
+ # Mean elongation of the Moon from the Sun.(Ref: iauFad03(t))
48
+ calc_d_iers2003(@t),
49
+ # Mean longitude of the ascending node of the Moon.(Ref: iauFaom03(t))
50
+ calc_om_iers2003(@t),
51
+ # Mean longitude of Venus.(Ref: iauFave03(t))
52
+ calc_ve_iers2003(@t),
53
+ # Mean longitude of Earth.(Ref: iauFae03(t))
54
+ calc_ea_iers2003(@t),
55
+ # General precession in longitude.(Ref: iauFapa03(t))
56
+ calc_pa_iers2003(@t)
57
+ ]
58
+ # Evaluate s.
59
+ w_0, w_1, w_2, w_3, w_4, w_5 = Const::SP
60
+ (Const::S_0.size - 1).downto(0) do |i|
61
+ a = 0.0
62
+ 0.upto(7) { |j| a += Const::S_0[i][0][j] * fa[j] }
63
+ w_0 += Const::S_0[i][1] * Math.sin(a) + Const::S_0[i][2] * Math.cos(a)
64
+ end
65
+ (Const::S_1.size - 1).downto(0) do |i|
66
+ a = 0.0
67
+ 0.upto(7) { |j| a += Const::S_1[i][0][j] * fa[j] }
68
+ w_1 += Const::S_1[i][1] * Math.sin(a) + Const::S_1[i][2] * Math.cos(a)
69
+ end
70
+ (Const::S_2.size - 1).downto(0) do |i|
71
+ a = 0.0
72
+ 0.upto(7) { |j| a += Const::S_2[i][0][j] * fa[j] }
73
+ w_2 += Const::S_2[i][1] * Math.sin(a) + Const::S_2[i][2] * Math.cos(a)
74
+ end
75
+ (Const::S_3.size - 1).downto(0) do |i|
76
+ a = 0.0
77
+ 0.upto(7) { |j| a += Const::S_3[i][0][j] * fa[j] }
78
+ w_3 += Const::S_3[i][1] * Math.sin(a) + Const::S_3[i][2] * Math.cos(a)
79
+ end
80
+ (Const::S_4.size - 1).downto(0) do |i|
81
+ a = 0.0
82
+ 0.upto(7) { |j| a += Const::S_4[i][0][j] * fa[j] }
83
+ w_4 += Const::S_4[i][1] * Math.sin(a) + Const::S_4[i][2] * Math.cos(a)
84
+ end
85
+ return (w_0 + (w_1 + (w_2 + (w_3 + (w_4 + w_5 \
86
+ * @t) * @t) * @t) * @t) * @t) * Const::AS2R - x * y / 2.0
87
+ rescue => e
88
+ raise
89
+ end
90
+ end
91
+ end
92
+
@@ -0,0 +1,97 @@
1
+ module MkGreenwich
2
+ module Const
3
+ MSG_ERR_1 = "[ERROR] Format: YYYYMMDD or YYYYMMDDHHMMSS"
4
+ MSG_ERR_2 = "[ERROR] Invalid date-time!"
5
+ J2000 = 2451545.0 # Reference epoch (J2000.0), Julian Date
6
+ JC = 36525.0 # Days per Julian century
7
+ # ==== for CipCio ====
8
+ # Polynomial coefficients
9
+ SP = [94.00e-6, 3808.65e-6, -122.68e-6, -72574.11e-6, 27.98e-6, 15.62e-6]
10
+ # Terms of order t^0
11
+ S_0 = [
12
+ [[0, 0, 0, 0, 1, 0, 0, 0], -2640.73e-6, 0.39e-6],
13
+ [[0, 0, 0, 0, 2, 0, 0, 0], -63.53e-6, 0.02e-6],
14
+ [[0, 0, 2, -2, 3, 0, 0, 0], -11.75e-6, -0.01e-6],
15
+ [[0, 0, 2, -2, 1, 0, 0, 0], -11.21e-6, -0.01e-6],
16
+ [[0, 0, 2, -2, 2, 0, 0, 0], 4.57e-6, 0.00e-6],
17
+ [[0, 0, 2, 0, 3, 0, 0, 0], -2.02e-6, 0.00e-6],
18
+ [[0, 0, 2, 0, 1, 0, 0, 0], -1.98e-6, 0.00e-6],
19
+ [[0, 0, 0, 0, 3, 0, 0, 0], 1.72e-6, 0.00e-6],
20
+ [[0, 1, 0, 0, 1, 0, 0, 0], 1.41e-6, 0.01e-6],
21
+ [[0, 1, 0, 0, -1, 0, 0, 0], 1.26e-6, 0.01e-6],
22
+ [[1, 0, 0, 0, -1, 0, 0, 0], 0.63e-6, 0.00e-6],
23
+ [[1, 0, 0, 0, 1, 0, 0, 0], 0.63e-6, 0.00e-6],
24
+ [[0, 1, 2, -2, 3, 0, 0, 0], -0.46e-6, 0.00e-6],
25
+ [[0, 1, 2, -2, 1, 0, 0, 0], -0.45e-6, 0.00e-6],
26
+ [[0, 0, 4, -4, 4, 0, 0, 0], -0.36e-6, 0.00e-6],
27
+ [[0, 0, 1, -1, 1, -8, 12, 0], 0.24e-6, 0.12e-6],
28
+ [[0, 0, 2, 0, 0, 0, 0, 0], -0.32e-6, 0.00e-6],
29
+ [[0, 0, 2, 0, 2, 0, 0, 0], -0.28e-6, 0.00e-6],
30
+ [[1, 0, 2, 0, 3, 0, 0, 0], -0.27e-6, 0.00e-6],
31
+ [[1, 0, 2, 0, 1, 0, 0, 0], -0.26e-6, 0.00e-6],
32
+ [[0, 0, 2, -2, 0, 0, 0, 0], 0.21e-6, 0.00e-6],
33
+ [[0, 1, -2, 2, -3, 0, 0, 0], -0.19e-6, 0.00e-6],
34
+ [[0, 1, -2, 2, -1, 0, 0, 0], -0.18e-6, 0.00e-6],
35
+ [[0, 0, 0, 0, 0, 8,-13, -1], 0.10e-6, -0.05e-6],
36
+ [[0, 0, 0, 2, 0, 0, 0, 0], -0.15e-6, 0.00e-6],
37
+ [[2, 0, -2, 0, -1, 0, 0, 0], 0.14e-6, 0.00e-6],
38
+ [[0, 1, 2, -2, 2, 0, 0, 0], 0.14e-6, 0.00e-6],
39
+ [[1, 0, 0, -2, 1, 0, 0, 0], -0.14e-6, 0.00e-6],
40
+ [[1, 0, 0, -2, -1, 0, 0, 0], -0.14e-6, 0.00e-6],
41
+ [[0, 0, 4, -2, 4, 0, 0, 0], -0.13e-6, 0.00e-6],
42
+ [[0, 0, 2, -2, 4, 0, 0, 0], 0.11e-6, 0.00e-6],
43
+ [[1, 0, -2, 0, -3, 0, 0, 0], -0.11e-6, 0.00e-6],
44
+ [[1, 0, -2, 0, -1, 0, 0, 0], -0.11e-6, 0.00e-6]
45
+ ]
46
+ # Terms of order t^1
47
+ S_1 = [
48
+ [[0, 0, 0, 0, 2, 0, 0, 0], -0.07e-6, 3.57e-6],
49
+ [[0, 0, 0, 0, 1, 0, 0, 0], 1.73e-6, -0.03e-6],
50
+ [[0, 0, 2, -2, 3, 0, 0, 0], 0.00e-6, 0.48e-6]
51
+ ]
52
+ # Terms of order t^2
53
+ S_2 = [
54
+ [[0, 0, 0, 0, 1, 0, 0, 0], 743.52e-6, -0.17e-6],
55
+ [[0, 0, 2, -2, 2, 0, 0, 0], 56.91e-6, 0.06e-6],
56
+ [[0, 0, 2, 0, 2, 0, 0, 0], 9.84e-6, -0.01e-6],
57
+ [[0, 0, 0, 0, 2, 0, 0, 0], -8.85e-6, 0.01e-6],
58
+ [[0, 1, 0, 0, 0, 0, 0, 0], -6.38e-6, -0.05e-6],
59
+ [[1, 0, 0, 0, 0, 0, 0, 0], -3.07e-6, 0.00e-6],
60
+ [[0, 1, 2, -2, 2, 0, 0, 0], 2.23e-6, 0.00e-6],
61
+ [[0, 0, 2, 0, 1, 0, 0, 0], 1.67e-6, 0.00e-6],
62
+ [[1, 0, 2, 0, 2, 0, 0, 0], 1.30e-6, 0.00e-6],
63
+ [[0, 1, -2, 2, -2, 0, 0, 0], 0.93e-6, 0.00e-6],
64
+ [[1, 0, 0, -2, 0, 0, 0, 0], 0.68e-6, 0.00e-6],
65
+ [[0, 0, 2, -2, 1, 0, 0, 0], -0.55e-6, 0.00e-6],
66
+ [[1, 0, -2, 0, -2, 0, 0, 0], 0.53e-6, 0.00e-6],
67
+ [[0, 0, 0, 2, 0, 0, 0, 0], -0.27e-6, 0.00e-6],
68
+ [[1, 0, 0, 0, 1, 0, 0, 0], -0.27e-6, 0.00e-6],
69
+ [[1, 0, -2, -2, -2, 0, 0, 0], -0.26e-6, 0.00e-6],
70
+ [[1, 0, 0, 0, -1, 0, 0, 0], -0.25e-6, 0.00e-6],
71
+ [[1, 0, 2, 0, 1, 0, 0, 0], 0.22e-6, 0.00e-6],
72
+ [[2, 0, 0, -2, 0, 0, 0, 0], -0.21e-6, 0.00e-6],
73
+ [[2, 0, -2, 0, -1, 0, 0, 0], 0.20e-6, 0.00e-6],
74
+ [[0, 0, 2, 2, 2, 0, 0, 0], 0.17e-6, 0.00e-6],
75
+ [[2, 0, 2, 0, 2, 0, 0, 0], 0.13e-6, 0.00e-6],
76
+ [[2, 0, 0, 0, 0, 0, 0, 0], -0.13e-6, 0.00e-6],
77
+ [[1, 0, 2, -2, 2, 0, 0, 0], -0.12e-6, 0.00e-6],
78
+ [[0, 0, 2, 0, 0, 0, 0, 0], -0.11e-6, 0.00e-6]
79
+ ]
80
+ # Terms of order t^3
81
+ S_3 = [
82
+ [[0, 0, 0, 0, 1, 0, 0, 0], 0.30e-6, -23.42e-6],
83
+ [[0, 0, 2, -2, 2, 0, 0, 0], -0.03e-6, -1.46e-6],
84
+ [[0, 0, 2, 0, 2, 0, 0, 0], -0.01e-6, -0.25e-6],
85
+ [[0, 0, 0, 0, 2, 0, 0, 0], 0.00e-6, 0.23e-6]
86
+ ]
87
+ # Terms of order t^4
88
+ S_4 = [
89
+ [[0, 0, 0, 0, 1, 0, 0, 0], -0.26e-6, -0.01e-6]
90
+ ]
91
+ AS2R = 4.848136811095359935899141e-6 # Arcseconds to radians
92
+ PI = 3.141592653589793238462643 # PI
93
+ PI2 = 6.283185307179586476925287 # 2 * PI
94
+ PI_180 = 0.017453292519943295 # PI / 180
95
+ TURNAS = 1296000.0 # Arcseconds in a full circle
96
+ end
97
+ end
@@ -0,0 +1,116 @@
1
+ module MkGreenwich
2
+ #===========================================================================
3
+ # Class for
4
+ # ERA(Earth rotation angle (IAU 2000 model), 地球回転角),
5
+ # EORS(Equation of the origins, 原点差)
6
+ # GMST(Greenwich mean sidereal time, グリニッジ平均恒星時)
7
+ # GAST(Greenwich apparent sidereal time, グリニッジ視恒星時)
8
+ # EE(Equation of Equinoxes, 分点均差)
9
+ #===========================================================================
10
+ class EraEors
11
+ #-------------------------------------------------------------------------
12
+ # Initialization
13
+ #
14
+ # @param: jd (Julian Day)
15
+ #-------------------------------------------------------------------------
16
+ def initialize(jd)
17
+ @jd, @t = jd, jd - Const::J2000 # JD, JD2000.0
18
+ end
19
+
20
+ #-------------------------------------------------------------------------
21
+ # Earth rotation angle (IAU 2000 model).
22
+ #
23
+ # @param: <none>
24
+ # @return: ERA (Earth rotation angle (Unit: rad, Range: 0-2pi), 地球回転角)
25
+ #-------------------------------------------------------------------------
26
+ def calc_era(jd, t)
27
+ # Fractional part of T (days).
28
+ f = jd % 1.0
29
+ # Earth rotation angle at this UT1.
30
+ return norm_angle((f + 0.7790572732640 + 0.00273781191135448 * t) * Const::PI2)
31
+ rescue => e
32
+ raise
33
+ end
34
+
35
+ #-------------------------------------------------------------------------
36
+ # Equation of the origins, given the classical NPB matrix and the
37
+ # quantity s.
38
+ #
39
+ # @param: r (Rotation matrix)
40
+ # @param: s (CIO locator)
41
+ # @return: EO (Equation of the origin (Unit: rad), 原点差)
42
+ #-------------------------------------------------------------------------
43
+ def calc_eo(r_mtx, s)
44
+ x = r_mtx[2][0]
45
+ ax = x / (1.0 + r_mtx[2][2])
46
+ xs = 1.0 - ax * x
47
+ ys = -ax * r_mtx[2][1]
48
+ zs = -x
49
+ p = r_mtx[0][0] * xs + r_mtx[0][1] * ys + r_mtx[0][2] * zs
50
+ q = r_mtx[1][0] * xs + r_mtx[1][1] * ys + r_mtx[1][2] * zs
51
+ return (p != 0 || q != 0) ? s - Math.atan2(q, p) : s
52
+ rescue => e
53
+ raise
54
+ end
55
+
56
+ #-------------------------------------------------------------------------
57
+ # Greenwich apparent sidereal time
58
+ #
59
+ # @param: era (Earth rotation angle)
60
+ # @param: eo (Equation of the origin)
61
+ # @return: GAST (Greenwich apparent sidereal time (Unit: rad), グリニッジ視恒星時)
62
+ #-------------------------------------------------------------------------
63
+ def calc_gast(era, eo)
64
+ return norm_angle(era - eo)
65
+ rescue => e
66
+ raise
67
+ end
68
+
69
+ #-------------------------------------------------------------------------
70
+ # Greenwich mean sidereal time, IAU 2006.
71
+ #
72
+ # @param: gast (Greenwich apparent sidereal time, グリニッジ視恒星時)
73
+ # @param: t (Julian Century)
74
+ # @return: GMST (Greenwich mean sidereal time (Unit: rad), グリニッジ平均恒星時)
75
+ #-------------------------------------------------------------------------
76
+ def calc_gmst(gast, t)
77
+ return norm_angle(gast +
78
+ ( 0.014506 + \
79
+ (4612.156534 + \
80
+ ( 1.3915817 + \
81
+ ( -0.00000044 + \
82
+ ( -0.000029956 + \
83
+ ( -0.0000000368) \
84
+ * t) * t) * t) * t) * t) * Const::AS2R)
85
+ rescue => e
86
+ raise
87
+ end
88
+ #-------------------------------------------------------------------------
89
+ # Equation of Equinoxes
90
+ #
91
+ # @param: gast (Greenwich apparent sidereal time, グリニッジ視恒星時)
92
+ # @param: gmst (Greenwich mean sidereal time, グリニッジ平均恒星時)
93
+ # @return: EE (Equation of Equinoxes (Unit: rad), 分点均差)
94
+ #-------------------------------------------------------------------------
95
+ def calc_ee(gast, gmst)
96
+ return gast - gmst
97
+ rescue => e
98
+ raise
99
+ end
100
+
101
+ #-------------------------------------------------------------------------
102
+ # Normalize angle into the range 0 <= a < 2pi.
103
+ #
104
+ # @param: angle (Before normalized)
105
+ # @return: angle (Normalized angle)
106
+ #-------------------------------------------------------------------------
107
+ def norm_angle(angle)
108
+ while angle < 0; angle += Const::PI2; end
109
+ while angle > Const::PI2; angle -= Const::PI2; end
110
+ return angle
111
+ rescue => e
112
+ raise
113
+ end
114
+ end
115
+ end
116
+
@@ -0,0 +1,130 @@
1
+ module MkGreenwich
2
+ #===========================================================================
3
+ # Module for Fundamental arguments
4
+ #===========================================================================
5
+ module FundamentalArgument
6
+ module_function
7
+
8
+ #-------------------------------------------------------------------------
9
+ # Mean anomaly of the Moon (IERS 2003)
10
+ #
11
+ # @param: t (Julian Centry)
12
+ # @return: l (Unit: rad)
13
+ #-------------------------------------------------------------------------
14
+ def calc_l_iers2003(t)
15
+ return (( 485868.249036 + \
16
+ (1717915923.2178 + \
17
+ ( 31.8792 + \
18
+ ( 0.051635 + \
19
+ ( -0.00024470) \
20
+ * t) * t) * t) * t) % Const::TURNAS) * Const::AS2R
21
+ rescue => e
22
+ raise
23
+ end
24
+
25
+ #-------------------------------------------------------------------------
26
+ # Mean anomaly of the Sun (IERS 2003)
27
+ #
28
+ # @param: t (Julian Centry)
29
+ # @return: p (Unit: rad)
30
+ #-------------------------------------------------------------------------
31
+ def calc_p_iers2003(t)
32
+ return (( 1287104.793048 + \
33
+ ( 129596581.0481 + \
34
+ ( - 0.5532 + \
35
+ ( 0.000136 + \
36
+ ( - 0.00001149) \
37
+ * t) * t) * t) * t) % Const::TURNAS) * Const::AS2R
38
+ rescue => e
39
+ raise
40
+ end
41
+
42
+ #-------------------------------------------------------------------------
43
+ # Mean longitude of the Moon minus that of the ascending node (IERS 2003)
44
+ #
45
+ # @param: t (Julian Centry)
46
+ # @return: f (Unit: rad)
47
+ #-------------------------------------------------------------------------
48
+ def calc_f_iers2003(t)
49
+ return (( 335779.526232 + \
50
+ (1739527262.8478 + \
51
+ ( -12.7512 + \
52
+ ( -0.001037 + \
53
+ ( 0.00000417) \
54
+ * t) * t) * t) * t) % Const::TURNAS) * Const::AS2R
55
+ rescue => e
56
+ raise
57
+ end
58
+
59
+ #-------------------------------------------------------------------------
60
+ # mean elongation of the Moon from the Sun (IERS 2003)
61
+ #
62
+ # @param: t (Julian Centry)
63
+ # @return: d (Unit: rad)
64
+ #-------------------------------------------------------------------------
65
+ def calc_d_iers2003(t)
66
+ return (( 1072260.703692 + \
67
+ (1602961601.2090 + \
68
+ ( - 6.3706 + \
69
+ ( 0.006593 + \
70
+ ( - 0.00003169) \
71
+ * t) * t) * t) * t) % Const::TURNAS ) * Const::AS2R
72
+ rescue => e
73
+ raise
74
+ end
75
+
76
+ #-------------------------------------------------------------------------
77
+ # Mean longitude of the ascending node of the Moon (IERS 2003)
78
+ #
79
+ # @param: t (Julian Centry)
80
+ # @return: om (Unit: rad)
81
+ #-------------------------------------------------------------------------
82
+ def calc_om_iers2003(t)
83
+ return (( 450160.398036 + \
84
+ ( -6962890.5431 + \
85
+ ( 7.4722 + \
86
+ ( 0.007702 + \
87
+ ( -0.00005939) \
88
+ * t) * t) * t) * t) % Const::TURNAS) * Const::AS2R
89
+ rescue => e
90
+ raise
91
+ end
92
+
93
+ #-------------------------------------------------------------------------
94
+ # Venus longitudes (IERS 2003)
95
+ #
96
+ # @param: t (Julian Centry)
97
+ # @return: ve (Unit: rad)
98
+ #-------------------------------------------------------------------------
99
+ def calc_ve_iers2003(t)
100
+ return (3.176146697 + 1021.3285546211 * t) % Const::PI2
101
+ rescue => e
102
+ raise
103
+ end
104
+
105
+ #-------------------------------------------------------------------------
106
+ # Earth longitudes (IERS 2003)
107
+ #
108
+ # @param: t (Julian Centry)
109
+ # @return: ea (Unit: rad)
110
+ #-------------------------------------------------------------------------
111
+ def calc_ea_iers2003(t)
112
+ return (1.753470314 + 628.3075849991 * t) % Const::PI2
113
+ rescue => e
114
+ raise
115
+ end
116
+
117
+ #-------------------------------------------------------------------------
118
+ # General accumulated precession in longitude (IERS 2003)
119
+ #
120
+ # @param: t (Julian Centry)
121
+ # @return: pa (Unit: rad)
122
+ #-------------------------------------------------------------------------
123
+ def calc_pa_iers2003(t)
124
+ return (0.024381750 + 0.00000538691 * t) * t
125
+ rescue => e
126
+ raise
127
+ end
128
+ end
129
+ end
130
+
@@ -0,0 +1,213 @@
1
+ module MkGreenwich
2
+ class Greenwich
3
+ attr_reader :utc, :tt, :ut1, :tdb
4
+
5
+ def initialize(utc)
6
+ @utc = utc # 協定世界時
7
+ t_utc = MkTime.new(@utc.strftime("%Y%m%d%H%M%S"))
8
+ @tt = t_utc.tt # 地球時(for UTC)
9
+ @ut1 = t_utc.ut1 # 世界時1(for TT)
10
+ @tdb = t_utc.tdb # 太陽系力学時(for TT)
11
+ @jd = t_utc.jd # ユリウス日(for TT)
12
+ @jc = calc_jc(@jd) # ユリウス世紀数(for TT)
13
+ @jd_ut1 = MkTime.new(@ut1.strftime("%Y%m%d%H%M%S")).jd # ユリウス日(for UT1)
14
+ @t = @jd_ut1 - Const::J2000
15
+ bpn = EphBpn.new(@tdb.strftime("%Y%m%d%H%M%S"))
16
+ @r_mtx = prod_mtx(bpn.r_bias_prec, bpn.r_nut)
17
+ cc = CipCio.new(@jc)
18
+ x, y = cc.bpn2xy(@r_mtx)
19
+ @s = cc.calc_s_06(x, y)
20
+ @e = EraEors.new(@jd_ut1)
21
+ end
22
+
23
+ #=========================================================================
24
+ # Earth rotation angle
25
+ #
26
+ # * IAU 2000 model
27
+ #
28
+ # @param: <none>
29
+ # @return: @era
30
+ #=========================================================================
31
+ def era
32
+ @era = @e.calc_era(@jd, @t)
33
+ return @era
34
+ end
35
+
36
+ #=========================================================================
37
+ # Equation of the origins, given the classical NPB matrix and the
38
+ # quantity s.
39
+ #
40
+ # @param: <none>
41
+ # @return: @eo
42
+ #=========================================================================
43
+ def eo
44
+ @eo = @e.calc_eo(@r_mtx, @s)
45
+ return @eo
46
+ end
47
+
48
+ #=========================================================================
49
+ # Greenwich apparent sidereal time (Unit: rad)
50
+ #
51
+ # @param: <none>
52
+ # @return: @gast
53
+ #=========================================================================
54
+ def gast
55
+ @era = @e.calc_era(@jd, @t) unless @era
56
+ @eo = @e.calc_eo(@r_mtx, @s) unless @eo
57
+ @gast = @e.calc_gast(@era, @eo)
58
+ return @gast
59
+ end
60
+
61
+ #=========================================================================
62
+ # Greenwich apparent sidereal time (Unit: deg)
63
+ #
64
+ # @param: <none>
65
+ # @return: @gast_deg
66
+ #=========================================================================
67
+ def gast_deg
68
+ @gast = gast unless @gast
69
+ @gast_deg = @gast / Const::PI_180
70
+ return @gast_deg
71
+ end
72
+
73
+ #=========================================================================
74
+ # Greenwich apparent sidereal time (Unit: HMS)
75
+ #
76
+ # @param: <none>
77
+ # @return: @gast_hms
78
+ #=========================================================================
79
+ def gast_hms
80
+ @gast_deg = gast_deg unless @gast_deg
81
+ @gast_hms = deg2hms(@gast_deg)
82
+ return @gast_hms
83
+ end
84
+
85
+ #=========================================================================
86
+ # Greenwich mean sidereal time, IAU 2006. (Unit: rad)
87
+ #
88
+ # @param: <none>
89
+ # @return: @gmst
90
+ #=========================================================================
91
+ def gmst
92
+ @era = @e.calc_era(@jd, @t) unless @era
93
+ @gmst = @e.calc_gmst(@era, @jc)
94
+ return @gmst
95
+ end
96
+
97
+ #=========================================================================
98
+ # Greenwich mean sidereal time, IAU 2006. (Unit: deg)
99
+ #
100
+ # @param: <none>
101
+ # @return: @gmst_geg
102
+ #=========================================================================
103
+ def gmst_deg
104
+ @gmst = gmst unless @gast
105
+ @gmst_deg = @gmst / Const::PI_180
106
+ return @gmst_deg
107
+ end
108
+
109
+ #=========================================================================
110
+ # Greenwich mean sidereal time, IAU 2006. (Unit: HMS)
111
+ #
112
+ # @param: <none>
113
+ # @return: @gmst_hms
114
+ #=========================================================================
115
+ def gmst_hms
116
+ @gmst_deg = gmst_deg unless @gmst_deg
117
+ @gmst_hms = deg2hms(@gmst_deg)
118
+ return @gmst_hms
119
+ end
120
+
121
+ #=========================================================================
122
+ # Equation of Equinoxes (Unit: rad)
123
+ #
124
+ # @param: <none>
125
+ # @return: @ee
126
+ #=========================================================================
127
+ def ee
128
+ @gast = gast unless @gast
129
+ @gmst = gmst unless @gmst
130
+ @ee = @e.calc_ee(@gast, @gmst)
131
+ return @ee
132
+ end
133
+
134
+ #=========================================================================
135
+ # Equation of Equinoxes (Unit: deg)
136
+ #
137
+ # @param: <none>
138
+ # @return: @ee_deg
139
+ #=========================================================================
140
+ def ee_deg
141
+ @ee = ee unless @ee
142
+ @ee_deg = @ee / Const::PI_180
143
+ return @ee_deg
144
+ end
145
+
146
+ #=========================================================================
147
+ # Equation of Equinoxes (Unit: HMS)
148
+ #
149
+ # @param: <none>
150
+ # @return: @ee_hms
151
+ #=========================================================================
152
+ def ee_hms
153
+ @ee_deg = ee_deg unless @ee_deg
154
+ @ee_hms = deg2hms(@ee_deg)
155
+ return @ee_hms
156
+ end
157
+
158
+ private
159
+
160
+ #-------------------------------------------------------------------------
161
+ # ユリウス世紀数の計算
162
+ #
163
+ # @param: jd (Julian Day)
164
+ # @return: jc (Julian Centry)
165
+ #-------------------------------------------------------------------------
166
+ def calc_jc(jd)
167
+ return (jd - Const::J2000) / Const::JC
168
+ rescue => e
169
+ raise
170
+ end
171
+
172
+ #-------------------------------------------------------------------------
173
+ # 行列の積 (3x3)
174
+ #
175
+ # @param: r_1 (3x3-matrix)
176
+ # @param: r_2 (3x3-matrix)
177
+ # @return: r (3x3-matrix)
178
+ #-------------------------------------------------------------------------
179
+ def prod_mtx(r_1, r_2)
180
+ r = Array.new(3).map { |a| Array.new(3, 0.0) }
181
+
182
+ begin
183
+ 0.upto(2) do |i|
184
+ 0.upto(2) do |j|
185
+ r[i][j] = (0..2).inject(0.0) { |s, k| s + r_1[i][k] * r_2[k][j] }
186
+ end
187
+ end
188
+ return r
189
+ rescue => e
190
+ raise
191
+ end
192
+ end
193
+
194
+ def deg2hms(deg)
195
+ sign = ""
196
+
197
+ begin
198
+ h = (deg / 15.0).truncate
199
+ _m = (deg - h * 15.0) * 4.0
200
+ m = _m.truncate
201
+ s = (_m - m) * 60.0
202
+ if s < 0
203
+ s *= -1
204
+ sign = "-"
205
+ end
206
+ return sprintf("%s%d h %02d m %06.3f s", sign, h, m, s)
207
+ rescue => e
208
+ raise
209
+ end
210
+ end
211
+ end
212
+ end
213
+
@@ -0,0 +1,3 @@
1
+ module MkGreenwich
2
+ VERSION = "0.1.1"
3
+ end
@@ -0,0 +1,18 @@
1
+ require "date"
2
+ require "eph_bpn"
3
+ require "mk_time"
4
+ require "mk_greenwich/version"
5
+ require "mk_greenwich/argument"
6
+ require "mk_greenwich/const"
7
+ require "mk_greenwich/cip_cio"
8
+ require "mk_greenwich/era_eors"
9
+ require "mk_greenwich/greenwich"
10
+
11
+ module MkGreenwich
12
+ def self.new(arg)
13
+ arg ||= Time.now.strftime("%Y%m%d%H%M%S")
14
+ ut = MkGreenwich::Argument.new(arg).get_utc
15
+ return unless ut
16
+ return MkGreenwich::Greenwich.new(ut)
17
+ end
18
+ end
@@ -0,0 +1,35 @@
1
+ # coding: utf-8
2
+ lib = File.expand_path('../lib', __FILE__)
3
+ $LOAD_PATH.unshift(lib) unless $LOAD_PATH.include?(lib)
4
+ require 'mk_greenwich/version'
5
+
6
+ Gem::Specification.new do |spec|
7
+ spec.name = "mk_greenwich"
8
+ spec.version = MkGreenwich::VERSION
9
+ spec.authors = ["komasaru"]
10
+ spec.email = ["masaru@mk-mode.com"]
11
+
12
+ spec.summary = %q{Greenwich time calculation tool.}
13
+ spec.description = %q{MkGreenwich is a Greenwich time calculation tool.}
14
+ spec.homepage = "https://github.com/komasaru/mk_greenwich"
15
+ spec.license = "MIT"
16
+
17
+ # Prevent pushing this gem to RubyGems.org. To allow pushes either set the 'allowed_push_host'
18
+ # to allow pushing to a single host or delete this section to allow pushing to any host.
19
+ #if spec.respond_to?(:metadata)
20
+ # spec.metadata['allowed_push_host'] = "TODO: Set to 'http://mygemserver.com'"
21
+ #else
22
+ # raise "RubyGems 2.0 or newer is required to protect against public gem pushes."
23
+ #end
24
+
25
+ spec.files = `git ls-files -z`.split("\x0").reject { |f| f.match(%r{^(test|spec|features)/}) }
26
+ spec.bindir = "exe"
27
+ spec.executables = spec.files.grep(%r{^exe/}) { |f| File.basename(f) }
28
+ spec.require_paths = ["lib"]
29
+
30
+ spec.add_dependency "eph_bpn"
31
+ spec.add_dependency "mk_time"
32
+ spec.add_development_dependency "bundler", "~> 1.12"
33
+ spec.add_development_dependency "rake", "~> 10.0"
34
+ spec.add_development_dependency "rspec", "~> 3.0"
35
+ end
metadata ADDED
@@ -0,0 +1,135 @@
1
+ --- !ruby/object:Gem::Specification
2
+ name: mk_greenwich
3
+ version: !ruby/object:Gem::Version
4
+ version: 0.1.1
5
+ platform: ruby
6
+ authors:
7
+ - komasaru
8
+ autorequire:
9
+ bindir: exe
10
+ cert_chain: []
11
+ date: 2016-09-06 00:00:00.000000000 Z
12
+ dependencies:
13
+ - !ruby/object:Gem::Dependency
14
+ name: eph_bpn
15
+ requirement: !ruby/object:Gem::Requirement
16
+ requirements:
17
+ - - ">="
18
+ - !ruby/object:Gem::Version
19
+ version: '0'
20
+ type: :runtime
21
+ prerelease: false
22
+ version_requirements: !ruby/object:Gem::Requirement
23
+ requirements:
24
+ - - ">="
25
+ - !ruby/object:Gem::Version
26
+ version: '0'
27
+ - !ruby/object:Gem::Dependency
28
+ name: mk_time
29
+ requirement: !ruby/object:Gem::Requirement
30
+ requirements:
31
+ - - ">="
32
+ - !ruby/object:Gem::Version
33
+ version: '0'
34
+ type: :runtime
35
+ prerelease: false
36
+ version_requirements: !ruby/object:Gem::Requirement
37
+ requirements:
38
+ - - ">="
39
+ - !ruby/object:Gem::Version
40
+ version: '0'
41
+ - !ruby/object:Gem::Dependency
42
+ name: bundler
43
+ requirement: !ruby/object:Gem::Requirement
44
+ requirements:
45
+ - - "~>"
46
+ - !ruby/object:Gem::Version
47
+ version: '1.12'
48
+ type: :development
49
+ prerelease: false
50
+ version_requirements: !ruby/object:Gem::Requirement
51
+ requirements:
52
+ - - "~>"
53
+ - !ruby/object:Gem::Version
54
+ version: '1.12'
55
+ - !ruby/object:Gem::Dependency
56
+ name: rake
57
+ requirement: !ruby/object:Gem::Requirement
58
+ requirements:
59
+ - - "~>"
60
+ - !ruby/object:Gem::Version
61
+ version: '10.0'
62
+ type: :development
63
+ prerelease: false
64
+ version_requirements: !ruby/object:Gem::Requirement
65
+ requirements:
66
+ - - "~>"
67
+ - !ruby/object:Gem::Version
68
+ version: '10.0'
69
+ - !ruby/object:Gem::Dependency
70
+ name: rspec
71
+ requirement: !ruby/object:Gem::Requirement
72
+ requirements:
73
+ - - "~>"
74
+ - !ruby/object:Gem::Version
75
+ version: '3.0'
76
+ type: :development
77
+ prerelease: false
78
+ version_requirements: !ruby/object:Gem::Requirement
79
+ requirements:
80
+ - - "~>"
81
+ - !ruby/object:Gem::Version
82
+ version: '3.0'
83
+ description: MkGreenwich is a Greenwich time calculation tool.
84
+ email:
85
+ - masaru@mk-mode.com
86
+ executables:
87
+ - mk_greenwich
88
+ extensions: []
89
+ extra_rdoc_files: []
90
+ files:
91
+ - ".gitignore"
92
+ - ".rspec"
93
+ - ".travis.yml"
94
+ - Gemfile
95
+ - Guardfile
96
+ - LICENSE.txt
97
+ - README.md
98
+ - Rakefile
99
+ - bin/console
100
+ - bin/setup
101
+ - exe/mk_greenwich
102
+ - lib/mk_greenwich.rb
103
+ - lib/mk_greenwich/argument.rb
104
+ - lib/mk_greenwich/cip_cio.rb
105
+ - lib/mk_greenwich/const.rb
106
+ - lib/mk_greenwich/era_eors.rb
107
+ - lib/mk_greenwich/fundamental_argument.rb
108
+ - lib/mk_greenwich/greenwich.rb
109
+ - lib/mk_greenwich/version.rb
110
+ - mk_greenwich.gemspec
111
+ homepage: https://github.com/komasaru/mk_greenwich
112
+ licenses:
113
+ - MIT
114
+ metadata: {}
115
+ post_install_message:
116
+ rdoc_options: []
117
+ require_paths:
118
+ - lib
119
+ required_ruby_version: !ruby/object:Gem::Requirement
120
+ requirements:
121
+ - - ">="
122
+ - !ruby/object:Gem::Version
123
+ version: '0'
124
+ required_rubygems_version: !ruby/object:Gem::Requirement
125
+ requirements:
126
+ - - ">="
127
+ - !ruby/object:Gem::Version
128
+ version: '0'
129
+ requirements: []
130
+ rubyforge_project:
131
+ rubygems_version: 2.6.6
132
+ signing_key:
133
+ specification_version: 4
134
+ summary: Greenwich time calculation tool.
135
+ test_files: []