linearly 0.3.0 → 0.4.1

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 (79) hide show
  1. package/lib/{common.d.ts → cjs/common.d.ts} +1 -0
  2. package/lib/cjs/common.d.ts.map +1 -0
  3. package/lib/cjs/common.js +20 -0
  4. package/lib/{index.d.ts → cjs/index.d.ts} +1 -0
  5. package/lib/cjs/index.d.ts.map +1 -0
  6. package/lib/cjs/index.js +35 -0
  7. package/lib/{mat2.d.ts → cjs/mat2.d.ts} +1 -0
  8. package/lib/cjs/mat2.d.ts.map +1 -0
  9. package/lib/cjs/mat2.js +224 -0
  10. package/lib/{mat2d.d.ts → cjs/mat2d.d.ts} +1 -0
  11. package/lib/cjs/mat2d.d.ts.map +1 -0
  12. package/lib/cjs/mat2d.js +291 -0
  13. package/lib/{mat3.d.ts → cjs/mat3.d.ts} +1 -0
  14. package/lib/cjs/mat3.d.ts.map +1 -0
  15. package/lib/cjs/mat3.js +450 -0
  16. package/lib/{mat4.d.ts → cjs/mat4.d.ts} +1 -0
  17. package/lib/cjs/mat4.d.ts.map +1 -0
  18. package/lib/cjs/mat4.js +1250 -0
  19. package/lib/{quat.d.ts → cjs/quat.d.ts} +1 -0
  20. package/lib/cjs/quat.d.ts.map +1 -0
  21. package/lib/cjs/quat.js +504 -0
  22. package/lib/{vec2.d.ts → cjs/vec2.d.ts} +1 -0
  23. package/lib/cjs/vec2.d.ts.map +1 -0
  24. package/lib/cjs/vec2.js +205 -0
  25. package/lib/{vec3.d.ts → cjs/vec3.d.ts} +1 -0
  26. package/lib/cjs/vec3.d.ts.map +1 -0
  27. package/lib/cjs/vec3.js +409 -0
  28. package/lib/{vec4.d.ts → cjs/vec4.d.ts} +1 -0
  29. package/lib/cjs/vec4.d.ts.map +1 -0
  30. package/lib/cjs/vec4.js +319 -0
  31. package/lib/esm/common.d.ts +12 -0
  32. package/lib/esm/common.d.ts.map +1 -0
  33. package/lib/esm/common.js +16 -0
  34. package/lib/esm/index.d.ts +17 -0
  35. package/lib/esm/index.d.ts.map +1 -0
  36. package/lib/esm/index.js +9 -0
  37. package/lib/esm/mat2.d.ts +91 -0
  38. package/lib/esm/mat2.d.ts.map +1 -0
  39. package/lib/esm/mat2.js +179 -0
  40. package/lib/esm/mat2d.d.ts +102 -0
  41. package/lib/esm/mat2d.d.ts.map +1 -0
  42. package/lib/esm/mat2d.js +246 -0
  43. package/lib/esm/mat3.d.ts +120 -0
  44. package/lib/esm/mat3.d.ts.map +1 -0
  45. package/lib/esm/mat3.js +400 -0
  46. package/lib/esm/mat4.d.ts +313 -0
  47. package/lib/esm/mat4.d.ts.map +1 -0
  48. package/lib/esm/mat4.js +1183 -0
  49. package/lib/esm/quat.d.ts +220 -0
  50. package/lib/esm/quat.d.ts.map +1 -0
  51. package/lib/esm/quat.js +458 -0
  52. package/lib/esm/vec2.d.ts +66 -0
  53. package/lib/esm/vec2.d.ts.map +1 -0
  54. package/lib/esm/vec2.js +149 -0
  55. package/lib/esm/vec3.d.ts +167 -0
  56. package/lib/esm/vec3.d.ts.map +1 -0
  57. package/lib/esm/vec3.js +348 -0
  58. package/lib/esm/vec4.d.ts +116 -0
  59. package/lib/esm/vec4.d.ts.map +1 -0
  60. package/lib/esm/vec4.js +266 -0
  61. package/package.json +6 -4
  62. package/lib/common.js +0 -30
  63. package/lib/index.js +0 -45
  64. package/lib/mat2.js +0 -234
  65. package/lib/mat2d.js +0 -301
  66. package/lib/mat2d.test.d.ts +0 -1
  67. package/lib/mat2d.test.js +0 -123
  68. package/lib/mat3.js +0 -460
  69. package/lib/mat4.js +0 -1260
  70. package/lib/quat.js +0 -514
  71. package/lib/vec2.js +0 -215
  72. package/lib/vec2.test.d.ts +0 -1
  73. package/lib/vec2.test.js +0 -147
  74. package/lib/vec3.js +0 -419
  75. package/lib/vec3.test.d.ts +0 -1
  76. package/lib/vec3.test.js +0 -149
  77. package/lib/vec4.js +0 -329
  78. package/lib/vec4.test.d.ts +0 -1
  79. package/lib/vec4.test.js +0 -45
