astromapper 1.0.51 → 1.1.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: 9d833ff3cc4bddbeb16e40603245b5916204a0ca
4
- data.tar.gz: 3aff41cfa30b81e257b80c5b8889062d89913e0f
3
+ metadata.gz: 3d9a36dfde13824da0135e67df60a7c8331aecd8
4
+ data.tar.gz: 8f5f3fcdac9e026fdda26572b7ad5b6901cdc3ae
5
5
  SHA512:
6
- metadata.gz: af34d49225a177d838cfb7499b230500a7767f2ebf0476d97b83487e27a1022a11648d9dbb5a827e86cbaeaed0a5dcd02c5416c717b815cb97d97202320231a1
7
- data.tar.gz: 41fb21680111903f6579666152dc92c5d1e3ea3624f6d084973039d951abd34b2edcae11392248ff309e963916a773ca281487400641fd93c4c751c5047c851f
6
+ metadata.gz: f8efcc69879ee5a75435cfe57fa22adc5af8c91cfe18dc3a9bf997374c651f2899415d29933b6f392281e39303642bb2532faf7fc3892b564a1b650b1ab9ebe4
7
+ data.tar.gz: 67053e837773e6cd6de6b7675424ff6213f4e5fc6b1863460c7be208fd351705aeda2dff0c8d6ef9b8590c0ccfe736fe935c3c8d7a64ba32210df708dd0efa25
@@ -18,6 +18,7 @@ module Astromapper
18
18
  @volumes = []
19
19
  # @routes = {}
20
20
  @routes = []
21
+ @slopes = {}
21
22
  @name = config['name']
22
23
 
23
24
  @hex = {
@@ -29,46 +30,60 @@ module Astromapper
29
30
  def from_file
30
31
  File.open(@source_filename,'r').readlines.each { |line| @volumes << line if /^\d{4}/.match(line) }
31
32
  end
33
+ def calc_route(keys,x,x1,y,y1)
34
+ route = nil
35
+ c = "%02d%02d" % [x1, y1]
36
+ k = "%02d%02d" % [x, y]
37
+ # puts "#{k}:#{c} (#{x}, #{y}) (#{x1}, #{y1})"
38
+ # Calcuate Route Distance
39
+ d = Math.sqrt((x - x1)**2 + (y - y1)**2).round(0)
40
+ return route if d == 0
41
+
42
+ # Calculate Route Slope to avoid slope collisions
43
+ s = ((x1 - x) == 0) ? 0 : ((y1 - y) / (x1 - x))
44
+ # return route if (@slopes[k].include?(s))
45
+
46
+ if (keys.include?(c) and !@routes.include?("#{k}#{c}"))
47
+ a = center_of(k)
48
+ b = center_of(c)
49
+ @slopes[k] << s
50
+ @routes << "#{c}#{k}" # reverse look-up.
51
+ route = "<!-- #{k} > #{c} --><line class='line#{d}' x1='#{a[0]}' y1='#{a[1]}' x2='#{b[0]}' y2='#{b[1]}' />"
52
+ end
53
+ return route
54
+ end
32
55
  def build_routes
33
- routes = []
56
+ routes = ["<g class='routes'>"]
34
57
  keys = @volumes.map do |v|
35
58
  v[0..3]
36
- end
37
- slopes = {}
59
+ end.sort
60
+ @slopes = {}
61
+ paths = {
62
+ "0" => (-4..4).to_a,
63
+ "1" => (-3..3).to_a,
64
+ "2" => (-3..3).to_a,
65
+ "3" => (-2..2).to_a,
66
+ "4" => (-2..2).to_a,
67
+ }
38
68
  keys.each do |k|
39
69
  x = k[0..1].to_i
40
70
  y = k[2..3].to_i
41
- # @routes[k] = [] if @routes[k].nil?
42
- slopes[k] = []
43
- (-4..4).to_a.each do |n|
44
- (-4..4).to_a.each do |m|
45
- x1 = (x + m)
46
- y1 = (y + n)
47
- next if y1 > 40
48
- next if x1 > 32
49
- # Calcuate Route Distance
50
- d = Math.sqrt((x - x1)**2 + (y - y1)**2).floor # Distance
51
- next if d == 0
52
- # Calculate Route Slope to avoid slope collisions
53
- s = 0
54
- s = (y1 - y) / (x1 - x) unless ((x1 - x) == 0)
55
- next if slopes[k].include?(s)
56
- slopes[k] << s
57
-
58
- c = "%02d%02d" % [x1, y1]
59
- # if (keys.include?(c) and !@routes[c].include?(k))
60
- if (keys.include?(c) and !@routes.include?("#{k}#{c}"))
61
- a = center_of(k)
62
- b = center_of(c)
63
- routes << "<!-- #{k} > #{c} --><line class='line#{d}' x1='#{a[0]}' y1='#{a[1]}' x2='#{b[0]}' y2='#{b[1]}' />"
64
- # @routes[k] << c
65
- # @routes[c] = [k] if @routes[c].nil?
66
- @routes << "#{c}#{k}" # reverse look-up.
71
+ @slopes[k] = []
72
+ paths.keys.each do |pk|
73
+ [pk.to_i, pk.to_i * -1].each do |m|
74
+ paths[pk].each do |n|
75
+ x1 = (x + m)
76
+ y1 = (y + n)
77
+ c = "%02d%02d" % [x1, y1]
78
+ k = "%02d%02d" % [x, y]
79
+ puts "#{k}:#{c} (#{x}, #{y}) (#{x1}, #{y1}) / (#{pk}:#{paths[pk].inspect}):(#{m}:#{n})"
80
+ routes << calc_route(keys,x,x1,y,y1)
67
81
  end
68
82
  end
69
83
  end
70
84
  end
71
- routes.join("\n")
85
+ routes << "</g>"
86
+ routes.compact.join("\n")
72
87
  end
73
88
  def convert
74
89
  from_file
@@ -120,27 +135,25 @@ module Astromapper
120
135
  }
121
136
  line {
122
137
  opacity: 0.5;
138
+ stroke-linecap: round;
123
139
  }
124
140
  line.line1 {
125
141
  stroke: #666;
126
142
  stroke-width:4;
127
143
  }
128
144
  line.line2 {
129
- stroke: #66C;
145
+ stroke: #69C;
130
146
  stroke-width:3;
131
147
  }
132
148
  line.line3 {
133
- stroke: #C60;
149
+ stroke: #C96;
134
150
  stroke-width:2;
135
- xstroke-dasharray: 5, 5, 1, 5;
136
- display:none;
151
+ stroke-dasharray: 5, 5, 1, 5;
137
152
  }
138
153
  line.line4 {
139
- stroke: #C00;
154
+ stroke: #C66;
140
155
  stroke-width:1;
141
156
  stroke-dasharray: 2,6;
142
- stroke-linecap: round;
143
- display:none;
144
157
  }
145
158
  polyline {
146
159
  fill: none;
@@ -169,6 +182,7 @@ module Astromapper
169
182
  stroke: #B90;
170
183
  stroke-width: 3;
171
184
  stroke-dasharray: 3,6;
185
+ stroke-linecap: round;
172
186
  }
173
187
  </style>
174
188
  <rect width='#{@width}' height='#{@height}' />
@@ -1,3 +1,3 @@
1
1
  module Astromapper
2
- VERSION = "1.0.51"
2
+ VERSION = "1.1.0"
3
3
  end
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: astromapper
3
3
  version: !ruby/object:Gem::Version
4
- version: 1.0.51
4
+ version: 1.1.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Merovex