linearly 0.20.2 → 0.20.3
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/lib/cjs/mat4.d.ts.map +1 -1
- package/lib/cjs/mat4.js +5 -6
- package/lib/common.d.ts +11 -0
- package/lib/common.js +30 -0
- package/lib/esm/mat4.d.ts.map +1 -1
- package/lib/esm/mat4.js +5 -6
- package/lib/index.d.ts +16 -0
- package/lib/index.js +45 -0
- package/lib/mat2.d.ts +79 -0
- package/lib/mat2.js +208 -0
- package/lib/mat2d.d.ts +90 -0
- package/lib/mat2d.js +291 -0
- package/lib/mat2d.test.d.ts +1 -0
- package/lib/mat2d.test.js +123 -0
- package/lib/mat3.d.ts +118 -0
- package/lib/mat3.js +450 -0
- package/lib/mat4.d.ts +311 -0
- package/lib/mat4.js +1252 -0
- package/lib/quat.d.ts +218 -0
- package/lib/quat.js +514 -0
- package/lib/vec2.d.ts +64 -0
- package/lib/vec2.js +211 -0
- package/lib/vec2.test.d.ts +1 -0
- package/lib/vec2.test.js +143 -0
- package/lib/vec3.d.ts +165 -0
- package/lib/vec3.js +408 -0
- package/lib/vec3.test.d.ts +1 -0
- package/lib/vec3.test.js +143 -0
- package/lib/vec4.d.ts +114 -0
- package/lib/vec4.js +316 -0
- package/package.json +1 -1
package/lib/vec4.d.ts
ADDED
|
@@ -0,0 +1,114 @@
|
|
|
1
|
+
import { Mat4 } from './mat4';
|
|
2
|
+
import { Quat } from './quat';
|
|
3
|
+
export type Vec4 = readonly [number, number, number, number];
|
|
4
|
+
export declare const zero: Vec4;
|
|
5
|
+
export declare const one: Vec4;
|
|
6
|
+
/**
|
|
7
|
+
* Adds two vec4's
|
|
8
|
+
*/
|
|
9
|
+
export declare function add(a: Vec4, b: Vec4): Vec4;
|
|
10
|
+
/**
|
|
11
|
+
* Subtracts vector b from vector a
|
|
12
|
+
*/
|
|
13
|
+
export declare function subtract(a: Vec4, b: Vec4): Vec4;
|
|
14
|
+
/**
|
|
15
|
+
* Multiplies two vec4's
|
|
16
|
+
*/
|
|
17
|
+
export declare function multiply(a: Vec4, b: Vec4): Vec4;
|
|
18
|
+
/**
|
|
19
|
+
* Divides two vec4's
|
|
20
|
+
*/
|
|
21
|
+
export declare function divide(a: Vec4, b: Vec4): Vec4;
|
|
22
|
+
/**
|
|
23
|
+
* Math.ceil the components of a vec4
|
|
24
|
+
*/
|
|
25
|
+
export declare function ceil(a: Vec4): Vec4;
|
|
26
|
+
/**
|
|
27
|
+
* Math.floor the components of a vec4
|
|
28
|
+
*/
|
|
29
|
+
export declare function floor(a: Vec4): Vec4;
|
|
30
|
+
/**
|
|
31
|
+
* Returns the minimum of two vec4's
|
|
32
|
+
*/
|
|
33
|
+
export declare function min(a: Vec4, b: Vec4): Vec4;
|
|
34
|
+
/**
|
|
35
|
+
* Returns the maximum of two vec4's
|
|
36
|
+
*/
|
|
37
|
+
export declare function max(a: Vec4, b: Vec4): Vec4;
|
|
38
|
+
/**
|
|
39
|
+
* Constrain a value to lie between two further values
|
|
40
|
+
*/
|
|
41
|
+
export declare function clamp(a: Vec4, min: Vec4, max: Vec4): Vec4;
|
|
42
|
+
/**
|
|
43
|
+
* symmetric round the components of a vec4
|
|
44
|
+
*/
|
|
45
|
+
export declare function round(a: Vec4): Vec4;
|
|
46
|
+
/**
|
|
47
|
+
* Scales a vec4 by a scalar number
|
|
48
|
+
*
|
|
49
|
+
* @param a the vector to scale
|
|
50
|
+
* @param s amount to scale the vector by
|
|
51
|
+
*/
|
|
52
|
+
export declare function scale(a: Vec4, s: number): Vec4;
|
|
53
|
+
/**
|
|
54
|
+
* Adds two vec4's after scaling the second operand by a scalar value
|
|
55
|
+
* @param scale the amount to scale b by before adding
|
|
56
|
+
*/
|
|
57
|
+
export declare function scaleAndAdd(a: Vec4, b: Vec4, scale: number): Vec4;
|
|
58
|
+
/**
|
|
59
|
+
* Calculates the euclidian distance between two vec4's
|
|
60
|
+
*/
|
|
61
|
+
export declare function distance(a: Vec4, b: Vec4): number;
|
|
62
|
+
/**
|
|
63
|
+
* Calculates the squared euclidian distance between two vec4's
|
|
64
|
+
*/
|
|
65
|
+
export declare function squaredDistance(a: Vec4, b: Vec4): number;
|
|
66
|
+
/**
|
|
67
|
+
* Calculates the length of a vec4
|
|
68
|
+
*/
|
|
69
|
+
export declare function length(a: Vec4): number;
|
|
70
|
+
/**
|
|
71
|
+
* Calculates the squared length of a vec4
|
|
72
|
+
*/
|
|
73
|
+
export declare function squaredLength(a: Vec4): number;
|
|
74
|
+
/**
|
|
75
|
+
* Negates the components of a vec4
|
|
76
|
+
*/
|
|
77
|
+
export declare function negate(a: Vec4): Vec4;
|
|
78
|
+
/**
|
|
79
|
+
* Returns the inverse of the components of a vec4
|
|
80
|
+
*/
|
|
81
|
+
export declare function inverse(a: Vec4): Vec4;
|
|
82
|
+
/**
|
|
83
|
+
* Normalize a vec4
|
|
84
|
+
*/
|
|
85
|
+
export declare function normalize(a: Vec4): Vec4;
|
|
86
|
+
/**
|
|
87
|
+
* Calculates the dot product of two vec4's
|
|
88
|
+
*/
|
|
89
|
+
export declare function dot(a: Vec4, b: Vec4): number;
|
|
90
|
+
/**
|
|
91
|
+
* Returns the cross-product of three vectors in a 4-dimensional space
|
|
92
|
+
*/
|
|
93
|
+
export declare function cross(u: Vec4, v: Vec4, w: Vec4): Vec4;
|
|
94
|
+
/**
|
|
95
|
+
* Performs a linear interpolation between two vec4's
|
|
96
|
+
* @param t interpolation amount, in the range [0-1], between the two inputs
|
|
97
|
+
*/
|
|
98
|
+
export declare function lerp(a: Vec4, b: Vec4, t: number): Vec4;
|
|
99
|
+
/**
|
|
100
|
+
* Transforms the vec4 with a mat4.
|
|
101
|
+
*/
|
|
102
|
+
export declare function transformMat4(a: Vec4, m: Mat4): Vec4;
|
|
103
|
+
/**
|
|
104
|
+
* Transforms the vec4 with a quat
|
|
105
|
+
*/
|
|
106
|
+
export declare function transformQuat(a: Vec4, q: Quat): Vec4;
|
|
107
|
+
/**
|
|
108
|
+
* Returns whether or not the vectors have exactly the same elements in the same position (when compared with ===)
|
|
109
|
+
*/
|
|
110
|
+
export declare function exactEquals(a: Vec4, b: Vec4): boolean;
|
|
111
|
+
/**
|
|
112
|
+
* Returns whether or not the vectors have approximately the same elements in the same position.
|
|
113
|
+
*/
|
|
114
|
+
export declare function equals(a: Vec4, b: Vec4): boolean;
|
package/lib/vec4.js
ADDED
|
@@ -0,0 +1,316 @@
|
|
|
1
|
+
var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
|
|
2
|
+
if (k2 === undefined) k2 = k;
|
|
3
|
+
var desc = Object.getOwnPropertyDescriptor(m, k);
|
|
4
|
+
if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
|
|
5
|
+
desc = { enumerable: true, get: function() { return m[k]; } };
|
|
6
|
+
}
|
|
7
|
+
Object.defineProperty(o, k2, desc);
|
|
8
|
+
}) : (function(o, m, k, k2) {
|
|
9
|
+
if (k2 === undefined) k2 = k;
|
|
10
|
+
o[k2] = m[k];
|
|
11
|
+
}));
|
|
12
|
+
var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
|
|
13
|
+
Object.defineProperty(o, "default", { enumerable: true, value: v });
|
|
14
|
+
}) : function(o, v) {
|
|
15
|
+
o["default"] = v;
|
|
16
|
+
});
|
|
17
|
+
var __importStar = (this && this.__importStar) || function (mod) {
|
|
18
|
+
if (mod && mod.__esModule) return mod;
|
|
19
|
+
var result = {};
|
|
20
|
+
if (mod != null) for (var k in mod) if (k !== "default" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);
|
|
21
|
+
__setModuleDefault(result, mod);
|
|
22
|
+
return result;
|
|
23
|
+
};
|
|
24
|
+
(function (factory) {
|
|
25
|
+
if (typeof module === "object" && typeof module.exports === "object") {
|
|
26
|
+
var v = factory(require, exports);
|
|
27
|
+
if (v !== undefined) module.exports = v;
|
|
28
|
+
}
|
|
29
|
+
else if (typeof define === "function" && define.amd) {
|
|
30
|
+
define(["require", "exports", "./common"], factory);
|
|
31
|
+
}
|
|
32
|
+
})(function (require, exports) {
|
|
33
|
+
"use strict";
|
|
34
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
35
|
+
exports.equals = exports.exactEquals = exports.transformQuat = exports.transformMat4 = 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 = void 0;
|
|
36
|
+
const Common = __importStar(require("./common"));
|
|
37
|
+
exports.zero = Object.freeze([0, 0, 0, 0]);
|
|
38
|
+
exports.one = Object.freeze([1, 1, 1, 1]);
|
|
39
|
+
/**
|
|
40
|
+
* Adds two vec4's
|
|
41
|
+
*/
|
|
42
|
+
function add(a, b) {
|
|
43
|
+
return [a[0] + b[0], a[1] + b[1], a[2] + b[2], a[3] + b[3]];
|
|
44
|
+
}
|
|
45
|
+
exports.add = add;
|
|
46
|
+
/**
|
|
47
|
+
* Subtracts vector b from vector a
|
|
48
|
+
*/
|
|
49
|
+
function subtract(a, b) {
|
|
50
|
+
return [a[0] - b[0], a[1] - b[1], a[2] - b[2], a[3] - b[3]];
|
|
51
|
+
}
|
|
52
|
+
exports.subtract = subtract;
|
|
53
|
+
/**
|
|
54
|
+
* Multiplies two vec4's
|
|
55
|
+
*/
|
|
56
|
+
function multiply(a, b) {
|
|
57
|
+
return [a[0] * b[0], a[1] * b[1], a[2] * b[2], a[3] * b[3]];
|
|
58
|
+
}
|
|
59
|
+
exports.multiply = multiply;
|
|
60
|
+
/**
|
|
61
|
+
* Divides two vec4's
|
|
62
|
+
*/
|
|
63
|
+
function divide(a, b) {
|
|
64
|
+
return [a[0] / b[0], a[1] / b[1], a[2] / b[2], a[3] / b[3]];
|
|
65
|
+
}
|
|
66
|
+
exports.divide = divide;
|
|
67
|
+
/**
|
|
68
|
+
* Math.ceil the components of a vec4
|
|
69
|
+
*/
|
|
70
|
+
function ceil(a) {
|
|
71
|
+
return [Math.ceil(a[0]), Math.ceil(a[1]), Math.ceil(a[2]), Math.ceil(a[3])];
|
|
72
|
+
}
|
|
73
|
+
exports.ceil = ceil;
|
|
74
|
+
/**
|
|
75
|
+
* Math.floor the components of a vec4
|
|
76
|
+
*/
|
|
77
|
+
function floor(a) {
|
|
78
|
+
return [
|
|
79
|
+
Math.floor(a[0]),
|
|
80
|
+
Math.floor(a[1]),
|
|
81
|
+
Math.floor(a[2]),
|
|
82
|
+
Math.floor(a[3]),
|
|
83
|
+
];
|
|
84
|
+
}
|
|
85
|
+
exports.floor = floor;
|
|
86
|
+
/**
|
|
87
|
+
* Returns the minimum of two vec4's
|
|
88
|
+
*/
|
|
89
|
+
function min(a, b) {
|
|
90
|
+
return [
|
|
91
|
+
Math.min(a[0], b[0]),
|
|
92
|
+
Math.min(a[1], b[1]),
|
|
93
|
+
Math.min(a[2], b[2]),
|
|
94
|
+
Math.min(a[3], b[3]),
|
|
95
|
+
];
|
|
96
|
+
}
|
|
97
|
+
exports.min = min;
|
|
98
|
+
/**
|
|
99
|
+
* Returns the maximum of two vec4's
|
|
100
|
+
*/
|
|
101
|
+
function max(a, b) {
|
|
102
|
+
return [
|
|
103
|
+
Math.max(a[0], b[0]),
|
|
104
|
+
Math.max(a[1], b[1]),
|
|
105
|
+
Math.max(a[2], b[2]),
|
|
106
|
+
Math.max(a[3], b[3]),
|
|
107
|
+
];
|
|
108
|
+
}
|
|
109
|
+
exports.max = max;
|
|
110
|
+
/**
|
|
111
|
+
* Constrain a value to lie between two further values
|
|
112
|
+
*/
|
|
113
|
+
function clamp(a, min, max) {
|
|
114
|
+
return [
|
|
115
|
+
Math.min(Math.max(a[0], min[0]), max[0]),
|
|
116
|
+
Math.min(Math.max(a[1], min[1]), max[1]),
|
|
117
|
+
Math.min(Math.max(a[2], min[2]), max[2]),
|
|
118
|
+
Math.min(Math.max(a[3], min[3]), max[3]),
|
|
119
|
+
];
|
|
120
|
+
}
|
|
121
|
+
exports.clamp = clamp;
|
|
122
|
+
/**
|
|
123
|
+
* symmetric round the components of a vec4
|
|
124
|
+
*/
|
|
125
|
+
function round(a) {
|
|
126
|
+
return [
|
|
127
|
+
Common.round(a[0]),
|
|
128
|
+
Common.round(a[1]),
|
|
129
|
+
Common.round(a[2]),
|
|
130
|
+
Common.round(a[3]),
|
|
131
|
+
];
|
|
132
|
+
}
|
|
133
|
+
exports.round = round;
|
|
134
|
+
/**
|
|
135
|
+
* Scales a vec4 by a scalar number
|
|
136
|
+
*
|
|
137
|
+
* @param a the vector to scale
|
|
138
|
+
* @param s amount to scale the vector by
|
|
139
|
+
*/
|
|
140
|
+
function scale(a, s) {
|
|
141
|
+
return [a[0] * s, a[1] * s, a[2] * s, a[3] * s];
|
|
142
|
+
}
|
|
143
|
+
exports.scale = scale;
|
|
144
|
+
/**
|
|
145
|
+
* Adds two vec4's after scaling the second operand by a scalar value
|
|
146
|
+
* @param scale the amount to scale b by before adding
|
|
147
|
+
*/
|
|
148
|
+
function scaleAndAdd(a, b, scale) {
|
|
149
|
+
return [
|
|
150
|
+
a[0] + b[0] * scale,
|
|
151
|
+
a[1] + b[1] * scale,
|
|
152
|
+
a[2] + b[2] * scale,
|
|
153
|
+
a[3] + b[3] * scale,
|
|
154
|
+
];
|
|
155
|
+
}
|
|
156
|
+
exports.scaleAndAdd = scaleAndAdd;
|
|
157
|
+
/**
|
|
158
|
+
* Calculates the euclidian distance between two vec4's
|
|
159
|
+
*/
|
|
160
|
+
function distance(a, b) {
|
|
161
|
+
const x = b[0] - a[0];
|
|
162
|
+
const y = b[1] - a[1];
|
|
163
|
+
const z = b[2] - a[2];
|
|
164
|
+
const w = b[3] - a[3];
|
|
165
|
+
return Math.sqrt(x * x + y * y + z * z + w * w);
|
|
166
|
+
}
|
|
167
|
+
exports.distance = distance;
|
|
168
|
+
/**
|
|
169
|
+
* Calculates the squared euclidian distance between two vec4's
|
|
170
|
+
*/
|
|
171
|
+
function squaredDistance(a, b) {
|
|
172
|
+
const x = b[0] - a[0];
|
|
173
|
+
const y = b[1] - a[1];
|
|
174
|
+
const z = b[2] - a[2];
|
|
175
|
+
const w = b[3] - a[3];
|
|
176
|
+
return x * x + y * y + z * z + w * w;
|
|
177
|
+
}
|
|
178
|
+
exports.squaredDistance = squaredDistance;
|
|
179
|
+
/**
|
|
180
|
+
* Calculates the length of a vec4
|
|
181
|
+
*/
|
|
182
|
+
function length(a) {
|
|
183
|
+
const [x, y, z, w] = a;
|
|
184
|
+
return Math.sqrt(x * x + y * y + z * z + w * w);
|
|
185
|
+
}
|
|
186
|
+
exports.length = length;
|
|
187
|
+
/**
|
|
188
|
+
* Calculates the squared length of a vec4
|
|
189
|
+
*/
|
|
190
|
+
function squaredLength(a) {
|
|
191
|
+
const [x, y, z, w] = a;
|
|
192
|
+
return x * x + y * y + z * z + w * w;
|
|
193
|
+
}
|
|
194
|
+
exports.squaredLength = squaredLength;
|
|
195
|
+
/**
|
|
196
|
+
* Negates the components of a vec4
|
|
197
|
+
*/
|
|
198
|
+
function negate(a) {
|
|
199
|
+
return [-a[0], -a[1], -a[2], -a[3]];
|
|
200
|
+
}
|
|
201
|
+
exports.negate = negate;
|
|
202
|
+
/**
|
|
203
|
+
* Returns the inverse of the components of a vec4
|
|
204
|
+
*/
|
|
205
|
+
function inverse(a) {
|
|
206
|
+
return [1 / a[0], 1 / a[1], 1 / a[2], 1 / a[3]];
|
|
207
|
+
}
|
|
208
|
+
exports.inverse = inverse;
|
|
209
|
+
/**
|
|
210
|
+
* Normalize a vec4
|
|
211
|
+
*/
|
|
212
|
+
function normalize(a) {
|
|
213
|
+
const [x, y, z, w] = a;
|
|
214
|
+
const hyp = x * x + y * y + z * z + w * w;
|
|
215
|
+
const len = hyp === 0 ? 0 : 1 / Math.sqrt(hyp);
|
|
216
|
+
return [x * len, y * len, z * len, w * len];
|
|
217
|
+
}
|
|
218
|
+
exports.normalize = normalize;
|
|
219
|
+
/**
|
|
220
|
+
* Calculates the dot product of two vec4's
|
|
221
|
+
*/
|
|
222
|
+
function dot(a, b) {
|
|
223
|
+
return a[0] * b[0] + a[1] * b[1] + a[2] * b[2] + a[3] * b[3];
|
|
224
|
+
}
|
|
225
|
+
exports.dot = dot;
|
|
226
|
+
/**
|
|
227
|
+
* Returns the cross-product of three vectors in a 4-dimensional space
|
|
228
|
+
*/
|
|
229
|
+
function cross(u, v, w) {
|
|
230
|
+
const A = v[0] * w[1] - v[1] * w[0];
|
|
231
|
+
const B = v[0] * w[2] - v[2] * w[0];
|
|
232
|
+
const C = v[0] * w[3] - v[3] * w[0];
|
|
233
|
+
const D = v[1] * w[2] - v[2] * w[1];
|
|
234
|
+
const E = v[1] * w[3] - v[3] * w[1];
|
|
235
|
+
const F = v[2] * w[3] - v[3] * w[2];
|
|
236
|
+
const [G, H, I, J] = u;
|
|
237
|
+
return [
|
|
238
|
+
H * F - I * E + J * D,
|
|
239
|
+
-(G * F) + I * C - J * B,
|
|
240
|
+
G * E - H * C + J * A,
|
|
241
|
+
-(G * D) + H * B - I * A,
|
|
242
|
+
];
|
|
243
|
+
}
|
|
244
|
+
exports.cross = cross;
|
|
245
|
+
/**
|
|
246
|
+
* Performs a linear interpolation between two vec4's
|
|
247
|
+
* @param t interpolation amount, in the range [0-1], between the two inputs
|
|
248
|
+
*/
|
|
249
|
+
function lerp(a, b, t) {
|
|
250
|
+
const [ax, ay, az, aw] = a;
|
|
251
|
+
return [
|
|
252
|
+
ax + t * (b[0] - ax),
|
|
253
|
+
ay + t * (b[1] - ay),
|
|
254
|
+
az + t * (b[2] - az),
|
|
255
|
+
aw + t * (b[3] - aw),
|
|
256
|
+
];
|
|
257
|
+
}
|
|
258
|
+
exports.lerp = lerp;
|
|
259
|
+
/**
|
|
260
|
+
* Transforms the vec4 with a mat4.
|
|
261
|
+
*/
|
|
262
|
+
function transformMat4(a, m) {
|
|
263
|
+
const [x, y, z, w] = a;
|
|
264
|
+
return [
|
|
265
|
+
m[0] * x + m[4] * y + m[8] * z + m[12] * w,
|
|
266
|
+
m[1] * x + m[5] * y + m[9] * z + m[13] * w,
|
|
267
|
+
m[2] * x + m[6] * y + m[10] * z + m[14] * w,
|
|
268
|
+
m[3] * x + m[7] * y + m[11] * z + m[15] * w,
|
|
269
|
+
];
|
|
270
|
+
}
|
|
271
|
+
exports.transformMat4 = transformMat4;
|
|
272
|
+
/**
|
|
273
|
+
* Transforms the vec4 with a quat
|
|
274
|
+
*/
|
|
275
|
+
function transformQuat(a, q) {
|
|
276
|
+
const [x, y, z] = a;
|
|
277
|
+
const [qx, qy, qz, qw] = q;
|
|
278
|
+
// calculate quat * vec
|
|
279
|
+
const ix = qw * x + qy * z - qz * y;
|
|
280
|
+
const iy = qw * y + qz * x - qx * z;
|
|
281
|
+
const iz = qw * z + qx * y - qy * x;
|
|
282
|
+
const iw = -qx * x - qy * y - qz * z;
|
|
283
|
+
// calculate result * inverse quat
|
|
284
|
+
return [
|
|
285
|
+
ix * qw + iw * -qx + iy * -qz - iz * -qy,
|
|
286
|
+
iy * qw + iw * -qy + iz * -qx - ix * -qz,
|
|
287
|
+
iz * qw + iw * -qz + ix * -qy - iy * -qx,
|
|
288
|
+
a[3],
|
|
289
|
+
];
|
|
290
|
+
}
|
|
291
|
+
exports.transformQuat = transformQuat;
|
|
292
|
+
/**
|
|
293
|
+
* Returns whether or not the vectors have exactly the same elements in the same position (when compared with ===)
|
|
294
|
+
*/
|
|
295
|
+
function exactEquals(a, b) {
|
|
296
|
+
return a[0] === b[0] && a[1] === b[1] && a[2] === b[2] && a[3] === b[3];
|
|
297
|
+
}
|
|
298
|
+
exports.exactEquals = exactEquals;
|
|
299
|
+
/**
|
|
300
|
+
* Returns whether or not the vectors have approximately the same elements in the same position.
|
|
301
|
+
*/
|
|
302
|
+
function equals(a, b) {
|
|
303
|
+
const [a0, a1, a2, a3] = a;
|
|
304
|
+
const [b0, b1, b2, b3] = b;
|
|
305
|
+
return (Math.abs(a0 - b0) <=
|
|
306
|
+
Common.EPSILON * Math.max(1, Math.abs(a0), Math.abs(b0)) &&
|
|
307
|
+
Math.abs(a1 - b1) <=
|
|
308
|
+
Common.EPSILON * Math.max(1, Math.abs(a1), Math.abs(b1)) &&
|
|
309
|
+
Math.abs(a2 - b2) <=
|
|
310
|
+
Common.EPSILON * Math.max(1, Math.abs(a2), Math.abs(b2)) &&
|
|
311
|
+
Math.abs(a3 - b3) <=
|
|
312
|
+
Common.EPSILON * Math.max(1, Math.abs(a3), Math.abs(b3)));
|
|
313
|
+
}
|
|
314
|
+
exports.equals = equals;
|
|
315
|
+
});
|
|
316
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidmVjNC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uL3NyYy92ZWM0LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0lBQUEsaURBQWtDO0lBTXJCLFFBQUEsSUFBSSxHQUFTLE1BQU0sQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFBO0lBRXhDLFFBQUEsR0FBRyxHQUFTLE1BQU0sQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFBO0lBRXBEOztPQUVHO0lBQ0gsU0FBZ0IsR0FBRyxDQUFDLENBQU8sRUFBRSxDQUFPO1FBQ25DLE9BQU8sQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUE7SUFDNUQsQ0FBQztJQUZELGtCQUVDO0lBRUQ7O09BRUc7SUFDSCxTQUFnQixRQUFRLENBQUMsQ0FBTyxFQUFFLENBQU87UUFDeEMsT0FBTyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQTtJQUM1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
|