grid_generator 0.1.11 → 0.1.12

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
2
  SHA256:
3
- metadata.gz: 53cfa7a917357eed8d38db20a347c57cf2c8ac2a2dfe57a829fa7ba6eb8e7cf8
4
- data.tar.gz: 837b371e56a485e84b9a1ab789286fb0ee4a8e66ff08209cacb1b113e54a8228
3
+ metadata.gz: b7fa51b1f90d6133fa000c7328f588af19ec0bf7c9985c72dc6c45f319844a04
4
+ data.tar.gz: cacef7a4e2db775e0a1eb16dc8216ca8d0aae914e5e0f6fd3c67cb688a774308
5
5
  SHA512:
6
- metadata.gz: 52a24b3bc799e624491112b526db58e9fcdc40bc34f8e3bae0d12339dbd13a724066b4a765b00d2a1087e66451ed0cf0ef9fe492b617e2fb658a2578f9c861b6
7
- data.tar.gz: dd3ed5081f293a61691ab6fdcd123827db7715dbe6a330643ef7f24a433e8136560125d30ee6444746c1397684b428490ac6a8766756815b87f23d3f4c88a4c6
6
+ metadata.gz: bc5115584895296ae2ce85a8151cd6a0f47925e59e0d534c2167385d6df80a0bbe642f976515a23121662d844b86768538eb3587c0632394888894e52591ceb9
7
+ data.tar.gz: 3cac31b7d257093ed7a06a04c0e0e49bd245556ef5ffa5ccb40f649a67d9be056c1a156d3f32c9446ba673218541256ae07a3b0668cd3f46fbb1255622622d63
data/Gemfile.lock CHANGED
@@ -1,7 +1,7 @@
1
1
  PATH
2
2
  remote: .
3
3
  specs:
4
- grid_generator (0.1.11)
4
+ grid_generator (0.1.12)
5
5
  matrix (~> 0.4.2)
6
6
 
7
7
  GEM
@@ -1,5 +1,6 @@
1
1
  require_relative 'triangle_factory'
2
2
  require_relative '../rotator'
3
+ require_relative '../scaler'
3
4
 
4
5
  module GridGenerator
5
6
  module Pyraminx
@@ -7,14 +8,15 @@ module GridGenerator
7
8
  # * * *
8
9
  # * * * * *
9
10
  class Face
10
- def initialize(x:, y:, units:, elements:, rotation_angle: 0)
11
+ def initialize(x:, y:, units:, elements:, vertical_scale: 1, rotation_angle: 0)
11
12
  @x, @y = x, y
12
13
  @units = units
13
14
  @elements = elements.split('\n').map { |r| r.split(',') }
15
+ @vertical_scale = vertical_scale
14
16
  @rotation_angle = rotation_angle
15
17
  end
16
18
 
17
- attr_reader :x, :y, :units, :elements, :rotation_angle
19
+ attr_reader :x, :y, :units, :elements, :vertical_scale, :rotation_angle
18
20
 
19
21
  def size
20
22
  elements.size
@@ -35,6 +37,10 @@ module GridGenerator
35
37
  @rotator ||= GridGenerator::Rotator.new(angle: rotation_angle, rotation_point: centre_point)
36
38
  end
37
39
 
40
+ def scaler
41
+ @scaler ||= GridGenerator::Scaler.new(horizontal_scale: 1, vertical_scale: vertical_scale)
42
+ end
43
+
38
44
  def start_x_for_row(r)
39
45
  (size - 1 - r) * units / 2
40
46
  end
@@ -66,8 +72,11 @@ module GridGenerator
66
72
  point_1 = vertical_start_point_for_row(i)
67
73
  point_2 = vertical_end_point_for_row(i)
68
74
 
69
- transformed_1 = rotator.rotate(point_1) + offset
70
- transformed_2 = rotator.rotate(point_2) + offset
75
+ scaled_1 = scaler.scale(point_1)
76
+ scaled_2 = scaler.scale(point_2)
77
+
78
+ transformed_1 = rotator.rotate(scaled_1) + offset
79
+ transformed_2 = rotator.rotate(scaled_2) + offset
71
80
 
