plotboilerplate 1.14.0 → 1.17.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.
- package/README.md +2 -0
- package/changelog.md +57 -0
- package/dist/index.esm.js +856 -694
- package/dist/index.esm.js.map +1 -1
- package/dist/index.esm.min.js +1 -1
- package/dist/index.esm.min.js.map +1 -1
- package/dist/plotboilerplate.browser.min.js +1 -1
- package/dist/plotboilerplate.browser.min.js.map +1 -1
- package/dist/plotboilerplate.js +858 -598
- package/dist/plotboilerplate.min.js +1 -1
- package/package.json +1 -1
- package/src/cjs/BezierPath.d.ts +32 -14
- package/src/cjs/BezierPath.js +65 -24
- package/src/cjs/BezierPath.js.map +1 -1
- package/src/cjs/Bounds.d.ts +22 -1
- package/src/cjs/Bounds.js +24 -1
- package/src/cjs/Bounds.js.map +1 -1
- package/src/cjs/Circle.d.ts +15 -13
- package/src/cjs/Circle.js +16 -34
- package/src/cjs/Circle.js.map +1 -1
- package/src/cjs/CircleSector.d.ts +17 -16
- package/src/cjs/CircleSector.js +12 -24
- package/src/cjs/CircleSector.js.map +1 -1
- package/src/cjs/CubicBezierCurve.d.ts +16 -15
- package/src/cjs/CubicBezierCurve.js +57 -94
- package/src/cjs/CubicBezierCurve.js.map +1 -1
- package/src/cjs/KeyHandler.d.ts +10 -3
- package/src/cjs/KeyHandler.js +28 -23
- package/src/cjs/KeyHandler.js.map +1 -1
- package/src/cjs/Line.d.ts +2 -15
- package/src/cjs/Line.js +6 -31
- package/src/cjs/Line.js.map +1 -1
- package/src/cjs/MouseHandler.js +43 -53
- package/src/cjs/MouseHandler.js.map +1 -1
- package/src/cjs/PBImage.d.ts +15 -13
- package/src/cjs/PBImage.js +11 -15
- package/src/cjs/PBImage.js.map +1 -1
- package/src/cjs/PBText.d.ts +13 -12
- package/src/cjs/PBText.js +8 -12
- package/src/cjs/PBText.js.map +1 -1
- package/src/cjs/PlotBoilerplate.js +3 -2
- package/src/cjs/PlotBoilerplate.js.map +1 -1
- package/src/cjs/Polygon.d.ts +44 -14
- package/src/cjs/Polygon.js +116 -66
- package/src/cjs/Polygon.js.map +1 -1
- package/src/cjs/Triangle.d.ts +15 -13
- package/src/cjs/Triangle.js +23 -64
- package/src/cjs/Triangle.js.map +1 -1
- package/src/cjs/VEllipse.d.ts +14 -9
- package/src/cjs/VEllipse.js +10 -18
- package/src/cjs/VEllipse.js.map +1 -1
- package/src/cjs/VEllipseSector.d.ts +15 -1
- package/src/cjs/VEllipseSector.js +11 -1
- package/src/cjs/VEllipseSector.js.map +1 -1
- package/src/cjs/Vector.d.ts +3 -15
- package/src/cjs/Vector.js +9 -49
- package/src/cjs/Vector.js.map +1 -1
- package/src/cjs/VertTuple.d.ts +15 -1
- package/src/cjs/VertTuple.js +14 -19
- package/src/cjs/VertTuple.js.map +1 -1
- package/src/cjs/Vertex.d.ts +47 -13
- package/src/cjs/Vertex.js +62 -22
- package/src/cjs/Vertex.js.map +1 -1
- package/src/cjs/VertexListeners.d.ts +12 -8
- package/src/cjs/VertexListeners.js +18 -25
- package/src/cjs/VertexListeners.js.map +1 -1
- package/src/cjs/draw.d.ts +41 -2
- package/src/cjs/draw.js +140 -3
- package/src/cjs/draw.js.map +1 -1
- package/src/cjs/drawgl.d.ts +38 -2
- package/src/cjs/drawgl.js +41 -2
- package/src/cjs/drawgl.js.map +1 -1
- package/src/cjs/drawutilssvg.d.ts +66 -3
- package/src/cjs/drawutilssvg.js +140 -15
- package/src/cjs/drawutilssvg.js.map +1 -1
- package/src/cjs/index.d.ts +0 -1
- package/src/cjs/index.js +0 -1
- package/src/cjs/index.js.map +1 -1
- package/src/cjs/interfaces/DrawLib.d.ts +61 -26
- package/src/cjs/interfaces/DrawLib.js +2 -0
- package/src/cjs/interfaces/DrawLib.js.map +1 -1
- package/src/cjs/interfaces/core.d.ts +0 -12
- package/src/cjs/module.d.ts +1 -3
- package/src/cjs/module.js +2 -5
- package/src/cjs/module.js.map +1 -1
- package/src/cjs/utils/creategui.js +16 -2
- package/src/cjs/utils/datastructures/Girih.d.ts +5 -0
- package/src/cjs/utils/datastructures/Girih.js +18 -14
- package/src/cjs/utils/datastructures/Girih.js.map +1 -1
- package/src/cjs/utils/datastructures/GirihPenroseRhombus.js +42 -25
- package/src/cjs/utils/datastructures/GirihPenroseRhombus.js.map +1 -1
- package/src/cjs/utils/datastructures/GirihTile.js +2 -13
- package/src/cjs/utils/datastructures/GirihTile.js.map +1 -1
- package/src/cjs/utils/findInVertexArray.d.ts +19 -0
- package/src/cjs/utils/findInVertexArray.js +29 -0
- package/src/cjs/utils/findInVertexArray.js.map +1 -0
- package/src/cjs/utils/helpers/BezierPathInteractionHelper.d.ts +17 -1
- package/src/cjs/utils/helpers/BezierPathInteractionHelper.js +50 -32
- package/src/cjs/utils/helpers/BezierPathInteractionHelper.js.map +1 -1
- package/src/cjs/utils/io/DndFileHandler.d.ts +63 -0
- package/src/cjs/utils/io/DndFileHandler.js +112 -0
- package/src/cjs/utils/io/DndFileHandler.js.map +1 -0
- package/src/cjs/utils/io/FileDrop.d.ts +98 -0
- package/src/cjs/utils/io/FileDrop.js +142 -0
- package/src/cjs/utils/io/FileDrop.js.map +1 -0
- package/src/esm/BezierPath.d.ts +32 -14
- package/src/esm/BezierPath.js +65 -24
- package/src/esm/BezierPath.js.map +1 -1
- package/src/esm/Bounds.d.ts +22 -1
- package/src/esm/Bounds.js +24 -1
- package/src/esm/Bounds.js.map +1 -1
- package/src/esm/Circle.d.ts +15 -13
- package/src/esm/Circle.js +16 -34
- package/src/esm/Circle.js.map +1 -1
- package/src/esm/CircleSector.d.ts +17 -16
- package/src/esm/CircleSector.js +12 -24
- package/src/esm/CircleSector.js.map +1 -1
- package/src/esm/CubicBezierCurve.d.ts +16 -15
- package/src/esm/CubicBezierCurve.js +57 -94
- package/src/esm/CubicBezierCurve.js.map +1 -1
- package/src/esm/KeyHandler.d.ts +10 -3
- package/src/esm/KeyHandler.js +28 -23
- package/src/esm/KeyHandler.js.map +1 -1
- package/src/esm/Line.d.ts +2 -15
- package/src/esm/Line.js +6 -31
- package/src/esm/Line.js.map +1 -1
- package/src/esm/MouseHandler.js +43 -53
- package/src/esm/MouseHandler.js.map +1 -1
- package/src/esm/PBImage.d.ts +15 -13
- package/src/esm/PBImage.js +11 -15
- package/src/esm/PBImage.js.map +1 -1
- package/src/esm/PBText.d.ts +13 -12
- package/src/esm/PBText.js +8 -12
- package/src/esm/PBText.js.map +1 -1
- package/src/esm/PlotBoilerplate.js +3 -2
- package/src/esm/PlotBoilerplate.js.map +1 -1
- package/src/esm/Polygon.d.ts +44 -14
- package/src/esm/Polygon.js +116 -66
- package/src/esm/Polygon.js.map +1 -1
- package/src/esm/Triangle.d.ts +15 -13
- package/src/esm/Triangle.js +23 -64
- package/src/esm/Triangle.js.map +1 -1
- package/src/esm/VEllipse.d.ts +14 -9
- package/src/esm/VEllipse.js +10 -18
- package/src/esm/VEllipse.js.map +1 -1
- package/src/esm/VEllipseSector.d.ts +15 -1
- package/src/esm/VEllipseSector.js +11 -1
- package/src/esm/VEllipseSector.js.map +1 -1
- package/src/esm/Vector.d.ts +3 -15
- package/src/esm/Vector.js +9 -49
- package/src/esm/Vector.js.map +1 -1
- package/src/esm/VertTuple.d.ts +15 -1
- package/src/esm/VertTuple.js +14 -19
- package/src/esm/VertTuple.js.map +1 -1
- package/src/esm/Vertex.d.ts +47 -13
- package/src/esm/Vertex.js +62 -22
- package/src/esm/Vertex.js.map +1 -1
- package/src/esm/VertexListeners.d.ts +12 -8
- package/src/esm/VertexListeners.js +18 -25
- package/src/esm/VertexListeners.js.map +1 -1
- package/src/esm/draw.d.ts +41 -2
- package/src/esm/draw.js +139 -3
- package/src/esm/draw.js.map +1 -1
- package/src/esm/drawgl.d.ts +38 -2
- package/src/esm/drawgl.js +41 -2
- package/src/esm/drawgl.js.map +1 -1
- package/src/esm/drawutilssvg.d.ts +66 -3
- package/src/esm/drawutilssvg.js +140 -15
- package/src/esm/drawutilssvg.js.map +1 -1
- package/src/esm/index.d.ts +0 -1
- package/src/esm/index.js +0 -1
- package/src/esm/index.js.map +1 -1
- package/src/esm/interfaces/DrawLib.d.ts +61 -26
- package/src/esm/interfaces/DrawLib.js +2 -0
- package/src/esm/interfaces/DrawLib.js.map +1 -1
- package/src/esm/interfaces/core.d.ts +0 -12
- package/src/esm/module.d.ts +1 -3
- package/src/esm/module.js +5 -4
- package/src/esm/module.js.map +1 -1
- package/src/esm/utils/datastructures/Girih.d.ts +5 -0
- package/src/esm/utils/datastructures/Girih.js +18 -14
- package/src/esm/utils/datastructures/Girih.js.map +1 -1
- package/src/esm/utils/datastructures/GirihPenroseRhombus.js +42 -25
- package/src/esm/utils/datastructures/GirihPenroseRhombus.js.map +1 -1
- package/src/esm/utils/datastructures/GirihTile.js +2 -13
- package/src/esm/utils/datastructures/GirihTile.js.map +1 -1
- package/src/esm/utils/findInVertexArray.d.ts +19 -0
- package/src/esm/utils/findInVertexArray.js +25 -0
- package/src/esm/utils/findInVertexArray.js.map +1 -0
- package/src/esm/utils/helpers/BezierPathInteractionHelper.d.ts +17 -1
- package/src/esm/utils/helpers/BezierPathInteractionHelper.js +49 -32
- package/src/esm/utils/helpers/BezierPathInteractionHelper.js.map +1 -1
- package/src/esm/utils/io/DndFileHandler.d.ts +63 -0
- package/src/esm/utils/io/DndFileHandler.js +106 -0
- package/src/esm/utils/io/DndFileHandler.js.map +1 -0
- package/src/esm/utils/io/FileDrop.d.ts +98 -0
- package/src/esm/utils/io/FileDrop.js +136 -0
- package/src/esm/utils/io/FileDrop.js.map +1 -0
- package/src/ts/BezierPath.ts +78 -22
- package/src/ts/Bounds.ts +25 -1
- package/src/ts/Circle.ts +187 -200
- package/src/ts/CircleSector.ts +141 -141
- package/src/ts/CubicBezierCurve.ts +738 -810
- package/src/ts/KeyHandler.ts +221 -212
- package/src/ts/Line.ts +48 -80
- package/src/ts/MouseHandler.ts +356 -368
- package/src/ts/PBImage.ts +67 -69
- package/src/ts/PBText.ts +16 -14
- package/src/ts/PlotBoilerplate.ts +4 -2
- package/src/ts/Polygon.ts +493 -451
- package/src/ts/Triangle.ts +444 -489
- package/src/ts/VEllipse.ts +18 -17
- package/src/ts/VEllipseSector.ts +20 -1
- package/src/ts/Vector.ts +124 -160
- package/src/ts/VertTuple.ts +333 -338
- package/src/ts/Vertex.ts +75 -21
- package/src/ts/VertexListeners.ts +248 -266
- package/src/ts/draw.ts +192 -3
- package/src/ts/drawgl.ts +44 -2
- package/src/ts/drawutilssvg.ts +181 -15
- package/src/ts/index.ts +0 -1
- package/src/ts/interfaces/DrawLib.ts +69 -26
- package/src/ts/interfaces/core.ts +0 -11
- package/src/ts/module.ts +2 -4
- package/src/ts/utils/datastructures/Girih.ts +204 -209
- package/src/ts/utils/datastructures/GirihPenroseRhombus.ts +170 -152
- package/src/ts/utils/datastructures/GirihTile.ts +394 -419
- package/src/ts/utils/findInVertexArray.ts +28 -0
- package/src/ts/utils/helpers/BezierPathInteractionHelper.ts +56 -34
- package/src/ts/utils/io/FileDrop.ts +178 -0
- package/src/ts/SVGBuilder.ts +0 -109
- package/src/ts/utils/algorithms/sh-tmp.ts~ +0 -59
|
@@ -15,8 +15,6 @@ import { GirihPenroseRhombus } from "./GirihPenroseRhombus";
|
|
|
15
15
|
import { GirihPentagon } from "./GirihPentagon";
|
|
16
16
|
import { GirihRhombus } from "./GirihRhombus";
|
|
17
17
|
|
|
18
|
-
|
|
19
|
-
|
|
20
18
|
/**
|
|
21
19
|
* @classdesc The Girih datastructure for generating patterns.
|
|
22
20
|
*
|
|
@@ -30,210 +28,207 @@ import { GirihRhombus } from "./GirihRhombus";
|
|
|
30
28
|
* @requires GirihRhombus
|
|
31
29
|
*/
|
|
32
30
|
export class Girih {
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
|
|
64
|
-
|
|
65
|
-
|
|
66
|
-
|
|
67
|
-
|
|
68
|
-
|
|
69
|
-
|
|
70
|
-
|
|
71
|
-
|
|
72
|
-
|
|
73
|
-
|
|
74
|
-
|
|
75
|
-
|
|
76
|
-
|
|
77
|
-
|
|
78
|
-
|
|
79
|
-
|
|
80
|
-
|
|
81
|
-
|
|
82
|
-
|
|
83
|
-
|
|
84
|
-
|
|
85
|
-
|
|
86
|
-
|
|
87
|
-
|
|
88
|
-
|
|
89
|
-
|
|
90
|
-
|
|
91
|
-
|
|
92
|
-
|
|
93
|
-
|
|
94
|
-
|
|
95
|
-
|
|
96
|
-
|
|
97
|
-
|
|
98
|
-
|
|
99
|
-
|
|
100
|
-
|
|
101
|
-
|
|
102
|
-
|
|
103
|
-
|
|
104
|
-
|
|
105
|
-
|
|
106
|
-
|
|
107
|
-
|
|
108
|
-
|
|
109
|
-
|
|
110
|
-
|
|
111
|
-
|
|
112
|
-
|
|
113
|
-
|
|
114
|
-
|
|
115
|
-
|
|
116
|
-
|
|
117
|
-
|
|
118
|
-
|
|
119
|
-
|
|
120
|
-
|
|
121
|
-
|
|
122
|
-
|
|
123
|
-
|
|
124
|
-
|
|
125
|
-
|
|
126
|
-
|
|
127
|
-
|
|
128
|
-
|
|
129
|
-
|
|
130
|
-
|
|
131
|
-
|
|
132
|
-
|
|
133
|
-
|
|
134
|
-
|
|
135
|
-
|
|
136
|
-
|
|
137
|
-
|
|
138
|
-
|
|
139
|
-
|
|
140
|
-
|
|
141
|
-
|
|
142
|
-
|
|
143
|
-
|
|
144
|
-
|
|
145
|
-
|
|
146
|
-
|
|
147
|
-
|
|
148
|
-
|
|
149
|
-
|
|
150
|
-
|
|
151
|
-
|
|
152
|
-
|
|
153
|
-
|
|
154
|
-
|
|
155
|
-
|
|
156
|
-
|
|
157
|
-
|
|
158
|
-
|
|
159
|
-
|
|
160
|
-
|
|
161
|
-
|
|
162
|
-
|
|
163
|
-
|
|
164
|
-
|
|
165
|
-
|
|
166
|
-
|
|
167
|
-
|
|
168
|
-
|
|
169
|
-
|
|
170
|
-
|
|
171
|
-
|
|
172
|
-
|
|
173
|
-
|
|
174
|
-
|
|
175
|
-
|
|
176
|
-
|
|
177
|
-
|
|
178
|
-
|
|
179
|
-
|
|
180
|
-
|
|
181
|
-
|
|
182
|
-
|
|
183
|
-
|
|
184
|
-
|
|
185
|
-
|
|
186
|
-
|
|
187
|
-
|
|
188
|
-
|
|
189
|
-
|
|
190
|
-
|
|
191
|
-
|
|
192
|
-
|
|
193
|
-
|
|
194
|
-
|
|
195
|
-
|
|
196
|
-
|
|
197
|
-
|
|
198
|
-
|
|
199
|
-
|
|
200
|
-
|
|
201
|
-
|
|
202
|
-
|
|
203
|
-
|
|
204
|
-
|
|
205
|
-
|
|
206
|
-
|
|
207
|
-
|
|
208
|
-
|
|
209
|
-
|
|
210
|
-
|
|
211
|
-
|
|
212
|
-
|
|
213
|
-
|
|
214
|
-
|
|
215
|
-
|
|
216
|
-
|
|
217
|
-
|
|
218
|
-
|
|
219
|
-
|
|
220
|
-
|
|
221
|
-
|
|
222
|
-
|
|
223
|
-
|
|
224
|
-
|
|
225
|
-
|
|
226
|
-
|
|
227
|
-
|
|
228
|
-
|
|
229
|
-
|
|
230
|
-
|
|
231
|
-
|
|
232
|
-
|
|
233
|
-
|
|
234
|
-
|
|
235
|
-
|
|
236
|
-
|
|
237
|
-
|
|
238
|
-
}; // END class Girih
|
|
239
|
-
|
|
31
|
+
/**
|
|
32
|
+
* The edge length to use in this Girih pattern.
|
|
33
|
+
*
|
|
34
|
+
* @member {number}
|
|
35
|
+
* @memberof Girih
|
|
36
|
+
* @type {number}
|
|
37
|
+
* @instance
|
|
38
|
+
*/
|
|
39
|
+
public readonly edgeLength: number;
|
|
40
|
+
|
|
41
|
+
/**
|
|
42
|
+
* An array of all available Girih tiles. Use them as templates for copy-and-paste.
|
|
43
|
+
*
|
|
44
|
+
* @member {Array<GirihTile>}
|
|
45
|
+
* @memberof Girih
|
|
46
|
+
* @type {Array<GirihTile>}
|
|
47
|
+
* @instance
|
|
48
|
+
*/
|
|
49
|
+
public readonly TILE_TEMPLATES: Array<GirihTile>;
|
|
50
|
+
|
|
51
|
+
/**
|
|
52
|
+
* The actual set of Girih tiles used in this Girih pattern.
|
|
53
|
+
*
|
|
54
|
+
* @member {Array<GirihTile>}
|
|
55
|
+
* @memberof Girih
|
|
56
|
+
* @type {Array<GirihTile>}
|
|
57
|
+
* @instance
|
|
58
|
+
*/
|
|
59
|
+
public readonly tiles: Array<GirihTile>;
|
|
60
|
+
|
|
61
|
+
/**
|
|
62
|
+
* Create a new empty Girih pattern.
|
|
63
|
+
*
|
|
64
|
+
* @constructor
|
|
65
|
+
* @memberof Girih
|
|
66
|
+
* @param {number} edgeLength
|
|
67
|
+
*/
|
|
68
|
+
constructor(edgeLength: number) {
|
|
69
|
+
this.edgeLength = edgeLength;
|
|
70
|
+
|
|
71
|
+
// Initialize templates, one for each Girih tile type.
|
|
72
|
+
// The template array will be filled on initialization (see below).
|
|
73
|
+
this.TILE_TEMPLATES = [];
|
|
74
|
+
|
|
75
|
+
// The set of all Girih tiles in scene
|
|
76
|
+
this.tiles = [];
|
|
77
|
+
|
|
78
|
+
this.initTemplates(edgeLength);
|
|
79
|
+
}
|
|
80
|
+
|
|
81
|
+
/**
|
|
82
|
+
* Initialize the TILE_TEMPLATES array.
|
|
83
|
+
*
|
|
84
|
+
* @name initTemplates
|
|
85
|
+
* @private
|
|
86
|
+
* @memberof Girih
|
|
87
|
+
* @instance
|
|
88
|
+
* @param {number} edgeLength - The edge length to use for the template tiles.
|
|
89
|
+
* @return {void}
|
|
90
|
+
*/
|
|
91
|
+
private initTemplates(edgeLength: number): void {
|
|
92
|
+
// Positions actually don't matter here.
|
|
93
|
+
// Tiles will be moved to correct position conerning adjacency.
|
|
94
|
+
var decagon = new GirihDecagon(new Vertex(0, 0), edgeLength);
|
|
95
|
+
var pentagon = new GirihPentagon(new Vertex(0, 0), edgeLength);
|
|
96
|
+
var hexagon = new GirihHexagon(new Vertex(0, 0), edgeLength);
|
|
97
|
+
var bowtie = new GirihBowtie(new Vertex(0, 0), edgeLength);
|
|
98
|
+
var rhombus = new GirihRhombus(new Vertex(0, 0), edgeLength);
|
|
99
|
+
var penrose = new GirihPenroseRhombus(new Vertex(0, 0), edgeLength, true); // Add center polygon
|
|
100
|
+
|
|
101
|
+
// Add tiles to array and put them in the correct adjacency position.
|
|
102
|
+
this.TILE_TEMPLATES.push(decagon);
|
|
103
|
+
this.TILE_TEMPLATES.push(decagon.transformTilePositionToAdjacency(2, pentagon));
|
|
104
|
+
this.TILE_TEMPLATES.push(pentagon.transformTilePositionToAdjacency(1, penrose));
|
|
105
|
+
this.TILE_TEMPLATES.push(penrose.transformTilePositionToAdjacency(3, hexagon));
|
|
106
|
+
this.TILE_TEMPLATES.push(decagon.transformTilePositionToAdjacency(5, bowtie));
|
|
107
|
+
this.TILE_TEMPLATES.push(pentagon.transformTilePositionToAdjacency(4, rhombus));
|
|
108
|
+
}
|
|
109
|
+
|
|
110
|
+
/**
|
|
111
|
+
* Add a new tile to this Girih pattern.
|
|
112
|
+
*
|
|
113
|
+
* @name addTile
|
|
114
|
+
* @memberof Girih
|
|
115
|
+
* @instance
|
|
116
|
+
* @param {GirihTile} tile - The tile to add (instance must not already be part of this pattern).
|
|
117
|
+
* @return {void}
|
|
118
|
+
*/
|
|
119
|
+
addTile(tile: GirihTile): void {
|
|
120
|
+
this.tiles.push(tile);
|
|
121
|
+
}
|
|
122
|
+
|
|
123
|
+
/**
|
|
124
|
+
* Remove the tile at given array position. The index must be inside valid bounds.
|
|
125
|
+
*
|
|
126
|
+
* @name removeTile
|
|
127
|
+
* @memberof Girih
|
|
128
|
+
* @instance
|
|
129
|
+
* @param {number} index - The index in the `tiles` Array.
|
|
130
|
+
* @return {void}
|
|
131
|
+
*/
|
|
132
|
+
removeTileAt(index: number): void {
|
|
133
|
+
this.tiles.splice(index, 1);
|
|
134
|
+
}
|
|
135
|
+
|
|
136
|
+
/**
|
|
137
|
+
*
|
|
138
|
+
* @param tiles
|
|
139
|
+
*/
|
|
140
|
+
replaceTiles(tiles: GirihTile): void {
|
|
141
|
+
this.tiles.splice(0, this.tiles.length);
|
|
142
|
+
for (var i in tiles) {
|
|
143
|
+
this.addTile(tiles[i]);
|
|
144
|
+
}
|
|
145
|
+
}
|
|
146
|
+
|
|
147
|
+
/**
|
|
148
|
+
* Find that tile (index) which contains the given position. First match will be returned.
|
|
149
|
+
*
|
|
150
|
+
* @name locateContainingTile
|
|
151
|
+
* @memberof Girih
|
|
152
|
+
* @instance
|
|
153
|
+
* @param {Vertex} position
|
|
154
|
+
* @return {number} The index of the containing tile or -1 if none was found.
|
|
155
|
+
**/
|
|
156
|
+
locateConatiningTile(position: Vertex): number {
|
|
157
|
+
for (var i = 0; i < this.tiles.length; i++) {
|
|
158
|
+
if (this.tiles[i].containsVert(position)) return i;
|
|
159
|
+
}
|
|
160
|
+
return -1;
|
|
161
|
+
}
|
|
162
|
+
|
|
163
|
+
/**
|
|
164
|
+
* Turn the tile the mouse is hovering over.
|
|
165
|
+
* The turnCount is ab abstract number: -1 for one turn left, +1 for one turn right.
|
|
166
|
+
* The turning angle is defined by the tile with the lowest turn symmetry: the Decagon,
|
|
167
|
+
* so angle is 36°.
|
|
168
|
+
*
|
|
169
|
+
* @name turnTile
|
|
170
|
+
* @memberof Girih
|
|
171
|
+
* @instance
|
|
172
|
+
* @param {number} tileIndex - The index of the tile to rotate.
|
|
173
|
+
* @param {number} turnCount - A discrete number indicating the number of turn steps.
|
|
174
|
+
* @return {void}
|
|
175
|
+
*/
|
|
176
|
+
turnTile(tileIndex: number, turnCount: number): void {
|
|
177
|
+
if (tileIndex == -1)
|
|
178
|
+
// TODO: still required?
|
|
179
|
+
return;
|
|
180
|
+
const tile: GirihTile = this.tiles[tileIndex];
|
|
181
|
+
tile.rotate((turnCount * Math.PI * 2) / tile.symmetry);
|
|
182
|
+
}
|
|
183
|
+
|
|
184
|
+
/**
|
|
185
|
+
* Move that tile the mouse is hovering over.
|
|
186
|
+
* The move amounts are abstract numbers, 1 indicating one unit along each axis.
|
|
187
|
+
*
|
|
188
|
+
* @name moveTile
|
|
189
|
+
* @memberof Girih
|
|
190
|
+
* @instance
|
|
191
|
+
* @param {number} tileIndex - The index of the tile to rotate.
|
|
192
|
+
* @param {number} moveXAmount - The amount to move along the x axis (in pixels).
|
|
193
|
+
* @param {number} moveYAmount - The amount to move along the y axis (in pixels).
|
|
194
|
+
* @return {void}
|
|
195
|
+
*/
|
|
196
|
+
moveTile(tileIndex: number, moveXAmount: number, moveYAmount: number): void {
|
|
197
|
+
if (tileIndex == -1)
|
|
198
|
+
// TODO: still required?
|
|
199
|
+
return;
|
|
200
|
+
const tile: GirihTile = this.tiles[tileIndex];
|
|
201
|
+
tile.move({ x: moveXAmount * 10, y: moveYAmount * 10 });
|
|
202
|
+
}
|
|
203
|
+
|
|
204
|
+
/**
|
|
205
|
+
* Find all possible adjadent tiles and their locations (type, rotation and offset). The
|
|
206
|
+
* function will return an array of all possible tiles matching at the given tile and edge.
|
|
207
|
+
*
|
|
208
|
+
* @name findPossibleAdjacentTiles
|
|
209
|
+
* @memberof Girih
|
|
210
|
+
* @instance
|
|
211
|
+
* @param {number} tileIndex - The index of the tile to rotate.
|
|
212
|
+
* @param {number} edgeIndex - The index of the tile's edge.
|
|
213
|
+
* @return {Array<GirihTile>} - An array of possible adjecent tiles (already positioned and rotated).
|
|
214
|
+
*/
|
|
215
|
+
findPossibleAdjacentTiles(tileIndex: number, edgeIndex: number): Array<GirihTile> {
|
|
216
|
+
var adjTiles: Array<GirihTile> = [];
|
|
217
|
+
if (tileIndex == -1 || edgeIndex == -1)
|
|
218
|
+
// TODO: still required?
|
|
219
|
+
return [];
|
|
220
|
+
|
|
221
|
+
let template: GirihTile = null;
|
|
222
|
+
for (var i in this.TILE_TEMPLATES) {
|
|
223
|
+
template = this.TILE_TEMPLATES[i].clone();
|
|
224
|
+
// Find all rotations and positions for that tile to match
|
|
225
|
+
const foundTiles: Array<GirihTile> = this.tiles[tileIndex].transformTileToAdjacencies(edgeIndex, template);
|
|
226
|
+
if (foundTiles.length != 0) {
|
|
227
|
+
adjTiles = adjTiles.concat(foundTiles);
|
|
228
|
+
}
|
|
229
|
+
}
|
|
230
|
+
// Set pointer to save range.
|
|
231
|
+
// previewTilePointer = Math.min( adjTiles.length-1, previewTiilePointer );
|
|
232
|
+
return adjTiles;
|
|
233
|
+
}
|
|
234
|
+
} // END class Girih
|