@math.gl/core 3.6.3 → 4.0.0-alpha.2

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.
Files changed (210) hide show
  1. package/dist/classes/base/math-array.d.ts +5 -4
  2. package/dist/classes/base/math-array.d.ts.map +1 -1
  3. package/dist/{esm/classes → classes}/base/math-array.js +8 -3
  4. package/dist/classes/base/math-array.js.map +1 -0
  5. package/dist/classes/base/matrix.d.ts +2 -2
  6. package/dist/classes/base/matrix.d.ts.map +1 -1
  7. package/dist/{esm/classes → classes}/base/matrix.js +4 -4
  8. package/dist/classes/base/matrix.js.map +1 -0
  9. package/dist/classes/base/vector.d.ts +2 -2
  10. package/dist/classes/base/vector.d.ts.map +1 -1
  11. package/dist/{esm/classes → classes}/base/vector.js +4 -4
  12. package/dist/classes/base/vector.js.map +1 -0
  13. package/dist/classes/euler.d.ts +4 -4
  14. package/dist/classes/euler.d.ts.map +1 -1
  15. package/dist/{esm/classes → classes}/euler.js +6 -6
  16. package/dist/classes/euler.js.map +1 -0
  17. package/dist/classes/matrix3.d.ts +5 -2
  18. package/dist/classes/matrix3.d.ts.map +1 -1
  19. package/dist/{esm/classes → classes}/matrix3.js +20 -20
  20. package/dist/classes/matrix3.js.map +1 -0
  21. package/dist/classes/matrix4.d.ts +2 -2
  22. package/dist/classes/matrix4.d.ts.map +1 -1
  23. package/dist/{esm/classes → classes}/matrix4.js +27 -27
  24. package/dist/classes/matrix4.js.map +1 -0
  25. package/dist/classes/pose.d.ts +4 -4
  26. package/dist/classes/pose.d.ts.map +1 -1
  27. package/dist/{esm/classes → classes}/pose.js +4 -4
  28. package/dist/classes/pose.js.map +1 -0
  29. package/dist/classes/quaternion.d.ts +2 -2
  30. package/dist/classes/quaternion.d.ts.map +1 -1
  31. package/dist/{esm/classes → classes}/quaternion.js +26 -26
  32. package/dist/classes/quaternion.js.map +1 -0
  33. package/dist/classes/spherical-coordinates.d.ts +2 -2
  34. package/dist/classes/spherical-coordinates.d.ts.map +1 -1
  35. package/dist/{esm/classes → classes}/spherical-coordinates.js +5 -5
  36. package/dist/classes/spherical-coordinates.js.map +1 -0
  37. package/dist/classes/vector2.d.ts +2 -2
  38. package/dist/classes/vector2.d.ts.map +1 -1
  39. package/dist/{esm/classes → classes}/vector2.js +10 -10
  40. package/dist/classes/vector2.js.map +1 -0
  41. package/dist/classes/vector3.d.ts +2 -2
  42. package/dist/classes/vector3.d.ts.map +1 -1
  43. package/dist/{esm/classes → classes}/vector3.js +14 -14
  44. package/dist/classes/vector3.js.map +1 -0
  45. package/dist/classes/vector4.d.ts +3 -3
  46. package/dist/classes/vector4.d.ts.map +1 -1
  47. package/dist/{esm/classes → classes}/vector4.js +8 -8
  48. package/dist/classes/vector4.js.map +1 -0
  49. package/dist/gl-matrix/common.d.ts +38 -0
  50. package/dist/gl-matrix/common.d.ts.map +1 -0
  51. package/dist/gl-matrix/common.js +19 -0
  52. package/dist/gl-matrix/common.js.map +1 -0
  53. package/dist/gl-matrix/mat3.d.ts +295 -0
  54. package/dist/gl-matrix/mat3.d.ts.map +1 -0
  55. package/dist/gl-matrix/mat3.js +489 -0
  56. package/dist/gl-matrix/mat3.js.map +1 -0
  57. package/dist/gl-matrix/mat4.d.ts +577 -0
  58. package/dist/gl-matrix/mat4.d.ts.map +1 -0
  59. package/dist/gl-matrix/mat4.js +1455 -0
  60. package/dist/gl-matrix/mat4.js.map +1 -0
  61. package/dist/gl-matrix/quat.d.ts +357 -0
  62. package/dist/gl-matrix/quat.d.ts.map +1 -0
  63. package/dist/gl-matrix/quat.js +315 -0
  64. package/dist/gl-matrix/quat.js.map +1 -0
  65. package/dist/gl-matrix/vec2.d.ts +373 -0
  66. package/dist/gl-matrix/vec2.d.ts.map +1 -0
  67. package/dist/gl-matrix/vec2.js +257 -0
  68. package/dist/gl-matrix/vec2.js.map +1 -0
  69. package/dist/gl-matrix/vec3.d.ts +416 -0
  70. package/dist/gl-matrix/vec3.d.ts.map +1 -0
  71. package/dist/gl-matrix/vec3.js +384 -0
  72. package/dist/gl-matrix/vec3.js.map +1 -0
  73. package/dist/gl-matrix/vec4.d.ts +340 -0
  74. package/dist/gl-matrix/vec4.d.ts.map +1 -0
  75. package/dist/gl-matrix/vec4.js +334 -0
  76. package/dist/gl-matrix/vec4.js.map +1 -0
  77. package/dist/gl-matrix/wip/index.d.ts +5 -0
  78. package/dist/gl-matrix/wip/index.d.ts.map +1 -0
  79. package/dist/gl-matrix/wip/index.js +12 -0
  80. package/dist/gl-matrix/wip/index.js.map +1 -0
  81. package/dist/gl-matrix/wip/mat2.d.ts +229 -0
  82. package/dist/gl-matrix/wip/mat2.d.ts.map +1 -0
  83. package/dist/gl-matrix/wip/mat2.js +208 -0
  84. package/dist/gl-matrix/wip/mat2.js.map +1 -0
  85. package/dist/gl-matrix/wip/mat2d.d.ts +244 -0
  86. package/dist/gl-matrix/wip/mat2d.d.ts.map +1 -0
  87. package/dist/gl-matrix/wip/mat2d.js +251 -0
  88. package/dist/gl-matrix/wip/mat2d.js.map +1 -0
  89. package/dist/gl-matrix/wip/quat2.d.ts +352 -0
  90. package/dist/gl-matrix/wip/quat2.d.ts.map +1 -0
  91. package/dist/gl-matrix/wip/quat2.js +482 -0
  92. package/dist/gl-matrix/wip/quat2.js.map +1 -0
  93. package/dist/gl-matrix/wip/types.d.js +2 -0
  94. package/dist/{esm/lib/gl-matrix.d.js.map → gl-matrix/wip/types.d.js.map} +1 -1
  95. package/dist/index.cjs +3788 -0
  96. package/dist/index.d.ts +15 -14
  97. package/dist/index.d.ts.map +1 -1
  98. package/dist/index.js +17 -0
  99. package/dist/index.js.map +1 -0
  100. package/dist/lib/assert.d.ts +1 -1
  101. package/dist/lib/assert.d.ts.map +1 -1
  102. package/dist/lib/assert.js +6 -0
  103. package/dist/lib/assert.js.map +1 -0
  104. package/dist/lib/common.d.ts +10 -5
  105. package/dist/lib/common.d.ts.map +1 -1
  106. package/dist/{esm/lib → lib}/common.js +11 -9
  107. package/dist/lib/common.js.map +1 -0
  108. package/dist/lib/gl-matrix-extras.js.map +1 -0
  109. package/dist/lib/math-utils.d.ts +24 -27
  110. package/dist/lib/math-utils.d.ts.map +1 -1
  111. package/dist/lib/math-utils.js +25 -0
  112. package/dist/lib/math-utils.js.map +1 -0
  113. package/dist/lib/validators.d.ts +1 -1
  114. package/dist/lib/validators.d.ts.map +1 -1
  115. package/dist/{esm/lib → lib}/validators.js +2 -2
  116. package/dist/lib/validators.js.map +1 -0
  117. package/package.json +6 -6
  118. package/src/classes/base/math-array.ts +16 -8
  119. package/src/classes/base/matrix.ts +7 -4
  120. package/src/classes/base/vector.ts +4 -4
  121. package/src/classes/euler.ts +9 -8
  122. package/src/classes/matrix3.ts +37 -24
  123. package/src/classes/matrix4.ts +48 -29
  124. package/src/classes/pose.ts +4 -4
  125. package/src/classes/quaternion.ts +54 -32
  126. package/src/classes/spherical-coordinates.ts +5 -4
  127. package/src/classes/vector2.ts +13 -9
  128. package/src/classes/vector3.ts +26 -12
  129. package/src/classes/vector4.ts +14 -10
  130. package/src/gl-matrix/common.js +58 -0
  131. package/src/gl-matrix/mat3.js +842 -0
  132. package/src/gl-matrix/mat4.js +2169 -0
  133. package/src/gl-matrix/quat.ts +789 -0
  134. package/src/gl-matrix/vec2.js +629 -0
  135. package/src/gl-matrix/vec3.js +827 -0
  136. package/src/gl-matrix/vec4.js +675 -0
  137. package/src/gl-matrix/wip/index.js +15 -0
  138. package/src/gl-matrix/wip/mat2.js +442 -0
  139. package/src/gl-matrix/wip/mat2d.js +505 -0
  140. package/src/gl-matrix/wip/quat2.ts +886 -0
  141. package/src/gl-matrix/wip/types.d.ts +93 -0
  142. package/src/index.ts +16 -14
  143. package/src/lib/assert.ts +1 -1
  144. package/src/lib/common.ts +31 -19
  145. package/src/lib/math-utils.ts +24 -26
  146. package/src/lib/validators.ts +3 -3
  147. package/dist/es5/classes/base/math-array.js +0 -348
  148. package/dist/es5/classes/base/math-array.js.map +0 -1
  149. package/dist/es5/classes/base/matrix.js +0 -108
  150. package/dist/es5/classes/base/matrix.js.map +0 -1
  151. package/dist/es5/classes/base/vector.js +0 -210
  152. package/dist/es5/classes/base/vector.js.map +0 -1
  153. package/dist/es5/classes/euler.js +0 -654
  154. package/dist/es5/classes/euler.js.map +0 -1
  155. package/dist/es5/classes/matrix3.js +0 -284
  156. package/dist/es5/classes/matrix3.js.map +0 -1
  157. package/dist/es5/classes/matrix4.js +0 -574
  158. package/dist/es5/classes/matrix4.js.map +0 -1
  159. package/dist/es5/classes/pose.js +0 -159
  160. package/dist/es5/classes/pose.js.map +0 -1
  161. package/dist/es5/classes/quaternion.js +0 -323
  162. package/dist/es5/classes/quaternion.js.map +0 -1
  163. package/dist/es5/classes/spherical-coordinates.js +0 -208
  164. package/dist/es5/classes/spherical-coordinates.js.map +0 -1
  165. package/dist/es5/classes/vector2.js +0 -156
  166. package/dist/es5/classes/vector2.js.map +0 -1
  167. package/dist/es5/classes/vector3.js +0 -213
  168. package/dist/es5/classes/vector3.js.map +0 -1
  169. package/dist/es5/classes/vector4.js +0 -185
  170. package/dist/es5/classes/vector4.js.map +0 -1
  171. package/dist/es5/docs/README.md +0 -0
  172. package/dist/es5/index.js +0 -236
  173. package/dist/es5/index.js.map +0 -1
  174. package/dist/es5/lib/assert.js +0 -13
  175. package/dist/es5/lib/assert.js.map +0 -1
  176. package/dist/es5/lib/common.js +0 -255
  177. package/dist/es5/lib/common.js.map +0 -1
  178. package/dist/es5/lib/gl-matrix-extras.js +0 -61
  179. package/dist/es5/lib/gl-matrix-extras.js.map +0 -1
  180. package/dist/es5/lib/gl-matrix.d.js +0 -2
  181. package/dist/es5/lib/math-utils.js +0 -34
  182. package/dist/es5/lib/math-utils.js.map +0 -1
  183. package/dist/es5/lib/validators.js +0 -53
  184. package/dist/es5/lib/validators.js.map +0 -1
  185. package/dist/esm/classes/base/math-array.js.map +0 -1
  186. package/dist/esm/classes/base/matrix.js.map +0 -1
  187. package/dist/esm/classes/base/vector.js.map +0 -1
  188. package/dist/esm/classes/euler.js.map +0 -1
  189. package/dist/esm/classes/matrix3.js.map +0 -1
  190. package/dist/esm/classes/matrix4.js.map +0 -1
  191. package/dist/esm/classes/pose.js.map +0 -1
  192. package/dist/esm/classes/quaternion.js.map +0 -1
  193. package/dist/esm/classes/spherical-coordinates.js.map +0 -1
  194. package/dist/esm/classes/vector2.js.map +0 -1
  195. package/dist/esm/classes/vector3.js.map +0 -1
  196. package/dist/esm/classes/vector4.js.map +0 -1
  197. package/dist/esm/docs/README.md +0 -0
  198. package/dist/esm/index.js +0 -16
  199. package/dist/esm/index.js.map +0 -1
  200. package/dist/esm/lib/assert.js +0 -6
  201. package/dist/esm/lib/assert.js.map +0 -1
  202. package/dist/esm/lib/common.js.map +0 -1
  203. package/dist/esm/lib/gl-matrix-extras.js.map +0 -1
  204. package/dist/esm/lib/math-utils.js +0 -27
  205. package/dist/esm/lib/math-utils.js.map +0 -1
  206. package/dist/esm/lib/validators.js.map +0 -1
  207. package/src/docs/README.md +0 -0
  208. /package/dist/{esm/lib → lib}/gl-matrix-extras.js +0 -0
  209. /package/dist/{esm/lib → lib}/gl-matrix.d.js +0 -0
  210. /package/dist/{es5/lib → lib}/gl-matrix.d.js.map +0 -0