@@ -0,0 +1,348 @@
1
+ import * as Common from './common';
2
+ export function of(x, y, z) {
3
+ if (y === undefined && z === undefined) {
4
+ y = z = x;
5
+ }
6
+ if (y === undefined)
7
+ y = 0;
8
+ if (z === undefined)
9
+ z = 0;
10
+ return [x, y, z];
11
+ }
12
+ export const zero = Object.freeze([0, 0, 0]);
13
+ export const one = Object.freeze([1, 1, 1]);
14
+ /**
15
+ * Adds two vec3's
16
+ */
17
+ export function add(a, b) {
18
+ return [a[0] + b[0], a[1] + b[1], a[2] + b[2]];
19
+ }
20
+ /**
21
+ * Subtracts vector b from vector a
22
+ */
23
+ export function subtract(a, b) {
24
+ return [a[0] - b[0], a[1] - b[1], a[2] - b[2]];
25
+ }
26
+ /**
27
+ * Multiplies two vec3's
28
+ */
29
+ export function multiply(a, b) {
30
+ return [a[0] * b[0], a[1] * b[1], a[2] * b[2]];
31
+ }
32
+ /**
33
+ * Divides two vec3's
34
+ */
35
+ export function divide(a, b) {
36
+ return [a[0] / b[0], a[1] / b[1], a[2] / b[2]];
37
+ }
38
+ /**
39
+ * Math.ceil the components of a vec3
40
+ */
41
+ export function ceil(a) {
42
+ return [Math.ceil(a[0]), Math.ceil(a[1]), Math.ceil(a[2])];
43
+ }
44
+ /**
45
+ * Math.floor the components of a vec3
46
+ */
47
+ export function floor(a) {
48
+ return [Math.floor(a[0]), Math.floor(a[1]), Math.floor(a[2])];
49
+ }
50
+ /**
51
+ * Returns the minimum of two vec3's
52
+ */
53
+ export function min(a, b) {
54
+ return [Math.min(a[0], b[0]), Math.min(a[1], b[1]), Math.min(a[2], b[2])];
55
+ }
56
+ /**
57
+ * Returns the maximum of two vec3's
58
+ */
59
+ export function max(a, b) {
60
+ return [Math.max(a[0], b[0]), Math.max(a[1], b[1]), Math.max(a[2], b[2])];
61
+ }
62
+ /**
63
+ * Constrain a value to lie between two further values
64
+ */
65
+ export function clamp(a, min, max) {
66
+ return [
67
+ Math.min(Math.max(a[0], min[0]), max[0]),
68
+ Math.min(Math.max(a[1], min[1]), max[1]),
69
+ Math.min(Math.max(a[2], min[2]), max[2]),
70
+ ];
71
+ }
72
+ /**
73
+ * symmetric round the components of a vec3
74
+ */
75
+ export function round(a) {
76
+ return [Common.round(a[0]), Common.round(a[1]), Common.round(a[2])];
77
+ }
78
+ /**
79
+ * Scales a vec3 by a scalar number
80
+ */
81
+ export function scale(a, s) {
82
+ return [a[0] * s, a[1] * s, a[2] * s];
83
+ }
84
+ /**
85
+ * Adds two vec3's after scaling the second operand by a scalar value
86
+ */
87
+ export function scaleAndAdd(a, b, scale) {
88
+ return [a[0] + b[0] * scale, a[1] + b[1] * scale, a[2] + b[2] * scale];
89
+ }
90
+ /**
91
+ * Calculates the euclidian distance between two vec3's
92
+ */
93
+ export function distance(a, b) {
94
+ const x = b[0] - a[0];
95
+ const y = b[1] - a[1];
96
+ const z = b[2] - a[2];
97
+ return Math.sqrt(x * x + y * y + z * z);
98
+ }
99
+ /**
100
+ * Calculates the squared euclidian distance between two vec3's
101
+ */
102
+ export function squaredDistance(a, b) {
103
+ const x = b[0] - a[0];
104
+ const y = b[1] - a[1];
105
+ const z = b[2] - a[2];
106
+ return x * x + y * y + z * z;
107
+ }
108
+ /**
109
+ * Calculates the length of a vec3
110
+ */
111
+ export function length(a) {
112
+ const [x, y, z] = a;
113
+ return Math.sqrt(x * x + y * y + z * z);
114
+ }
115
+ /**
116
+ * Calculates the squared length of a vec3
117
+ */
118
+ export function squaredLength(a) {
119
+ const x = a[0];
120
+ const y = a[1];
121
+ const z = a[2];
122
+ return x * x + y * y + z * z;
123
+ }
124
+ /**
125
+ * Negates the components of a vec3
126
+ */
127
+ export function negate(a) {
128
+ return [-a[0], -a[1], -a[2]];
129
+ }
130
+ /**
131
+ * Returns the inverse of the components of a vec3
132
+ */
133
+ export function inverse(a) {
134
+ return [1 / a[0], 1 / a[1], 1 / a[2]];
135
+ }
136
+ /**
137
+ * Normalize a vec3
138
+ */
139
+ export function normalize(a) {
140
+ const [x, y, z] = a;
141
+ const hyp = x * x + y * y + z * z;
142
+ const len = hyp === 0 ? 0 : 1 / Math.sqrt(hyp);
143
+ return [a[0] * len, a[1] * len, a[2] * len];
144
+ }
145
+ /**
146
+ * Calculates the dot product of two vec3's
147
+ */
148
+ export function dot(a, b) {
149
+ return a[0] * b[0] + a[1] * b[1] + a[2] * b[2];
150
+ }
151
+ /**
152
+ * Computes the cross product of two vec3's
153
+ */
154
+ export function cross(a, b) {
155
+ const [ax, ay, az] = a;
156
+ const [bx, by, bz] = b;
157
+ return [ay * bz - az * by, az * bx - ax * bz, ax * by - ay * bx];
158
+ }
159
+ /**
160
+ * Performs a linear interpolation between two vec3's
161
+ */
162
+ export function lerp(a, b, t) {
163
+ const [ax, ay, az] = a;
164
+ return [ax + t * (b[0] - ax), ay + t * (b[1] - ay), az + t * (b[2] - az)];
165
+ }
166
+ /**
167
+ * Performs a spherical linear interpolation between two vec3's
168
+ */
169
+ export function slerp(a, b, t) {
170
+ const angle = Math.acos(Math.min(Math.max(dot(a, b), -1), 1));
171
+ const sinTotal = Math.sin(angle);
172
+ const ratioA = Math.sin((1 - t) * angle) / sinTotal;
173
+ const ratioB = Math.sin(t * angle) / sinTotal;
174
+ return [
175
+ ratioA * a[0] + ratioB * b[0],
176
+ ratioA * a[1] + ratioB * b[1],
177
+ ratioA * a[2] + ratioB * b[2],
178
+ ];
179
+ }
180
+ /**
181
+ * Performs a hermite interpolation with two control points
182
+ *
183
+ * @param a the first operand
184
+ * @param b the second operand
185
+ * @param c the third operand
186
+ * @param d the fourth operand
187
+ * @param t interpolation amount, in the range [0-1], between the two inputs
188
+ */
189
+ export function hermite(a, b, c, d, t) {
190
+ const factorTimes2 = t * t;
191
+ const factor1 = factorTimes2 * (2 * t - 3) + 1;
192
+ const factor2 = factorTimes2 * (t - 2) + t;
193
+ const factor3 = factorTimes2 * (t - 1);
194
+ const factor4 = factorTimes2 * (3 - 2 * t);
195
+ return [
196
+ a[0] * factor1 + b[0] * factor2 + c[0] * factor3 + d[0] * factor4,
197
+ a[1] * factor1 + b[1] * factor2 + c[1] * factor3 + d[1] * factor4,
198
+ a[2] * factor1 + b[2] * factor2 + c[2] * factor3 + d[2] * factor4,
199
+ ];
200
+ }
201
+ /**
202
+ * Performs a bezier interpolation with two control points
203
+ */
204
+ export function bezier(a, b, c, d, t) {
205
+ const inverseFactor = 1 - t;
206
+ const inverseFactorTimesTwo = inverseFactor * inverseFactor;
207
+ const factorTimes2 = t * t;
208
+ const factor1 = inverseFactorTimesTwo * inverseFactor;
209
+ const factor2 = 3 * t * inverseFactorTimesTwo;
210
+ const factor3 = 3 * factorTimes2 * inverseFactor;
211
+ const factor4 = factorTimes2 * t;
212
+ return [
213
+ a[0] * factor1 + b[0] * factor2 + c[0] * factor3 + d[0] * factor4,
214
+ a[1] * factor1 + b[1] * factor2 + c[1] * factor3 + d[1] * factor4,
215
+ a[2] * factor1 + b[2] * factor2 + c[2] * factor3 + d[2] * factor4,
216
+ ];
217
+ }
218
+ /**
219
+ * Transforms the vec3 with a mat4.
220
+ * 4th vector component is implicitly '1'
221
+ */
222
+ export function transformMat4(a, m) {
223
+ const [x, y, z] = a;
224
+ const w = m[3] * x + m[7] * y + m[11] * z + m[15] || 1;
225
+ return [
226
+ (m[0] * x + m[4] * y + m[8] * z + m[12]) / w,
227
+ (m[1] * x + m[5] * y + m[9] * z + m[13]) / w,
228
+ (m[2] * x + m[6] * y + m[10] * z + m[14]) / w,
229
+ ];
230
+ }
231
+ /**
232
+ * Transforms the vec3 with a mat3.
233
+ */
234
+ export function transformMat3(a, m) {
235
+ const x = a[0], y = a[1], z = a[2];
236
+ return [
237
+ x * m[0] + y * m[3] + z * m[6],
238
+ x * m[1] + y * m[4] + z * m[7],
239
+ x * m[2] + y * m[5] + z * m[8],
240
+ ];
241
+ }
242
+ /**
243
+ * Transforms the vec3 with a quat
244
+ * Can also be used for dual quaternions. (Multiply it with the real part)
245
+ *
246
+ * @param a the vector to transform
247
+ * @param q quaternion to transform with
248
+ */
249
+ // https://github.com/stackgl/gl-vec3/blob/master/transformQuat.js
250
+ export function transformQuat(a, q) {
251
+ // benchmarks: http://jsperf.com/quaternion-transform-vec3-implementations
252
+ const x = a[0], y = a[1], z = a[2], qx = q[0], qy = q[1], qz = q[2], qw = q[3],
253
+ // calculate quat * vec
254
+ ix = qw * x + qy * z - qz * y, iy = qw * y + qz * x - qx * z, iz = qw * z + qx * y - qy * x, iw = -qx * x - qy * y - qz * z;
255
+ // calculate result * inverse quat
256
+ return [
257
+ ix * qw + iw * -qx + iy * -qz - iz * -qy,
258
+ iy * qw + iw * -qy + iz * -qx - ix * -qz,
259
+ iz * qw + iw * -qz + ix * -qy - iy * -qx,
260
+ ];
261
+ }
262
+ /**
263
+ * Rotate a 3D vector around the x-axis
264
+ * @param a The vec3 point to rotate
265
+ * @param b The origin of the rotation
266
+ * @param rad The angle of rotation in radians
267
+ */
268
+ export function rotateX(a, b, rad) {
269
+ //Translate point to the origin
270
+ const p = [a[0] - b[0], a[1] - b[1], a[2] - b[2]];
271
+ //perform rotation
272
+ const r = [
273
+ p[0],
274
+ p[1] * Math.cos(rad) - p[2] * Math.sin(rad),
275
+ p[1] * Math.sin(rad) + p[2] * Math.cos(rad),
276
+ ];
277
+ //translate to correct position
278
+ return [r[0] + b[0], r[1] + b[1], r[2] + b[2]];
279
+ }
280
+ /**
281
+ * Rotate a 3D vector around the y-axis
282
+ * @param a The vec3 point to rotate
283
+ * @param origin The origin of the rotation
284
+ * @param rad The angle of rotation in radians
285
+ */
286
+ export function rotateY(a, origin, rad) {
287
+ //Translate point to the origin
288
+ const p = [a[0] - origin[0], a[1] - origin[1], a[2] - origin[2]];
289
+ //perform rotation
290
+ const r = [
291
+ p[2] * Math.sin(rad) + p[0] * Math.cos(rad),
292
+ p[1],
293
+ p[2] * Math.cos(rad) - p[0] * Math.sin(rad),
294
+ ];
295
+ //translate to correct position
296
+ return [r[0] + origin[0], r[1] + origin[1], r[2] + origin[2]];
297
+ }
298
+ /**
299
+ * Rotate a 3D vector around the z-axis
300
+ * @param a The vec3 point to rotate
301
+ * @param b The origin of the rotation
302
+ * @param rad The angle of rotation in radians
303
+ */
304
+ export function rotateZ(a, b, rad) {
305
+ //Translate point to the origin
306
+ const p = [a[0] - b[0], a[1] - b[1], a[2] - b[2]];
307
+ //perform rotation
308
+ const r = [
309
+ p[0] * Math.cos(rad) - p[1] * Math.sin(rad),
310
+ p[0] * Math.sin(rad) + p[1] * Math.cos(rad),
311
+ p[2],
312
+ ];
313
+ //translate to correct position
314
+ return [r[0] + b[0], r[1] + b[1], r[2] + b[2]];
315
+ }
316
+ /**
317
+ * Get the angle between two 3D vectors
318
+ * @param a The first operand
319
+ * @param b The second operand
320
+ * @returns The angle in radians
321
+ */
322
+ export function angle(a, b) {
323
+ const [ax, ay, az] = a;
324
+ const [bx, by, bz] = b;
325
+ const mag = Math.sqrt((ax * ax + ay * ay + az * az) * (bx * bx + by * by + bz * bz));
326
+ const cosine = mag && dot(a, b) / mag;
327
+ return Math.acos(Math.min(Math.max(cosine, -1), 1));
328
+ }
329
+ /**
330
+ * Returns whether or not the vectors have exactly the same elements in the same position (when compared with ===)
331
+ */
332
+ export function exactEquals(a, b) {
333
+ return a[0] === b[0] && a[1] === b[1] && a[2] === b[2];
334
+ }
335
+ /**
336
+ * Returns whether or not the vectors have approximately the same elements in the same position.
337
+ */
338
+ export function equals(a, b) {
339
+ const [a0, a1, a2] = a;
340
+ const [b0, b1, b2] = b;
341
+ return (Math.abs(a0 - b0) <=
342
+ Common.EPSILON * Math.max(1, Math.abs(a0), Math.abs(b0)) &&
343
+ Math.abs(a1 - b1) <=
344
+ Common.EPSILON * Math.max(1, Math.abs(a1), Math.abs(b1)) &&
345
+ Math.abs(a2 - b2) <=
346
+ Common.EPSILON * Math.max(1, Math.abs(a2), Math.abs(b2)));
347
+ }
348
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidmVjMy5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy92ZWMzLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sS0FBSyxNQUFNLE1BQU0sVUFBVSxDQUFBO0FBT2xDLE1BQU0sVUFBVSxFQUFFLENBQUMsQ0FBUyxFQUFFLENBQVUsRUFBRSxDQUFVO0lBQ25ELElBQUksQ0FBQyxLQUFLLFNBQVMsSUFBSSxDQUFDLEtBQUssU0FBUyxFQUFFO1FBQ3ZDLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxDQUFBO0tBQ1Q7SUFDRCxJQUFJLENBQUMsS0FBSyxTQUFTO1FBQUUsQ0FBQyxHQUFHLENBQUMsQ0FBQTtJQUMxQixJQUFJLENBQUMsS0FBSyxTQUFTO1FBQUUsQ0FBQyxHQUFHLENBQUMsQ0FBQTtJQUUxQixPQUFPLENBQUMsQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQTtBQUNqQixDQUFDO0FBRUQsTUFBTSxDQUFDLE1BQU0sSUFBSSxHQUFTLE1BQU0sQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUE7QUFFbEQsTUFBTSxDQUFDLE1BQU0sR0FBRyxHQUFTLE1BQU0sQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUE7QUFFakQ7O0dBRUc7QUFDSCxNQUFNLFVBQVUsR0FBRyxDQUFDLENBQU8sRUFBRSxDQUFPO0lBQ25DLE9BQU8sQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFBO0FBQy9DLENBQUM7QUFFRDs7R0FFRztBQUNILE1BQU0sVUFBVSxRQUFRLENBQUMsQ0FBTyxFQUFFLENBQU87SUFDeEMsT0FBTyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUE7QUFDL0MsQ0FBQztBQUVEOztHQUVHO0FBQ0gsTUFBTSxVQUFVLFFBQVEsQ0FBQyxDQUFPLEVBQUUsQ0FBTztJQUN4QyxPQUFPLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQTtBQUMvQyxDQUFDO0FBRUQ7O0dBRUc7QUFDSCxNQUFNLFVBQVUsTUFBTSxDQUFDLENBQU8sRUFBRSxDQUFPO0lBQ3RDLE9BQU8sQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFBO0FBQy9DLENBQUM7QUFFRDs7R0FFRztBQUNILE1BQU0sVUFBVSxJQUFJLENBQUMsQ0FBTztJQUMzQixPQUFPLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsRUFBRSxJQUFJLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUFFLElBQUksQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQTtBQUMzRCxDQUFDO0FBRUQ7O0dBRUc7QUFDSCxNQUFNLFVBQVUsS0FBSyxDQUFDLENBQU87SUFDNUIsT0FBTyxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEVBQUUsSUFBSSxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsRUFBRSxJQUFJLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUE7QUFDOUQsQ0FBQztBQUVEOztHQUVHO0FBQ0gsTUFBTSxVQUFVLEdBQUcsQ0FBQyxDQUFPLEVBQUUsQ0FBTztJQUNuQyxPQUFPLENBQUMsSUFBSSxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEVBQUUsSUFBSSxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEVBQUUsSUFBSSxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQTtBQUMxRSxDQUFDO0FBRUQ7O0dBRUc7QUFDSCxNQUFNLFVBQVUsR0FBRyxDQUFDLENBQU8sRUFBRSxDQUFPO0lBQ25DLE9BQU8sQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsRUFBRSxJQUFJLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsRUFBRSxJQUFJLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFBO0FBQzFFLENBQUM7QUFFRDs7R0FFRztBQUNILE1BQU0sVUFBVSxLQUFLLENBQUMsQ0FBTyxFQUFFLEdBQVMsRUFBRSxHQUFTO0lBQ2xELE9BQU87UUFDTixJQUFJLENBQUMsR0FBRyxDQUFDLElBQUksQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUFFLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUFFLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQztRQUN4QyxJQUFJLENBQUMsR0FBRyxDQUFDLElBQUksQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUFFLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUFFLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQztRQUN4QyxJQUFJLENBQUMsR0FBRyxDQUFDLElBQUksQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUFFLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUFFLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQztLQUN4QyxDQUFBO0FBQ0YsQ0FBQztBQUVEOztHQUVHO0FBQ0gsTUFBTSxVQUFVLEtBQUssQ0FBQyxDQUFPO0lBQzVCLE9BQU8sQ0FBQyxNQUFNLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUFFLE1BQU0sQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEVBQUUsTUFBTSxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFBO0FBQ3BFLENBQUM7QUFDRDs7R0FFRztBQUNILE1BQU0sVUFBVSxLQUFLLENBQUMsQ0FBTyxFQUFFLENBQVM7SUFDdkMsT0FBTyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUE7QUFDdEMsQ0FBQztBQUVEOztHQUVHO0FBQ0gsTUFBTSxVQUFVLFdBQVcsQ0FBQyxDQUFPLEVBQUUsQ0FBTyxFQUFFLEtBQWE7SUFDMUQsT0FBTyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDLEdBQUcsS0FBSyxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDLEdBQUcsS0FBSyxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDLEdBQUcsS0FBSyxDQUFDLENBQUE7QUFDdkUsQ0FBQztBQUVEOztHQUVHO0FBQ0gsTUFBTSxVQUFVLFFBQVEsQ0FBQyxDQUFPLEVBQUUsQ0FBTztJQUN4QyxNQUFNLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFBO0lBQ3JCLE1BQU0sQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUE7SUFDckIsTUFBTSxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQTtJQUNyQixPQUFPLElBQUksQ0FBQyxJQUFJLENBQUMsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQTtBQUN4QyxDQUFDO0FBRUQ7O0dBRUc7QUFDSCxNQUFNLFVBQVUsZUFBZSxDQUFDLENBQU8sRUFBRSxDQUFPO0lBQy9DLE1BQU0sQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUE7SUFDckIsTUFBTSxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQTtJQUNyQixNQUFNLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFBO0lBQ3JCLE9BQU8sQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLENBQUE7QUFDN0IsQ0FBQztB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QyxHQUFHLE1BQU0sR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDO1FBQzdCLE1BQU0sR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDLEdBQUcsTUFBTSxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUM7S0FDN0IsQ0FBQTtBQUNGLENBQUM7QUFFRDs7Ozs7Ozs7R0FRRztBQUNILE1BQU0sVUFBVSxPQUFPLENBQUMsQ0FBTyxFQUFFLENBQU8sRUFBRSxDQUFPLEVBQUUsQ0FBTyxFQUFFLENBQVM7SUFDcEUsTUFBTSxZQUFZLEdBQUcsQ0FBQyxHQUFHLENBQUMsQ0FBQTtJQUMxQixNQUFNLE9BQU8sR0FBRyxZQUFZLEdBQUcsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQTtJQUM5QyxNQUFNLE9BQU8sR0FBRyxZQUFZLEdBQUcsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFBO0lBQzFDLE1BQU0sT0FBTyxHQUFHLFlBQVksR0FBRyxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQTtJQUN0QyxNQUFNLE9BQU8sR0FBRyxZQUFZLEdBQUcsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFBO0lBRTFDLE9BQU87UUFDTixDQUFDLENBQUMsQ0FBQyxDQUFDLEdBQUcsT0FBTyxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUMsR0FBRyxPQUFPLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxHQUFHLE9BQU8sR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDLEdBQUcsT0FBTztRQUNqRSxDQUFDLENBQUMsQ0FBQyxDQUFDLEdBQUcsT0FBTyxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUMsR0FBRyxPQUFPLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxHQUFHLE9BQU8sR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDLEdBQUcsT0FBTztRQUNqRSxDQUFDLENBQUMsQ0FBQyxDQUFDLEdBQUcsT0FBTyxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUMsR0FBRyxP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QUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFBO0FBQy9DLENBQUM7QUFFRDs7Ozs7R0FLRztBQUNILE1BQU0sVUFBVSxLQUFLLENBQUMsQ0FBTyxFQUFFLENBQU87SUFDckMsTUFBTSxDQUFDLEVBQUUsRUFBRSxFQUFFLEVBQUUsRUFBRSxDQUFDLEdBQUcsQ0FBQyxDQUFBO0lBQ3RCLE1BQU0sQ0FBQyxFQUFFLEVBQUUsRUFBRSxFQUFFLEVBQUUsQ0FBQyxHQUFHLENBQUMsQ0FBQTtJQUN0QixNQUFNLEdBQUcsR0FBRyxJQUFJLENBQUMsSUFBSSxDQUNwQixDQUFDLEVBQUUsR0FBRyxFQUFFLEdBQUcsRUFBRSxHQUFHLEVBQUUsR0FBRyxFQUFFLEdBQUcsRUFBRSxDQUFDLEdBQUcsQ0FBQyxFQUFFLEdBQUcsRUFBRSxHQUFHLEVBQUUsR0FBRyxFQUFFLEdBQUcsRUFBRSxHQUFHLEVBQUUsQ0FBQyxDQUM3RCxDQUFBO0lBQ0QsTUFBTSxNQUFNLEdBQUcsR0FBRyxJQUFJLEdBQUcsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLEdBQUcsR0FBRyxDQUFBO0lBRXJDLE9BQU8sSUFBSSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUFDLElBQUksQ0FBQyxHQUFHLENBQUMsTUFBTSxFQUFFLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQTtBQUNwRCxDQUFDO0FBRUQ7O0dBRUc7QUFDSCxNQUFNLFVBQVUsV0FBVyxDQUFDLENBQU8sRUFBRSxDQUFPO0lBQzNDLE9BQU8sQ0FBQyxDQUFDLENBQUMsQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUE7QUFDdkQsQ0FBQztBQUVEOztHQUVHO0FBQ0gsTUFBTSxVQUFVLE1BQU0sQ0FBQyxDQUFPLEVBQUUsQ0FBTztJQUN0QyxNQUFNLENBQUMsRUFBRSxFQUFFLEVBQUUsRUFBRSxFQUFFLENBQUMsR0FBRyxDQUFDLENBQUE7SUFDdEIsTUFBTSxDQUFDLEVBQUUsRUFBRSxFQUFFLEVBQUUsRUFBRSxDQUFDLEdBQUcsQ0FBQyxDQUFBO0lBRXRCLE9BQU8sQ0FDTixJQUFJLENBQUMsR0FBRyxDQUFDLEVBQUUsR0FBRyxFQUFFLENBQUM7UUFDaEIsTUFBTSxDQUFDLE9BQU8sR0FBRyxJQUFJLENBQUMsR0FBRyxDQUFDLENBQUMsRUFBRSxJQUFJLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQyxFQUFFLElBQUksQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDLENBQUM7UUFDekQsSUFBSSxDQUFDLEdBQUcsQ0FBQyxFQUFFLEdBQUcsRUFBRSxDQUFDO1lBQ2hCLE1BQU0sQ0FBQyxPQUFPLEdBQUcsSUFBSSxDQUFDLEdBQUcsQ0FBQyxDQUFDLEVBQUUsSUFBSSxDQUFDLEdBQUcsQ0FBQyxFQUFFLENBQUMsRUFBRSxJQUFJLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQyxDQUFDO1FBQ3pELElBQUksQ0FBQyxHQUFHLENBQUMsRUFBRSxHQUFHLEVBQUUsQ0FBQztZQUNoQixNQUFNLENBQUMsT0FBTyxHQUFHLElBQUksQ0FBQyxHQUFHLENBQUMsQ0FBQyxFQUFFLElBQUksQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDLEVBQUUsSUFBSSxDQUFDLEdBQUcsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUN6RCxDQUFBO0FBQ0YsQ0FBQyJ9
@@ -0,0 +1,116 @@
1
+ import { Mat4 } from './mat4';
2
+ import { Quat } from './quat';
3
+ export type Vec4 = readonly [number, number, number, number];
4
+ export declare function of(x: number, y?: number, z?: number, w?: number): Vec4;
5
+ export declare const zero: Vec4;
6
+ export declare const one: Vec4;
7
+ /**
8
+ * Adds two vec4's
9
+ */
10
+ export declare function add(a: Vec4, b: Vec4): Vec4;
11
+ /**
12
+ * Subtracts vector b from vector a
13
+ */
14
+ export declare function subtract(a: Vec4, b: Vec4): Vec4;
15
+ /**
16
+ * Multiplies two vec4's
17
+ */
18
+ export declare function multiply(a: Vec4, b: Vec4): Vec4;
19
+ /**
20
+ * Divides two vec4's
21
+ */
22
+ export declare function divide(a: Vec4, b: Vec4): Vec4;
23
+ /**
24
+ * Math.ceil the components of a vec4
25
+ */
26
+ export declare function ceil(a: Vec4): Vec4;
27
+ /**
28
+ * Math.floor the components of a vec4
29
+ */
30
+ export declare function floor(a: Vec4): Vec4;
31
+ /**
32
+ * Returns the minimum of two vec4's
33
+ */
34
+ export declare function min(a: Vec4, b: Vec4): Vec4;
35
+ /**
36
+ * Returns the maximum of two vec4's
37
+ */
38
+ export declare function max(a: Vec4, b: Vec4): Vec4;
39
+ /**
40
+ * Constrain a value to lie between two further values
41
+ */
42
+ export declare function clamp(a: Vec4, min: Vec4, max: Vec4): Vec4;
43
+ /**
44
+ * symmetric round the components of a vec4
45
+ */
46
+ export declare function round(a: Vec4): Vec4;
47
+ /**
48
+ * Scales a vec4 by a scalar number
49
+ *
50
+ * @param a the vector to scale
51
+ * @param s amount to scale the vector by
52
+ */
53
+ export declare function scale(a: Vec4, s: number): Vec4;
54
+ /**
55
+ * Adds two vec4's after scaling the second operand by a scalar value
56
+ * @param scale the amount to scale b by before adding
57
+ */
58
+ export declare function scaleAndAdd(a: Vec4, b: Vec4, scale: number): Vec4;
59
+ /**
60
+ * Calculates the euclidian distance between two vec4's
61
+ */
62
+ export declare function distance(a: Vec4, b: Vec4): number;
63
+ /**
64
+ * Calculates the squared euclidian distance between two vec4's
65
+ */
66
+ export declare function squaredDistance(a: Vec4, b: Vec4): number;
67
+ /**
68
+ * Calculates the length of a vec4
69
+ */
70
+ export declare function length(a: Vec4): number;
71
+ /**
72
+ * Calculates the squared length of a vec4
73
+ */
74
+ export declare function squaredLength(a: Vec4): number;
75
+ /**
76
+ * Negates the components of a vec4
77
+ */
78
+ export declare function negate(a: Vec4): Vec4;
79
+ /**
80
+ * Returns the inverse of the components of a vec4
81
+ */
82
+ export declare function inverse(a: Vec4): Vec4;
83
+ /**
84
+ * Normalize a vec4
85
+ */
86
+ export declare function normalize(a: Vec4): Vec4;
87
+ /**
88
+ * Calculates the dot product of two vec4's
89
+ */
90
+ export declare function dot(a: Vec4, b: Vec4): number;
91
+ /**
92
+ * Returns the cross-product of three vectors in a 4-dimensional space
93
+ */
94
+ export declare function cross(u: Vec4, v: Vec4, w: Vec4): Vec4;
95
+ /**
96
+ * Performs a linear interpolation between two vec4's
97
+ * @param t interpolation amount, in the range [0-1], between the two inputs
98
+ */
99
+ export declare function lerp(a: Vec4, b: Vec4, t: number): Vec4;
100
+ /**
101
+ * Transforms the vec4 with a mat4.
102
+ */
103
+ export declare function transformMat4(a: Vec4, m: Mat4): Vec4;
104
+ /**
105
+ * Transforms the vec4 with a quat
106
+ */
107
+ export declare function transformQuat(a: Vec4, q: Quat): Vec4;
108
+ /**
109
+ * Returns whether or not the vectors have exactly the same elements in the same position (when compared with ===)
110
+ */
111
+ export declare function exactEquals(a: Vec4, b: Vec4): boolean;
112
+ /**
113
+ * Returns whether or not the vectors have approximately the same elements in the same position.
114
+ */
115
+ export declare function equals(a: Vec4, b: Vec4): boolean;
116
+ //# sourceMappingURL=vec4.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"vec4.d.ts","sourceRoot":"","sources":["../../src/vec4.ts"],"names":[],"mappings":"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"}