@turbox3d/math
Version:
Large-scale graphics application math library
69 lines (55 loc) • 209 kB
JavaScript
/*
* ATTENTION: The "eval" devtool has been used (maybe by default in mode: "development").
* This devtool is neither made for production nor for readable output files.
* It uses "eval()" calls to create a separate source file in the browser devtools.
* If you are trying to read the output file, select a different devtool (https://webpack.js.org/configuration/devtool/)
* or disable the default devtool with "devtool: false".
* If you are looking for production-ready output files, see mode: "production" (https://webpack.js.org/configuration/mode/).
*/
(function webpackUniversalModuleDefinition(root, factory) {
if(typeof exports === 'object' && typeof module === 'object')
module.exports = factory();
else if(typeof define === 'function' && define.amd)
define([], factory);
else if(typeof exports === 'object')
exports["@turbox3d/math"] = factory();
else
root["Math"] = factory();
})(self, () => {
return /******/ (() => { // webpackBootstrap
/******/ "use strict";
/******/ var __webpack_modules__ = ({
/***/ "./es/MathUtils.js":
/*!*************************!*\
!*** ./es/MathUtils.js ***!
\*************************/
/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ MathUtils: () => (/* binding */ MathUtils)\n/* harmony export */ });\n/* harmony import */ var _babel_runtime_helpers_esm_toConsumableArray__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! @babel/runtime/helpers/esm/toConsumableArray */ \"../../node_modules/.pnpm/@babel+runtime@7.26.0/node_modules/@babel/runtime/helpers/esm/toConsumableArray.js\");\n/* harmony import */ var _base_Tolerance__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./base/Tolerance */ \"./es/base/Tolerance.js\");\n/* harmony import */ var _base_Vector2__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./base/Vector2 */ \"./es/base/Vector2.js\");\n\n\n\nvar _lut = [];\nfor (var i = 0; i < 256; i++) {\n _lut[i] = (i < 16 ? '0' : '') + i.toString(16);\n}\nvar _seed = 1234567;\nvar MathUtils = {\n DEG2RAD: Math.PI / 180,\n RAD2DEG: 180 / Math.PI,\n generateUUID: function generateUUID() {\n // http://stackoverflow.com/questions/105034/how-to-create-a-guid-uuid-in-javascript/21963136#21963136\n var d0 = Math.random() * 0xffffffff | 0;\n var d1 = Math.random() * 0xffffffff | 0;\n var d2 = Math.random() * 0xffffffff | 0;\n var d3 = Math.random() * 0xffffffff | 0;\n var uuid = \"\".concat(_lut[d0 & 0xff] + _lut[d0 >> 8 & 0xff] + _lut[d0 >> 16 & 0xff] + _lut[d0 >> 24 & 0xff], \"-\").concat(_lut[d1 & 0xff]).concat(_lut[d1 >> 8 & 0xff], \"-\").concat(_lut[d1 >> 16 & 0x0f | 0x40]).concat(_lut[d1 >> 24 & 0xff], \"-\").concat(_lut[d2 & 0x3f | 0x80]).concat(_lut[d2 >> 8 & 0xff], \"-\").concat(_lut[d2 >> 16 & 0xff]).concat(_lut[d2 >> 24 & 0xff]).concat(_lut[d3 & 0xff]).concat(_lut[d3 >> 8 & 0xff]).concat(_lut[d3 >> 16 & 0xff]).concat(_lut[d3 >> 24 & 0xff]);\n // .toUpperCase() here flattens concatenated strings to save heap memory space.\n return uuid.toUpperCase();\n },\n clamp: function clamp(value, min, max) {\n return Math.max(min, Math.min(max, value));\n },\n // compute euclidian modulo of m % n\n // https://en.wikipedia.org/wiki/Modulo_operation\n euclideanModulo: function euclideanModulo(n, m) {\n return (n % m + m) % m;\n },\n // Linear mapping from range <a1, a2> to range <b1, b2>\n mapLinear: function mapLinear(x, a1, a2, b1, b2) {\n return b1 + (x - a1) * (b2 - b1) / (a2 - a1);\n },\n // https://en.wikipedia.org/wiki/Linear_interpolation\n lerp: function lerp(x, y, t) {\n return (1 - t) * x + t * y;\n },\n // http://www.rorydriscoll.com/2016/03/07/frame-rate-independent-damping-using-lerp/\n damp: function damp(x, y, lambda, dt) {\n return MathUtils.lerp(x, y, 1 - Math.exp(-lambda * dt));\n },\n // https://www.desmos.com/calculator/vcsjnyz7x4\n pingpong: function pingpong(x) {\n var length = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : 1;\n return length - Math.abs(MathUtils.euclideanModulo(x, length * 2) - length);\n },\n // http://en.wikipedia.org/wiki/Smoothstep\n smoothstep: function smoothstep(x, min, max) {\n if (x <= min) return 0;\n if (x >= max) return 1;\n x = (x - min) / (max - min);\n return x * x * (3 - 2 * x);\n },\n smootherstep: function smootherstep(x, min, max) {\n if (x <= min) return 0;\n if (x >= max) return 1;\n x = (x - min) / (max - min);\n return x * x * x * (x * (x * 6 - 15) + 10);\n },\n // Random integer from <low, high> interval\n randInt: function randInt(low, high) {\n return low + Math.floor(Math.random() * (high - low + 1));\n },\n // Random float from <low, high> interval\n randFloat: function randFloat(low, high) {\n return low + Math.random() * (high - low);\n },\n // Random float from <-range/2, range/2> interval\n randFloatSpread: function randFloatSpread(range) {\n return range * (0.5 - Math.random());\n },\n // Deterministic pseudo-random float in the interval [ 0, 1 ]\n seededRandom: function seededRandom(s) {\n if (s !== undefined) _seed = s % 2147483647;\n // Park-Miller algorithm\n _seed = _seed * 16807 % 2147483647;\n return (_seed - 1) / 2147483646;\n },\n degToRad: function degToRad(degrees) {\n return degrees * MathUtils.DEG2RAD;\n },\n radToDeg: function radToDeg(radians) {\n return radians * MathUtils.RAD2DEG;\n },\n isPowerOfTwo: function isPowerOfTwo(value) {\n return (value & value - 1) === 0 && value !== 0;\n },\n ceilPowerOfTwo: function ceilPowerOfTwo(value) {\n return Math.pow(2, Math.ceil(Math.log(value) / Math.LN2));\n },\n floorPowerOfTwo: function floorPowerOfTwo(value) {\n return Math.pow(2, Math.floor(Math.log(value) / Math.LN2));\n },\n setQuaternionFromProperEuler: function setQuaternionFromProperEuler(q, a, b, c, order) {\n // Intrinsic Proper Euler Angles - see https://en.wikipedia.org/wiki/Euler_angles\n // rotations are applied to the axes in the order specified by 'order'\n // rotation by angle 'a' is applied first, then by angle 'b', then by angle 'c'\n // angles are in radians\n var cos = Math.cos;\n var sin = Math.sin;\n var c2 = cos(b / 2);\n var s2 = sin(b / 2);\n var c13 = cos((a + c) / 2);\n var s13 = sin((a + c) / 2);\n var c1_3 = cos((a - c) / 2);\n var s1_3 = sin((a - c) / 2);\n var c3_1 = cos((c - a) / 2);\n var s3_1 = sin((c - a) / 2);\n switch (order) {\n case 'XYX':\n q.set(c2 * s13, s2 * c1_3, s2 * s1_3, c2 * c13);\n break;\n case 'YZY':\n q.set(s2 * s1_3, c2 * s13, s2 * c1_3, c2 * c13);\n break;\n case 'ZXZ':\n q.set(s2 * c1_3, s2 * s1_3, c2 * s13, c2 * c13);\n break;\n case 'XZX':\n q.set(c2 * s13, s2 * s3_1, s2 * c3_1, c2 * c13);\n break;\n case 'YXY':\n q.set(s2 * c3_1, c2 * s13, s2 * s3_1, c2 * c13);\n break;\n case 'ZYZ':\n q.set(s2 * s3_1, s2 * c3_1, c2 * s13, c2 * c13);\n break;\n default:\n console.warn(\"THREE.MathUtils: .setQuaternionFromProperEuler() encountered an unknown order: \".concat(order));\n }\n },\n isEqual: function isEqual(num1, num2, tol) {\n var tolerance = tol || _base_Tolerance__WEBPACK_IMPORTED_MODULE_1__.Tolerance.global.numTol;\n if (num1 === num2) {\n return true;\n }\n return Math.abs(num1 - num2) <= tolerance;\n },\n isZero: function isZero(num, tol) {\n return MathUtils.isEqual(num, 0, tol);\n },\n /**\n * Check wether num1 is smaller than num2 with specified tolerance.\n * Global (default) tolerance will be used if tol is not provided.\n * @param num1\n * @param num2\n * @param tol\n */\n isSmaller: function isSmaller(num1, num2, tol) {\n var tolerance = tol || _base_Tolerance__WEBPACK_IMPORTED_MODULE_1__.Tolerance.global.numTol;\n var diff = num1 - num2;\n return diff < -tolerance;\n },\n /**\n * Check whether num1 is bigger than num2 with specified tolerance.\n * Global (default) tolerance will be used if tol is not provided.\n * @param num1\n * @param num2\n * @param tol\n */\n isBigger: function isBigger(num1, num2, tol) {\n var tolerance = tol || _base_Tolerance__WEBPACK_IMPORTED_MODULE_1__.Tolerance.global.numTol;\n var diff = num1 - num2;\n return diff > tolerance;\n },\n /**\n * Check whether num1 is smaller than or equal to num2 with specified tolerance.\n * Global (default) tolerance will be used if tol is not provided.\n * @param num1\n * @param num2\n * @param tol\n */\n isSmallerOrEqual: function isSmallerOrEqual(num1, num2, tol) {\n var tolerance = tol || _base_Tolerance__WEBPACK_IMPORTED_MODULE_1__.Tolerance.global.numTol;\n var diff = num1 - num2;\n return diff <= tolerance;\n },\n /**\n * Check whether num1 is bigger than or equal to num2 with specified tolerance.\n * Global (default) tolerance will be used if tol is not provided.\n * @param num1\n * @param num2\n * @param tol\n */\n isBiggerOrEqual: function isBiggerOrEqual(num1, num2, tol) {\n var tolerance = tol || _base_Tolerance__WEBPACK_IMPORTED_MODULE_1__.Tolerance.global.numTol;\n var diff = num1 - num2;\n return diff >= -tolerance;\n },\n /**\n * Check whether a number is in a range with specified tolerance.\n * Global (default) tolerance will be used if tol is not provided.\n * @param value the value to be checked.\n * @param min the range's lower limit.\n * @param max the range's upper limit.\n * @param minOpen whether the range's lower limit is open, default is false.\n * @param maxOpen whether the range's upper limit is open, default is false.\n * @param tol\n */\n isInRange: function isInRange(value, min, max, minOpen, maxOpen, tol) {\n var tolerance = tol || _base_Tolerance__WEBPACK_IMPORTED_MODULE_1__.Tolerance.global.numTol;\n var diffMin = value - min;\n var diffMax = value - max;\n var biggerMin = minOpen ? diffMin > tolerance : diffMin >= -tolerance;\n var smallerMax = maxOpen ? diffMax < -tolerance : diffMax <= tolerance;\n return biggerMin && smallerMax;\n },\n /**\n * Compare two numbers:\n * If num1 is fuzzy equal to num2, return 0.\n * If num1 is fuzzy bigger than num2, return 1.\n * If num1 is fuzzy smaller than num2, return -1.\n * If num1 or num2 is a NaN, throw exception.\n * @param num1\n * @param num2\n * @param tol\n */\n compare: function compare(num1, num2, tol) {\n if (Number.isNaN(num1) || Number.isNaN(num2)) {\n throw Error('Invalid NaN number');\n }\n if (MathUtils.isEqual(num1, num2, tol)) {\n return 0;\n }\n if (num1 < num2) {\n return -1;\n }\n return 1;\n },\n /**\n * 单向线性插值\n */\n interpolation: function interpolation(start, end) {\n var segments = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : 10;\n var v = end.subtracted(start);\n var step = v.length / segments;\n var points = [];\n var n = v.normalized();\n for (var index = 0; index < segments - 1; index++) {\n points.push(start.added(n.clone().multiplyScalar(step * (index + 1))));\n }\n points.unshift(start.clone());\n points.push(end.clone());\n return points;\n },\n /**\n * 根据四方点生成网格\n * @param quadPositions 四方点,左上角为起点,按照顺时针顺序\n * @param widthSegments 宽度分割段数\n * @param heightSegments 高度分割段数\n */\n generateMeshByQuad: function generateMeshByQuad(quadPositions) {\n var widthSegments = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : 10;\n var heightSegments = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : 10;\n var indices = [];\n var vertices = [];\n var normals = [];\n var uvs = [];\n var a1 = MathUtils.interpolation(quadPositions[0], quadPositions[1], widthSegments);\n var a2 = MathUtils.interpolation(quadPositions[3], quadPositions[2], widthSegments);\n var a3 = a1.map(function (v, i) {\n return MathUtils.interpolation(v.clone(), a2[i].clone(), heightSegments);\n });\n var _loop = function _loop(_i) {\n if (_i === 0) {\n vertices.push.apply(vertices, (0,_babel_runtime_helpers_esm_toConsumableArray__WEBPACK_IMPORTED_MODULE_0__[\"default\"])(a1.flatMap(function (a) {\n return a.toArray();\n })));\n } else if (_i === heightSegments) {\n vertices.push.apply(vertices, (0,_babel_runtime_helpers_esm_toConsumableArray__WEBPACK_IMPORTED_MODULE_0__[\"default\"])(a2.flatMap(function (a) {\n return a.toArray();\n })));\n } else {\n vertices.push.apply(vertices, (0,_babel_runtime_helpers_esm_toConsumableArray__WEBPACK_IMPORTED_MODULE_0__[\"default\"])(a3.flatMap(function (a) {\n return a[_i].toArray();\n })));\n }\n for (var _j = 0; _j <= widthSegments; _j++) {\n normals.push(0, 0, 1);\n uvs.push(_j * (1 / widthSegments), _i * (1 / heightSegments));\n }\n };\n for (var _i = 0; _i <= heightSegments; _i++) {\n _loop(_i);\n }\n for (var _i2 = 0; _i2 < heightSegments; _i2++) {\n for (var j = 0; j < widthSegments; j++) {\n var a = _i2 * (widthSegments + 1) + (j + 1);\n var b = _i2 * (widthSegments + 1) + j;\n var c = (_i2 + 1) * (widthSegments + 1) + j;\n var d = (_i2 + 1) * (widthSegments + 1) + (j + 1);\n indices.push(a, b, d);\n indices.push(b, c, d);\n }\n }\n return {\n indices: indices,\n vertices: vertices,\n normals: normals,\n uvs: uvs\n };\n },\n /** 把无序的点排序成顺逆时针的邻接点,只支持凸多边形 */clockwisePoints: function clockwisePoints(points) {\n var clockwise = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : false;\n var newPoints = [points[0]];\n var _loop2 = function _loop2() {\n var p1 = newPoints[newPoints.length - 1];\n var waitComparePoints = points.filter(function (wp) {\n return wp !== p1;\n });\n var _loop3 = function _loop3() {\n var p2 = waitComparePoints[index];\n var v = new _base_Vector2__WEBPACK_IMPORTED_MODULE_2__.Vector2(p2.x - p1.x, p2.y - p1.y);\n var otherPoints = points.filter(function (p) {\n return p !== p1 && p !== p2;\n });\n var otherVs = otherPoints.map(function (p) {\n return new _base_Vector2__WEBPACK_IMPORTED_MODULE_2__.Vector2(p.x - p1.x, p.y - p1.y);\n });\n var isAllMatched = otherVs.every(function (ov) {\n return clockwise ? v.cross(ov) < 0 : v.cross(ov) > 0;\n });\n if (isAllMatched) {\n newPoints.push(p2);\n return 1; // break\n }\n };\n for (var index = 0; index < waitComparePoints.length; index++) {\n if (_loop3()) break;\n }\n };\n for (var _i3 = 0; _i3 < points.length - 1; _i3++) {\n _loop2();\n }\n return newPoints;\n }\n};\n\n\n//# sourceURL=webpack://Math/./es/MathUtils.js?");
/***/ }),
/***/ "./es/base/Box2.js":
/*!*************************!*\
!*** ./es/base/Box2.js ***!
\*************************/
/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ Box2: () => (/* binding */ Box2)\n/* harmony export */ });\n/* harmony import */ var _babel_runtime_helpers_esm_classCallCheck__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! @babel/runtime/helpers/esm/classCallCheck */ \"../../node_modules/.pnpm/@babel+runtime@7.26.0/node_modules/@babel/runtime/helpers/esm/classCallCheck.js\");\n/* harmony import */ var _babel_runtime_helpers_esm_createClass__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! @babel/runtime/helpers/esm/createClass */ \"../../node_modules/.pnpm/@babel+runtime@7.26.0/node_modules/@babel/runtime/helpers/esm/createClass.js\");\n/* harmony import */ var _Vector2__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./Vector2 */ \"./es/base/Vector2.js\");\n/* harmony import */ var _Tolerance__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ./Tolerance */ \"./es/base/Tolerance.js\");\n/* harmony import */ var _MathUtils__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ../MathUtils */ \"./es/MathUtils.js\");\n\n\n\n\n\nvar _vector = new _Vector2__WEBPACK_IMPORTED_MODULE_2__.Vector2();\nvar Box2 = /*#__PURE__*/function () {\n function Box2(min, max) {\n (0,_babel_runtime_helpers_esm_classCallCheck__WEBPACK_IMPORTED_MODULE_0__[\"default\"])(this, Box2);\n this.isBox2 = true;\n this.min = min !== undefined ? min : new _Vector2__WEBPACK_IMPORTED_MODULE_2__.Vector2(+Infinity, +Infinity);\n this.max = max !== undefined ? max : new _Vector2__WEBPACK_IMPORTED_MODULE_2__.Vector2(-Infinity, -Infinity);\n }\n return (0,_babel_runtime_helpers_esm_createClass__WEBPACK_IMPORTED_MODULE_1__[\"default\"])(Box2, [{\n key: \"set\",\n value: function set(min, max) {\n this.min.copy(min);\n this.max.copy(max);\n return this;\n }\n }, {\n key: \"setFromPoints\",\n value: function setFromPoints(points) {\n this.makeEmpty();\n for (var i = 0, il = points.length; i < il; i++) {\n this.expandByPoint(points[i]);\n }\n return this;\n }\n }, {\n key: \"setFromCenterAndSize\",\n value: function setFromCenterAndSize(center, size) {\n var halfSize = _vector.copy(size).multiplyScalar(0.5);\n this.min.copy(center).sub(halfSize);\n this.max.copy(center).add(halfSize);\n return this;\n }\n }, {\n key: \"clone\",\n value: function clone() {\n return new Box2().copy(this);\n }\n }, {\n key: \"copy\",\n value: function copy(box) {\n this.min.copy(box.min);\n this.max.copy(box.max);\n return this;\n }\n }, {\n key: \"makeEmpty\",\n value: function makeEmpty() {\n // eslint-disable-next-line no-multi-assign\n this.min.x = this.min.y = +Infinity;\n // eslint-disable-next-line no-multi-assign\n this.max.x = this.max.y = -Infinity;\n return this;\n }\n }, {\n key: \"isEmpty\",\n value: function isEmpty() {\n // this is a more robust check for empty than ( volume <= 0 ) because volume can get positive with two negative axes\n return this.max.x < this.min.x || this.max.y < this.min.y;\n }\n }, {\n key: \"equals\",\n value: function equals(box) {\n var distTol = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : _Tolerance__WEBPACK_IMPORTED_MODULE_3__.Tolerance.global.distTol;\n return this.min.equals(box.min, distTol) && this.max.equals(box.max, distTol);\n }\n }, {\n key: \"getCenter\",\n value: function getCenter(target) {\n return this.isEmpty() ? target.set(0, 0) : target.addVectors(this.min, this.max).multiplyScalar(0.5);\n }\n }, {\n key: \"getSize\",\n value: function getSize(target) {\n return this.isEmpty() ? target.set(0, 0) : target.subVectors(this.max, this.min);\n }\n }, {\n key: \"expandByPoint\",\n value: function expandByPoint(point) {\n this.min.min(point);\n this.max.max(point);\n return this;\n }\n }, {\n key: \"expandByVector\",\n value: function expandByVector(vector) {\n this.min.sub(vector);\n this.max.add(vector);\n return this;\n }\n }, {\n key: \"expandByScalar\",\n value: function expandByScalar(scalar) {\n this.min.addScalar(-scalar);\n this.max.addScalar(scalar);\n return this;\n }\n }, {\n key: \"containsPoint\",\n value: function containsPoint(point) {\n var distTol = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : _Tolerance__WEBPACK_IMPORTED_MODULE_3__.Tolerance.global.distTol;\n return !(_MathUtils__WEBPACK_IMPORTED_MODULE_4__.MathUtils.isSmaller(point.x, this.min.x, distTol) || _MathUtils__WEBPACK_IMPORTED_MODULE_4__.MathUtils.isBigger(point.x, this.max.x, distTol) || _MathUtils__WEBPACK_IMPORTED_MODULE_4__.MathUtils.isSmaller(point.y, this.min.y, distTol) || _MathUtils__WEBPACK_IMPORTED_MODULE_4__.MathUtils.isBigger(point.y, this.max.y, distTol));\n }\n }, {\n key: \"containsBox\",\n value: function containsBox(box) {\n var distTol = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : _Tolerance__WEBPACK_IMPORTED_MODULE_3__.Tolerance.global.distTol;\n return _MathUtils__WEBPACK_IMPORTED_MODULE_4__.MathUtils.isSmallerOrEqual(this.min.x, box.min.x, distTol) && _MathUtils__WEBPACK_IMPORTED_MODULE_4__.MathUtils.isSmallerOrEqual(box.max.x, this.max.x, distTol) && _MathUtils__WEBPACK_IMPORTED_MODULE_4__.MathUtils.isSmallerOrEqual(this.min.y, box.min.y, distTol) && _MathUtils__WEBPACK_IMPORTED_MODULE_4__.MathUtils.isSmallerOrEqual(box.max.y, this.max.y, distTol);\n }\n }, {\n key: \"isValid\",\n value: function isValid() {\n return this.min.x <= this.max.x && this.min.y <= this.max.y;\n }\n }, {\n key: \"isOverlapping\",\n value: function isOverlapping(box) {\n var distTol = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : _Tolerance__WEBPACK_IMPORTED_MODULE_3__.Tolerance.global.distTol;\n if (!box.isValid()) {\n return false;\n }\n if (_MathUtils__WEBPACK_IMPORTED_MODULE_4__.MathUtils.isSmaller(this.max.x, box.min.x, distTol) || _MathUtils__WEBPACK_IMPORTED_MODULE_4__.MathUtils.isBigger(this.min.x, box.max.x, distTol)) {\n return false;\n }\n if (_MathUtils__WEBPACK_IMPORTED_MODULE_4__.MathUtils.isSmaller(this.max.y, box.min.y, distTol) || _MathUtils__WEBPACK_IMPORTED_MODULE_4__.MathUtils.isBigger(this.min.y, box.max.y, distTol)) {\n return false;\n }\n return true;\n }\n }, {\n key: \"getParameter\",\n value: function getParameter(point, target) {\n // This can potentially have a divide by zero if the box\n // has a size dimension of 0.\n return target.set((point.x - this.min.x) / (this.max.x - this.min.x), (point.y - this.min.y) / (this.max.y - this.min.y));\n }\n }, {\n key: \"intersectsBox\",\n value: function intersectsBox(box) {\n // using 4 splitting planes to rule out intersections\n return !(box.max.x < this.min.x || box.min.x > this.max.x || box.max.y < this.min.y || box.min.y > this.max.y);\n }\n }, {\n key: \"clampPoint\",\n value: function clampPoint(point, target) {\n return target.copy(point).clamp(this.min, this.max);\n }\n }, {\n key: \"distanceToPoint\",\n value: function distanceToPoint(point) {\n var clampedPoint = _vector.copy(point).clamp(this.min, this.max);\n return clampedPoint.sub(point).length;\n }\n }, {\n key: \"intersect\",\n value: function intersect(box) {\n this.min.max(box.min);\n this.max.min(box.max);\n return this;\n }\n }, {\n key: \"union\",\n value: function union(box) {\n this.min.min(box.min);\n this.max.max(box.max);\n return this;\n }\n }, {\n key: \"translate\",\n value: function translate(offset) {\n this.min.add(offset);\n this.max.add(offset);\n return this;\n }\n }]);\n}();\n\n\n//# sourceURL=webpack://Math/./es/base/Box2.js?");
/***/ }),
/***/ "./es/base/Box3.js":
/*!*************************!*\
!*** ./es/base/Box3.js ***!
\*************************/
/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ Box3: () => (/* binding */ Box3)\n/* harmony export */ });\n/* harmony import */ var _babel_runtime_helpers_esm_classCallCheck__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! @babel/runtime/helpers/esm/classCallCheck */ \"../../node_modules/.pnpm/@babel+runtime@7.26.0/node_modules/@babel/runtime/helpers/esm/classCallCheck.js\");\n/* harmony import */ var _babel_runtime_helpers_esm_createClass__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! @babel/runtime/helpers/esm/createClass */ \"../../node_modules/.pnpm/@babel+runtime@7.26.0/node_modules/@babel/runtime/helpers/esm/createClass.js\");\n/* harmony import */ var _Vector3__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./Vector3 */ \"./es/base/Vector3.js\");\n/* harmony import */ var _Tolerance__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ./Tolerance */ \"./es/base/Tolerance.js\");\n/* harmony import */ var _MathUtils__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ../MathUtils */ \"./es/MathUtils.js\");\n\n\n\n\n\nvar _points = [new _Vector3__WEBPACK_IMPORTED_MODULE_2__.Vector3(), new _Vector3__WEBPACK_IMPORTED_MODULE_2__.Vector3(), new _Vector3__WEBPACK_IMPORTED_MODULE_2__.Vector3(), new _Vector3__WEBPACK_IMPORTED_MODULE_2__.Vector3(), new _Vector3__WEBPACK_IMPORTED_MODULE_2__.Vector3(), new _Vector3__WEBPACK_IMPORTED_MODULE_2__.Vector3(), new _Vector3__WEBPACK_IMPORTED_MODULE_2__.Vector3(), new _Vector3__WEBPACK_IMPORTED_MODULE_2__.Vector3()];\nvar _vector = new _Vector3__WEBPACK_IMPORTED_MODULE_2__.Vector3();\nvar Box3 = /*#__PURE__*/function () {\n function Box3(min, max) {\n (0,_babel_runtime_helpers_esm_classCallCheck__WEBPACK_IMPORTED_MODULE_0__[\"default\"])(this, Box3);\n this.isBox3 = true;\n this.min = min !== undefined ? min : new _Vector3__WEBPACK_IMPORTED_MODULE_2__.Vector3(+Infinity, +Infinity, +Infinity);\n this.max = max !== undefined ? max : new _Vector3__WEBPACK_IMPORTED_MODULE_2__.Vector3(-Infinity, -Infinity, -Infinity);\n }\n return (0,_babel_runtime_helpers_esm_createClass__WEBPACK_IMPORTED_MODULE_1__[\"default\"])(Box3, [{\n key: \"set\",\n value: function set(min, max) {\n this.min.copy(min);\n this.max.copy(max);\n return this;\n }\n }, {\n key: \"setFromArray\",\n value: function setFromArray(array) {\n var minX = +Infinity;\n var minY = +Infinity;\n var minZ = +Infinity;\n var maxX = -Infinity;\n var maxY = -Infinity;\n var maxZ = -Infinity;\n for (var i = 0, l = array.length; i < l; i += 3) {\n var x = array[i];\n var y = array[i + 1];\n var z = array[i + 2];\n if (x < minX) minX = x;\n if (y < minY) minY = y;\n if (z < minZ) minZ = z;\n if (x > maxX) maxX = x;\n if (y > maxY) maxY = y;\n if (z > maxZ) maxZ = z;\n }\n this.min.set(minX, minY, minZ);\n this.max.set(maxX, maxY, maxZ);\n return this;\n }\n }, {\n key: \"setFromPoints\",\n value: function setFromPoints(points) {\n this.makeEmpty();\n for (var i = 0, il = points.length; i < il; i++) {\n this.expandByPoint(points[i]);\n }\n return this;\n }\n }, {\n key: \"setFromCenterAndSize\",\n value: function setFromCenterAndSize(center, size) {\n var halfSize = _vector.copy(size).multiplyScalar(0.5);\n this.min.copy(center).sub(halfSize);\n this.max.copy(center).add(halfSize);\n return this;\n }\n }, {\n key: \"clone\",\n value: function clone() {\n return new Box3().copy(this);\n }\n }, {\n key: \"copy\",\n value: function copy(box) {\n this.min.copy(box.min);\n this.max.copy(box.max);\n return this;\n }\n }, {\n key: \"makeEmpty\",\n value: function makeEmpty() {\n // eslint-disable-next-line no-multi-assign\n this.min.x = this.min.y = this.min.z = +Infinity;\n // eslint-disable-next-line no-multi-assign\n this.max.x = this.max.y = this.max.z = -Infinity;\n return this;\n }\n }, {\n key: \"isEmpty\",\n value: function isEmpty() {\n // this is a more robust check for empty than ( volume <= 0 ) because volume can get positive with two negative axes\n return this.max.x < this.min.x || this.max.y < this.min.y || this.max.z < this.min.z;\n }\n }, {\n key: \"getCenter\",\n value: function getCenter(target) {\n return this.isEmpty() ? target.set(0, 0, 0) : target.addVectors(this.min, this.max).multiplyScalar(0.5);\n }\n }, {\n key: \"getSize\",\n value: function getSize(target) {\n return this.isEmpty() ? target.set(0, 0, 0) : target.subVectors(this.max, this.min);\n }\n }, {\n key: \"expandByPoint\",\n value: function expandByPoint(point) {\n this.min.min(point);\n this.max.max(point);\n return this;\n }\n }, {\n key: \"expandByVector\",\n value: function expandByVector(vector) {\n this.min.sub(vector);\n this.max.add(vector);\n return this;\n }\n }, {\n key: \"expandByScalar\",\n value: function expandByScalar(scalar) {\n this.min.addScalar(-scalar);\n this.max.addScalar(scalar);\n return this;\n }\n }, {\n key: \"containsPoint\",\n value: function containsPoint(point) {\n var distTol = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : _Tolerance__WEBPACK_IMPORTED_MODULE_3__.Tolerance.global.distTol;\n return !(_MathUtils__WEBPACK_IMPORTED_MODULE_4__.MathUtils.isSmaller(point.x, this.min.x, distTol) || _MathUtils__WEBPACK_IMPORTED_MODULE_4__.MathUtils.isBigger(point.x, this.max.x, distTol) || _MathUtils__WEBPACK_IMPORTED_MODULE_4__.MathUtils.isSmaller(point.y, this.min.y, distTol) || _MathUtils__WEBPACK_IMPORTED_MODULE_4__.MathUtils.isBigger(point.y, this.max.y, distTol) || _MathUtils__WEBPACK_IMPORTED_MODULE_4__.MathUtils.isSmaller(point.z, this.min.z, distTol) || _MathUtils__WEBPACK_IMPORTED_MODULE_4__.MathUtils.isBigger(point.z, this.max.z, distTol));\n }\n }, {\n key: \"containsBox\",\n value: function containsBox(box) {\n var distTol = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : _Tolerance__WEBPACK_IMPORTED_MODULE_3__.Tolerance.global.distTol;\n return _MathUtils__WEBPACK_IMPORTED_MODULE_4__.MathUtils.isSmallerOrEqual(this.min.x, box.min.x, distTol) && _MathUtils__WEBPACK_IMPORTED_MODULE_4__.MathUtils.isSmallerOrEqual(box.max.x, this.max.x, distTol) && _MathUtils__WEBPACK_IMPORTED_MODULE_4__.MathUtils.isSmallerOrEqual(this.min.y, box.min.y, distTol) && _MathUtils__WEBPACK_IMPORTED_MODULE_4__.MathUtils.isSmallerOrEqual(box.max.y, this.max.y, distTol) && _MathUtils__WEBPACK_IMPORTED_MODULE_4__.MathUtils.isSmallerOrEqual(this.min.z, box.min.z, distTol) && _MathUtils__WEBPACK_IMPORTED_MODULE_4__.MathUtils.isSmallerOrEqual(box.max.z, this.max.z, distTol);\n }\n }, {\n key: \"isOverlapping\",\n value: function isOverlapping(box) {\n var distTol = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : _Tolerance__WEBPACK_IMPORTED_MODULE_3__.Tolerance.global.distTol;\n if (!box.isValid()) {\n return false;\n }\n if (_MathUtils__WEBPACK_IMPORTED_MODULE_4__.MathUtils.isSmaller(this.max.x, box.min.x, distTol) || _MathUtils__WEBPACK_IMPORTED_MODULE_4__.MathUtils.isBigger(this.min.x, box.max.x, distTol)) {\n return false;\n }\n if (_MathUtils__WEBPACK_IMPORTED_MODULE_4__.MathUtils.isSmaller(this.max.y, box.min.y, distTol) || _MathUtils__WEBPACK_IMPORTED_MODULE_4__.MathUtils.isBigger(this.min.y, box.max.y, distTol)) {\n return false;\n }\n if (_MathUtils__WEBPACK_IMPORTED_MODULE_4__.MathUtils.isSmaller(this.max.z, box.min.z, distTol) || _MathUtils__WEBPACK_IMPORTED_MODULE_4__.MathUtils.isBigger(this.min.z, box.max.z, distTol)) {\n return false;\n }\n return true;\n }\n }, {\n key: \"getParameter\",\n value: function getParameter(point, target) {\n // This can potentially have a divide by zero if the box\n // has a size dimension of 0.\n return target.set((point.x - this.min.x) / (this.max.x - this.min.x), (point.y - this.min.y) / (this.max.y - this.min.y), (point.z - this.min.z) / (this.max.z - this.min.z));\n }\n }, {\n key: \"intersectsBox\",\n value: function intersectsBox(box) {\n // using 6 splitting planes to rule out intersections.\n return !(box.max.x < this.min.x || box.min.x > this.max.x || box.max.y < this.min.y || box.min.y > this.max.y || box.max.z < this.min.z || box.min.z > this.max.z);\n }\n }, {\n key: \"clampPoint\",\n value: function clampPoint(point, target) {\n return target.copy(point).clamp(this.min, this.max);\n }\n }, {\n key: \"distanceToPoint\",\n value: function distanceToPoint(point) {\n var clampedPoint = _vector.copy(point).clamp(this.min, this.max);\n return clampedPoint.sub(point).length;\n }\n }, {\n key: \"intersect\",\n value: function intersect(box) {\n this.min.max(box.min);\n this.max.min(box.max);\n // ensure that if there is no overlap, the result is fully empty, not slightly empty with non-inf/+inf values that will cause subsequence intersects to erroneously return valid values.\n if (this.isEmpty()) this.makeEmpty();\n return this;\n }\n }, {\n key: \"union\",\n value: function union(box) {\n this.min.min(box.min);\n this.max.max(box.max);\n return this;\n }\n }, {\n key: \"applyMatrix4\",\n value: function applyMatrix4(matrix) {\n // transform of empty box is an empty box.\n if (this.isEmpty()) return this;\n // NOTE: I am using a binary pattern to specify all 2^3 combinations below\n _points[0].set(this.min.x, this.min.y, this.min.z).applyMatrix4(matrix); // 000\n _points[1].set(this.min.x, this.min.y, this.max.z).applyMatrix4(matrix); // 001\n _points[2].set(this.min.x, this.max.y, this.min.z).applyMatrix4(matrix); // 010\n _points[3].set(this.min.x, this.max.y, this.max.z).applyMatrix4(matrix); // 011\n _points[4].set(this.max.x, this.min.y, this.min.z).applyMatrix4(matrix); // 100\n _points[5].set(this.max.x, this.min.y, this.max.z).applyMatrix4(matrix); // 101\n _points[6].set(this.max.x, this.max.y, this.min.z).applyMatrix4(matrix); // 110\n _points[7].set(this.max.x, this.max.y, this.max.z).applyMatrix4(matrix); // 111\n this.setFromPoints(_points);\n return this;\n }\n }, {\n key: \"translate\",\n value: function translate(offset) {\n this.min.add(offset);\n this.max.add(offset);\n return this;\n }\n }, {\n key: \"equals\",\n value: function equals(box) {\n var distTol = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : _Tolerance__WEBPACK_IMPORTED_MODULE_3__.Tolerance.global.distTol;\n return box.min.equals(this.min, distTol) && box.max.equals(this.max, distTol);\n }\n }, {\n key: \"isValid\",\n value: function isValid() {\n return this.min.x <= this.max.x && this.min.y <= this.max.y && this.min.z <= this.max.z;\n }\n }]);\n}();\n\n\n//# sourceURL=webpack://Math/./es/base/Box3.js?");
/***/ }),
/***/ "./es/base/Euler.js":
/*!**************************!*\
!*** ./es/base/Euler.js ***!
\**************************/
/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ Euler: () => (/* binding */ Euler)\n/* harmony export */ });\n/* harmony import */ var _babel_runtime_helpers_esm_classCallCheck__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! @babel/runtime/helpers/esm/classCallCheck */ \"../../node_modules/.pnpm/@babel+runtime@7.26.0/node_modules/@babel/runtime/helpers/esm/classCallCheck.js\");\n/* harmony import */ var _babel_runtime_helpers_esm_createClass__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! @babel/runtime/helpers/esm/createClass */ \"../../node_modules/.pnpm/@babel+runtime@7.26.0/node_modules/@babel/runtime/helpers/esm/createClass.js\");\n/* harmony import */ var _Quaternion__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./Quaternion */ \"./es/base/Quaternion.js\");\n/* harmony import */ var _Vector3__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ./Vector3 */ \"./es/base/Vector3.js\");\n/* harmony import */ var _Matrix4__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ./Matrix4 */ \"./es/base/Matrix4.js\");\n/* harmony import */ var _MathUtils__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! ../MathUtils */ \"./es/MathUtils.js\");\n\n\n\n\n\n\nvar _matrix = new _Matrix4__WEBPACK_IMPORTED_MODULE_4__.Matrix4();\nvar _quaternion = new _Quaternion__WEBPACK_IMPORTED_MODULE_2__.Quaternion();\nvar Euler = /*#__PURE__*/function () {\n function Euler() {\n var x = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : 0;\n var y = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : 0;\n var z = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : 0;\n var order = arguments.length > 3 && arguments[3] !== undefined ? arguments[3] : Euler.DefaultOrder;\n (0,_babel_runtime_helpers_esm_classCallCheck__WEBPACK_IMPORTED_MODULE_0__[\"default\"])(this, Euler);\n this._onChangeCallback = function () {\n //\n };\n this.isEuler = true;\n this._x = x;\n this._y = y;\n this._z = z;\n this._order = order;\n }\n return (0,_babel_runtime_helpers_esm_createClass__WEBPACK_IMPORTED_MODULE_1__[\"default\"])(Euler, [{\n key: \"x\",\n get: function get() {\n return this._x;\n },\n set: function set(value) {\n this._x = value;\n this._onChangeCallback();\n }\n }, {\n key: \"y\",\n get: function get() {\n return this._y;\n },\n set: function set(value) {\n this._y = value;\n this._onChangeCallback();\n }\n }, {\n key: \"z\",\n get: function get() {\n return this._z;\n },\n set: function set(value) {\n this._z = value;\n this._onChangeCallback();\n }\n }, {\n key: \"order\",\n get: function get() {\n return this._order;\n },\n set: function set(value) {\n this._order = value;\n this._onChangeCallback();\n }\n }, {\n key: \"set\",\n value: function set(x, y, z, order) {\n this._x = x;\n this._y = y;\n this._z = z;\n this._order = order || this._order;\n this._onChangeCallback();\n return this;\n }\n }, {\n key: \"clone\",\n value: function clone() {\n return new Euler(this._x, this._y, this._z, this._order);\n }\n }, {\n key: \"copy\",\n value: function copy(euler) {\n this._x = euler._x;\n this._y = euler._y;\n this._z = euler._z;\n this._order = euler._order;\n this._onChangeCallback();\n return this;\n }\n }, {\n key: \"setFromRotationMatrix\",\n value: function setFromRotationMatrix(m, order) {\n var clamp = _MathUtils__WEBPACK_IMPORTED_MODULE_5__.MathUtils.clamp;\n // assumes the upper 3x3 of m is a pure rotation matrix (i.e, unscaled)\n var te = m.elements;\n var m11 = te[0];\n var m12 = te[4];\n var m13 = te[8];\n var m21 = te[1];\n var m22 = te[5];\n var m23 = te[9];\n var m31 = te[2];\n var m32 = te[6];\n var m33 = te[10];\n order = order || this._order;\n switch (order) {\n case 'XYZ':\n this._y = Math.asin(clamp(m13, -1, 1));\n if (Math.abs(m13) < 0.9999999) {\n this._x = Math.atan2(-m23, m33);\n this._z = Math.atan2(-m12, m11);\n } else {\n this._x = Math.atan2(m32, m22);\n this._z = 0;\n }\n break;\n case 'YXZ':\n this._x = Math.asin(-clamp(m23, -1, 1));\n if (Math.abs(m23) < 0.9999999) {\n this._y = Math.atan2(m13, m33);\n this._z = Math.atan2(m21, m22);\n } else {\n this._y = Math.atan2(-m31, m11);\n this._z = 0;\n }\n break;\n case 'ZXY':\n this._x = Math.asin(clamp(m32, -1, 1));\n if (Math.abs(m32) < 0.9999999) {\n this._y = Math.atan2(-m31, m33);\n this._z = Math.atan2(-m12, m22);\n } else {\n this._y = 0;\n this._z = Math.atan2(m21, m11);\n }\n break;\n case 'ZYX':\n this._y = Math.asin(-clamp(m31, -1, 1));\n if (Math.abs(m31) < 0.9999999) {\n this._x = Math.atan2(m32, m33);\n this._z = Math.atan2(m21, m11);\n } else {\n this._x = 0;\n this._z = Math.atan2(-m12, m22);\n }\n break;\n case 'YZX':\n this._z = Math.asin(clamp(m21, -1, 1));\n if (Math.abs(m21) < 0.9999999) {\n this._x = Math.atan2(-m23, m22);\n this._y = Math.atan2(-m31, m11);\n } else {\n this._x = 0;\n this._y = Math.atan2(m13, m33);\n }\n break;\n case 'XZY':\n this._z = Math.asin(-clamp(m12, -1, 1));\n if (Math.abs(m12) < 0.9999999) {\n this._x = Math.atan2(m32, m22);\n this._y = Math.atan2(m13, m11);\n } else {\n this._x = Math.atan2(-m23, m33);\n this._y = 0;\n }\n break;\n default:\n console.warn(\"THREE.Euler: .setFromRotationMatrix() encountered an unknown order: \".concat(order));\n }\n this._order = order;\n this._onChangeCallback();\n return this;\n }\n }, {\n key: \"setFromQuaternion\",\n value: function setFromQuaternion(q, order) {\n _matrix.makeRotationFromQuaternion(q);\n return this.setFromRotationMatrix(_matrix, order);\n }\n }, {\n key: \"setFromVector3\",\n value: function setFromVector3(v, order) {\n return this.set(v.x, v.y, v.z, order || this._order);\n }\n }, {\n key: \"reorder\",\n value: function reorder(newOrder) {\n // WARNING: this discards revolution information -bhouston\n _quaternion.setFromEuler(this);\n return this.setFromQuaternion(_quaternion, newOrder);\n }\n }, {\n key: \"equals\",\n value: function equals(euler) {\n return euler._x === this._x && euler._y === this._y && euler._z === this._z && euler._order === this._order;\n }\n }, {\n key: \"fromArray\",\n value: function fromArray(array) {\n this._x = array[0];\n this._y = array[1];\n this._z = array[2];\n if (array[3] !== undefined) this._order = array[3];\n this._onChangeCallback();\n return this;\n }\n }, {\n key: \"toArray\",\n value: function toArray() {\n var array = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : [];\n var offset = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : 0;\n array[offset] = this._x;\n array[offset + 1] = this._y;\n array[offset + 2] = this._z;\n // array[offset + 3] = this._order;\n return array;\n }\n }, {\n key: \"toVector3\",\n value: function toVector3(optionalResult) {\n if (optionalResult) {\n return optionalResult.set(this._x, this._y, this._z);\n }\n return new _Vector3__WEBPACK_IMPORTED_MODULE_3__.Vector3(this._x, this._y, this._z);\n }\n }, {\n key: \"_onChange\",\n value: function _onChange(callback) {\n this._onChangeCallback = callback;\n return this;\n }\n }]);\n}();\nEuler.DefaultOrder = 'XYZ';\nEuler.RotationOrders = ['XYZ', 'YZX', 'ZXY', 'XZY', 'YXZ', 'ZYX'];\n\n\n//# sourceURL=webpack://Math/./es/base/Euler.js?");
/***/ }),
/***/ "./es/base/Interval.js":
/*!*****************************!*\
!*** ./es/base/Interval.js ***!
\*****************************/
/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ Interval: () => (/* binding */ Interval)\n/* harmony export */ });\n/* harmony import */ var _babel_runtime_helpers_esm_classCallCheck__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! @babel/runtime/helpers/esm/classCallCheck */ \"../../node_modules/.pnpm/@babel+runtime@7.26.0/node_modules/@babel/runtime/helpers/esm/classCallCheck.js\");\n/* harmony import */ var _babel_runtime_helpers_esm_createClass__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! @babel/runtime/helpers/esm/createClass */ \"../../node_modules/.pnpm/@babel+runtime@7.26.0/node_modules/@babel/runtime/helpers/esm/createClass.js\");\n/* harmony import */ var _MathUtils__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ../MathUtils */ \"./es/MathUtils.js\");\n/* harmony import */ var _Tolerance__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ./Tolerance */ \"./es/base/Tolerance.js\");\n\n\nfunction _createForOfIteratorHelper(r, e) { var t = \"undefined\" != typeof Symbol && r[Symbol.iterator] || r[\"@@iterator\"]; if (!t) { if (Array.isArray(r) || (t = _unsupportedIterableToArray(r)) || e && r && \"number\" == typeof r.length) { t && (r = t); var _n = 0, F = function F() {}; return { s: F, n: function n() { return _n >= r.length ? { done: !0 } : { done: !1, value: r[_n++] }; }, e: function e(r) { throw r; }, f: F }; } throw new TypeError(\"Invalid attempt to iterate non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.\"); } var o, a = !0, u = !1; return { s: function s() { t = t.call(r); }, n: function n() { var r = t.next(); return a = r.done, r; }, e: function e(r) { u = !0, o = r; }, f: function f() { try { a || null == t[\"return\"] || t[\"return\"](); } finally { if (u) throw o; } } }; }\nfunction _unsupportedIterableToArray(r, a) { if (r) { if (\"string\" == typeof r) return _arrayLikeToArray(r, a); var t = {}.toString.call(r).slice(8, -1); return \"Object\" === t && r.constructor && (t = r.constructor.name), \"Map\" === t || \"Set\" === t ? Array.from(r) : \"Arguments\" === t || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(t) ? _arrayLikeToArray(r, a) : void 0; } }\nfunction _arrayLikeToArray(r, a) { (null == a || a > r.length) && (a = r.length); for (var e = 0, n = Array(a); e < a; e++) n[e] = r[e]; return n; }\n\n\nvar Interval = /*#__PURE__*/function () {\n /**\n * constructor\n * @param start\n * @param end\n */\n function Interval(start, end) {\n (0,_babel_runtime_helpers_esm_classCallCheck__WEBPACK_IMPORTED_MODULE_0__[\"default\"])(this, Interval);\n this._start = start;\n this._end = end;\n }\n /**\n * Get interval's start\n */\n return (0,_babel_runtime_helpers_esm_createClass__WEBPACK_IMPORTED_MODULE_1__[\"default\"])(Interval, [{\n key: \"start\",\n get: function get() {\n return this._start;\n }\n /**\n * Get interval's end\n */\n }, {\n key: \"end\",\n get: function get() {\n return this._end;\n }\n /**\n * Returns true if this interval is equal to another within specified tolerance.\n * @param other\n * @param numericTolerance\n * @return\n */\n }, {\n key: \"isEqual\",\n value: function isEqual(other, numTol) {\n var tolerance = numTol || _Tolerance__WEBPACK_IMPORTED_MODULE_3__.Tolerance.global.numTol;\n return _MathUtils__WEBPACK_IMPORTED_MODULE_2__.MathUtils.isEqual(this._start, other.start, tolerance) && _MathUtils__WEBPACK_IMPORTED_MODULE_2__.MathUtils.isEqual(this._end, other.end, tolerance);\n }\n /**\n * Get the middle number\n * @return\n */\n }, {\n key: \"middle\",\n get: function get() {\n return 0.5 * (this._start + this._end);\n }\n /**\n * Get the cloned object of this Interval.\n */\n }, {\n key: \"clone\",\n value: function clone() {\n return new Interval(this._start, this._end);\n }\n /**\n * Get interval's length\n * @return\n */\n }, {\n key: \"length\",\n get: function get() {\n return Math.abs(this._end - this._start);\n }\n /**\n * interval string\n * @return\n */\n }, {\n key: \"toString\",\n value: function toString() {\n return \"Interval{start: \".concat(this._start, \", end: \").concat(this._end, \"}\");\n }\n /**\n * Indicates whether the Interval is Valid\n * @return\n */\n }, {\n key: \"isValid\",\n value: function isValid() {\n return !Number.isNaN(this._start) && !Number.isNaN(this._end);\n }\n /**\n * interval mul by number\n * @param alpha\n * @returns\n */\n }, {\n key: \"mul\",\n value: function mul(alpha) {\n return new Interval(this._start * alpha, this._end * alpha);\n }\n /**\n * interval add by number\n * @param alpha\n * @returns\n */\n }, {\n key: \"add\",\n value: function add(interval) {\n if (!interval) {\n return new Interval(this._start, this._end);\n }\n return new Interval(this._start + interval.start, this._end + interval.end);\n }\n }, {\n key: \"addByNumber\",\n value: function addByNumber(alpha) {\n return new Interval(this._start + alpha, this._end + alpha);\n }\n /**\n * interval sub by Interval\n * @param interval\n * @returns\n */\n }, {\n key: \"sub\",\n value: function sub(interval) {\n if (!interval) {\n return new Interval(this._start, this._end);\n }\n return new Interval(this._start - interval.start, this._end - interval.end);\n }\n /**\n * Interval interpolate\n * @param alpha\n * @returns\n */\n }, {\n key: \"interpolate\",\n value: function interpolate(alpha) {\n return (1 - alpha) * this._start + alpha * this._end;\n }\n /**\n * Interval expand\n * @param length\n * @returns\n */\n }, {\n key: \"expand\",\n value: function expand(length) {\n return new Interval(this._start - length, this._end + leng