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