astro_calc 0.1.3 → 0.2.0

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
2
  SHA1:
3
- metadata.gz: d3bae937f1f4e32b23b2477119fde49eaba8ea26
4
- data.tar.gz: 2a5ee8135379263084867614fb9660838174da83
3
+ metadata.gz: 31511e036e6ad014aa8f9ee6445239d877807a5c
4
+ data.tar.gz: 8bbd419eb39144b1e0fda6523a0efbe2504a35ac
5
5
  SHA512:
6
- metadata.gz: ce25c945b4ce006706b58e499bf53a2cef89b3479a726af7c044df0b1f6bc6b0a1a14351261f5144db0b49115bb74440b76cf296670971ed100ba02fcc0c4aa0
7
- data.tar.gz: 0b1a2d459d4b7bfb50e0daa0a7ec99ba73cd60bc17e05de5263b9ef59eb26a7c6690ba94755d384d464f065568b99882010ebd0776aa5a19bb7b190de6e98526
6
+ metadata.gz: 4a351113e25f3e34722367b275822bf47f75ad6fad50ab64531268bbd1bceb6f7b76a12951990a8fbe7a0bb1a012bf1383327b009f314a2f281fce67ca69219e
7
+ data.tar.gz: 3fa4329ae7633ec5806dd5fa714b689670cf39644138d19f29830024116ff590d4490c42febafb957e78dcc1276382bb3c90be5fd707f10abece87f7bc2edd09
@@ -1,5 +1,7 @@
1
1
  require "date"
2
2
 
3
+ #Credits
4
+ #{https://github.com/tingletech/moon-phase tingletech}
3
5
  class MoonPhase
4
6
  YEAR_IN_DAYS = 365.25
5
7
  LIMIT_JULIAN_CALENDAR = 2299160
@@ -88,13 +90,19 @@ class MoonPhase
88
90
  end
89
91
  end
90
92
 
91
- #normalize values to range 0...1
93
+ # Normalizes the value to be in the range 0..1
94
+ #
95
+ # @param value [Float] the value to normalize
96
+ # @return [Float] the normalized value
92
97
  def normalize(value)
93
98
  value -= value.floor
94
99
  value += 1 if value < 0
95
100
  value
96
101
  end
97
102
 
103
+ # Provides the unicode characters for the moon phase
104
+ #
105
+ # @return [String] the unicode string showing the moon phase
98
106
  def unicode
99
107
  case @phase
100
108
  when 0.0625..0.1875 then "\uD83C\uDF12"
@@ -108,13 +116,17 @@ class MoonPhase
108
116
  end
109
117
  end
110
118
 
119
+ # Calculates the magnification for a given telescope and eyepiece
120
+ #
121
+ # @param options [Hash] the options for SVG generation
122
+ # @return [String] the SVG output
111
123
  def svg(options = {})
112
124
  default_options = {
113
125
  include_style: true,
114
- height: 200,
126
+ height: "200px",
115
127
  background_color: "#111111",
116
- left: 75,
117
- top: 75,
128
+ left: "35%",
129
+ top: "75px",
118
130
  moon_color: "#CDCDCD",
119
131
  shadow_color: "#000000"
120
132
  }
@@ -124,8 +136,8 @@ class MoonPhase
124
136
 
125
137
  if options[:include_style] then
126
138
  output << "<style>"
127
- output << "#moonholder { height: #{options[:height]}px; background-color: #{options[:background_color]}; }"
128
- output << "#moon { position:absolute; left:#{options[:left]}px; top:#{options[:top]}px; }"
139
+ output << "#moonholder { height: #{options[:height]}; background-color: #{options[:background_color]}; }"
140
+ output << "#moon { position:absolute; left:#{options[:left]}; top:#{options[:top]}; }"
129
141
  output << ".moon { fill: #{options[:moon_color]}; }"
130
142
  output << ".moonback { stroke: #{options[:shadow_color]}; stroke-width: 1px; height: 180px; }"
131
143
  output << "</style>"
