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:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: b7fa51b1f90d6133fa000c7328f588af19ec0bf7c9985c72dc6c45f319844a04
|
4
|
+
data.tar.gz: cacef7a4e2db775e0a1eb16dc8216ca8d0aae914e5e0f6fd3c67cb688a774308
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: bc5115584895296ae2ce85a8151cd6a0f47925e59e0d534c2167385d6df80a0bbe642f976515a23121662d844b86768538eb3587c0632394888894e52591ceb9
|
7
|
+
data.tar.gz: 3cac31b7d257093ed7a06a04c0e0e49bd245556ef5ffa5ccb40f649a67d9be056c1a156d3f32c9446ba673218541256ae07a3b0668cd3f46fbb1255622622d63
|
data/Gemfile.lock
CHANGED
@@ -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
|
-
|
70
|
-
|
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
|
-
|
101
|
-
|
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
|
-
|
132
|
-
|
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
|
-
|
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
|
-
|
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
|
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.
|
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
|