@@ -0,0 +1,505 @@
1
+ // @ts-nocheck
2
+ /* eslint-disable */
3
+
4
+ import * as glMatrix from './common.js';
5
+
6
+ /**
7
+ * 2x3 Matrix
8
+ * @module mat2d
9
+ * @description
10
+ * A mat2d contains six elements defined as:
11
+ * <pre>
12
+ * [a, b,
13
+ * c, d,
14
+ * tx, ty]
15
+ * </pre>
16
+ * This is a short form for the 3x3 matrix:
17
+ * <pre>
18
+ * [a, b, 0,
19
+ * c, d, 0,
20
+ * tx, ty, 1]
21
+ * </pre>
22
+ * The last column is ignored so the array is shorter and operations are faster.
23
+ */
24
+
25
+ /**
26
+ * Creates a new identity mat2d
27
+ *
28
+ * @returns {mat2d} a new 2x3 matrix
29
+ */
30
+ export function create() {
31
+ let out = new glMatrix.ARRAY_TYPE(6);
32
+ if (glMatrix.ARRAY_TYPE != Float32Array) {
33
+ out[1] = 0;
34
+ out[2] = 0;
35
+ out[4] = 0;
36
+ out[5] = 0;
37
+ }
38
+ out[0] = 1;
39
+ out[3] = 1;
40
+ return out;
41
+ }
42
+
43
+ /**
44
+ * Creates a new mat2d initialized with values from an existing matrix
45
+ *
46
+ * @param {ReadonlyMat2d} a matrix to clone
47
+ * @returns {mat2d} a new 2x3 matrix
48
+ */
49
+ export function clone(a) {
50
+ let out = new glMatrix.ARRAY_TYPE(6);
51
+ out[0] = a[0];
52
+ out[1] = a[1];
53
+ out[2] = a[2];
54
+ out[3] = a[3];
55
+ out[4] = a[4];
56
+ out[5] = a[5];
57
+ return out;
58
+ }
59
+
60
+ /**
61
+ * Copy the values from one mat2d to another
62
+ *
63
+ * @param {mat2d} out the receiving matrix
64
+ * @param {ReadonlyMat2d} a the source matrix
65
+ * @returns {mat2d} out
66
+ */
67
+ export function copy(out, a) {
68
+ out[0] = a[0];
69
+ out[1] = a[1];
70
+ out[2] = a[2];
71
+ out[3] = a[3];
72
+ out[4] = a[4];
73
+ out[5] = a[5];
74
+ return out;
75
+ }
76
+
77
+ /**
78
+ * Set a mat2d to the identity matrix
79
+ *
80
+ * @param {mat2d} out the receiving matrix
81
+ * @returns {mat2d} out
82
+ */
83
+ export function identity(out) {
84
+ out[0] = 1;
85
+ out[1] = 0;
86
+ out[2] = 0;
87
+ out[3] = 1;
88
+ out[4] = 0;
89
+ out[5] = 0;
90
+ return out;
91
+ }
92
+
93
+ /**
94
+ * Create a new mat2d with the given values
95
+ *
96
+ * @param {Number} a Component A (index 0)
97
+ * @param {Number} b Component B (index 1)
98
+ * @param {Number} c Component C (index 2)
99
+ * @param {Number} d Component D (index 3)
100
+ * @param {Number} tx Component TX (index 4)
101
+ * @param {Number} ty Component TY (index 5)
102
+ * @returns {mat2d} A new mat2d
103
+ */
104
+ export function fromValues(a, b, c, d, tx, ty) {
105
+ let out = new glMatrix.ARRAY_TYPE(6);
106
+ out[0] = a;
107
+ out[1] = b;
108
+ out[2] = c;
109
+ out[3] = d;
110
+ out[4] = tx;
111
+ out[5] = ty;
112
+ return out;
113
+ }
114
+
115
+ /**
116
+ * Set the components of a mat2d to the given values
117
+ *
118
+ * @param {mat2d} out the receiving matrix
119
+ * @param {Number} a Component A (index 0)
120
+ * @param {Number} b Component B (index 1)
121
+ * @param {Number} c Component C (index 2)
122
+ * @param {Number} d Component D (index 3)
123
+ * @param {Number} tx Component TX (index 4)
124
+ * @param {Number} ty Component TY (index 5)
125
+ * @returns {mat2d} out
126
+ */
127
+ export function set(out, a, b, c, d, tx, ty) {
128
+ out[0] = a;
129
+ out[1] = b;
130
+ out[2] = c;
131
+ out[3] = d;
132
+ out[4] = tx;
133
+ out[5] = ty;
134
+ return out;
135
+ }
136
+
137
+ /**
138
+ * Inverts a mat2d
139
+ *
140
+ * @param {mat2d} out the receiving matrix
141
+ * @param {ReadonlyMat2d} a the source matrix
142
+ * @returns {mat2d} out
143
+ */
144
+ export function invert(out, a) {
145
+ let aa = a[0],
146
+ ab = a[1],
147
+ ac = a[2],
148
+ ad = a[3];
149
+ let atx = a[4],
150
+ aty = a[5];
151
+
152
+ let det = aa * ad - ab * ac;
153
+ if (!det) {
154
+ return null;
155
+ }
156
+ det = 1.0 / det;
157
+
158
+ out[0] = ad * det;
159
+ out[1] = -ab * det;
160
+ out[2] = -ac * det;
161
+ out[3] = aa * det;
162
+ out[4] = (ac * aty - ad * atx) * det;
163
+ out[5] = (ab * atx - aa * aty) * det;
164
+ return out;
165
+ }
166
+
167
+ /**
168
+ * Calculates the determinant of a mat2d
169
+ *
170
+ * @param {ReadonlyMat2d} a the source matrix
171
+ * @returns {Number} determinant of a
172
+ */
173
+ export function determinant(a) {
174
+ return a[0] * a[3] - a[1] * a[2];
175
+ }
176
+
177
+ /**
178
+ * Multiplies two mat2d's
179
+ *
180
+ * @param {mat2d} out the receiving matrix
181
+ * @param {ReadonlyMat2d} a the first operand
182
+ * @param {ReadonlyMat2d} b the second operand
183
+ * @returns {mat2d} out
184
+ */
185
+ export function multiply(out, a, b) {
186
+ let a0 = a[0],
187
+ a1 = a[1],
188
+ a2 = a[2],
189
+ a3 = a[3],
190
+ a4 = a[4],
191
+ a5 = a[5];
192
+ let b0 = b[0],
193
+ b1 = b[1],
194
+ b2 = b[2],
195
+ b3 = b[3],
196
+ b4 = b[4],
197
+ b5 = b[5];
198
+ out[0] = a0 * b0 + a2 * b1;
199
+ out[1] = a1 * b0 + a3 * b1;
200
+ out[2] = a0 * b2 + a2 * b3;
201
+ out[3] = a1 * b2 + a3 * b3;
202
+ out[4] = a0 * b4 + a2 * b5 + a4;
203
+ out[5] = a1 * b4 + a3 * b5 + a5;
204
+ return out;
205
+ }
206
+
207
+ /**
208
+ * Rotates a mat2d by the given angle
209
+ *
210
+ * @param {mat2d} out the receiving matrix
211
+ * @param {ReadonlyMat2d} a the matrix to rotate
212
+ * @param {Number} rad the angle to rotate the matrix by
213
+ * @returns {mat2d} out
214
+ */
215
+ export function rotate(out, a, rad) {
216
+ let a0 = a[0],
217
+ a1 = a[1],
218
+ a2 = a[2],
219
+ a3 = a[3],
220
+ a4 = a[4],
221
+ a5 = a[5];
222
+ let s = Math.sin(rad);
223
+ let c = Math.cos(rad);
224
+ out[0] = a0 * c + a2 * s;
225
+ out[1] = a1 * c + a3 * s;
226
+ out[2] = a0 * -s + a2 * c;
227
+ out[3] = a1 * -s + a3 * c;
228
+ out[4] = a4;
229
+ out[5] = a5;
230
+ return out;
231
+ }
232
+
233
+ /**
234
+ * Scales the mat2d by the dimensions in the given vec2
235
+ *
236
+ * @param {mat2d} out the receiving matrix
237
+ * @param {ReadonlyMat2d} a the matrix to translate
238
+ * @param {ReadonlyVec2} v the vec2 to scale the matrix by
239
+ * @returns {mat2d} out
240
+ **/
241
+ export function scale(out, a, v) {
242
+ let a0 = a[0],
243
+ a1 = a[1],
244
+ a2 = a[2],
245
+ a3 = a[3],
246
+ a4 = a[4],
247
+ a5 = a[5];
248
+ let v0 = v[0],
249
+ v1 = v[1];
250
+ out[0] = a0 * v0;
251
+ out[1] = a1 * v0;
252
+ out[2] = a2 * v1;
253
+ out[3] = a3 * v1;
254
+ out[4] = a4;
255
+ out[5] = a5;
256
+ return out;
257
+ }
258
+
259
+ /**
260
+ * Translates the mat2d by the dimensions in the given vec2
261
+ *
262
+ * @param {mat2d} out the receiving matrix
263
+ * @param {ReadonlyMat2d} a the matrix to translate
264
+ * @param {ReadonlyVec2} v the vec2 to translate the matrix by
265
+ * @returns {mat2d} out
266
+ **/
267
+ export function translate(out, a, v) {
268
+ let a0 = a[0],
269
+ a1 = a[1],
270
+ a2 = a[2],
271
+ a3 = a[3],
272
+ a4 = a[4],
273
+ a5 = a[5];
274
+ let v0 = v[0],
275
+ v1 = v[1];
276
+ out[0] = a0;
277
+ out[1] = a1;
278
+ out[2] = a2;
279
+ out[3] = a3;
280
+ out[4] = a0 * v0 + a2 * v1 + a4;
281
+ out[5] = a1 * v0 + a3 * v1 + a5;
282
+ return out;
283
+ }
284
+
285
+ /**
286
+ * Creates a matrix from a given angle
287
+ * This is equivalent to (but much faster than):
288
+ *
289
+ * mat2d.identity(dest);
290
+ * mat2d.rotate(dest, dest, rad);
291
+ *
292
+ * @param {mat2d} out mat2d receiving operation result
293
+ * @param {Number} rad the angle to rotate the matrix by
294
+ * @returns {mat2d} out
295
+ */
296
+ export function fromRotation(out, rad) {
297
+ let s = Math.sin(rad),
298
+ c = Math.cos(rad);
299
+ out[0] = c;
300
+ out[1] = s;
301
+ out[2] = -s;
302
+ out[3] = c;
303
+ out[4] = 0;
304
+ out[5] = 0;
305
+ return out;
306
+ }
307
+
308
+ /**
309
+ * Creates a matrix from a vector scaling
310
+ * This is equivalent to (but much faster than):
311
+ *
312
+ * mat2d.identity(dest);
313
+ * mat2d.scale(dest, dest, vec);
314
+ *
315
+ * @param {mat2d} out mat2d receiving operation result
316
+ * @param {ReadonlyVec2} v Scaling vector
317
+ * @returns {mat2d} out
318
+ */
319
+ export function fromScaling(out, v) {
320
+ out[0] = v[0];
321
+ out[1] = 0;
322
+ out[2] = 0;
323
+ out[3] = v[1];
324
+ out[4] = 0;
325
+ out[5] = 0;
326
+ return out;
327
+ }
328
+
329
+ /**
330
+ * Creates a matrix from a vector translation
331
+ * This is equivalent to (but much faster than):
332
+ *
333
+ * mat2d.identity(dest);
334
+ * mat2d.translate(dest, dest, vec);
335
+ *
336
+ * @param {mat2d} out mat2d receiving operation result
337
+ * @param {ReadonlyVec2} v Translation vector
338
+ * @returns {mat2d} out
339
+ */
340
+ export function fromTranslation(out, v) {
341
+ out[0] = 1;
342
+ out[1] = 0;
343
+ out[2] = 0;
344
+ out[3] = 1;
345
+ out[4] = v[0];
346
+ out[5] = v[1];
347
+ return out;
348
+ }
349
+
350
+ /**
351
+ * Returns a string representation of a mat2d
352
+ *
353
+ * @param {ReadonlyMat2d} a matrix to represent as a string
354
+ * @returns {String} string representation of the matrix
355
+ */
356
+ export function str(a) {
357
+ return (
358
+ 'mat2d(' + a[0] + ', ' + a[1] + ', ' + a[2] + ', ' + a[3] + ', ' + a[4] + ', ' + a[5] + ')'
359
+ );
360
+ }
361
+
362
+ /**
363
+ * Returns Frobenius norm of a mat2d
364
+ *
365
+ * @param {ReadonlyMat2d} a the matrix to calculate Frobenius norm of
366
+ * @returns {Number} Frobenius norm
367
+ */
368
+ export function frob(a) {
369
+ return Math.sqrt(
370
+ a[0] * a[0] + a[1] * a[1] + a[2] * a[2] + a[3] * a[3] + a[4] * a[4] + a[5] * a[5] + 1
371
+ );
372
+ }
373
+
374
+ /**
375
+ * Adds two mat2d's
376
+ *
377
+ * @param {mat2d} out the receiving matrix
378
+ * @param {ReadonlyMat2d} a the first operand
379
+ * @param {ReadonlyMat2d} b the second operand
380
+ * @returns {mat2d} out
381
+ */
382
+ export function add(out, a, b) {
383
+ out[0] = a[0] + b[0];
384
+ out[1] = a[1] + b[1];
385
+ out[2] = a[2] + b[2];
386
+ out[3] = a[3] + b[3];
387
+ out[4] = a[4] + b[4];
388
+ out[5] = a[5] + b[5];
389
+ return out;
390
+ }
391
+
392
+ /**
393
+ * Subtracts matrix b from matrix a
394
+ *
395
+ * @param {mat2d} out the receiving matrix
396
+ * @param {ReadonlyMat2d} a the first operand
397
+ * @param {ReadonlyMat2d} b the second operand
398
+ * @returns {mat2d} out
399
+ */
400
+ export function subtract(out, a, b) {
401
+ out[0] = a[0] - b[0];
402
+ out[1] = a[1] - b[1];
403
+ out[2] = a[2] - b[2];
404
+ out[3] = a[3] - b[3];
405
+ out[4] = a[4] - b[4];
406
+ out[5] = a[5] - b[5];
407
+ return out;
408
+ }
409
+
410
+ /**
411
+ * Multiply each element of the matrix by a scalar.
412
+ *
413
+ * @param {mat2d} out the receiving matrix
414
+ * @param {ReadonlyMat2d} a the matrix to scale
415
+ * @param {Number} b amount to scale the matrix's elements by
416
+ * @returns {mat2d} out
417
+ */
418
+ export function multiplyScalar(out, a, b) {
419
+ out[0] = a[0] * b;
420
+ out[1] = a[1] * b;
421
+ out[2] = a[2] * b;
422
+ out[3] = a[3] * b;
423
+ out[4] = a[4] * b;
424
+ out[5] = a[5] * b;
425
+ return out;
426
+ }
427
+
428
+ /**
429
+ * Adds two mat2d's after multiplying each element of the second operand by a scalar value.
430
+ *
431
+ * @param {mat2d} out the receiving vector
432
+ * @param {ReadonlyMat2d} a the first operand
433
+ * @param {ReadonlyMat2d} b the second operand
434
+ * @param {Number} scale the amount to scale b's elements by before adding
435
+ * @returns {mat2d} out
436
+ */
437
+ export function multiplyScalarAndAdd(out, a, b, scale) {
438
+ out[0] = a[0] + b[0] * scale;
439
+ out[1] = a[1] + b[1] * scale;
440
+ out[2] = a[2] + b[2] * scale;
441
+ out[3] = a[3] + b[3] * scale;
442
+ out[4] = a[4] + b[4] * scale;
443
+ out[5] = a[5] + b[5] * scale;
444
+ return out;
445
+ }
446
+
447
+ /**
448
+ * Returns whether or not the matrices have exactly the same elements in the same position (when compared with ===)
449
+ *
450
+ * @param {ReadonlyMat2d} a The first matrix.
451
+ * @param {ReadonlyMat2d} b The second matrix.
452
+ * @returns {Boolean} True if the matrices are equal, false otherwise.
453
+ */
454
+ export function exactEquals(a, b) {
455
+ return (
456
+ a[0] === b[0] &&
457
+ a[1] === b[1] &&
458
+ a[2] === b[2] &&
459
+ a[3] === b[3] &&
460
+ a[4] === b[4] &&
461
+ a[5] === b[5]
462
+ );
463
+ }
464
+
465
+ /**
466
+ * Returns whether or not the matrices have approximately the same elements in the same position.
467
+ *
468
+ * @param {ReadonlyMat2d} a The first matrix.
469
+ * @param {ReadonlyMat2d} b The second matrix.
470
+ * @returns {Boolean} True if the matrices are equal, false otherwise.
471
+ */
472
+ export function equals(a, b) {
473
+ let a0 = a[0],
474
+ a1 = a[1],
475
+ a2 = a[2],
476
+ a3 = a[3],
477
+ a4 = a[4],
478
+ a5 = a[5];
479
+ let b0 = b[0],
480
+ b1 = b[1],
481
+ b2 = b[2],
482
+ b3 = b[3],
483
+ b4 = b[4],
484
+ b5 = b[5];
485
+ return (
486
+ Math.abs(a0 - b0) <= glMatrix.EPSILON * Math.max(1.0, Math.abs(a0), Math.abs(b0)) &&
487
+ Math.abs(a1 - b1) <= glMatrix.EPSILON * Math.max(1.0, Math.abs(a1), Math.abs(b1)) &&
488
+ Math.abs(a2 - b2) <= glMatrix.EPSILON * Math.max(1.0, Math.abs(a2), Math.abs(b2)) &&
489
+ Math.abs(a3 - b3) <= glMatrix.EPSILON * Math.max(1.0, Math.abs(a3), Math.abs(b3)) &&
490
+ Math.abs(a4 - b4) <= glMatrix.EPSILON * Math.max(1.0, Math.abs(a4), Math.abs(b4)) &&
491
+ Math.abs(a5 - b5) <= glMatrix.EPSILON * Math.max(1.0, Math.abs(a5), Math.abs(b5))
492
+ );
493
+ }
494
+
495
+ /**
496
+ * Alias for {@link mat2d.multiply}
497
+ * @function
498
+ */
499
+ export const mul = multiply;
500
+
501
+ /**
502
+ * Alias for {@link mat2d.subtract}
503
+ * @function
504
+ */
505
+ export const sub = subtract;