@math.gl/core 3.6.0-alpha.1 → 3.6.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.
- package/dist/classes/base/math-array.d.ts +61 -31
- package/dist/classes/base/math-array.d.ts.map +1 -1
- package/dist/classes/base/math-array.js +67 -65
- package/dist/classes/base/matrix.d.ts +12 -10
- package/dist/classes/base/matrix.d.ts.map +1 -1
- package/dist/classes/base/matrix.js +2 -10
- package/dist/classes/base/vector.d.ts +37 -25
- package/dist/classes/base/vector.d.ts.map +1 -1
- package/dist/classes/base/vector.js +17 -24
- package/dist/classes/euler.d.ts +59 -55
- package/dist/classes/euler.d.ts.map +1 -1
- package/dist/classes/euler.js +57 -77
- package/dist/classes/matrix3.d.ts +58 -41
- package/dist/classes/matrix3.d.ts.map +1 -1
- package/dist/classes/matrix3.js +68 -59
- package/dist/classes/matrix4.d.ts +214 -90
- package/dist/classes/matrix4.d.ts.map +1 -1
- package/dist/classes/matrix4.js +252 -171
- package/dist/classes/pose.d.ts +29 -26
- package/dist/classes/pose.d.ts.map +1 -1
- package/dist/classes/pose.js +6 -23
- package/dist/classes/quaternion.d.ts +61 -40
- package/dist/classes/quaternion.d.ts.map +1 -1
- package/dist/classes/quaternion.js +49 -53
- package/dist/classes/spherical-coordinates.d.ts +45 -25
- package/dist/classes/spherical-coordinates.d.ts.map +1 -1
- package/dist/classes/spherical-coordinates.js +30 -24
- package/dist/classes/vector2.d.ts +51 -15
- package/dist/classes/vector2.d.ts.map +1 -1
- package/dist/classes/vector2.js +29 -23
- package/dist/classes/vector3.d.ts +47 -32
- package/dist/classes/vector3.d.ts.map +1 -1
- package/dist/classes/vector3.js +16 -30
- package/dist/classes/vector4.d.ts +37 -19
- package/dist/classes/vector4.d.ts.map +1 -1
- package/dist/classes/vector4.js +12 -24
- package/dist/es5/classes/base/math-array.js +248 -179
- package/dist/es5/classes/base/math-array.js.map +1 -1
- package/dist/es5/classes/base/matrix.js +74 -54
- package/dist/es5/classes/base/matrix.js.map +1 -1
- package/dist/es5/classes/base/vector.js +167 -121
- package/dist/es5/classes/base/vector.js.map +1 -1
- package/dist/es5/classes/euler.js +575 -480
- package/dist/es5/classes/euler.js.map +1 -1
- package/dist/es5/classes/matrix3.js +234 -158
- package/dist/es5/classes/matrix3.js.map +1 -1
- package/dist/es5/classes/matrix4.js +510 -417
- package/dist/es5/classes/matrix4.js.map +1 -1
- package/dist/es5/classes/pose.js +126 -101
- package/dist/es5/classes/pose.js.map +1 -1
- package/dist/es5/classes/quaternion.js +285 -213
- package/dist/es5/classes/quaternion.js.map +1 -1
- package/dist/es5/classes/spherical-coordinates.js +170 -125
- package/dist/es5/classes/spherical-coordinates.js.map +1 -1
- package/dist/es5/classes/vector2.js +118 -76
- package/dist/es5/classes/vector2.js.map +1 -1
- package/dist/es5/classes/vector3.js +171 -119
- package/dist/es5/classes/vector3.js.map +1 -1
- package/dist/es5/classes/vector4.js +141 -94
- package/dist/es5/classes/vector4.js.map +1 -1
- package/dist/es5/index.js +34 -34
- package/dist/es5/lib/common.js +56 -30
- package/dist/es5/lib/common.js.map +1 -1
- package/dist/es5/lib/gl-matrix-extras.js +14 -14
- package/dist/es5/lib/gl-matrix-extras.js.map +1 -1
- package/dist/es5/lib/gl-matrix.d.js +2 -0
- package/dist/es5/lib/gl-matrix.d.js.map +1 -0
- package/dist/es5/lib/validators.js +5 -3
- package/dist/es5/lib/validators.js.map +1 -1
- package/dist/esm/classes/base/math-array.js +45 -47
- package/dist/esm/classes/base/math-array.js.map +1 -1
- package/dist/esm/classes/base/matrix.js +0 -11
- package/dist/esm/classes/base/matrix.js.map +1 -1
- package/dist/esm/classes/base/vector.js +0 -10
- package/dist/esm/classes/base/vector.js.map +1 -1
- package/dist/esm/classes/euler.js +61 -48
- package/dist/esm/classes/euler.js.map +1 -1
- package/dist/esm/classes/matrix3.js +55 -33
- package/dist/esm/classes/matrix3.js.map +1 -1
- package/dist/esm/classes/matrix4.js +156 -136
- package/dist/esm/classes/matrix4.js.map +1 -1
- package/dist/esm/classes/pose.js +8 -4
- package/dist/esm/classes/pose.js.map +1 -1
- package/dist/esm/classes/quaternion.js +37 -27
- package/dist/esm/classes/quaternion.js.map +1 -1
- package/dist/esm/classes/spherical-coordinates.js +15 -5
- package/dist/esm/classes/spherical-coordinates.js.map +1 -1
- package/dist/esm/classes/vector2.js.map +1 -1
- package/dist/esm/classes/vector3.js +7 -2
- package/dist/esm/classes/vector3.js.map +1 -1
- package/dist/esm/classes/vector4.js +7 -2
- package/dist/esm/classes/vector4.js.map +1 -1
- package/dist/esm/lib/common.js +8 -8
- package/dist/esm/lib/common.js.map +1 -1
- package/dist/esm/lib/gl-matrix-extras.js.map +1 -1
- package/dist/esm/lib/gl-matrix.d.js +2 -0
- package/dist/esm/lib/gl-matrix.d.js.map +1 -0
- package/dist/esm/lib/validators.js.map +1 -1
- package/dist/lib/common.d.ts +14 -11
- package/dist/lib/common.d.ts.map +1 -1
- package/dist/lib/common.js +10 -23
- package/dist/lib/gl-matrix-extras.d.ts +6 -5
- package/dist/lib/gl-matrix-extras.d.ts.map +1 -1
- package/dist/lib/gl-matrix-extras.js +0 -1
- package/dist/lib/validators.d.ts +5 -4
- package/dist/lib/validators.d.ts.map +1 -1
- package/dist/lib/validators.js +0 -19
- package/package.json +4 -4
- package/src/classes/base/math-array.ts +265 -0
- package/src/classes/base/{matrix.js → matrix.ts} +15 -19
- package/src/classes/base/{vector.js → vector.ts} +47 -54
- package/src/classes/{euler.js → euler.ts} +121 -221
- package/src/classes/matrix3.ts +253 -0
- package/src/classes/matrix4.ts +668 -0
- package/src/classes/{pose.js → pose.ts} +52 -49
- package/src/classes/{quaternion.js → quaternion.ts} +107 -95
- package/src/classes/{spherical-coordinates.js → spherical-coordinates.ts} +84 -54
- package/src/classes/vector2.ts +127 -0
- package/src/classes/{vector3.js → vector3.ts} +43 -55
- package/src/classes/{vector4.js → vector4.ts} +44 -48
- package/src/lib/common.ts +58 -37
- package/src/lib/gl-matrix-extras.ts +26 -5
- package/src/lib/gl-matrix.d.ts +266 -0
- package/src/lib/validators.ts +10 -6
- package/dist/es5/classes/base/math-array.d.js +0 -46
- package/dist/es5/classes/base/math-array.d.js.map +0 -1
- package/dist/es5/classes/base/matrix.d.js +0 -15
- package/dist/es5/classes/base/matrix.d.js.map +0 -1
- package/dist/es5/classes/base/vector.d.js +0 -24
- package/dist/es5/classes/base/vector.d.js.map +0 -1
- package/dist/es5/classes/euler.d.js +0 -45
- package/dist/es5/classes/euler.d.js.map +0 -1
- package/dist/es5/classes/matrix3.d.js +0 -25
- package/dist/es5/classes/matrix3.d.js.map +0 -1
- package/dist/es5/classes/matrix4.d.js +0 -25
- package/dist/es5/classes/matrix4.d.js.map +0 -1
- package/dist/es5/classes/pose.d.js +0 -25
- package/dist/es5/classes/pose.d.js.map +0 -1
- package/dist/es5/classes/quaternion.d.js +0 -27
- package/dist/es5/classes/quaternion.d.js.map +0 -1
- package/dist/es5/classes/spherical-coordinates.d.js +0 -27
- package/dist/es5/classes/spherical-coordinates.d.js.map +0 -1
- package/dist/es5/classes/vector2.d.js +0 -18
- package/dist/es5/classes/vector2.d.js.map +0 -1
- package/dist/es5/classes/vector3.d.js +0 -24
- package/dist/es5/classes/vector3.d.js.map +0 -1
- package/dist/es5/classes/vector4.d.js +0 -25
- package/dist/es5/classes/vector4.d.js.map +0 -1
- package/dist/esm/classes/base/math-array.d.js +0 -36
- package/dist/esm/classes/base/math-array.d.js.map +0 -1
- package/dist/esm/classes/base/matrix.d.js +0 -3
- package/dist/esm/classes/base/matrix.d.js.map +0 -1
- package/dist/esm/classes/base/vector.d.js +0 -13
- package/dist/esm/classes/base/vector.d.js.map +0 -1
- package/dist/esm/classes/euler.d.js +0 -55
- package/dist/esm/classes/euler.d.js.map +0 -1
- package/dist/esm/classes/matrix3.d.js +0 -15
- package/dist/esm/classes/matrix3.d.js.map +0 -1
- package/dist/esm/classes/matrix4.d.js +0 -15
- package/dist/esm/classes/matrix4.d.js.map +0 -1
- package/dist/esm/classes/pose.d.js +0 -18
- package/dist/esm/classes/pose.d.js.map +0 -1
- package/dist/esm/classes/quaternion.d.js +0 -19
- package/dist/esm/classes/quaternion.d.js.map +0 -1
- package/dist/esm/classes/spherical-coordinates.d.js +0 -22
- package/dist/esm/classes/spherical-coordinates.d.js.map +0 -1
- package/dist/esm/classes/vector2.d.js +0 -6
- package/dist/esm/classes/vector2.d.js.map +0 -1
- package/dist/esm/classes/vector3.d.js +0 -13
- package/dist/esm/classes/vector3.d.js.map +0 -1
- package/dist/esm/classes/vector4.d.js +0 -15
- package/dist/esm/classes/vector4.d.js.map +0 -1
- package/src/classes/base/math-array.d.ts +0 -55
- package/src/classes/base/math-array.js +0 -250
- package/src/classes/base/matrix.d.ts +0 -15
- package/src/classes/base/vector.d.ts +0 -45
- package/src/classes/euler.d.ts +0 -92
- package/src/classes/matrix3.d.ts +0 -91
- package/src/classes/matrix3.js +0 -225
- package/src/classes/matrix4.d.ts +0 -161
- package/src/classes/matrix4.js +0 -530
- package/src/classes/pose.d.ts +0 -92
- package/src/classes/quaternion.d.ts +0 -107
- package/src/classes/spherical-coordinates.d.ts +0 -87
- package/src/classes/vector2.d.ts +0 -65
- package/src/classes/vector2.js +0 -122
- package/src/classes/vector3.d.ts +0 -65
- package/src/classes/vector4.d.ts +0 -34
package/dist/es5/lib/common.js
CHANGED
|
@@ -26,11 +26,13 @@ exports.exactEquals = exactEquals;
|
|
|
26
26
|
exports.withEpsilon = withEpsilon;
|
|
27
27
|
exports.config = void 0;
|
|
28
28
|
|
|
29
|
+
var _typeof2 = _interopRequireDefault(require("@babel/runtime/helpers/typeof"));
|
|
30
|
+
|
|
29
31
|
var _assert = _interopRequireDefault(require("./assert"));
|
|
30
32
|
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
33
|
+
var RADIANS_TO_DEGREES = 1 / Math.PI * 180;
|
|
34
|
+
var DEGREES_TO_RADIANS = 1 / 180 * Math.PI;
|
|
35
|
+
var config = {};
|
|
34
36
|
exports.config = config;
|
|
35
37
|
config.EPSILON = 1e-12;
|
|
36
38
|
config.debug = false;
|
|
@@ -39,8 +41,10 @@ config.printTypes = false;
|
|
|
39
41
|
config.printDegrees = false;
|
|
40
42
|
config.printRowMajor = true;
|
|
41
43
|
|
|
42
|
-
function configure(
|
|
43
|
-
|
|
44
|
+
function configure() {
|
|
45
|
+
var options = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};
|
|
46
|
+
|
|
47
|
+
for (var key in options) {
|
|
44
48
|
(0, _assert.default)(key in config);
|
|
45
49
|
config[key] = options[key];
|
|
46
50
|
}
|
|
@@ -48,9 +52,11 @@ function configure(options = {}) {
|
|
|
48
52
|
return config;
|
|
49
53
|
}
|
|
50
54
|
|
|
51
|
-
function formatValue(value
|
|
52
|
-
|
|
53
|
-
|
|
55
|
+
function formatValue(value) {
|
|
56
|
+
var _ref = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {},
|
|
57
|
+
_ref$precision = _ref.precision,
|
|
58
|
+
precision = _ref$precision === void 0 ? config.precision || 4 : _ref$precision;
|
|
59
|
+
|
|
54
60
|
value = round(value);
|
|
55
61
|
return "".concat(parseFloat(value.toPrecision(precision)));
|
|
56
62
|
}
|
|
@@ -60,7 +66,7 @@ function isArray(value) {
|
|
|
60
66
|
}
|
|
61
67
|
|
|
62
68
|
function clone(array) {
|
|
63
|
-
return 'clone' in array ? array.clone() :
|
|
69
|
+
return 'clone' in array ? array.clone() : array.slice();
|
|
64
70
|
}
|
|
65
71
|
|
|
66
72
|
function toRadians(degrees) {
|
|
@@ -72,51 +78,71 @@ function toDegrees(radians) {
|
|
|
72
78
|
}
|
|
73
79
|
|
|
74
80
|
function radians(degrees, result) {
|
|
75
|
-
return map(degrees,
|
|
81
|
+
return map(degrees, function (degrees) {
|
|
82
|
+
return degrees * DEGREES_TO_RADIANS;
|
|
83
|
+
}, result);
|
|
76
84
|
}
|
|
77
85
|
|
|
78
86
|
function degrees(radians, result) {
|
|
79
|
-
return map(radians,
|
|
87
|
+
return map(radians, function (radians) {
|
|
88
|
+
return radians * RADIANS_TO_DEGREES;
|
|
89
|
+
}, result);
|
|
80
90
|
}
|
|
81
91
|
|
|
82
92
|
function sin(radians, result) {
|
|
83
|
-
return map(radians,
|
|
93
|
+
return map(radians, function (angle) {
|
|
94
|
+
return Math.sin(angle);
|
|
95
|
+
}, result);
|
|
84
96
|
}
|
|
85
97
|
|
|
86
98
|
function cos(radians, result) {
|
|
87
|
-
return map(radians,
|
|
99
|
+
return map(radians, function (angle) {
|
|
100
|
+
return Math.cos(angle);
|
|
101
|
+
}, result);
|
|
88
102
|
}
|
|
89
103
|
|
|
90
104
|
function tan(radians, result) {
|
|
91
|
-
return map(radians,
|
|
105
|
+
return map(radians, function (angle) {
|
|
106
|
+
return Math.tan(angle);
|
|
107
|
+
}, result);
|
|
92
108
|
}
|
|
93
109
|
|
|
94
|
-
function asin(radians) {
|
|
95
|
-
return map(radians,
|
|
110
|
+
function asin(radians, result) {
|
|
111
|
+
return map(radians, function (angle) {
|
|
112
|
+
return Math.asin(angle);
|
|
113
|
+
}, result);
|
|
96
114
|
}
|
|
97
115
|
|
|
98
|
-
function acos(radians) {
|
|
99
|
-
return map(radians,
|
|
116
|
+
function acos(radians, result) {
|
|
117
|
+
return map(radians, function (angle) {
|
|
118
|
+
return Math.acos(angle);
|
|
119
|
+
}, result);
|
|
100
120
|
}
|
|
101
121
|
|
|
102
|
-
function atan(radians) {
|
|
103
|
-
return map(radians,
|
|
122
|
+
function atan(radians, result) {
|
|
123
|
+
return map(radians, function (angle) {
|
|
124
|
+
return Math.atan(angle);
|
|
125
|
+
}, result);
|
|
104
126
|
}
|
|
105
127
|
|
|
106
128
|
function clamp(value, min, max) {
|
|
107
|
-
return map(value,
|
|
129
|
+
return map(value, function (value) {
|
|
130
|
+
return Math.max(min, Math.min(max, value));
|
|
131
|
+
});
|
|
108
132
|
}
|
|
109
133
|
|
|
110
134
|
function lerp(a, b, t) {
|
|
111
135
|
if (isArray(a)) {
|
|
112
|
-
return a.map((ai, i)
|
|
136
|
+
return a.map(function (ai, i) {
|
|
137
|
+
return lerp(ai, b[i], t);
|
|
138
|
+
});
|
|
113
139
|
}
|
|
114
140
|
|
|
115
141
|
return t * b + (1 - t) * a;
|
|
116
142
|
}
|
|
117
143
|
|
|
118
144
|
function equals(a, b, epsilon) {
|
|
119
|
-
|
|
145
|
+
var oldEpsilon = config.EPSILON;
|
|
120
146
|
|
|
121
147
|
if (epsilon) {
|
|
122
148
|
config.EPSILON = epsilon;
|
|
@@ -132,7 +158,7 @@ function equals(a, b, epsilon) {
|
|
|
132
158
|
return false;
|
|
133
159
|
}
|
|
134
160
|
|
|
135
|
-
for (
|
|
161
|
+
for (var i = 0; i < a.length; ++i) {
|
|
136
162
|
if (!equals(a[i], b[i])) {
|
|
137
163
|
return false;
|
|
138
164
|
}
|
|
@@ -164,7 +190,7 @@ function exactEquals(a, b) {
|
|
|
164
190
|
return true;
|
|
165
191
|
}
|
|
166
192
|
|
|
167
|
-
if (a &&
|
|
193
|
+
if (a && (0, _typeof2.default)(a) === 'object' && b && (0, _typeof2.default)(b) === 'object') {
|
|
168
194
|
if (a.constructor !== b.constructor) {
|
|
169
195
|
return false;
|
|
170
196
|
}
|
|
@@ -179,7 +205,7 @@ function exactEquals(a, b) {
|
|
|
179
205
|
return false;
|
|
180
206
|
}
|
|
181
207
|
|
|
182
|
-
for (
|
|
208
|
+
for (var i = 0; i < a.length; ++i) {
|
|
183
209
|
if (!exactEquals(a[i], b[i])) {
|
|
184
210
|
return false;
|
|
185
211
|
}
|
|
@@ -192,9 +218,9 @@ function exactEquals(a, b) {
|
|
|
192
218
|
}
|
|
193
219
|
|
|
194
220
|
function withEpsilon(epsilon, func) {
|
|
195
|
-
|
|
221
|
+
var oldPrecision = config.EPSILON;
|
|
196
222
|
config.EPSILON = epsilon;
|
|
197
|
-
|
|
223
|
+
var value;
|
|
198
224
|
|
|
199
225
|
try {
|
|
200
226
|
value = func();
|
|
@@ -215,10 +241,10 @@ function duplicateArray(array) {
|
|
|
215
241
|
|
|
216
242
|
function map(value, func, result) {
|
|
217
243
|
if (isArray(value)) {
|
|
218
|
-
|
|
244
|
+
var array = value;
|
|
219
245
|
result = result || duplicateArray(array);
|
|
220
246
|
|
|
221
|
-
for (
|
|
247
|
+
for (var i = 0; i < result.length && i < array.length; ++i) {
|
|
222
248
|
result[i] = func(value[i], i, result);
|
|
223
249
|
}
|
|
224
250
|
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../../src/lib/common.ts"],"names":["RADIANS_TO_DEGREES","Math","PI","DEGREES_TO_RADIANS","config","EPSILON","debug","precision","printTypes","printDegrees","printRowMajor","configure","options","key","formatValue","value","round","parseFloat","toPrecision","isArray","Array","ArrayBuffer","isView","DataView","clone","array","toRadians","degrees","radians","toDegrees","result","map","sin","angle","cos","tan","asin","acos","atan","clamp","min","max","lerp","a","b","t","ai","i","equals","epsilon","oldEpsilon","length","abs","exactEquals","constructor","withEpsilon","func","oldPrecision","duplicateArray"],"mappings":"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","sourcesContent":["// Copyright (c) 2017 Uber Technologies, Inc.\n// MIT License\nimport {NumericArray} from '@math.gl/types';\nimport assert from './assert';\n\nexport type ConfigurationOptions = {\n EPSILON?: number;\n debug?: boolean;\n precision?: number;\n printTypes?: boolean;\n printDegrees?: boolean;\n printRowMajor?: boolean;\n _cartographicRadians?: boolean;\n};\n\nconst RADIANS_TO_DEGREES = (1 / Math.PI) * 180;\nconst DEGREES_TO_RADIANS = (1 / 180) * Math.PI;\n\n// TODO - remove\n/* eslint-disable no-shadow */\nexport const config: ConfigurationOptions = {};\n\nconfig.EPSILON = 1e-12;\nconfig.debug = false;\nconfig.precision = 4;\nconfig.printTypes = false;\nconfig.printDegrees = false;\nconfig.printRowMajor = true;\n\nexport function configure(options: ConfigurationOptions = {}): ConfigurationOptions {\n // Only copy existing keys\n for (const key in options) {\n assert(key in config);\n config[key] = options[key];\n }\n return config;\n}\n\n/**\n * Formats a value into a string\n * @param value\n * @param param1\n * @returns\n */\nexport function formatValue(\n value: number,\n {precision = config.precision || 4}: ConfigurationOptions = {}\n): string {\n value = round(value);\n // get rid of trailing zeros\n return `${parseFloat(value.toPrecision(precision))}`;\n}\n\n/**\n * Check if value is an \"array\"\n * Returns `true` if value is either an array or a typed array\n *\n * Note: returns `false` for `ArrayBuffer` and `DataView` instances\n */\nexport function isArray(value: unknown): boolean {\n return Array.isArray(value) || (ArrayBuffer.isView(value) && !(value instanceof DataView));\n}\n\nexport function clone(array: NumericArray): NumericArray {\n // @ts-expect-error We are speculatively calling clone\n return 'clone' in array ? array.clone() : new Array(...array);\n}\n\nexport function toRadians(degrees: number): number;\nexport function toRadians(degrees: NumericArray): NumericArray;\n\nexport function toRadians(degrees): any {\n return radians(degrees);\n}\n\nexport function toDegrees(degrees: number): number;\nexport function toDegrees(degrees: NumericArray): NumericArray;\n\nexport function toDegrees(radians): any {\n return degrees(radians);\n}\n\n// GLSL math function equivalents - Works on both single values and vectors\n\n/**\n * \"GLSL equivalent\" radians: Works on single values and vectors\n */\nexport function radians(degrees: number): number;\nexport function radians(degrees: NumericArray, result?: NumericArray): NumericArray;\n\nexport function radians(degrees, result?) {\n return map(degrees, (degrees) => degrees * DEGREES_TO_RADIANS, result);\n}\n\n/**\n * \"GLSL equivalent\" degrees: Works on single values and vectors\n */\nexport function degrees(radians: number): number;\nexport function degrees(radians: NumericArray, result?: NumericArray): NumericArray;\n\nexport function degrees(radians: number | NumericArray, result?) {\n return map(radians, (radians) => radians * RADIANS_TO_DEGREES, result);\n}\n\n/**\n * \"GLSL equivalent\" of `Math.sin`: Works on single values and vectors\n * @deprecated\n */\nexport function sin(radians: any, result?: any): any {\n return map(radians, (angle) => Math.sin(angle), result);\n}\n\n/**\n * \"GLSL equivalent\" of `Math.cos`: Works on single values and vectors\n * @deprecated\n */\nexport function cos(radians: number | NumericArray, result?) {\n return map(radians, (angle) => Math.cos(angle), result);\n}\n\n/**\n * \"GLSL equivalent\" of `Math.tan`: Works on single values and vectors\n * @deprecated\n */\nexport function tan(radians: number | NumericArray, result?) {\n return map(radians, (angle) => Math.tan(angle));\n}\n\n/**\n * \"GLSL equivalent\" of `Math.asin`: Works on single values and vectors\n * @deprecated\n */\nexport function asin(radians: number | NumericArray) {\n return map(radians, (angle) => Math.asin(angle));\n}\n\n/**\n * \"GLSL equivalent\" of `Math.acos`: Works on single values and vectors\n * @deprecated\n */\nexport function acos(radians: number | NumericArray) {\n return map(radians, (angle) => Math.acos(angle));\n}\n\n/**\n * \"GLSL equivalent\" of `Math.atan`: Works on single values and vectors\n * @deprecated\n */\nexport function atan(radians: number | NumericArray) {\n return map(radians, (angle) => Math.atan(angle));\n}\n\n/**\n * GLSL style value clamping: Works on single values and vectors\n */\nexport function clamp(value: number | NumericArray, min: number, max: number) {\n return map(value, (value) => Math.max(min, Math.min(max, value)));\n}\n\n/**\n * Interpolate between two numbers or two arrays\n */\nexport function lerp(a, b, t: number) {\n if (isArray(a)) {\n return a.map((ai, i) => lerp(ai, b[i], t));\n }\n return t * b + (1 - t) * a;\n}\n\n/**\n * Compares any two math objects, using `equals` method if available.\n * @param a\n * @param b\n * @param epsilon\n * @returns\n */\n// eslint-disable-next-line complexity\nexport function equals(a: unknown, b: unknown, epsilon?: number): boolean {\n const oldEpsilon = config.EPSILON;\n if (epsilon) {\n config.EPSILON = epsilon;\n }\n try {\n if (a === b) {\n return true;\n }\n if (isArray(a) && isArray(b)) {\n // @ts-expect-error isArray has checked\n if (a.length !== b.length) {\n return false;\n }\n // @ts-expect-error isArray has checked\n for (let i = 0; i < a.length; ++i) {\n // eslint-disable-next-line max-depth\n if (!equals(a[i], b[i])) {\n return false;\n }\n }\n return true;\n }\n // @ts-expect-error Dynamic testing\n if (a && a.equals) {\n // @ts-expect-error Dynamic testing\n return a.equals(b);\n }\n // @ts-expect-error Dynamic testing\n if (b && b.equals) {\n // @ts-expect-error Dynamic testing\n return b.equals(a);\n }\n if (typeof a === 'number' && typeof b === 'number') {\n return Math.abs(a - b) <= config.EPSILON * Math.max(1, Math.abs(a), Math.abs(b));\n }\n return false;\n } finally {\n config.EPSILON = oldEpsilon;\n }\n}\n\n// eslint-disable-next-line complexity\nexport function exactEquals(a, b): boolean {\n if (a === b) {\n return true;\n }\n if (a && typeof a === 'object' && b && typeof b === 'object') {\n if (a.constructor !== b.constructor) {\n return false;\n }\n if (a.exactEquals) {\n return a.exactEquals(b);\n }\n }\n if (isArray(a) && isArray(b)) {\n if (a.length !== b.length) {\n return false;\n }\n for (let i = 0; i < a.length; ++i) {\n if (!exactEquals(a[i], b[i])) {\n return false;\n }\n }\n return true;\n }\n return false;\n}\n\nexport function withEpsilon(epsilon: number, func: Function): any {\n const oldPrecision = config.EPSILON;\n config.EPSILON = epsilon;\n let value;\n try {\n value = func();\n } finally {\n config.EPSILON = oldPrecision;\n }\n return value;\n}\n\n// HELPERS\n\nfunction round(value: number): number {\n return Math.round(value / config.EPSILON) * config.EPSILON;\n}\n\n// If the array has a clone function, calls it, otherwise returns a copy\nfunction duplicateArray(array: NumericArray): NumericArray {\n // @ts-expect-error We check for math.gl class methods\n return array.clone ? array.clone() : new Array(array.length);\n}\n\n// If the argument value is an array, applies the func element wise,\n// otherwise applies func to the argument value\nfunction map(value: number | NumericArray, func: Function, result?) {\n if (isArray(value)) {\n const array = value as NumericArray;\n result = result || duplicateArray(array);\n for (let i = 0; i < result.length && i < array.length; ++i) {\n result[i] = func(value[i], i, result);\n }\n return result;\n }\n return func(value);\n}\n"],"file":"common.js"}
|
|
1
|
+
{"version":3,"sources":["../../../src/lib/common.ts"],"names":["RADIANS_TO_DEGREES","Math","PI","DEGREES_TO_RADIANS","config","EPSILON","debug","precision","printTypes","printDegrees","printRowMajor","configure","options","key","formatValue","value","round","parseFloat","toPrecision","isArray","Array","ArrayBuffer","isView","DataView","clone","array","slice","toRadians","degrees","radians","toDegrees","result","map","sin","angle","cos","tan","asin","acos","atan","clamp","min","max","lerp","a","b","t","ai","i","equals","epsilon","oldEpsilon","length","abs","exactEquals","constructor","withEpsilon","func","oldPrecision","duplicateArray"],"mappings":"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","sourcesContent":["// Copyright (c) 2017 Uber Technologies, Inc.\n// MIT License\nimport {NumericArray} from '@math.gl/types';\nimport assert from './assert';\n\nimport type MathArray from '../classes/base/math-array';\n\nexport type ConfigurationOptions = {\n EPSILON?: number;\n debug?: boolean;\n precision?: number;\n printTypes?: boolean;\n printDegrees?: boolean;\n printRowMajor?: boolean;\n _cartographicRadians?: boolean;\n};\n\nconst RADIANS_TO_DEGREES = (1 / Math.PI) * 180;\nconst DEGREES_TO_RADIANS = (1 / 180) * Math.PI;\n\n// TODO - remove\n/* eslint-disable no-shadow */\nexport const config: ConfigurationOptions = {};\n\nconfig.EPSILON = 1e-12;\nconfig.debug = false;\nconfig.precision = 4;\nconfig.printTypes = false;\nconfig.printDegrees = false;\nconfig.printRowMajor = true;\n\nexport function configure(options: ConfigurationOptions = {}): ConfigurationOptions {\n // Only copy existing keys\n for (const key in options) {\n assert(key in config);\n config[key] = options[key];\n }\n return config;\n}\n\n/**\n * Formats a value into a string\n * @param value\n * @param param1\n * @returns\n */\nexport function formatValue(\n value: number,\n {precision = config.precision || 4}: ConfigurationOptions = {}\n): string {\n value = round(value);\n // get rid of trailing zeros\n return `${parseFloat(value.toPrecision(precision))}`;\n}\n\n/**\n * Check if value is an \"array\"\n * Returns `true` if value is either an array or a typed array\n *\n * Note: returns `false` for `ArrayBuffer` and `DataView` instances\n */\nexport function isArray(value: unknown): boolean {\n return Array.isArray(value) || (ArrayBuffer.isView(value) && !(value instanceof DataView));\n}\n\nexport function clone(array: NumericArray | MathArray): NumericArray {\n return 'clone' in array ? array.clone() : array.slice();\n}\n\nexport function toRadians(degrees: number): number;\nexport function toRadians(degrees: NumericArray): NumericArray;\n\nexport function toRadians(degrees: number | NumericArray): number | NumericArray {\n return radians(degrees as NumericArray);\n}\n\nexport function toDegrees(degrees: number): number;\nexport function toDegrees(degrees: NumericArray): NumericArray;\n\nexport function toDegrees(radians: number | NumericArray): number | NumericArray {\n return degrees(radians as NumericArray);\n}\n\n// GLSL math function equivalents - Works on both single values and vectors\n\n/**\n * \"GLSL equivalent\" radians: Works on single values and vectors\n */\nexport function radians(degrees: number): number;\nexport function radians(degrees: NumericArray, result?: NumericArray): NumericArray;\n\nexport function radians(\n degrees: number | NumericArray,\n result?: NumericArray\n): number | NumericArray {\n return map(degrees, (degrees) => degrees * DEGREES_TO_RADIANS, result);\n}\n\n/**\n * \"GLSL equivalent\" degrees: Works on single values and vectors\n */\nexport function degrees(radians: number): number;\nexport function degrees(radians: NumericArray, result?: NumericArray): NumericArray;\n\nexport function degrees(\n radians: number | NumericArray,\n result?: NumericArray\n): number | NumericArray {\n return map(radians, (radians) => radians * RADIANS_TO_DEGREES, result);\n}\n\n/**\n * \"GLSL equivalent\" of `Math.sin`: Works on single values and vectors\n * @deprecated\n */\nexport function sin(radians: number | NumericArray, result?: NumericArray): number | NumericArray {\n return map(radians, (angle) => Math.sin(angle), result);\n}\n\n/**\n * \"GLSL equivalent\" of `Math.cos`: Works on single values and vectors\n * @deprecated\n */\nexport function cos(radians: number | NumericArray, result?: NumericArray): number | NumericArray {\n return map(radians, (angle) => Math.cos(angle), result);\n}\n\n/**\n * \"GLSL equivalent\" of `Math.tan`: Works on single values and vectors\n * @deprecated\n */\nexport function tan(radians: number | NumericArray, result?: NumericArray): number | NumericArray {\n return map(radians, (angle) => Math.tan(angle), result);\n}\n\n/**\n * \"GLSL equivalent\" of `Math.asin`: Works on single values and vectors\n * @deprecated\n */\nexport function asin(radians: number | NumericArray, result?: NumericArray): number | NumericArray {\n return map(radians, (angle) => Math.asin(angle), result);\n}\n\n/**\n * \"GLSL equivalent\" of `Math.acos`: Works on single values and vectors\n * @deprecated\n */\nexport function acos(radians: number | NumericArray, result?: NumericArray): number | NumericArray {\n return map(radians, (angle) => Math.acos(angle), result);\n}\n\n/**\n * \"GLSL equivalent\" of `Math.atan`: Works on single values and vectors\n * @deprecated\n */\nexport function atan(radians: number | NumericArray, result?: NumericArray): number | NumericArray {\n return map(radians, (angle) => Math.atan(angle), result);\n}\n\n/**\n * GLSL style value clamping: Works on single values and vectors\n */\nexport function clamp(value: number, min: number, max: number): number;\nexport function clamp(value: NumericArray, min: number, max: number): NumericArray;\n\nexport function clamp(\n value: number | NumericArray,\n min: number,\n max: number\n): number | NumericArray {\n return map(value, (value) => Math.max(min, Math.min(max, value)));\n}\n\n/**\n * Interpolate between two numbers or two arrays\n */\nexport function lerp(a: number, b: number, t: number): number;\nexport function lerp(a: NumericArray, b: NumericArray, t: number): NumericArray;\n\nexport function lerp(\n a: number | NumericArray,\n b: number | NumericArray,\n t: number\n): number | NumericArray {\n if (isArray(a)) {\n return (a as NumericArray).map((ai: number, i: number) => lerp(ai, (b as NumericArray)[i], t));\n }\n return t * (b as number) + (1 - t) * (a as number);\n}\n\n/* eslint-disable */\n\n/**\n * Compares any two math objects, using `equals` method if available.\n * @param a\n * @param b\n * @param epsilon\n * @returns\n */\nexport function equals(a: any, b: any, epsilon?: number): boolean {\n const oldEpsilon = config.EPSILON;\n if (epsilon) {\n config.EPSILON = epsilon;\n }\n try {\n if (a === b) {\n return true;\n }\n if (isArray(a) && isArray(b)) {\n if (a.length !== b.length) {\n return false;\n }\n for (let i = 0; i < a.length; ++i) {\n // eslint-disable-next-line max-depth\n if (!equals(a[i], b[i])) {\n return false;\n }\n }\n return true;\n }\n if (a && a.equals) {\n return a.equals(b);\n }\n if (b && b.equals) {\n return b.equals(a);\n }\n if (typeof a === 'number' && typeof b === 'number') {\n return Math.abs(a - b) <= config.EPSILON * Math.max(1, Math.abs(a), Math.abs(b));\n }\n return false;\n } finally {\n config.EPSILON = oldEpsilon;\n }\n}\n\nexport function exactEquals(a: any, b: any): boolean {\n if (a === b) {\n return true;\n }\n if (a && typeof a === 'object' && b && typeof b === 'object') {\n if (a.constructor !== b.constructor) {\n return false;\n }\n if (a.exactEquals) {\n return a.exactEquals(b);\n }\n }\n if (isArray(a) && isArray(b)) {\n if (a.length !== b.length) {\n return false;\n }\n for (let i = 0; i < a.length; ++i) {\n if (!exactEquals(a[i], b[i])) {\n return false;\n }\n }\n return true;\n }\n return false;\n}\n\n/* eslint-enable */\n\nexport function withEpsilon(epsilon: number, func: () => any): any {\n const oldPrecision = config.EPSILON;\n config.EPSILON = epsilon;\n let value;\n try {\n value = func();\n } finally {\n config.EPSILON = oldPrecision;\n }\n return value;\n}\n\n// HELPERS\n\nfunction round(value: number): number {\n return Math.round(value / config.EPSILON) * config.EPSILON;\n}\n\n// If the array has a clone function, calls it, otherwise returns a copy\nfunction duplicateArray(array: NumericArray): NumericArray {\n // @ts-expect-error We check for math.gl class methods\n return array.clone ? array.clone() : (new Array(array.length) as number[]);\n}\n\n// If the argument value is an array, applies the func element wise,\n// otherwise applies func to the argument value\nfunction map(\n value: number | NumericArray,\n func: (x: number, index?: number, result?: NumericArray) => number,\n result?: NumericArray\n): number | NumericArray {\n if (isArray(value)) {\n const array = value as NumericArray;\n result = result || duplicateArray(array);\n for (let i = 0; i < result.length && i < array.length; ++i) {\n result[i] = func(value[i], i, result);\n }\n return result;\n }\n return func(value as number);\n}\n"],"file":"common.js"}
|
|
@@ -10,19 +10,19 @@ exports.vec4_transformMat2 = vec4_transformMat2;
|
|
|
10
10
|
exports.vec4_transformMat3 = vec4_transformMat3;
|
|
11
11
|
|
|
12
12
|
function vec2_transformMat4AsVector(out, a, m) {
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
13
|
+
var x = a[0];
|
|
14
|
+
var y = a[1];
|
|
15
|
+
var w = m[3] * x + m[7] * y || 1.0;
|
|
16
16
|
out[0] = (m[0] * x + m[4] * y) / w;
|
|
17
17
|
out[1] = (m[1] * x + m[5] * y) / w;
|
|
18
18
|
return out;
|
|
19
19
|
}
|
|
20
20
|
|
|
21
21
|
function vec3_transformMat4AsVector(out, a, m) {
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
22
|
+
var x = a[0];
|
|
23
|
+
var y = a[1];
|
|
24
|
+
var z = a[2];
|
|
25
|
+
var w = m[3] * x + m[7] * y + m[11] * z || 1.0;
|
|
26
26
|
out[0] = (m[0] * x + m[4] * y + m[8] * z) / w;
|
|
27
27
|
out[1] = (m[1] * x + m[5] * y + m[9] * z) / w;
|
|
28
28
|
out[2] = (m[2] * x + m[6] * y + m[10] * z) / w;
|
|
@@ -30,8 +30,8 @@ function vec3_transformMat4AsVector(out, a, m) {
|
|
|
30
30
|
}
|
|
31
31
|
|
|
32
32
|
function vec3_transformMat2(out, a, m) {
|
|
33
|
-
|
|
34
|
-
|
|
33
|
+
var x = a[0];
|
|
34
|
+
var y = a[1];
|
|
35
35
|
out[0] = m[0] * x + m[2] * y;
|
|
36
36
|
out[1] = m[1] * x + m[3] * y;
|
|
37
37
|
out[2] = a[2];
|
|
@@ -39,8 +39,8 @@ function vec3_transformMat2(out, a, m) {
|
|
|
39
39
|
}
|
|
40
40
|
|
|
41
41
|
function vec4_transformMat2(out, a, m) {
|
|
42
|
-
|
|
43
|
-
|
|
42
|
+
var x = a[0];
|
|
43
|
+
var y = a[1];
|
|
44
44
|
out[0] = m[0] * x + m[2] * y;
|
|
45
45
|
out[1] = m[1] * x + m[3] * y;
|
|
46
46
|
out[2] = a[2];
|
|
@@ -49,9 +49,9 @@ function vec4_transformMat2(out, a, m) {
|
|
|
49
49
|
}
|
|
50
50
|
|
|
51
51
|
function vec4_transformMat3(out, a, m) {
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
|
|
52
|
+
var x = a[0];
|
|
53
|
+
var y = a[1];
|
|
54
|
+
var z = a[2];
|
|
55
55
|
out[0] = m[0] * x + m[3] * y + m[6] * z;
|
|
56
56
|
out[1] = m[1] * x + m[4] * y + m[7] * z;
|
|
57
57
|
out[2] = m[2] * x + m[5] * y + m[8] * z;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../../src/lib/gl-matrix-extras.ts"],"names":["vec2_transformMat4AsVector","out","a","m","x","y","w","vec3_transformMat4AsVector","z","vec3_transformMat2","vec4_transformMat2","vec4_transformMat3"],"mappings":";;;;;;;;;;;
|
|
1
|
+
{"version":3,"sources":["../../../src/lib/gl-matrix-extras.ts"],"names":["vec2_transformMat4AsVector","out","a","m","x","y","w","vec3_transformMat4AsVector","z","vec3_transformMat2","vec4_transformMat2","vec4_transformMat3"],"mappings":"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","sourcesContent":["/* eslint-disable camelcase */\nimport {NumericArray} from '@math.gl/types';\n// vec2 additions\n\nexport function vec2_transformMat4AsVector<T extends NumericArray>(\n out: T,\n a: Readonly<NumericArray>,\n m: Readonly<NumericArray>\n): T {\n const x = a[0];\n const y = a[1];\n const w = m[3] * x + m[7] * y || 1.0;\n out[0] = (m[0] * x + m[4] * y) / w;\n out[1] = (m[1] * x + m[5] * y) / w;\n return out;\n}\n\n// vec3 additions\n\n// Transform as vector, only uses 3x3 minor matrix\nexport function vec3_transformMat4AsVector<T extends NumericArray>(\n out: T,\n a: Readonly<NumericArray>,\n m: Readonly<NumericArray>\n): T {\n const x = a[0];\n const y = a[1];\n const z = a[2];\n const w = m[3] * x + m[7] * y + m[11] * z || 1.0;\n out[0] = (m[0] * x + m[4] * y + m[8] * z) / w;\n out[1] = (m[1] * x + m[5] * y + m[9] * z) / w;\n out[2] = (m[2] * x + m[6] * y + m[10] * z) / w;\n return out;\n}\n\nexport function vec3_transformMat2<T extends NumericArray>(\n out: T,\n a: Readonly<NumericArray>,\n m: Readonly<NumericArray>\n): T {\n const x = a[0];\n const y = a[1];\n out[0] = m[0] * x + m[2] * y;\n out[1] = m[1] * x + m[3] * y;\n out[2] = a[2];\n return out;\n}\n\n// vec4 additions\n\nexport function vec4_transformMat2<T extends NumericArray>(\n out: T,\n a: Readonly<NumericArray>,\n m: Readonly<NumericArray>\n): T {\n const x = a[0];\n const y = a[1];\n out[0] = m[0] * x + m[2] * y;\n out[1] = m[1] * x + m[3] * y;\n out[2] = a[2];\n out[3] = a[3];\n return out;\n}\n\nexport function vec4_transformMat3<T extends NumericArray>(\n out: T,\n a: Readonly<NumericArray>,\n m: Readonly<NumericArray>\n): T {\n const x = a[0];\n const y = a[1];\n const z = a[2];\n out[0] = m[0] * x + m[3] * y + m[6] * z;\n out[1] = m[1] * x + m[4] * y + m[7] * z;\n out[2] = m[2] * x + m[5] * y + m[8] * z;\n out[3] = a[3];\n return out;\n}\n"],"file":"gl-matrix-extras.js"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":[],"names":[],"mappings":"","sourcesContent":[],"file":"gl-matrix.d.js"}
|
|
@@ -15,7 +15,7 @@ function validateVector(v, length) {
|
|
|
15
15
|
return false;
|
|
16
16
|
}
|
|
17
17
|
|
|
18
|
-
for (
|
|
18
|
+
for (var i = 0; i < v.length; ++i) {
|
|
19
19
|
if (!Number.isFinite(v[i])) {
|
|
20
20
|
return false;
|
|
21
21
|
}
|
|
@@ -32,7 +32,9 @@ function checkNumber(value) {
|
|
|
32
32
|
return value;
|
|
33
33
|
}
|
|
34
34
|
|
|
35
|
-
function checkVector(v, length
|
|
35
|
+
function checkVector(v, length) {
|
|
36
|
+
var callerName = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : '';
|
|
37
|
+
|
|
36
38
|
if (_common.config.debug && !validateVector(v, length)) {
|
|
37
39
|
throw new Error("math.gl: ".concat(callerName, " some fields set to invalid numbers'"));
|
|
38
40
|
}
|
|
@@ -40,7 +42,7 @@ function checkVector(v, length, callerName = '') {
|
|
|
40
42
|
return v;
|
|
41
43
|
}
|
|
42
44
|
|
|
43
|
-
|
|
45
|
+
var map = {};
|
|
44
46
|
|
|
45
47
|
function deprecated(method, version) {
|
|
46
48
|
if (!map[method]) {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../../src/lib/validators.ts"],"names":["validateVector","v","length","i","Number","isFinite","checkNumber","value","Error","checkVector","callerName","config","debug","map","deprecated","method","version","console","warn"],"mappings":";;;;;;;;;;AAoBA;;AAEO,SAASA,cAAT,CAAwBC,CAAxB,
|
|
1
|
+
{"version":3,"sources":["../../../src/lib/validators.ts"],"names":["validateVector","v","length","i","Number","isFinite","checkNumber","value","Error","checkVector","callerName","config","debug","map","deprecated","method","version","console","warn"],"mappings":";;;;;;;;;;AAoBA;;AAEO,SAASA,cAAT,CAAwBC,CAAxB,EAAwCC,MAAxC,EAAiE;AACtE,MAAID,CAAC,CAACC,MAAF,KAAaA,MAAjB,EAAyB;AACvB,WAAO,KAAP;AACD;;AAED,OAAK,IAAIC,CAAC,GAAG,CAAb,EAAgBA,CAAC,GAAGF,CAAC,CAACC,MAAtB,EAA8B,EAAEC,CAAhC,EAAmC;AACjC,QAAI,CAACC,MAAM,CAACC,QAAP,CAAgBJ,CAAC,CAACE,CAAD,CAAjB,CAAL,EAA4B;AAC1B,aAAO,KAAP;AACD;AACF;;AACD,SAAO,IAAP;AACD;;AAEM,SAASG,WAAT,CAAqBC,KAArB,EAAyC;AAC9C,MAAI,CAACH,MAAM,CAACC,QAAP,CAAgBE,KAAhB,CAAL,EAA6B;AAC3B,UAAM,IAAIC,KAAJ,0BAA4BD,KAA5B,EAAN;AACD;;AACD,SAAOA,KAAP;AACD;;AAEM,SAASE,WAAT,CACLR,CADK,EAELC,MAFK,EAIF;AAAA,MADHQ,UACG,uEADkB,EAClB;;AACH,MAAIC,eAAOC,KAAP,IAAgB,CAACZ,cAAc,CAACC,CAAD,EAAIC,MAAJ,CAAnC,EAAgD;AAC9C,UAAM,IAAIM,KAAJ,oBAAsBE,UAAtB,0CAAN;AACD;;AACD,SAAOT,CAAP;AACD;;AAED,IAAMY,GAAG,GAAG,EAAZ;;AAEO,SAASC,UAAT,CAAoBC,MAApB,EAAoCC,OAApC,EAA2D;AAChE,MAAI,CAACH,GAAG,CAACE,MAAD,CAAR,EAAkB;AAChBF,IAAAA,GAAG,CAACE,MAAD,CAAH,GAAc,IAAd;AAEAE,IAAAA,OAAO,CAACC,IAAR,WACKH,MADL,0CAC2CC,OAD3C;AAGD;AACF","sourcesContent":["// Copyright (c) 2017 Uber Technologies, Inc.\n//\n// Permission is hereby granted, free of charge, to any person obtaining a copy\n// of this software and associated documentation files (the \"Software\"), to deal\n// in the Software without restriction, including without limitation the rights\n// to use, copy, modify, merge, publish, distribute, sublicense, and/or sell\n// copies of the Software, and to permit persons to whom the Software is\n// furnished to do so, subject to the following conditions:\n//\n// The above copyright notice and this permission notice shall be included in\n// all copies or substantial portions of the Software.\n//\n// THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\n// AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n// LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\n// OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN\n// THE SOFTWARE.\nimport {NumberArray} from '@math.gl/types';\nimport {config} from './common';\n\nexport function validateVector(v: NumberArray, length: number): boolean {\n if (v.length !== length) {\n return false;\n }\n // Could be arguments \"array\" (v.every not availasble)\n for (let i = 0; i < v.length; ++i) {\n if (!Number.isFinite(v[i])) {\n return false;\n }\n }\n return true;\n}\n\nexport function checkNumber(value: any): number {\n if (!Number.isFinite(value)) {\n throw new Error(`Invalid number ${value}`);\n }\n return value as number;\n}\n\nexport function checkVector<T extends NumberArray>(\n v: T,\n length: number,\n callerName: string = ''\n): T {\n if (config.debug && !validateVector(v, length)) {\n throw new Error(`math.gl: ${callerName} some fields set to invalid numbers'`);\n }\n return v;\n}\n\nconst map = {};\n\nexport function deprecated(method: string, version: string): void {\n if (!map[method]) {\n map[method] = true;\n // eslint-disable-next-line\n console.warn(\n `${method} has been removed in version ${version}, see upgrade guide for more information`\n );\n }\n}\n"],"file":"validators.js"}
|
|
@@ -24,21 +24,11 @@ function _extendableBuiltin(cls) {
|
|
|
24
24
|
}
|
|
25
25
|
|
|
26
26
|
import { config, formatValue, equals, isArray } from '../../lib/common';
|
|
27
|
-
import assert from '../../lib/assert';
|
|
28
27
|
export default class MathArray extends _extendableBuiltin(Array) {
|
|
29
|
-
get ELEMENTS() {
|
|
30
|
-
assert(false);
|
|
31
|
-
return 0;
|
|
32
|
-
}
|
|
33
|
-
|
|
34
28
|
clone() {
|
|
35
29
|
return new this.constructor().copy(this);
|
|
36
30
|
}
|
|
37
31
|
|
|
38
|
-
from(arrayOrObject) {
|
|
39
|
-
return Array.isArray(arrayOrObject) ? this.copy(arrayOrObject) : this.fromObject(arrayOrObject);
|
|
40
|
-
}
|
|
41
|
-
|
|
42
32
|
fromArray(array, offset = 0) {
|
|
43
33
|
for (let i = 0; i < this.ELEMENTS; ++i) {
|
|
44
34
|
this[i] = array[i + offset];
|
|
@@ -47,6 +37,18 @@ export default class MathArray extends _extendableBuiltin(Array) {
|
|
|
47
37
|
return this.check();
|
|
48
38
|
}
|
|
49
39
|
|
|
40
|
+
toArray(targetArray = [], offset = 0) {
|
|
41
|
+
for (let i = 0; i < this.ELEMENTS; ++i) {
|
|
42
|
+
targetArray[offset + i] = this[i];
|
|
43
|
+
}
|
|
44
|
+
|
|
45
|
+
return targetArray;
|
|
46
|
+
}
|
|
47
|
+
|
|
48
|
+
from(arrayOrObject) {
|
|
49
|
+
return Array.isArray(arrayOrObject) ? this.copy(arrayOrObject) : this.fromObject(arrayOrObject);
|
|
50
|
+
}
|
|
51
|
+
|
|
50
52
|
to(arrayOrObject) {
|
|
51
53
|
if (arrayOrObject === this) {
|
|
52
54
|
return this;
|
|
@@ -59,14 +61,6 @@ export default class MathArray extends _extendableBuiltin(Array) {
|
|
|
59
61
|
return target ? this.to(target) : this;
|
|
60
62
|
}
|
|
61
63
|
|
|
62
|
-
toArray(array = [], offset = 0) {
|
|
63
|
-
for (let i = 0; i < this.ELEMENTS; ++i) {
|
|
64
|
-
array[offset + i] = this[i];
|
|
65
|
-
}
|
|
66
|
-
|
|
67
|
-
return array;
|
|
68
|
-
}
|
|
69
|
-
|
|
70
64
|
toFloat32Array() {
|
|
71
65
|
return new Float32Array(this);
|
|
72
66
|
}
|
|
@@ -123,9 +117,7 @@ export default class MathArray extends _extendableBuiltin(Array) {
|
|
|
123
117
|
|
|
124
118
|
lerp(a, b, t) {
|
|
125
119
|
if (t === undefined) {
|
|
126
|
-
|
|
127
|
-
b = a;
|
|
128
|
-
a = this;
|
|
120
|
+
return this.lerp(this, a, b);
|
|
129
121
|
}
|
|
130
122
|
|
|
131
123
|
for (let i = 0; i < this.ELEMENTS; ++i) {
|
|
@@ -181,17 +173,45 @@ export default class MathArray extends _extendableBuiltin(Array) {
|
|
|
181
173
|
}
|
|
182
174
|
|
|
183
175
|
scale(scale) {
|
|
184
|
-
if (
|
|
185
|
-
|
|
176
|
+
if (typeof scale === 'number') {
|
|
177
|
+
for (let i = 0; i < this.ELEMENTS; ++i) {
|
|
178
|
+
this[i] *= scale;
|
|
179
|
+
}
|
|
180
|
+
} else {
|
|
181
|
+
for (let i = 0; i < this.ELEMENTS && i < scale.length; ++i) {
|
|
182
|
+
this[i] *= scale[i];
|
|
183
|
+
}
|
|
186
184
|
}
|
|
187
185
|
|
|
186
|
+
return this.check();
|
|
187
|
+
}
|
|
188
|
+
|
|
189
|
+
multiplyByScalar(scalar) {
|
|
188
190
|
for (let i = 0; i < this.ELEMENTS; ++i) {
|
|
189
|
-
this[i] *=
|
|
191
|
+
this[i] *= scalar;
|
|
190
192
|
}
|
|
191
193
|
|
|
192
194
|
return this.check();
|
|
193
195
|
}
|
|
194
196
|
|
|
197
|
+
check() {
|
|
198
|
+
if (config.debug && !this.validate()) {
|
|
199
|
+
throw new Error("math.gl: ".concat(this.constructor.name, " some fields set to invalid numbers'"));
|
|
200
|
+
}
|
|
201
|
+
|
|
202
|
+
return this;
|
|
203
|
+
}
|
|
204
|
+
|
|
205
|
+
validate() {
|
|
206
|
+
let valid = this.length === this.ELEMENTS;
|
|
207
|
+
|
|
208
|
+
for (let i = 0; i < this.ELEMENTS; ++i) {
|
|
209
|
+
valid = valid && Number.isFinite(this[i]);
|
|
210
|
+
}
|
|
211
|
+
|
|
212
|
+
return valid;
|
|
213
|
+
}
|
|
214
|
+
|
|
195
215
|
sub(a) {
|
|
196
216
|
return this.subtract(a);
|
|
197
217
|
}
|
|
@@ -225,7 +245,7 @@ export default class MathArray extends _extendableBuiltin(Array) {
|
|
|
225
245
|
}
|
|
226
246
|
|
|
227
247
|
divideScalar(a) {
|
|
228
|
-
return this.
|
|
248
|
+
return this.multiplyByScalar(1 / a);
|
|
229
249
|
}
|
|
230
250
|
|
|
231
251
|
clampScalar(min, max) {
|
|
@@ -236,31 +256,9 @@ export default class MathArray extends _extendableBuiltin(Array) {
|
|
|
236
256
|
return this.check();
|
|
237
257
|
}
|
|
238
258
|
|
|
239
|
-
multiplyByScalar(scalar) {
|
|
240
|
-
return this.scale(scalar);
|
|
241
|
-
}
|
|
242
|
-
|
|
243
259
|
get elements() {
|
|
244
260
|
return this;
|
|
245
261
|
}
|
|
246
262
|
|
|
247
|
-
check() {
|
|
248
|
-
if (config.debug && !this.validate()) {
|
|
249
|
-
throw new Error("math.gl: ".concat(this.constructor.name, " some fields set to invalid numbers'"));
|
|
250
|
-
}
|
|
251
|
-
|
|
252
|
-
return this;
|
|
253
|
-
}
|
|
254
|
-
|
|
255
|
-
validate() {
|
|
256
|
-
let valid = this.length === this.ELEMENTS;
|
|
257
|
-
|
|
258
|
-
for (let i = 0; i < this.ELEMENTS; ++i) {
|
|
259
|
-
valid = valid && Number.isFinite(this[i]);
|
|
260
|
-
}
|
|
261
|
-
|
|
262
|
-
return valid;
|
|
263
|
-
}
|
|
264
|
-
|
|
265
263
|
}
|
|
266
264
|
//# sourceMappingURL=math-array.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../../../src/classes/base/math-array.js"],"names":["config","formatValue","equals","isArray","assert","MathArray","Array","ELEMENTS","clone","constructor","copy","from","arrayOrObject","fromObject","fromArray","array","offset","i","check","to","toArray","toObject","toTarget","target","toFloat32Array","Float32Array","toString","formatString","opts","string","printTypes","name","length","exactEquals","negate","lerp","a","b","t","undefined","ai","min","vector","Math","max","clamp","minVector","maxVector","add","vectors","subtract","scale","multiply","sub","setScalar","addScalar","subScalar","multiplyScalar","scalar","divideScalar","clampScalar","multiplyByScalar","elements","debug","validate","Error","valid","Number","isFinite"],"mappings":"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","sourcesContent":["// Copyright (c) 2017 Uber Technologies, Inc.\n//\n// Permission is hereby granted, free of charge, to any person obtaining a copy\n// of this software and associated documentation files (the \"Software\"), to deal\n// in the Software without restriction, including without limitation the rights\n// to use, copy, modify, merge, publish, distribute, sublicense, and/or sell\n// copies of the Software, and to permit persons to whom the Software is\n// furnished to do so, subject to the following conditions:\n//\n// The above copyright notice and this permission notice shall be included in\n// all copies or substantial portions of the Software.\n//\n// THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\n// AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n// LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\n// OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN\n// THE SOFTWARE.\n\nimport {config, formatValue, equals, isArray} from '../../lib/common';\nimport assert from '../../lib/assert';\n\nexport default class MathArray extends Array {\n // Defined by derived class\n get ELEMENTS() {\n assert(false);\n return 0;\n }\n\n clone() {\n // @ts-ignore error TS2351: Cannot use 'new' with an expression whose type lacks a call or construct signature.\n return new this.constructor().copy(this);\n }\n\n from(arrayOrObject) {\n // @ts-ignore error TS2339: Property 'copy' does not exist on type 'MathArray'.\n return Array.isArray(arrayOrObject) ? this.copy(arrayOrObject) : this.fromObject(arrayOrObject);\n }\n\n fromArray(array, offset = 0) {\n for (let i = 0; i < this.ELEMENTS; ++i) {\n this[i] = array[i + offset];\n }\n return this.check();\n }\n\n to(arrayOrObject) {\n if (arrayOrObject === this) {\n return this;\n }\n // @ts-ignore error TS2339: Property 'toObject' does not exist on type 'MathArray'.\n return isArray(arrayOrObject) ? this.toArray(arrayOrObject) : this.toObject(arrayOrObject);\n }\n\n toTarget(target) {\n return target ? this.to(target) : this;\n }\n\n toArray(array = [], offset = 0) {\n for (let i = 0; i < this.ELEMENTS; ++i) {\n array[offset + i] = this[i];\n }\n return array;\n }\n\n toFloat32Array() {\n return new Float32Array(this);\n }\n\n toString() {\n return this.formatString(config);\n }\n\n formatString(opts) {\n let string = '';\n for (let i = 0; i < this.ELEMENTS; ++i) {\n string += (i > 0 ? ', ' : '') + formatValue(this[i], opts);\n }\n return `${opts.printTypes ? this.constructor.name : ''}[${string}]`;\n }\n\n equals(array) {\n if (!array || this.length !== array.length) {\n return false;\n }\n for (let i = 0; i < this.ELEMENTS; ++i) {\n if (!equals(this[i], array[i])) {\n return false;\n }\n }\n return true;\n }\n\n exactEquals(array) {\n if (!array || this.length !== array.length) {\n return false;\n }\n for (let i = 0; i < this.ELEMENTS; ++i) {\n if (this[i] !== array[i]) {\n return false;\n }\n }\n return true;\n }\n\n // Modifiers\n\n negate() {\n for (let i = 0; i < this.ELEMENTS; ++i) {\n this[i] = -this[i];\n }\n return this.check();\n }\n\n lerp(a, b, t) {\n if (t === undefined) {\n t = b;\n b = a;\n a = this; // eslint-disable-line\n }\n for (let i = 0; i < this.ELEMENTS; ++i) {\n const ai = a[i];\n this[i] = ai + t * (b[i] - ai);\n }\n return this.check();\n }\n\n min(vector) {\n for (let i = 0; i < this.ELEMENTS; ++i) {\n this[i] = Math.min(vector[i], this[i]);\n }\n return this.check();\n }\n\n max(vector) {\n for (let i = 0; i < this.ELEMENTS; ++i) {\n this[i] = Math.max(vector[i], this[i]);\n }\n return this.check();\n }\n\n clamp(minVector, maxVector) {\n for (let i = 0; i < this.ELEMENTS; ++i) {\n this[i] = Math.min(Math.max(this[i], minVector[i]), maxVector[i]);\n }\n return this.check();\n }\n\n add(...vectors) {\n for (const vector of vectors) {\n for (let i = 0; i < this.ELEMENTS; ++i) {\n this[i] += vector[i];\n }\n }\n return this.check();\n }\n\n subtract(...vectors) {\n for (const vector of vectors) {\n for (let i = 0; i < this.ELEMENTS; ++i) {\n this[i] -= vector[i];\n }\n }\n return this.check();\n }\n\n scale(scale) {\n if (Array.isArray(scale)) {\n // @ts-ignore error TS2339: Property 'multiply' does not exist on type 'MathArray'.\n return this.multiply(scale);\n }\n for (let i = 0; i < this.ELEMENTS; ++i) {\n this[i] *= scale;\n }\n return this.check();\n }\n\n // three.js compatibility\n\n sub(a) {\n return this.subtract(a);\n }\n\n setScalar(a) {\n for (let i = 0; i < this.ELEMENTS; ++i) {\n this[i] = a;\n }\n return this.check();\n }\n\n addScalar(a) {\n for (let i = 0; i < this.ELEMENTS; ++i) {\n this[i] += a;\n }\n return this.check();\n }\n\n subScalar(a) {\n return this.addScalar(-a);\n }\n\n multiplyScalar(scalar) {\n // Multiplies all elements\n // `Matrix4.scale` only scales its 3x3 \"minor\"\n for (let i = 0; i < this.ELEMENTS; ++i) {\n this[i] *= scalar;\n }\n return this.check();\n }\n\n divideScalar(a) {\n return this.scale(1 / a);\n }\n\n clampScalar(min, max) {\n for (let i = 0; i < this.ELEMENTS; ++i) {\n this[i] = Math.min(Math.max(this[i], min), max);\n }\n return this.check();\n }\n\n // Cesium compatibility\n\n multiplyByScalar(scalar) {\n return this.scale(scalar);\n }\n\n // THREE.js compatibility\n get elements() {\n return this;\n }\n\n // Debug checks\n\n check() {\n if (config.debug && !this.validate()) {\n throw new Error(`math.gl: ${this.constructor.name} some fields set to invalid numbers'`);\n }\n return this;\n }\n\n validate() {\n let valid = this.length === this.ELEMENTS;\n for (let i = 0; i < this.ELEMENTS; ++i) {\n valid = valid && Number.isFinite(this[i]);\n }\n return valid;\n }\n}\n"],"file":"math-array.js"}
|
|
1
|
+
{"version":3,"sources":["../../../../src/classes/base/math-array.ts"],"names":["config","formatValue","equals","isArray","MathArray","Array","clone","constructor","copy","fromArray","array","offset","i","ELEMENTS","check","toArray","targetArray","from","arrayOrObject","fromObject","to","toObject","toTarget","target","toFloat32Array","Float32Array","toString","formatString","opts","string","printTypes","name","length","exactEquals","negate","lerp","a","b","t","undefined","ai","min","vector","Math","max","clamp","minVector","maxVector","add","vectors","subtract","scale","multiplyByScalar","scalar","debug","validate","Error","valid","Number","isFinite","sub","setScalar","addScalar","subScalar","multiplyScalar","divideScalar","clampScalar","elements"],"mappings":"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","sourcesContent":["// math.gl, MIT License\nimport {NumericArray} from '@math.gl/types';\nimport {ConfigurationOptions, config, formatValue, equals, isArray} from '../../lib/common';\n\n/** Base class for vectors and matrices */\nexport default abstract class MathArray extends Array<number> {\n /** Number of elements (values) in this array */\n abstract get ELEMENTS(): number;\n\n abstract copy(vector: Readonly<NumericArray>): this;\n\n abstract fromObject(object: object): this;\n\n // Common methods\n\n /**\n * Clone the current object\n * @returns a new copy of this object\n */\n clone(): this {\n // @ts-expect-error TS2351: Cannot use 'new' with an expression whose type lacks a call or construct signature.\n return new this.constructor().copy(this); // eslint-disable-line\n }\n\n fromArray(array: Readonly<NumericArray>, offset: number = 0): this {\n for (let i = 0; i < this.ELEMENTS; ++i) {\n this[i] = array[i + offset];\n }\n return this.check();\n }\n\n toArray<TypedArray>(targetArray: TypedArray, offset?: number): TypedArray;\n toArray(targetArray?: number[], offset?: number): NumericArray;\n\n toArray(targetArray: NumericArray = [], offset: number = 0): NumericArray {\n for (let i = 0; i < this.ELEMENTS; ++i) {\n targetArray[offset + i] = this[i];\n }\n return targetArray;\n }\n\n from(arrayOrObject: Readonly<NumericArray> | object): this {\n return Array.isArray(arrayOrObject) ? this.copy(arrayOrObject) : this.fromObject(arrayOrObject);\n }\n\n to<T extends NumericArray | object>(arrayOrObject: T): T {\n // @ts-ignore\n if (arrayOrObject === this) {\n return this;\n }\n // @ts-expect-error TS2339: Property 'toObject' does not exist on type 'MathArray'.\n return isArray(arrayOrObject) ? this.toArray(arrayOrObject) : this.toObject(arrayOrObject);\n }\n\n toTarget(target: any): any {\n return target ? this.to(target) : this;\n }\n\n /** @deprecated */\n toFloat32Array(): Float32Array {\n return new Float32Array(this);\n }\n\n toString(): string {\n return this.formatString(config);\n }\n\n /** Formats string according to options */\n formatString(opts: ConfigurationOptions): string {\n let string = '';\n for (let i = 0; i < this.ELEMENTS; ++i) {\n string += (i > 0 ? ', ' : '') + formatValue(this[i], opts);\n }\n return `${opts.printTypes ? this.constructor.name : ''}[${string}]`;\n }\n\n equals(array: Readonly<NumericArray>): boolean {\n if (!array || this.length !== array.length) {\n return false;\n }\n for (let i = 0; i < this.ELEMENTS; ++i) {\n if (!equals(this[i], array[i])) {\n return false;\n }\n }\n return true;\n }\n\n exactEquals(array: Readonly<NumericArray>): boolean {\n if (!array || this.length !== array.length) {\n return false;\n }\n for (let i = 0; i < this.ELEMENTS; ++i) {\n if (this[i] !== array[i]) {\n return false;\n }\n }\n return true;\n }\n\n // Modifiers\n\n /** Negates all values in this object */\n negate(): this {\n for (let i = 0; i < this.ELEMENTS; ++i) {\n this[i] = -this[i];\n }\n return this.check();\n }\n\n /** Linearly interpolates between two values */\n lerp(a: Readonly<NumericArray>, t: number): this;\n lerp(a: Readonly<NumericArray>, b: Readonly<NumericArray>, t: number): this;\n\n lerp(a: Readonly<NumericArray>, b: Readonly<NumericArray> | number, t?: number): this {\n if (t === undefined) {\n return this.lerp(this, a, b as number);\n }\n for (let i = 0; i < this.ELEMENTS; ++i) {\n const ai = a[i];\n this[i] = ai + t * (b[i] - ai);\n }\n return this.check();\n }\n\n /** Minimal */\n min(vector: Readonly<NumericArray>): this {\n for (let i = 0; i < this.ELEMENTS; ++i) {\n this[i] = Math.min(vector[i], this[i]);\n }\n return this.check();\n }\n\n /** Maximal */\n max(vector: Readonly<NumericArray>): this {\n for (let i = 0; i < this.ELEMENTS; ++i) {\n this[i] = Math.max(vector[i], this[i]);\n }\n return this.check();\n }\n\n clamp(minVector: Readonly<NumericArray>, maxVector: Readonly<NumericArray>): this {\n for (let i = 0; i < this.ELEMENTS; ++i) {\n this[i] = Math.min(Math.max(this[i], minVector[i]), maxVector[i]);\n }\n return this.check();\n }\n\n add(...vectors: Readonly<NumericArray>[]): this {\n for (const vector of vectors) {\n for (let i = 0; i < this.ELEMENTS; ++i) {\n this[i] += vector[i];\n }\n }\n return this.check();\n }\n\n subtract(...vectors: Readonly<NumericArray>[]): this {\n for (const vector of vectors) {\n for (let i = 0; i < this.ELEMENTS; ++i) {\n this[i] -= vector[i];\n }\n }\n return this.check();\n }\n\n scale(scale: number | Readonly<NumericArray>): this {\n if (typeof scale === 'number') {\n for (let i = 0; i < this.ELEMENTS; ++i) {\n this[i] *= scale;\n }\n } else {\n for (let i = 0; i < this.ELEMENTS && i < scale.length; ++i) {\n this[i] *= scale[i];\n }\n }\n return this.check();\n }\n\n /**\n * Multiplies all elements by `scale`\n * Note: `Matrix4.multiplyByScalar` only scales its 3x3 \"minor\"\n */\n multiplyByScalar(scalar: number): this {\n for (let i = 0; i < this.ELEMENTS; ++i) {\n this[i] *= scalar;\n }\n return this.check();\n }\n\n // Debug checks\n\n /** Throws an error if array length is incorrect or contains illegal values */\n check(): this {\n if (config.debug && !this.validate()) {\n throw new Error(`math.gl: ${this.constructor.name} some fields set to invalid numbers'`);\n }\n return this;\n }\n\n /** Returns false if the array length is incorrect or contains illegal values */\n validate(): boolean {\n let valid = this.length === this.ELEMENTS;\n for (let i = 0; i < this.ELEMENTS; ++i) {\n valid = valid && Number.isFinite(this[i]);\n }\n return valid;\n }\n\n // three.js compatibility\n\n /** @deprecated */\n sub(a: Readonly<NumericArray>): this {\n return this.subtract(a);\n }\n\n /** @deprecated */\n setScalar(a: number): this {\n for (let i = 0; i < this.ELEMENTS; ++i) {\n this[i] = a;\n }\n return this.check();\n }\n\n /** @deprecated */\n addScalar(a: number): this {\n for (let i = 0; i < this.ELEMENTS; ++i) {\n this[i] += a;\n }\n return this.check();\n }\n\n /** @deprecated */\n subScalar(a: number): this {\n return this.addScalar(-a);\n }\n\n /** @deprecated */\n multiplyScalar(scalar: number): this {\n // Multiplies all elements\n // `Matrix4.scale` only scales its 3x3 \"minor\"\n for (let i = 0; i < this.ELEMENTS; ++i) {\n this[i] *= scalar;\n }\n return this.check();\n }\n\n /** @deprecated */\n divideScalar(a: number): this {\n return this.multiplyByScalar(1 / a);\n }\n\n /** @deprecated */\n clampScalar(min: number, max: number): this {\n for (let i = 0; i < this.ELEMENTS; ++i) {\n this[i] = Math.min(Math.max(this[i], min), max);\n }\n return this.check();\n }\n\n /** @deprecated */\n get elements(): NumericArray {\n return this;\n }\n}\n"],"file":"math-array.js"}
|