72
81
  GridGenerator::BaseLine.new(
73
82
  x1: transformed_1[0,0],
@@ -97,8 +106,11 @@ module GridGenerator
97
106
  point_1 = diagonal_down_start_point_for_row(i)
98
107
  point_2 = diagonal_down_end_point_for_row(i)
99
108
 
100
- transformed_1 = rotator.rotate(point_1) + offset
101
- transformed_2 = rotator.rotate(point_2) + offset
109
+ scaled_1 = scaler.scale(point_1)
110
+ scaled_2 = scaler.scale(point_2)
111
+
112
+ transformed_1 = rotator.rotate(scaled_1) + offset
113
+ transformed_2 = rotator.rotate(scaled_2) + offset
102
114
 
103
115
  GridGenerator::BaseLine.new(
104
116
  x1: transformed_1[0,0],
@@ -128,8 +140,11 @@ module GridGenerator
128
140
  point_1 = diagonal_up_start_point_for_row(i)
129
141
  point_2 = diagonal_up_end_point_for_row(i)
130
142
 
131
- transformed_1 = rotator.rotate(point_1) + offset
132
- transformed_2 = rotator.rotate(point_2) + offset
143
+ scaled_1 = scaler.scale(point_1)
144
+ scaled_2 = scaler.scale(point_2)
145
+
146
+ transformed_1 = rotator.rotate(scaled_1) + offset
147
+ transformed_2 = rotator.rotate(scaled_2) + offset
133
148
 
134
149
  GridGenerator::BaseLine.new(
135
150
  x1: transformed_1[0,0],
@@ -163,7 +178,8 @@ module GridGenerator
163
178
 
164
179
  def points
165
180
  [ top, bottom_left, bottom_right ].map do |point|
166
- rotator.rotate(point) + offset
181
+ scaled = scaler.scale(point)
182
+ rotator.rotate(scaled) + offset
167
183
  end
168
184
  end
169
185
 
@@ -182,7 +198,8 @@ module GridGenerator
182
198
  units: units,
183
199
  size: size,
184
200
  face: col,
185
- rotator: rotator
201
+ rotator: rotator,
202
+ scaler: scaler
186
203
  ).build unless col == '-'
187
204
  end
188
205
  end.flatten.compact
@@ -4,7 +4,7 @@ require_relative '../base_element'
4
4
  module GridGenerator
5
5
  module Pyraminx
6
6
  class TriangleFactory
7
- def initialize(x:, y:, row:, col:, units:, size:, face:, rotator:)
7
+ def initialize(x:, y:, row:, col:, units:, size:, face:, rotator:, scaler:)
8
8
  @x, @y = x, y
9
9
  @row = row
10
10
  @col = col
@@ -14,9 +14,10 @@ module GridGenerator
14
14
  @colour = face_attr && face_attr[:colour]
15
15
  @opacity = face_attr && face_attr[:opacity]
16
16
  @rotator = rotator
17
+ @scaler = scaler
17
18
  end
18
19
 
19
- attr_reader :x, :y, :row, :col, :units, :size, :colour, :opacity, :rotator
20
+ attr_reader :x, :y, :row, :col, :units, :size, :colour, :opacity, :rotator, :scaler
20
21
 
21
22
  def offset
22
23
  Matrix.column_vector([x, y])
@@ -110,7 +111,8 @@ module GridGenerator
110
111
  def points
111
112
  all_points = col % 2 == 0 ? even_points : odd_points
112
113
  all_points.map do |point|
113
- rotator.rotate(point) + offset
114
+ scaled = scaler.scale(point)
115
+ rotator.rotate(scaled) + offset
114
116
  end
115
117
  end
116
118
 
@@ -0,0 +1,18 @@
1
+ module GridGenerator
2
+ class Scaler
3
+ def initialize(horizontal_scale: 1, vertical_scale: 1)
4
+ @horizontal_scale = horizontal_scale
5
+ @vertical_scale = vertical_scale
6
+ @matrix = Matrix[
7
+ [horizontal_scale,0],
8
+ [0,vertical_scale]
9
+ ]
10
+ end
11
+
12
+ attr_reader :horizontal_scale, :vertical_scale, :matrix
13
+
14
+ def scale(point)
15
+ matrix * point
16
+ end
17
+ end
18
+ end
@@ -1,5 +1,5 @@
1
1
  # frozen_string_literal: true
2
2
 
3
3
  module GridGenerator
4
- VERSION = "0.1.11"
4
+ VERSION = "0.1.12"
5
5
  end
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: grid_generator
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.1.11
4
+ version: 0.1.12
5
5
  platform: ruby
6
6
  authors:
7
7
  - Mark Humphreys
@@ -66,6 +66,7 @@ files:
66
66
  - lib/grid_generator/pyraminx/triangle_factory.rb
67
67
  - lib/grid_generator/pyraminx/triangle_factory_v1.rb
68
68
  - lib/grid_generator/rotator.rb
69
+ - lib/grid_generator/scaler.rb
69
70
  - lib/grid_generator/skewb/left_element_factory.rb
70
71
  - lib/grid_generator/skewb/left_skewb_grid.rb
71
72
  - lib/grid_generator/skewb/right_element_factory.rb
@@ -76,7 +77,6 @@ files:
76
77
  - lib/grid_generator/square_one/element_factory.rb
77
78
  - lib/grid_generator/square_one/face.rb
78
79
  - lib/grid_generator/square_one_face_parser.rb
79
- - lib/grid_generator/transformation.rb
80
80
  - lib/grid_generator/version.rb
81
81
  - sig/grid_generator.rbs
82
82
  homepage: https://github.com/mrlhumphreys/grid_generator
@@ -1,5 +0,0 @@
1
- module GridGenerator
2
- class Transformation
3
-
4
- end
5
- end