skymap 0.4.0 → 0.5.0
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 +4 -4
- data/CHANGELOG.md +133 -1
- data/README.md +570 -31
- data/data/LICENSE-deep_sky_objects.txt +30 -0
- data/data/LICENSE-stars.txt +35 -0
- data/data/deep_sky_objects.csv +1742 -0
- data/data/stars.bin +0 -0
- data/lib/skymap/canvas.rb +12 -3
- data/lib/skymap/catalog/deep_sky_objects.rb +60 -0
- data/lib/skymap/catalog/star_records.rb +322 -0
- data/lib/skymap/catalog/stars.rb +75 -12
- data/lib/skymap/chart.rb +18 -4
- data/lib/skymap/cone.rb +21 -0
- data/lib/skymap/context.rb +326 -8
- data/lib/skymap/deep_sky_object.rb +140 -0
- data/lib/skymap/eyepiece.rb +22 -0
- data/lib/skymap/field.rb +20 -0
- data/lib/skymap/geometry.rb +47 -0
- data/lib/skymap/horizon.rb +33 -3
- data/lib/skymap/label_placement.rb +263 -0
- data/lib/skymap/layers/cardinal_directions.rb +2 -0
- data/lib/skymap/layers/constellation_lines.rb +6 -1
- data/lib/skymap/layers/constellation_names.rb +5 -2
- data/lib/skymap/layers/deep_sky_objects.rb +128 -0
- data/lib/skymap/layers/ecliptic.rb +1 -7
- data/lib/skymap/layers/field_circles.rb +169 -0
- data/lib/skymap/layers/grid.rb +153 -0
- data/lib/skymap/layers/moon.rb +22 -12
- data/lib/skymap/layers/planets.rb +4 -0
- data/lib/skymap/layers/scale.rb +75 -0
- data/lib/skymap/layers/star_names.rb +21 -4
- data/lib/skymap/layers/stars.rb +31 -8
- data/lib/skymap/layers/sun.rb +13 -9
- data/lib/skymap/magnitude_limit.rb +15 -0
- data/lib/skymap/print_size.rb +50 -0
- data/lib/skymap/projection/oblique_stereographic.rb +87 -0
- data/lib/skymap/projection/stereographic.rb +11 -0
- data/lib/skymap/renderer/caption.rb +35 -3
- data/lib/skymap/renderer/deep_sky_symbol.rb +67 -0
- data/lib/skymap/renderer/field_circle.rb +7 -0
- data/lib/skymap/renderer/grid.rb +7 -0
- data/lib/skymap/renderer/horizon_line.rb +7 -0
- data/lib/skymap/renderer/label.rb +3 -1
- data/lib/skymap/renderer/scale_bar.rb +7 -0
- data/lib/skymap/renderer/svg.rb +204 -15
- data/lib/skymap/setup.rb +48 -0
- data/lib/skymap/star.rb +127 -2
- data/lib/skymap/star_list.rb +25 -0
- data/lib/skymap/telescope.rb +17 -0
- data/lib/skymap/theme.rb +54 -20
- data/lib/skymap/version.rb +1 -1
- data/lib/skymap/view.rb +49 -0
- data/lib/skymap.rb +24 -0
- metadata +31 -2
- data/data/stars.csv +0 -9097
data/lib/skymap/theme.rb
CHANGED
|
@@ -1,25 +1,52 @@
|
|
|
1
1
|
# frozen_string_literal: true
|
|
2
2
|
|
|
3
3
|
module Skymap
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
4
|
+
required_colors = %i[
|
|
5
|
+
background
|
|
6
|
+
sky
|
|
7
|
+
horizon
|
|
8
|
+
star
|
|
9
|
+
constellation_line
|
|
10
|
+
boundary
|
|
11
|
+
ecliptic
|
|
12
|
+
planet
|
|
13
|
+
sun
|
|
14
|
+
moon
|
|
15
|
+
moon_shadow
|
|
16
|
+
moon_shadow_opacity
|
|
17
|
+
constellation_name
|
|
18
|
+
star_name
|
|
19
|
+
planet_name
|
|
20
|
+
label
|
|
21
|
+
font
|
|
22
|
+
].freeze
|
|
23
|
+
optional_colors = {
|
|
24
|
+
grid: :boundary,
|
|
25
|
+
scale: :star_name,
|
|
26
|
+
field_circle: :planet,
|
|
27
|
+
deep_sky: :constellation_name
|
|
28
|
+
}.freeze
|
|
29
|
+
|
|
30
|
+
Theme = Data.define(*required_colors, *optional_colors.keys) do
|
|
31
|
+
const_set(:OPTIONAL_COLORS, optional_colors)
|
|
32
|
+
|
|
33
|
+
def self.check_fallbacks(optional, required)
|
|
34
|
+
optional.each do |slot, fallback|
|
|
35
|
+
next if required.include?(fallback)
|
|
36
|
+
|
|
37
|
+
raise ArgumentError,
|
|
38
|
+
"#{slot} must fall back to a required slot, not #{fallback.inspect}"
|
|
39
|
+
end
|
|
40
|
+
end
|
|
41
|
+
|
|
42
|
+
check_fallbacks(optional_colors, required_colors)
|
|
43
|
+
|
|
44
|
+
prepend(Module.new {
|
|
45
|
+
optional_colors.each do |slot, fallback|
|
|
46
|
+
define_method(slot) { super() || public_send(fallback) }
|
|
47
|
+
end
|
|
48
|
+
})
|
|
49
|
+
|
|
23
50
|
def self.dark
|
|
24
51
|
new(
|
|
25
52
|
background: "none",
|
|
@@ -29,6 +56,7 @@ module Skymap
|
|
|
29
56
|
constellation_line: "#46689c",
|
|
30
57
|
boundary: "#2b3f5e",
|
|
31
58
|
ecliptic: "#8c7a3a",
|
|
59
|
+
grid: "#22324a",
|
|
32
60
|
planet: "#ffe6b3",
|
|
33
61
|
sun: "#ffd34d",
|
|
34
62
|
moon: "#f1ecd6",
|
|
@@ -51,6 +79,7 @@ module Skymap
|
|
|
51
79
|
constellation_line: "#5b7bb0",
|
|
52
80
|
boundary: "#b8c4d9",
|
|
53
81
|
ecliptic: "#b08d1f",
|
|
82
|
+
grid: "#d5ddea",
|
|
54
83
|
planet: "#c2570c",
|
|
55
84
|
sun: "#f0a500",
|
|
56
85
|
moon: "#e8d27a",
|
|
@@ -73,6 +102,7 @@ module Skymap
|
|
|
73
102
|
constellation_line: "#8a2020",
|
|
74
103
|
boundary: "#4a1212",
|
|
75
104
|
ecliptic: "#a33a1a",
|
|
105
|
+
grid: "#3a0e0e",
|
|
76
106
|
planet: "#ff9a7a",
|
|
77
107
|
sun: "#ff8a3d",
|
|
78
108
|
moon: "#ffb3a0",
|
|
@@ -87,14 +117,18 @@ module Skymap
|
|
|
87
117
|
end
|
|
88
118
|
|
|
89
119
|
def initialize(**slots)
|
|
120
|
+
optional = self.class::OPTIONAL_COLORS
|
|
121
|
+
|
|
90
122
|
slots.except(:moon_shadow_opacity).each do |slot, value|
|
|
123
|
+
next if value.nil? && optional.key?(slot)
|
|
124
|
+
|
|
91
125
|
check_text(slot, value)
|
|
92
126
|
end
|
|
93
127
|
if slots.key?(:moon_shadow_opacity)
|
|
94
128
|
check_opacity(slots[:moon_shadow_opacity])
|
|
95
129
|
end
|
|
96
130
|
|
|
97
|
-
super
|
|
131
|
+
super(**optional.transform_values { nil }, **slots)
|
|
98
132
|
end
|
|
99
133
|
|
|
100
134
|
private
|
data/lib/skymap/version.rb
CHANGED
data/lib/skymap/view.rb
ADDED
|
@@ -0,0 +1,49 @@
|
|
|
1
|
+
# frozen_string_literal: true
|
|
2
|
+
|
|
3
|
+
module Skymap
|
|
4
|
+
View = Data.define(
|
|
5
|
+
:center,
|
|
6
|
+
:field_of_view,
|
|
7
|
+
:orientation,
|
|
8
|
+
:rotation,
|
|
9
|
+
:mirrored
|
|
10
|
+
) do
|
|
11
|
+
def initialize(
|
|
12
|
+
center:,
|
|
13
|
+
field_of_view:,
|
|
14
|
+
orientation: :zenith_up,
|
|
15
|
+
rotation: Astronoby::Angle.zero,
|
|
16
|
+
mirrored: false
|
|
17
|
+
)
|
|
18
|
+
unless center.is_a?(Astronoby::Coordinates::Equatorial) ||
|
|
19
|
+
center.is_a?(Astronoby::Coordinates::Horizontal)
|
|
20
|
+
raise ArgumentError,
|
|
21
|
+
"center must be equatorial or horizontal coordinates"
|
|
22
|
+
end
|
|
23
|
+
|
|
24
|
+
unless field_of_view.is_a?(Astronoby::Angle) &&
|
|
25
|
+
field_of_view.positive? && field_of_view.radians <= Math::PI
|
|
26
|
+
raise ArgumentError,
|
|
27
|
+
"field_of_view must be an Astronoby::Angle " \
|
|
28
|
+
"above 0 and up to 180 degrees"
|
|
29
|
+
end
|
|
30
|
+
|
|
31
|
+
unless View::ORIENTATIONS.include?(orientation)
|
|
32
|
+
raise ArgumentError,
|
|
33
|
+
"orientation must be one of #{View::ORIENTATIONS.join(", ")}"
|
|
34
|
+
end
|
|
35
|
+
|
|
36
|
+
unless rotation.is_a?(Astronoby::Angle) && rotation.radians.finite?
|
|
37
|
+
raise ArgumentError, "rotation must be an Astronoby::Angle"
|
|
38
|
+
end
|
|
39
|
+
|
|
40
|
+
unless [true, false].include?(mirrored)
|
|
41
|
+
raise ArgumentError, "mirrored must be true or false"
|
|
42
|
+
end
|
|
43
|
+
|
|
44
|
+
super
|
|
45
|
+
end
|
|
46
|
+
end
|
|
47
|
+
|
|
48
|
+
View::ORIENTATIONS = %i[zenith_up equatorial].freeze
|
|
49
|
+
end
|
data/lib/skymap.rb
CHANGED
|
@@ -6,39 +6,63 @@ require_relative "skymap/canvas"
|
|
|
6
6
|
require_relative "skymap/catalog/constellation_boundaries"
|
|
7
7
|
require_relative "skymap/catalog/constellation_lines"
|
|
8
8
|
require_relative "skymap/catalog/constellation_names"
|
|
9
|
+
require_relative "skymap/catalog/deep_sky_objects"
|
|
9
10
|
require_relative "skymap/catalog/star_names"
|
|
11
|
+
require_relative "skymap/catalog/star_records"
|
|
10
12
|
require_relative "skymap/catalog/stars"
|
|
11
13
|
require_relative "skymap/chart"
|
|
14
|
+
require_relative "skymap/cone"
|
|
12
15
|
require_relative "skymap/constellation_boundary"
|
|
13
16
|
require_relative "skymap/constellation_line"
|
|
14
17
|
require_relative "skymap/context"
|
|
18
|
+
require_relative "skymap/deep_sky_object"
|
|
19
|
+
require_relative "skymap/eyepiece"
|
|
20
|
+
require_relative "skymap/field"
|
|
21
|
+
require_relative "skymap/geometry"
|
|
15
22
|
require_relative "skymap/horizon"
|
|
23
|
+
require_relative "skymap/label_placement"
|
|
24
|
+
require_relative "skymap/magnitude_limit"
|
|
16
25
|
require_relative "skymap/layers/cardinal_directions"
|
|
17
26
|
require_relative "skymap/layers/constellation_boundaries"
|
|
18
27
|
require_relative "skymap/layers/constellation_lines"
|
|
19
28
|
require_relative "skymap/layers/constellation_names"
|
|
29
|
+
require_relative "skymap/layers/deep_sky_objects"
|
|
20
30
|
require_relative "skymap/layers/ecliptic"
|
|
31
|
+
require_relative "skymap/layers/field_circles"
|
|
32
|
+
require_relative "skymap/layers/grid"
|
|
21
33
|
require_relative "skymap/layers/moon"
|
|
22
34
|
require_relative "skymap/layers/planets"
|
|
35
|
+
require_relative "skymap/layers/scale"
|
|
23
36
|
require_relative "skymap/layers/star_names"
|
|
24
37
|
require_relative "skymap/layers/stars"
|
|
25
38
|
require_relative "skymap/layers/sun"
|
|
26
39
|
require_relative "skymap/point"
|
|
40
|
+
require_relative "skymap/print_size"
|
|
41
|
+
require_relative "skymap/projection/oblique_stereographic"
|
|
27
42
|
require_relative "skymap/projection/stereographic"
|
|
28
43
|
require_relative "skymap/renderer/boundary"
|
|
29
44
|
require_relative "skymap/renderer/caption"
|
|
45
|
+
require_relative "skymap/renderer/deep_sky_symbol"
|
|
30
46
|
require_relative "skymap/renderer/dot"
|
|
31
47
|
require_relative "skymap/renderer/ecliptic"
|
|
48
|
+
require_relative "skymap/renderer/field_circle"
|
|
49
|
+
require_relative "skymap/renderer/grid"
|
|
50
|
+
require_relative "skymap/renderer/horizon_line"
|
|
32
51
|
require_relative "skymap/renderer/label"
|
|
33
52
|
require_relative "skymap/renderer/line"
|
|
34
53
|
require_relative "skymap/renderer/moon"
|
|
35
54
|
require_relative "skymap/renderer/planet"
|
|
55
|
+
require_relative "skymap/renderer/scale_bar"
|
|
36
56
|
require_relative "skymap/renderer/sun"
|
|
37
57
|
require_relative "skymap/renderer/svg"
|
|
58
|
+
require_relative "skymap/setup"
|
|
38
59
|
require_relative "skymap/star"
|
|
60
|
+
require_relative "skymap/star_list"
|
|
39
61
|
require_relative "skymap/star_size"
|
|
62
|
+
require_relative "skymap/telescope"
|
|
40
63
|
require_relative "skymap/theme"
|
|
41
64
|
require_relative "skymap/version"
|
|
65
|
+
require_relative "skymap/view"
|
|
42
66
|
|
|
43
67
|
module Skymap
|
|
44
68
|
class Error < StandardError; end
|
metadata
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
|
2
2
|
name: skymap
|
|
3
3
|
version: !ruby/object:Gem::Version
|
|
4
|
-
version: 0.
|
|
4
|
+
version: 0.5.0
|
|
5
5
|
platform: ruby
|
|
6
6
|
authors:
|
|
7
7
|
- Rémy Hannequin
|
|
@@ -145,52 +145,81 @@ files:
|
|
|
145
145
|
- CHANGELOG.md
|
|
146
146
|
- LICENSE.txt
|
|
147
147
|
- README.md
|
|
148
|
+
- data/LICENSE-deep_sky_objects.txt
|
|
149
|
+
- data/LICENSE-stars.txt
|
|
148
150
|
- data/constellations/iau/boundaries.csv
|
|
149
151
|
- data/constellations/iau/lines.csv
|
|
150
152
|
- data/constellations/iau/names.csv
|
|
153
|
+
- data/deep_sky_objects.csv
|
|
151
154
|
- data/star_names.csv
|
|
152
|
-
- data/stars.
|
|
155
|
+
- data/stars.bin
|
|
153
156
|
- lib/skymap.rb
|
|
154
157
|
- lib/skymap/canvas.rb
|
|
155
158
|
- lib/skymap/catalog/constellation_boundaries.rb
|
|
156
159
|
- lib/skymap/catalog/constellation_lines.rb
|
|
157
160
|
- lib/skymap/catalog/constellation_names.rb
|
|
161
|
+
- lib/skymap/catalog/deep_sky_objects.rb
|
|
158
162
|
- lib/skymap/catalog/star_names.rb
|
|
163
|
+
- lib/skymap/catalog/star_records.rb
|
|
159
164
|
- lib/skymap/catalog/stars.rb
|
|
160
165
|
- lib/skymap/chart.rb
|
|
166
|
+
- lib/skymap/cone.rb
|
|
161
167
|
- lib/skymap/constellation_boundary.rb
|
|
162
168
|
- lib/skymap/constellation_line.rb
|
|
163
169
|
- lib/skymap/context.rb
|
|
170
|
+
- lib/skymap/deep_sky_object.rb
|
|
171
|
+
- lib/skymap/eyepiece.rb
|
|
172
|
+
- lib/skymap/field.rb
|
|
173
|
+
- lib/skymap/geometry.rb
|
|
164
174
|
- lib/skymap/horizon.rb
|
|
175
|
+
- lib/skymap/label_placement.rb
|
|
165
176
|
- lib/skymap/layers/cardinal_directions.rb
|
|
166
177
|
- lib/skymap/layers/constellation_boundaries.rb
|
|
167
178
|
- lib/skymap/layers/constellation_lines.rb
|
|
168
179
|
- lib/skymap/layers/constellation_names.rb
|
|
180
|
+
- lib/skymap/layers/deep_sky_objects.rb
|
|
169
181
|
- lib/skymap/layers/ecliptic.rb
|
|
182
|
+
- lib/skymap/layers/field_circles.rb
|
|
183
|
+
- lib/skymap/layers/grid.rb
|
|
170
184
|
- lib/skymap/layers/moon.rb
|
|
171
185
|
- lib/skymap/layers/planets.rb
|
|
186
|
+
- lib/skymap/layers/scale.rb
|
|
172
187
|
- lib/skymap/layers/star_names.rb
|
|
173
188
|
- lib/skymap/layers/stars.rb
|
|
174
189
|
- lib/skymap/layers/sun.rb
|
|
190
|
+
- lib/skymap/magnitude_limit.rb
|
|
175
191
|
- lib/skymap/point.rb
|
|
192
|
+
- lib/skymap/print_size.rb
|
|
193
|
+
- lib/skymap/projection/oblique_stereographic.rb
|
|
176
194
|
- lib/skymap/projection/stereographic.rb
|
|
177
195
|
- lib/skymap/renderer/boundary.rb
|
|
178
196
|
- lib/skymap/renderer/caption.rb
|
|
197
|
+
- lib/skymap/renderer/deep_sky_symbol.rb
|
|
179
198
|
- lib/skymap/renderer/dot.rb
|
|
180
199
|
- lib/skymap/renderer/ecliptic.rb
|
|
200
|
+
- lib/skymap/renderer/field_circle.rb
|
|
201
|
+
- lib/skymap/renderer/grid.rb
|
|
202
|
+
- lib/skymap/renderer/horizon_line.rb
|
|
181
203
|
- lib/skymap/renderer/label.rb
|
|
182
204
|
- lib/skymap/renderer/line.rb
|
|
183
205
|
- lib/skymap/renderer/moon.rb
|
|
184
206
|
- lib/skymap/renderer/planet.rb
|
|
207
|
+
- lib/skymap/renderer/scale_bar.rb
|
|
185
208
|
- lib/skymap/renderer/sun.rb
|
|
186
209
|
- lib/skymap/renderer/svg.rb
|
|
210
|
+
- lib/skymap/setup.rb
|
|
187
211
|
- lib/skymap/star.rb
|
|
212
|
+
- lib/skymap/star_list.rb
|
|
188
213
|
- lib/skymap/star_size.rb
|
|
214
|
+
- lib/skymap/telescope.rb
|
|
189
215
|
- lib/skymap/theme.rb
|
|
190
216
|
- lib/skymap/version.rb
|
|
217
|
+
- lib/skymap/view.rb
|
|
191
218
|
homepage: https://github.com/rhannequin/skymap
|
|
192
219
|
licenses:
|
|
193
220
|
- MIT
|
|
221
|
+
- CC-BY-SA-4.0
|
|
222
|
+
- LicenseRef-CC-BY-NC-3.0-IGO
|
|
194
223
|
metadata:
|
|
195
224
|
allowed_push_host: https://rubygems.org
|
|
196
225
|
source_code_uri: https://github.com/rhannequin/skymap
|