@@ -0,0 +1,119 @@
1
+ #Credits
2
+ #{http://www.nexstarsite.com/_RAC/articles/formulas.htm Mike Swanson}
3
+ class Telescopes
4
+
5
+ MM_IN_INCH = 25.4
6
+ RAYLEIGH_LIMIT = 5.5
7
+ DAWES_LIMIT = 4.56
8
+ UNIT_MILLIMETERS = :millimeters
9
+ UNIT_INCHES = :inches
10
+
11
+ attr_accessor :unit
12
+
13
+ def initialize(unit = UNIT_MILLIMETERS)
14
+ @unit = unit
15
+ end
16
+
17
+ # Calculates the magnification for a given telescope and eyepiece
18
+ #
19
+ # @param telescope [Integer] the focal length of the telescope tube
20
+ # @param eyepiece [Integer] the focal length of the eyepiece
21
+ # @return [Float] the magnification of the instrument
22
+ def magnification(telescope, eyepiece)
23
+ magnification = telescope / eyepiece
24
+ end
25
+
26
+ # Calculates the maximum probable magnification for a telescope
27
+ #
28
+ # @param diameter [Integer] the diameter of the telescope tube
29
+ # @return [Float] the maximum magnification usable with the given diameter
30
+ def maximum_magnification(diameter)
31
+ maximum = diameter * 2
32
+ maximum /= MM_IN_INCH if options[:unit] == UNIT_INCHES
33
+ end
34
+
35
+ # Calculates the focal ration of a telescope
36
+ #
37
+ # @param length [Integer] the focal length of the telescope
38
+ # @param aperture [Integer] the aperture of the telescope tube
39
+ # @return [Float] the focal ratio of the instrument
40
+ def focal_ratio(length, aperture)
41
+ ratio = length / aperture
42
+ end
43
+
44
+ # Calculates the diameter of the light leaving the eyepiece
45
+ #
46
+ # @param aperture [Integer] the aperture of the telescope tube
47
+ # @param magnification [Integer] the magnification of the instrument
48
+ # @return [Float] the diameter of the total light rays
49
+ def exit_pupil_for_binoculars(aperture, magnification)
50
+ exit_pupil = aperture / magnification
51
+ end
52
+
53
+ # Calculates the maximum probable magnification for a telescope
54
+ #
55
+ # @param diameter [Integer] the diameter of the telescope tube
56
+ # @return [Float] the maximum magnification usable with the given diameter
57
+ def exit_pupil_for_telescope(length, ratio)
58
+ exit_pupil = length / ratio
59
+ end
60
+
61
+ # Calculates the true field of view
62
+ #
63
+ # @param apparent [Integer] the apparent field of view of the eyepiece
64
+ # @param magnification [Integer] the magnification of the telescope and eyepiece
65
+ # @return [Float] the true field of view of the instrument
66
+ def true_field_of_view(apparent, magnification)
67
+ tfov = apparent / magnification
68
+ end
69
+
70
+ # Calculates the resolving limit of the instrument according to Rayleigh
71
+ #
72
+ # @param diameter [Integer] the diameter of the telescope tube
73
+ # @return [Float] the maximum magnification usable with the given diameter
74
+ def rayleigh_limit(aperture)
75
+ case @unit
76
+ when UNIT_MILLIMETERS
77
+ limit = RAYLEIGH_LIMIT / aperture / MM_IN_INCH
78
+ when UNIT_INCHES
79
+ limit = RAYLEIGH_LIMIT / aperture
80
+ end
81
+ end
82
+
83
+ # Calculates the resolving limit of the instrument according to Dawes
84
+ #
85
+ # @param diameter [Integer] the diameter of the telescope tube
86
+ # @return [Float] the maximum magnification usable with the given diameter
87
+ def dawes_limit(aperture)
88
+ case @unit
89
+ when UNIT_MILLIMETERS
90
+ limit = DAWES_LIMIT / aperture / MM_IN_INCH
91
+ when UNIT_INCHES
92
+ limit = DAWES_LIMIT / aperture
93
+ end
94
+ end
95
+
96
+ # Calculates the light gathering power between two instruments
97
+ #
98
+ # @param large_aperture [Integer] the aperture of the larger instrument
99
+ # @param small_aperture [Integer] the aperture of the smaller instrument
100
+ # @return [Float] the light gathering power of the instrument
101
+ def light_gathering_power(large_aperture, small_aperture)
102
+ power = (large_aperture * large_aperture) / (small_aperture * small_aperture)
103
+ end
104
+
105
+ # Calculates the maximum probable magnification for a telescope
106
+ #
107
+ # @param aperture [Integer] the aperture in centimeters of the telescope tube
108
+ # @return [Float] the maximum magnitude with the given aperture
109
+ def limiting_magnitude(aperture)
110
+ case @unit
111
+ when UNIT_MILLIMETERS
112
+ limit = 5 * Math::log10(aperture * 10) + 7.5
113
+ when UNIT_INCHES
114
+ limit = 5 * Math::log10(aperture / 2.54) + 7.5
115
+ end
116
+ end
117
+
118
+ end
119
+
@@ -1,3 +1,3 @@
1
1
  module AstroCalc
2
- VERSION = "0.1.3"
2
+ VERSION = "0.2.0"
3
3
  end
data/lib/astro_calc.rb CHANGED
@@ -1,5 +1,6 @@
1
1
  require "astro_calc/version"
2
2
  require "astro_calc/moon_phases"
3
+ require "astro_calc/telescopes"
3
4
 
4
5
  module AstroCalc
5
6
  # Your code goes here...
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: astro_calc
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.1.3
4
+ version: 0.2.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Reuben Mallaby
8
8
  autorequire:
9
9
  bindir: exe
10
10
  cert_chain: []
11
- date: 2016-03-28 00:00:00.000000000 Z
11
+ date: 2016-04-04 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: bundler
@@ -72,6 +72,7 @@ files:
72
72
  - bin/setup
73
73
  - lib/astro_calc.rb
74
74
  - lib/astro_calc/moon_phases.rb
75
+ - lib/astro_calc/telescopes.rb
75
76
  - lib/astro_calc/version.rb
76
77
  homepage: http://mallaby.me/projects/astro_calc
77
78
  licenses: