poly-extrude 0.22.0 → 0.22.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -1 +1 @@
1
- {"version":3,"file":"poly-extrude.mjs","sources":["../node_modules/.pnpm/earcut@3.0.1/node_modules/earcut/src/earcut.js","../src/math/Quaternion.js","../src/math/Vector3.js","../src/util.ts","../src/polygon.ts","../src/polyline.ts","../src/cylinder.ts","../src/path/PathPoint.js","../src/math/Matrix4.js","../src/math/Curve.js","../src/math/Interpolations.js","../src/math/QuadraticBezierCurve3.js","../src/path/PathPointList.js","../src/path.ts","../src/tube.ts","../src/plane.ts","../src/polygonpath.ts","../node_modules/.pnpm/bezier-js@6.1.4/node_modules/bezier-js/dist/bezier.cjs","../src/polylineoffset.ts"],"sourcesContent":["\nexport default function earcut(data, holeIndices, dim = 2) {\n\n const hasHoles = holeIndices && holeIndices.length;\n const outerLen = hasHoles ? holeIndices[0] * dim : data.length;\n let outerNode = linkedList(data, 0, outerLen, dim, true);\n const triangles = [];\n\n if (!outerNode || outerNode.next === outerNode.prev) return triangles;\n\n let minX, minY, invSize;\n\n if (hasHoles) outerNode = eliminateHoles(data, holeIndices, outerNode, dim);\n\n // if the shape is not too simple, we'll use z-order curve hash later; calculate polygon bbox\n if (data.length > 80 * dim) {\n minX = Infinity;\n minY = Infinity;\n let maxX = -Infinity;\n let maxY = -Infinity;\n\n for (let i = dim; i < outerLen; i += dim) {\n const x = data[i];\n const y = data[i + 1];\n if (x < minX) minX = x;\n if (y < minY) minY = y;\n if (x > maxX) maxX = x;\n if (y > maxY) maxY = y;\n }\n\n // minX, minY and invSize are later used to transform coords into integers for z-order calculation\n invSize = Math.max(maxX - minX, maxY - minY);\n invSize = invSize !== 0 ? 32767 / invSize : 0;\n }\n\n earcutLinked(outerNode, triangles, dim, minX, minY, invSize, 0);\n\n return triangles;\n}\n\n// create a circular doubly linked list from polygon points in the specified winding order\nfunction linkedList(data, start, end, dim, clockwise) {\n let last;\n\n if (clockwise === (signedArea(data, start, end, dim) > 0)) {\n for (let i = start; i < end; i += dim) last = insertNode(i / dim | 0, data[i], data[i + 1], last);\n } else {\n for (let i = end - dim; i >= start; i -= dim) last = insertNode(i / dim | 0, data[i], data[i + 1], last);\n }\n\n if (last && equals(last, last.next)) {\n removeNode(last);\n last = last.next;\n }\n\n return last;\n}\n\n// eliminate colinear or duplicate points\nfunction filterPoints(start, end) {\n if (!start) return start;\n if (!end) end = start;\n\n let p = start,\n again;\n do {\n again = false;\n\n if (!p.steiner && (equals(p, p.next) || area(p.prev, p, p.next) === 0)) {\n removeNode(p);\n p = end = p.prev;\n if (p === p.next) break;\n again = true;\n\n } else {\n p = p.next;\n }\n } while (again || p !== end);\n\n return end;\n}\n\n// main ear slicing loop which triangulates a polygon (given as a linked list)\nfunction earcutLinked(ear, triangles, dim, minX, minY, invSize, pass) {\n if (!ear) return;\n\n // interlink polygon nodes in z-order\n if (!pass && invSize) indexCurve(ear, minX, minY, invSize);\n\n let stop = ear;\n\n // iterate through ears, slicing them one by one\n while (ear.prev !== ear.next) {\n const prev = ear.prev;\n const next = ear.next;\n\n if (invSize ? isEarHashed(ear, minX, minY, invSize) : isEar(ear)) {\n triangles.push(prev.i, ear.i, next.i); // cut off the triangle\n\n removeNode(ear);\n\n // skipping the next vertex leads to less sliver triangles\n ear = next.next;\n stop = next.next;\n\n continue;\n }\n\n ear = next;\n\n // if we looped through the whole remaining polygon and can't find any more ears\n if (ear === stop) {\n // try filtering points and slicing again\n if (!pass) {\n earcutLinked(filterPoints(ear), triangles, dim, minX, minY, invSize, 1);\n\n // if this didn't work, try curing all small self-intersections locally\n } else if (pass === 1) {\n ear = cureLocalIntersections(filterPoints(ear), triangles);\n earcutLinked(ear, triangles, dim, minX, minY, invSize, 2);\n\n // as a last resort, try splitting the remaining polygon into two\n } else if (pass === 2) {\n splitEarcut(ear, triangles, dim, minX, minY, invSize);\n }\n\n break;\n }\n }\n}\n\n// check whether a polygon node forms a valid ear with adjacent nodes\nfunction isEar(ear) {\n const a = ear.prev,\n b = ear,\n c = ear.next;\n\n if (area(a, b, c) >= 0) return false; // reflex, can't be an ear\n\n // now make sure we don't have other points inside the potential ear\n const ax = a.x, bx = b.x, cx = c.x, ay = a.y, by = b.y, cy = c.y;\n\n // triangle bbox\n const x0 = Math.min(ax, bx, cx),\n y0 = Math.min(ay, by, cy),\n x1 = Math.max(ax, bx, cx),\n y1 = Math.max(ay, by, cy);\n\n let p = c.next;\n while (p !== a) {\n if (p.x >= x0 && p.x <= x1 && p.y >= y0 && p.y <= y1 &&\n pointInTriangleExceptFirst(ax, ay, bx, by, cx, cy, p.x, p.y) &&\n area(p.prev, p, p.next) >= 0) return false;\n p = p.next;\n }\n\n return true;\n}\n\nfunction isEarHashed(ear, minX, minY, invSize) {\n const a = ear.prev,\n b = ear,\n c = ear.next;\n\n if (area(a, b, c) >= 0) return false; // reflex, can't be an ear\n\n const ax = a.x, bx = b.x, cx = c.x, ay = a.y, by = b.y, cy = c.y;\n\n // triangle bbox\n const x0 = Math.min(ax, bx, cx),\n y0 = Math.min(ay, by, cy),\n x1 = Math.max(ax, bx, cx),\n y1 = Math.max(ay, by, cy);\n\n // z-order range for the current triangle bbox;\n const minZ = zOrder(x0, y0, minX, minY, invSize),\n maxZ = zOrder(x1, y1, minX, minY, invSize);\n\n let p = ear.prevZ,\n n = ear.nextZ;\n\n // look for points inside the triangle in both directions\n while (p && p.z >= minZ && n && n.z <= maxZ) {\n if (p.x >= x0 && p.x <= x1 && p.y >= y0 && p.y <= y1 && p !== a && p !== c &&\n pointInTriangleExceptFirst(ax, ay, bx, by, cx, cy, p.x, p.y) && area(p.prev, p, p.next) >= 0) return false;\n p = p.prevZ;\n\n if (n.x >= x0 && n.x <= x1 && n.y >= y0 && n.y <= y1 && n !== a && n !== c &&\n pointInTriangleExceptFirst(ax, ay, bx, by, cx, cy, n.x, n.y) && area(n.prev, n, n.next) >= 0) return false;\n n = n.nextZ;\n }\n\n // look for remaining points in decreasing z-order\n while (p && p.z >= minZ) {\n if (p.x >= x0 && p.x <= x1 && p.y >= y0 && p.y <= y1 && p !== a && p !== c &&\n pointInTriangleExceptFirst(ax, ay, bx, by, cx, cy, p.x, p.y) && area(p.prev, p, p.next) >= 0) return false;\n p = p.prevZ;\n }\n\n // look for remaining points in increasing z-order\n while (n && n.z <= maxZ) {\n if (n.x >= x0 && n.x <= x1 && n.y >= y0 && n.y <= y1 && n !== a && n !== c &&\n pointInTriangleExceptFirst(ax, ay, bx, by, cx, cy, n.x, n.y) && area(n.prev, n, n.next) >= 0) return false;\n n = n.nextZ;\n }\n\n return true;\n}\n\n// go through all polygon nodes and cure small local self-intersections\nfunction cureLocalIntersections(start, triangles) {\n let p = start;\n do {\n const a = p.prev,\n b = p.next.next;\n\n if (!equals(a, b) && intersects(a, p, p.next, b) && locallyInside(a, b) && locallyInside(b, a)) {\n\n triangles.push(a.i, p.i, b.i);\n\n // remove two nodes involved\n removeNode(p);\n removeNode(p.next);\n\n p = start = b;\n }\n p = p.next;\n } while (p !== start);\n\n return filterPoints(p);\n}\n\n// try splitting polygon into two and triangulate them independently\nfunction splitEarcut(start, triangles, dim, minX, minY, invSize) {\n // look for a valid diagonal that divides the polygon into two\n let a = start;\n do {\n let b = a.next.next;\n while (b !== a.prev) {\n if (a.i !== b.i && isValidDiagonal(a, b)) {\n // split the polygon in two by the diagonal\n let c = splitPolygon(a, b);\n\n // filter colinear points around the cuts\n a = filterPoints(a, a.next);\n c = filterPoints(c, c.next);\n\n // run earcut on each half\n earcutLinked(a, triangles, dim, minX, minY, invSize, 0);\n earcutLinked(c, triangles, dim, minX, minY, invSize, 0);\n return;\n }\n b = b.next;\n }\n a = a.next;\n } while (a !== start);\n}\n\n// link every hole into the outer loop, producing a single-ring polygon without holes\nfunction eliminateHoles(data, holeIndices, outerNode, dim) {\n const queue = [];\n\n for (let i = 0, len = holeIndices.length; i < len; i++) {\n const start = holeIndices[i] * dim;\n const end = i < len - 1 ? holeIndices[i + 1] * dim : data.length;\n const list = linkedList(data, start, end, dim, false);\n if (list === list.next) list.steiner = true;\n queue.push(getLeftmost(list));\n }\n\n queue.sort(compareXYSlope);\n\n // process holes from left to right\n for (let i = 0; i < queue.length; i++) {\n outerNode = eliminateHole(queue[i], outerNode);\n }\n\n return outerNode;\n}\n\nfunction compareXYSlope(a, b) {\n let result = a.x - b.x;\n // when the left-most point of 2 holes meet at a vertex, sort the holes counterclockwise so that when we find\n // the bridge to the outer shell is always the point that they meet at.\n if (result === 0) {\n result = a.y - b.y;\n if (result === 0) {\n const aSlope = (a.next.y - a.y) / (a.next.x - a.x);\n const bSlope = (b.next.y - b.y) / (b.next.x - b.x);\n result = aSlope - bSlope;\n }\n }\n return result;\n}\n\n// find a bridge between vertices that connects hole with an outer ring and and link it\nfunction eliminateHole(hole, outerNode) {\n const bridge = findHoleBridge(hole, outerNode);\n if (!bridge) {\n return outerNode;\n }\n\n const bridgeReverse = splitPolygon(bridge, hole);\n\n // filter collinear points around the cuts\n filterPoints(bridgeReverse, bridgeReverse.next);\n return filterPoints(bridge, bridge.next);\n}\n\n// David Eberly's algorithm for finding a bridge between hole and outer polygon\nfunction findHoleBridge(hole, outerNode) {\n let p = outerNode;\n const hx = hole.x;\n const hy = hole.y;\n let qx = -Infinity;\n let m;\n\n // find a segment intersected by a ray from the hole's leftmost point to the left;\n // segment's endpoint with lesser x will be potential connection point\n // unless they intersect at a vertex, then choose the vertex\n if (equals(hole, p)) return p;\n do {\n if (equals(hole, p.next)) return p.next;\n else if (hy <= p.y && hy >= p.next.y && p.next.y !== p.y) {\n const x = p.x + (hy - p.y) * (p.next.x - p.x) / (p.next.y - p.y);\n if (x <= hx && x > qx) {\n qx = x;\n m = p.x < p.next.x ? p : p.next;\n if (x === hx) return m; // hole touches outer segment; pick leftmost endpoint\n }\n }\n p = p.next;\n } while (p !== outerNode);\n\n if (!m) return null;\n\n // look for points inside the triangle of hole point, segment intersection and endpoint;\n // if there are no points found, we have a valid connection;\n // otherwise choose the point of the minimum angle with the ray as connection point\n\n const stop = m;\n const mx = m.x;\n const my = m.y;\n let tanMin = Infinity;\n\n p = m;\n\n do {\n if (hx >= p.x && p.x >= mx && hx !== p.x &&\n pointInTriangle(hy < my ? hx : qx, hy, mx, my, hy < my ? qx : hx, hy, p.x, p.y)) {\n\n const tan = Math.abs(hy - p.y) / (hx - p.x); // tangential\n\n if (locallyInside(p, hole) &&\n (tan < tanMin || (tan === tanMin && (p.x > m.x || (p.x === m.x && sectorContainsSector(m, p)))))) {\n m = p;\n tanMin = tan;\n }\n }\n\n p = p.next;\n } while (p !== stop);\n\n return m;\n}\n\n// whether sector in vertex m contains sector in vertex p in the same coordinates\nfunction sectorContainsSector(m, p) {\n return area(m.prev, m, p.prev) < 0 && area(p.next, m, m.next) < 0;\n}\n\n// interlink polygon nodes in z-order\nfunction indexCurve(start, minX, minY, invSize) {\n let p = start;\n do {\n if (p.z === 0) p.z = zOrder(p.x, p.y, minX, minY, invSize);\n p.prevZ = p.prev;\n p.nextZ = p.next;\n p = p.next;\n } while (p !== start);\n\n p.prevZ.nextZ = null;\n p.prevZ = null;\n\n sortLinked(p);\n}\n\n// Simon Tatham's linked list merge sort algorithm\n// http://www.chiark.greenend.org.uk/~sgtatham/algorithms/listsort.html\nfunction sortLinked(list) {\n let numMerges;\n let inSize = 1;\n\n do {\n let p = list;\n let e;\n list = null;\n let tail = null;\n numMerges = 0;\n\n while (p) {\n numMerges++;\n let q = p;\n let pSize = 0;\n for (let i = 0; i < inSize; i++) {\n pSize++;\n q = q.nextZ;\n if (!q) break;\n }\n let qSize = inSize;\n\n while (pSize > 0 || (qSize > 0 && q)) {\n\n if (pSize !== 0 && (qSize === 0 || !q || p.z <= q.z)) {\n e = p;\n p = p.nextZ;\n pSize--;\n } else {\n e = q;\n q = q.nextZ;\n qSize--;\n }\n\n if (tail) tail.nextZ = e;\n else list = e;\n\n e.prevZ = tail;\n tail = e;\n }\n\n p = q;\n }\n\n tail.nextZ = null;\n inSize *= 2;\n\n } while (numMerges > 1);\n\n return list;\n}\n\n// z-order of a point given coords and inverse of the longer side of data bbox\nfunction zOrder(x, y, minX, minY, invSize) {\n // coords are transformed into non-negative 15-bit integer range\n x = (x - minX) * invSize | 0;\n y = (y - minY) * invSize | 0;\n\n x = (x | (x << 8)) & 0x00FF00FF;\n x = (x | (x << 4)) & 0x0F0F0F0F;\n x = (x | (x << 2)) & 0x33333333;\n x = (x | (x << 1)) & 0x55555555;\n\n y = (y | (y << 8)) & 0x00FF00FF;\n y = (y | (y << 4)) & 0x0F0F0F0F;\n y = (y | (y << 2)) & 0x33333333;\n y = (y | (y << 1)) & 0x55555555;\n\n return x | (y << 1);\n}\n\n// find the leftmost node of a polygon ring\nfunction getLeftmost(start) {\n let p = start,\n leftmost = start;\n do {\n if (p.x < leftmost.x || (p.x === leftmost.x && p.y < leftmost.y)) leftmost = p;\n p = p.next;\n } while (p !== start);\n\n return leftmost;\n}\n\n// check if a point lies within a convex triangle\nfunction pointInTriangle(ax, ay, bx, by, cx, cy, px, py) {\n return (cx - px) * (ay - py) >= (ax - px) * (cy - py) &&\n (ax - px) * (by - py) >= (bx - px) * (ay - py) &&\n (bx - px) * (cy - py) >= (cx - px) * (by - py);\n}\n\n// check if a point lies within a convex triangle but false if its equal to the first point of the triangle\nfunction pointInTriangleExceptFirst(ax, ay, bx, by, cx, cy, px, py) {\n return !(ax === px && ay === py) && pointInTriangle(ax, ay, bx, by, cx, cy, px, py);\n}\n\n// check if a diagonal between two polygon nodes is valid (lies in polygon interior)\nfunction isValidDiagonal(a, b) {\n return a.next.i !== b.i && a.prev.i !== b.i && !intersectsPolygon(a, b) && // dones't intersect other edges\n (locallyInside(a, b) && locallyInside(b, a) && middleInside(a, b) && // locally visible\n (area(a.prev, a, b.prev) || area(a, b.prev, b)) || // does not create opposite-facing sectors\n equals(a, b) && area(a.prev, a, a.next) > 0 && area(b.prev, b, b.next) > 0); // special zero-length case\n}\n\n// signed area of a triangle\nfunction area(p, q, r) {\n return (q.y - p.y) * (r.x - q.x) - (q.x - p.x) * (r.y - q.y);\n}\n\n// check if two points are equal\nfunction equals(p1, p2) {\n return p1.x === p2.x && p1.y === p2.y;\n}\n\n// check if two segments intersect\nfunction intersects(p1, q1, p2, q2) {\n const o1 = sign(area(p1, q1, p2));\n const o2 = sign(area(p1, q1, q2));\n const o3 = sign(area(p2, q2, p1));\n const o4 = sign(area(p2, q2, q1));\n\n if (o1 !== o2 && o3 !== o4) return true; // general case\n\n if (o1 === 0 && onSegment(p1, p2, q1)) return true; // p1, q1 and p2 are collinear and p2 lies on p1q1\n if (o2 === 0 && onSegment(p1, q2, q1)) return true; // p1, q1 and q2 are collinear and q2 lies on p1q1\n if (o3 === 0 && onSegment(p2, p1, q2)) return true; // p2, q2 and p1 are collinear and p1 lies on p2q2\n if (o4 === 0 && onSegment(p2, q1, q2)) return true; // p2, q2 and q1 are collinear and q1 lies on p2q2\n\n return false;\n}\n\n// for collinear points p, q, r, check if point q lies on segment pr\nfunction onSegment(p, q, r) {\n return q.x <= Math.max(p.x, r.x) && q.x >= Math.min(p.x, r.x) && q.y <= Math.max(p.y, r.y) && q.y >= Math.min(p.y, r.y);\n}\n\nfunction sign(num) {\n return num > 0 ? 1 : num < 0 ? -1 : 0;\n}\n\n// check if a polygon diagonal intersects any polygon segments\nfunction intersectsPolygon(a, b) {\n let p = a;\n do {\n if (p.i !== a.i && p.next.i !== a.i && p.i !== b.i && p.next.i !== b.i &&\n intersects(p, p.next, a, b)) return true;\n p = p.next;\n } while (p !== a);\n\n return false;\n}\n\n// check if a polygon diagonal is locally inside the polygon\nfunction locallyInside(a, b) {\n return area(a.prev, a, a.next) < 0 ?\n area(a, b, a.next) >= 0 && area(a, a.prev, b) >= 0 :\n area(a, b, a.prev) < 0 || area(a, a.next, b) < 0;\n}\n\n// check if the middle point of a polygon diagonal is inside the polygon\nfunction middleInside(a, b) {\n let p = a;\n let inside = false;\n const px = (a.x + b.x) / 2;\n const py = (a.y + b.y) / 2;\n do {\n if (((p.y > py) !== (p.next.y > py)) && p.next.y !== p.y &&\n (px < (p.next.x - p.x) * (py - p.y) / (p.next.y - p.y) + p.x))\n inside = !inside;\n p = p.next;\n } while (p !== a);\n\n return inside;\n}\n\n// link two polygon vertices with a bridge; if the vertices belong to the same ring, it splits polygon into two;\n// if one belongs to the outer ring and another to a hole, it merges it into a single ring\nfunction splitPolygon(a, b) {\n const a2 = createNode(a.i, a.x, a.y),\n b2 = createNode(b.i, b.x, b.y),\n an = a.next,\n bp = b.prev;\n\n a.next = b;\n b.prev = a;\n\n a2.next = an;\n an.prev = a2;\n\n b2.next = a2;\n a2.prev = b2;\n\n bp.next = b2;\n b2.prev = bp;\n\n return b2;\n}\n\n// create a node and optionally link it with previous one (in a circular doubly linked list)\nfunction insertNode(i, x, y, last) {\n const p = createNode(i, x, y);\n\n if (!last) {\n p.prev = p;\n p.next = p;\n\n } else {\n p.next = last.next;\n p.prev = last;\n last.next.prev = p;\n last.next = p;\n }\n return p;\n}\n\nfunction removeNode(p) {\n p.next.prev = p.prev;\n p.prev.next = p.next;\n\n if (p.prevZ) p.prevZ.nextZ = p.nextZ;\n if (p.nextZ) p.nextZ.prevZ = p.prevZ;\n}\n\nfunction createNode(i, x, y) {\n return {\n i, // vertex index in coordinates array\n x, y, // vertex coordinates\n prev: null, // previous and next vertex nodes in a polygon ring\n next: null,\n z: 0, // z-order curve value\n prevZ: null, // previous and next nodes in z-order\n nextZ: null,\n steiner: false // indicates whether this is a steiner point\n };\n}\n\n// return a percentage difference between the polygon area and its triangulation area;\n// used to verify correctness of triangulation\nexport function deviation(data, holeIndices, dim, triangles) {\n const hasHoles = holeIndices && holeIndices.length;\n const outerLen = hasHoles ? holeIndices[0] * dim : data.length;\n\n let polygonArea = Math.abs(signedArea(data, 0, outerLen, dim));\n if (hasHoles) {\n for (let i = 0, len = holeIndices.length; i < len; i++) {\n const start = holeIndices[i] * dim;\n const end = i < len - 1 ? holeIndices[i + 1] * dim : data.length;\n polygonArea -= Math.abs(signedArea(data, start, end, dim));\n }\n }\n\n let trianglesArea = 0;\n for (let i = 0; i < triangles.length; i += 3) {\n const a = triangles[i] * dim;\n const b = triangles[i + 1] * dim;\n const c = triangles[i + 2] * dim;\n trianglesArea += Math.abs(\n (data[a] - data[c]) * (data[b + 1] - data[a + 1]) -\n (data[a] - data[b]) * (data[c + 1] - data[a + 1]));\n }\n\n return polygonArea === 0 && trianglesArea === 0 ? 0 :\n Math.abs((trianglesArea - polygonArea) / polygonArea);\n}\n\nfunction signedArea(data, start, end, dim) {\n let sum = 0;\n for (let i = start, j = end - dim; i < end; i += dim) {\n sum += (data[j] - data[i]) * (data[i + 1] + data[j + 1]);\n j = i;\n }\n return sum;\n}\n\n// turn a polygon in a multi-dimensional array form (e.g. as in GeoJSON) into a form Earcut accepts\nexport function flatten(data) {\n const vertices = [];\n const holes = [];\n const dimensions = data[0][0].length;\n let holeIndex = 0;\n let prevLen = 0;\n\n for (const ring of data) {\n for (const p of ring) {\n for (let d = 0; d < dimensions; d++) vertices.push(p[d]);\n }\n if (prevLen) {\n holeIndex += prevLen;\n holes.push(holeIndex);\n }\n prevLen = ring.length;\n }\n return {vertices, holes, dimensions};\n}\n","// code copy from https://github.com/mrdoob/three.js/blob/dev/src/math/Quaternion.js\r\n\r\n// import { clamp } from './MathUtils.js';\r\n\r\nclass Quaternion {\r\n\r\n constructor(x = 0, y = 0, z = 0, w = 1) {\r\n\r\n this.isQuaternion = true;\r\n\r\n this._x = x;\r\n this._y = y;\r\n this._z = z;\r\n this._w = w;\r\n\r\n }\r\n\r\n static slerpFlat(dst, dstOffset, src0, srcOffset0, src1, srcOffset1, t) {\r\n\r\n // fuzz-free, array-based Quaternion SLERP operation\r\n\r\n let x0 = src0[srcOffset0 + 0],\r\n y0 = src0[srcOffset0 + 1],\r\n z0 = src0[srcOffset0 + 2],\r\n w0 = src0[srcOffset0 + 3];\r\n\r\n const x1 = src1[srcOffset1 + 0],\r\n y1 = src1[srcOffset1 + 1],\r\n z1 = src1[srcOffset1 + 2],\r\n w1 = src1[srcOffset1 + 3];\r\n\r\n if (t === 0) {\r\n\r\n dst[dstOffset + 0] = x0;\r\n dst[dstOffset + 1] = y0;\r\n dst[dstOffset + 2] = z0;\r\n dst[dstOffset + 3] = w0;\r\n return;\r\n\r\n }\r\n\r\n if (t === 1) {\r\n\r\n dst[dstOffset + 0] = x1;\r\n dst[dstOffset + 1] = y1;\r\n dst[dstOffset + 2] = z1;\r\n dst[dstOffset + 3] = w1;\r\n return;\r\n\r\n }\r\n\r\n if (w0 !== w1 || x0 !== x1 || y0 !== y1 || z0 !== z1) {\r\n\r\n let s = 1 - t;\r\n const cos = x0 * x1 + y0 * y1 + z0 * z1 + w0 * w1,\r\n dir = (cos >= 0 ? 1 : -1),\r\n sqrSin = 1 - cos * cos;\r\n\r\n // Skip the Slerp for tiny steps to avoid numeric problems:\r\n if (sqrSin > Number.EPSILON) {\r\n\r\n const sin = Math.sqrt(sqrSin),\r\n len = Math.atan2(sin, cos * dir);\r\n\r\n s = Math.sin(s * len) / sin;\r\n t = Math.sin(t * len) / sin;\r\n\r\n }\r\n\r\n const tDir = t * dir;\r\n\r\n x0 = x0 * s + x1 * tDir;\r\n y0 = y0 * s + y1 * tDir;\r\n z0 = z0 * s + z1 * tDir;\r\n w0 = w0 * s + w1 * tDir;\r\n\r\n // Normalize in case we just did a lerp:\r\n if (s === 1 - t) {\r\n\r\n const f = 1 / Math.sqrt(x0 * x0 + y0 * y0 + z0 * z0 + w0 * w0);\r\n\r\n x0 *= f;\r\n y0 *= f;\r\n z0 *= f;\r\n w0 *= f;\r\n\r\n }\r\n\r\n }\r\n\r\n dst[dstOffset] = x0;\r\n dst[dstOffset + 1] = y0;\r\n dst[dstOffset + 2] = z0;\r\n dst[dstOffset + 3] = w0;\r\n\r\n }\r\n\r\n static multiplyQuaternionsFlat(dst, dstOffset, src0, srcOffset0, src1, srcOffset1) {\r\n\r\n const x0 = src0[srcOffset0];\r\n const y0 = src0[srcOffset0 + 1];\r\n const z0 = src0[srcOffset0 + 2];\r\n const w0 = src0[srcOffset0 + 3];\r\n\r\n const x1 = src1[srcOffset1];\r\n const y1 = src1[srcOffset1 + 1];\r\n const z1 = src1[srcOffset1 + 2];\r\n const w1 = src1[srcOffset1 + 3];\r\n\r\n dst[dstOffset] = x0 * w1 + w0 * x1 + y0 * z1 - z0 * y1;\r\n dst[dstOffset + 1] = y0 * w1 + w0 * y1 + z0 * x1 - x0 * z1;\r\n dst[dstOffset + 2] = z0 * w1 + w0 * z1 + x0 * y1 - y0 * x1;\r\n dst[dstOffset + 3] = w0 * w1 - x0 * x1 - y0 * y1 - z0 * z1;\r\n\r\n return dst;\r\n\r\n }\r\n\r\n get x() {\r\n\r\n return this._x;\r\n\r\n }\r\n\r\n set x(value) {\r\n\r\n this._x = value;\r\n this._onChangeCallback();\r\n\r\n }\r\n\r\n get y() {\r\n\r\n return this._y;\r\n\r\n }\r\n\r\n set y(value) {\r\n\r\n this._y = value;\r\n this._onChangeCallback();\r\n\r\n }\r\n\r\n get z() {\r\n\r\n return this._z;\r\n\r\n }\r\n\r\n set z(value) {\r\n\r\n this._z = value;\r\n this._onChangeCallback();\r\n\r\n }\r\n\r\n get w() {\r\n\r\n return this._w;\r\n\r\n }\r\n\r\n set w(value) {\r\n\r\n this._w = value;\r\n this._onChangeCallback();\r\n\r\n }\r\n\r\n set(x, y, z, w) {\r\n\r\n this._x = x;\r\n this._y = y;\r\n this._z = z;\r\n this._w = w;\r\n\r\n this._onChangeCallback();\r\n\r\n return this;\r\n\r\n }\r\n\r\n clone() {\r\n\r\n return new this.constructor(this._x, this._y, this._z, this._w);\r\n\r\n }\r\n\r\n copy(quaternion) {\r\n\r\n this._x = quaternion.x;\r\n this._y = quaternion.y;\r\n this._z = quaternion.z;\r\n this._w = quaternion.w;\r\n\r\n this._onChangeCallback();\r\n\r\n return this;\r\n\r\n }\r\n\r\n setFromEuler(euler, update = true) {\r\n\r\n const x = euler._x, y = euler._y, z = euler._z, order = euler._order;\r\n\r\n // http://www.mathworks.com/matlabcentral/fileexchange/\r\n // 20696-function-to-convert-between-dcm-euler-angles-quaternions-and-euler-vectors/\r\n // content/SpinCalc.m\r\n\r\n const cos = Math.cos;\r\n const sin = Math.sin;\r\n\r\n const c1 = cos(x / 2);\r\n const c2 = cos(y / 2);\r\n const c3 = cos(z / 2);\r\n\r\n const s1 = sin(x / 2);\r\n const s2 = sin(y / 2);\r\n const s3 = sin(z / 2);\r\n\r\n switch (order) {\r\n\r\n case 'XYZ':\r\n this._x = s1 * c2 * c3 + c1 * s2 * s3;\r\n this._y = c1 * s2 * c3 - s1 * c2 * s3;\r\n this._z = c1 * c2 * s3 + s1 * s2 * c3;\r\n this._w = c1 * c2 * c3 - s1 * s2 * s3;\r\n break;\r\n\r\n case 'YXZ':\r\n this._x = s1 * c2 * c3 + c1 * s2 * s3;\r\n this._y = c1 * s2 * c3 - s1 * c2 * s3;\r\n this._z = c1 * c2 * s3 - s1 * s2 * c3;\r\n this._w = c1 * c2 * c3 + s1 * s2 * s3;\r\n break;\r\n\r\n case 'ZXY':\r\n this._x = s1 * c2 * c3 - c1 * s2 * s3;\r\n this._y = c1 * s2 * c3 + s1 * c2 * s3;\r\n this._z = c1 * c2 * s3 + s1 * s2 * c3;\r\n this._w = c1 * c2 * c3 - s1 * s2 * s3;\r\n break;\r\n\r\n case 'ZYX':\r\n this._x = s1 * c2 * c3 - c1 * s2 * s3;\r\n this._y = c1 * s2 * c3 + s1 * c2 * s3;\r\n this._z = c1 * c2 * s3 - s1 * s2 * c3;\r\n this._w = c1 * c2 * c3 + s1 * s2 * s3;\r\n break;\r\n\r\n case 'YZX':\r\n this._x = s1 * c2 * c3 + c1 * s2 * s3;\r\n this._y = c1 * s2 * c3 + s1 * c2 * s3;\r\n this._z = c1 * c2 * s3 - s1 * s2 * c3;\r\n this._w = c1 * c2 * c3 - s1 * s2 * s3;\r\n break;\r\n\r\n case 'XZY':\r\n this._x = s1 * c2 * c3 - c1 * s2 * s3;\r\n this._y = c1 * s2 * c3 - s1 * c2 * s3;\r\n this._z = c1 * c2 * s3 + s1 * s2 * c3;\r\n this._w = c1 * c2 * c3 + s1 * s2 * s3;\r\n break;\r\n\r\n default:\r\n console.warn('THREE.Quaternion: .setFromEuler() encountered an unknown order: ' + order);\r\n\r\n }\r\n\r\n if (update === true) this._onChangeCallback();\r\n\r\n return this;\r\n\r\n }\r\n\r\n setFromAxisAngle(axis, angle) {\r\n\r\n // http://www.euclideanspace.com/maths/geometry/rotations/conversions/angleToQuaternion/index.htm\r\n\r\n // assumes axis is normalized\r\n\r\n const halfAngle = angle / 2, s = Math.sin(halfAngle);\r\n\r\n this._x = axis.x * s;\r\n this._y = axis.y * s;\r\n this._z = axis.z * s;\r\n this._w = Math.cos(halfAngle);\r\n\r\n this._onChangeCallback();\r\n\r\n return this;\r\n\r\n }\r\n\r\n setFromRotationMatrix(m) {\r\n\r\n // http://www.euclideanspace.com/maths/geometry/rotations/conversions/matrixToQuaternion/index.htm\r\n\r\n // assumes the upper 3x3 of m is a pure rotation matrix (i.e, unscaled)\r\n\r\n const te = m.elements,\r\n\r\n m11 = te[0], m12 = te[4], m13 = te[8],\r\n m21 = te[1], m22 = te[5], m23 = te[9],\r\n m31 = te[2], m32 = te[6], m33 = te[10],\r\n\r\n trace = m11 + m22 + m33;\r\n\r\n if (trace > 0) {\r\n\r\n const s = 0.5 / Math.sqrt(trace + 1.0);\r\n\r\n this._w = 0.25 / s;\r\n this._x = (m32 - m23) * s;\r\n this._y = (m13 - m31) * s;\r\n this._z = (m21 - m12) * s;\r\n\r\n } else if (m11 > m22 && m11 > m33) {\r\n\r\n const s = 2.0 * Math.sqrt(1.0 + m11 - m22 - m33);\r\n\r\n this._w = (m32 - m23) / s;\r\n this._x = 0.25 * s;\r\n this._y = (m12 + m21) / s;\r\n this._z = (m13 + m31) / s;\r\n\r\n } else if (m22 > m33) {\r\n\r\n const s = 2.0 * Math.sqrt(1.0 + m22 - m11 - m33);\r\n\r\n this._w = (m13 - m31) / s;\r\n this._x = (m12 + m21) / s;\r\n this._y = 0.25 * s;\r\n this._z = (m23 + m32) / s;\r\n\r\n } else {\r\n\r\n const s = 2.0 * Math.sqrt(1.0 + m33 - m11 - m22);\r\n\r\n this._w = (m21 - m12) / s;\r\n this._x = (m13 + m31) / s;\r\n this._y = (m23 + m32) / s;\r\n this._z = 0.25 * s;\r\n\r\n }\r\n\r\n this._onChangeCallback();\r\n\r\n return this;\r\n\r\n }\r\n\r\n setFromUnitVectors(vFrom, vTo) {\r\n\r\n // assumes direction vectors vFrom and vTo are normalized\r\n\r\n let r = vFrom.dot(vTo) + 1;\r\n\r\n if (r < Number.EPSILON) {\r\n\r\n // vFrom and vTo point in opposite directions\r\n\r\n r = 0;\r\n\r\n if (Math.abs(vFrom.x) > Math.abs(vFrom.z)) {\r\n\r\n this._x = -vFrom.y;\r\n this._y = vFrom.x;\r\n this._z = 0;\r\n this._w = r;\r\n\r\n } else {\r\n\r\n this._x = 0;\r\n this._y = -vFrom.z;\r\n this._z = vFrom.y;\r\n this._w = r;\r\n\r\n }\r\n\r\n } else {\r\n\r\n // crossVectors( vFrom, vTo ); // inlined to avoid cyclic dependency on Vector3\r\n\r\n this._x = vFrom.y * vTo.z - vFrom.z * vTo.y;\r\n this._y = vFrom.z * vTo.x - vFrom.x * vTo.z;\r\n this._z = vFrom.x * vTo.y - vFrom.y * vTo.x;\r\n this._w = r;\r\n\r\n }\r\n\r\n return this.normalize();\r\n\r\n }\r\n\r\n // angleTo(q) {\r\n\r\n // return 2 * Math.acos(Math.abs(clamp(this.dot(q), -1, 1)));\r\n\r\n // }\r\n\r\n rotateTowards(q, step) {\r\n\r\n const angle = this.angleTo(q);\r\n\r\n if (angle === 0) return this;\r\n\r\n const t = Math.min(1, step / angle);\r\n\r\n this.slerp(q, t);\r\n\r\n return this;\r\n\r\n }\r\n\r\n identity() {\r\n\r\n return this.set(0, 0, 0, 1);\r\n\r\n }\r\n\r\n invert() {\r\n\r\n // quaternion is assumed to have unit length\r\n\r\n return this.conjugate();\r\n\r\n }\r\n\r\n conjugate() {\r\n\r\n this._x *= -1;\r\n this._y *= -1;\r\n this._z *= -1;\r\n\r\n this._onChangeCallback();\r\n\r\n return this;\r\n\r\n }\r\n\r\n dot(v) {\r\n\r\n return this._x * v._x + this._y * v._y + this._z * v._z + this._w * v._w;\r\n\r\n }\r\n\r\n lengthSq() {\r\n\r\n return this._x * this._x + this._y * this._y + this._z * this._z + this._w * this._w;\r\n\r\n }\r\n\r\n length() {\r\n\r\n return Math.sqrt(this._x * this._x + this._y * this._y + this._z * this._z + this._w * this._w);\r\n\r\n }\r\n\r\n normalize() {\r\n\r\n let l = this.length();\r\n\r\n if (l === 0) {\r\n\r\n this._x = 0;\r\n this._y = 0;\r\n this._z = 0;\r\n this._w = 1;\r\n\r\n } else {\r\n\r\n l = 1 / l;\r\n\r\n this._x = this._x * l;\r\n this._y = this._y * l;\r\n this._z = this._z * l;\r\n this._w = this._w * l;\r\n\r\n }\r\n\r\n this._onChangeCallback();\r\n\r\n return this;\r\n\r\n }\r\n\r\n multiply(q) {\r\n\r\n return this.multiplyQuaternions(this, q);\r\n\r\n }\r\n\r\n premultiply(q) {\r\n\r\n return this.multiplyQuaternions(q, this);\r\n\r\n }\r\n\r\n multiplyQuaternions(a, b) {\r\n\r\n // from http://www.euclideanspace.com/maths/algebra/realNormedAlgebra/quaternions/code/index.htm\r\n\r\n const qax = a._x, qay = a._y, qaz = a._z, qaw = a._w;\r\n const qbx = b._x, qby = b._y, qbz = b._z, qbw = b._w;\r\n\r\n this._x = qax * qbw + qaw * qbx + qay * qbz - qaz * qby;\r\n this._y = qay * qbw + qaw * qby + qaz * qbx - qax * qbz;\r\n this._z = qaz * qbw + qaw * qbz + qax * qby - qay * qbx;\r\n this._w = qaw * qbw - qax * qbx - qay * qby - qaz * qbz;\r\n\r\n this._onChangeCallback();\r\n\r\n return this;\r\n\r\n }\r\n\r\n slerp(qb, t) {\r\n\r\n if (t === 0) return this;\r\n if (t === 1) return this.copy(qb);\r\n\r\n const x = this._x, y = this._y, z = this._z, w = this._w;\r\n\r\n // http://www.euclideanspace.com/maths/algebra/realNormedAlgebra/quaternions/slerp/\r\n\r\n let cosHalfTheta = w * qb._w + x * qb._x + y * qb._y + z * qb._z;\r\n\r\n if (cosHalfTheta < 0) {\r\n\r\n this._w = -qb._w;\r\n this._x = -qb._x;\r\n this._y = -qb._y;\r\n this._z = -qb._z;\r\n\r\n cosHalfTheta = -cosHalfTheta;\r\n\r\n } else {\r\n\r\n this.copy(qb);\r\n\r\n }\r\n\r\n if (cosHalfTheta >= 1.0) {\r\n\r\n this._w = w;\r\n this._x = x;\r\n this._y = y;\r\n this._z = z;\r\n\r\n return this;\r\n\r\n }\r\n\r\n const sqrSinHalfTheta = 1.0 - cosHalfTheta * cosHalfTheta;\r\n\r\n if (sqrSinHalfTheta <= Number.EPSILON) {\r\n\r\n const s = 1 - t;\r\n this._w = s * w + t * this._w;\r\n this._x = s * x + t * this._x;\r\n this._y = s * y + t * this._y;\r\n this._z = s * z + t * this._z;\r\n\r\n this.normalize(); // normalize calls _onChangeCallback()\r\n\r\n return this;\r\n\r\n }\r\n\r\n const sinHalfTheta = Math.sqrt(sqrSinHalfTheta);\r\n const halfTheta = Math.atan2(sinHalfTheta, cosHalfTheta);\r\n const ratioA = Math.sin((1 - t) * halfTheta) / sinHalfTheta,\r\n ratioB = Math.sin(t * halfTheta) / sinHalfTheta;\r\n\r\n this._w = (w * ratioA + this._w * ratioB);\r\n this._x = (x * ratioA + this._x * ratioB);\r\n this._y = (y * ratioA + this._y * ratioB);\r\n this._z = (z * ratioA + this._z * ratioB);\r\n\r\n this._onChangeCallback();\r\n\r\n return this;\r\n\r\n }\r\n\r\n slerpQuaternions(qa, qb, t) {\r\n\r\n return this.copy(qa).slerp(qb, t);\r\n\r\n }\r\n\r\n random() {\r\n\r\n // sets this quaternion to a uniform random unit quaternnion\r\n\r\n // Ken Shoemake\r\n // Uniform random rotations\r\n // D. Kirk, editor, Graphics Gems III, pages 124-132. Academic Press, New York, 1992.\r\n\r\n const theta1 = 2 * Math.PI * Math.random();\r\n const theta2 = 2 * Math.PI * Math.random();\r\n\r\n const x0 = Math.random();\r\n const r1 = Math.sqrt(1 - x0);\r\n const r2 = Math.sqrt(x0);\r\n\r\n return this.set(\r\n r1 * Math.sin(theta1),\r\n r1 * Math.cos(theta1),\r\n r2 * Math.sin(theta2),\r\n r2 * Math.cos(theta2)\r\n );\r\n\r\n }\r\n\r\n equals(quaternion) {\r\n\r\n return (quaternion._x === this._x) && (quaternion._y === this._y) && (quaternion._z === this._z) && (quaternion._w === this._w);\r\n\r\n }\r\n\r\n fromArray(array, offset = 0) {\r\n\r\n this._x = array[offset];\r\n this._y = array[offset + 1];\r\n this._z = array[offset + 2];\r\n this._w = array[offset + 3];\r\n\r\n this._onChangeCallback();\r\n\r\n return this;\r\n\r\n }\r\n\r\n toArray(array = [], offset = 0) {\r\n\r\n array[offset] = this._x;\r\n array[offset + 1] = this._y;\r\n array[offset + 2] = this._z;\r\n array[offset + 3] = this._w;\r\n\r\n return array;\r\n\r\n }\r\n\r\n fromBufferAttribute(attribute, index) {\r\n\r\n this._x = attribute.getX(index);\r\n this._y = attribute.getY(index);\r\n this._z = attribute.getZ(index);\r\n this._w = attribute.getW(index);\r\n\r\n this._onChangeCallback();\r\n\r\n return this;\r\n\r\n }\r\n\r\n toJSON() {\r\n\r\n return this.toArray();\r\n\r\n }\r\n\r\n _onChange(callback) {\r\n\r\n this._onChangeCallback = callback;\r\n\r\n return this;\r\n\r\n }\r\n\r\n _onChangeCallback() { }\r\n\r\n // * [Symbol.iterator]() {\r\n\r\n // yield this._x;\r\n // yield this._y;\r\n // yield this._z;\r\n // yield this._w;\r\n\r\n // }\r\n\r\n}\r\n\r\nexport { Quaternion };\r\n","// import * as MathUtils from './MathUtils.js';\r\n// code copy from https://github.com/mrdoob/three.js/blob/dev/src/math/Vector3.js\r\n\r\nimport { Quaternion } from './Quaternion';\r\n\r\nconst _quaternion = new Quaternion();\r\n\r\nclass Vector3 {\r\n\r\n constructor(x = 0, y = 0, z = 0) {\r\n this.x = x;\r\n this.y = y;\r\n this.z = z;\r\n\r\n }\r\n\r\n set(x, y, z) {\r\n\r\n if (z === undefined) z = this.z; // sprite.scale.set(x,y)\r\n\r\n this.x = x;\r\n this.y = y;\r\n this.z = z;\r\n\r\n return this;\r\n\r\n }\r\n\r\n // setScalar(scalar) {\r\n\r\n // this.x = scalar;\r\n // this.y = scalar;\r\n // this.z = scalar;\r\n\r\n // return this;\r\n\r\n // }\r\n\r\n // setX(x) {\r\n\r\n // this.x = x;\r\n\r\n // return this;\r\n\r\n // }\r\n\r\n // setY(y) {\r\n\r\n // this.y = y;\r\n\r\n // return this;\r\n\r\n // }\r\n\r\n // setZ(z) {\r\n\r\n // this.z = z;\r\n\r\n // return this;\r\n\r\n // }\r\n\r\n // setComponent(index, value) {\r\n\r\n // switch (index) {\r\n\r\n // case 0: this.x = value; break;\r\n // case 1: this.y = value; break;\r\n // case 2: this.z = value; break;\r\n // default: throw new Error('index is out of range: ' + index);\r\n\r\n // }\r\n\r\n // return this;\r\n\r\n // }\r\n\r\n // getComponent(index) {\r\n\r\n // switch (index) {\r\n\r\n // case 0: return this.x;\r\n // case 1: return this.y;\r\n // case 2: return this.z;\r\n // default: throw new Error('index is out of range: ' + index);\r\n\r\n // }\r\n\r\n // }\r\n\r\n clone() {\r\n\r\n return new this.constructor(this.x, this.y, this.z);\r\n\r\n }\r\n\r\n copy(v) {\r\n\r\n this.x = v.x;\r\n this.y = v.y;\r\n this.z = v.z;\r\n\r\n return this;\r\n\r\n }\r\n\r\n add(v) {\r\n\r\n this.x += v.x;\r\n this.y += v.y;\r\n this.z += v.z;\r\n\r\n return this;\r\n\r\n }\r\n\r\n addScalar(s) {\r\n\r\n this.x += s;\r\n this.y += s;\r\n this.z += s;\r\n\r\n return this;\r\n\r\n }\r\n\r\n addVectors(a, b) {\r\n\r\n this.x = a.x + b.x;\r\n this.y = a.y + b.y;\r\n this.z = a.z + b.z;\r\n\r\n return this;\r\n\r\n }\r\n\r\n addScaledVector(v, s) {\r\n\r\n this.x += v.x * s;\r\n this.y += v.y * s;\r\n this.z += v.z * s;\r\n\r\n return this;\r\n\r\n }\r\n\r\n sub(v) {\r\n\r\n this.x -= v.x;\r\n this.y -= v.y;\r\n this.z -= v.z;\r\n\r\n return this;\r\n\r\n }\r\n\r\n subScalar(s) {\r\n\r\n this.x -= s;\r\n this.y -= s;\r\n this.z -= s;\r\n\r\n return this;\r\n\r\n }\r\n\r\n subVectors(a, b) {\r\n\r\n this.x = a.x - b.x;\r\n this.y = a.y - b.y;\r\n this.z = a.z - b.z;\r\n\r\n return this;\r\n\r\n }\r\n\r\n multiply(v) {\r\n\r\n this.x *= v.x;\r\n this.y *= v.y;\r\n this.z *= v.z;\r\n\r\n return this;\r\n\r\n }\r\n\r\n multiplyScalar(scalar) {\r\n\r\n this.x *= scalar;\r\n this.y *= scalar;\r\n this.z *= scalar;\r\n\r\n return this;\r\n\r\n }\r\n\r\n multiplyVectors(a, b) {\r\n\r\n this.x = a.x * b.x;\r\n this.y = a.y * b.y;\r\n this.z = a.z * b.z;\r\n\r\n return this;\r\n\r\n }\r\n\r\n // applyEuler(euler) {\r\n\r\n // return this.applyQuaternion(_quaternion.setFromEuler(euler));\r\n\r\n // }\r\n\r\n applyAxisAngle(axis, angle) {\r\n\r\n return this.applyQuaternion(_quaternion.setFromAxisAngle(axis, angle));\r\n\r\n }\r\n\r\n // applyMatrix3(m) {\r\n\r\n // const x = this.x, y = this.y, z = this.z;\r\n // const e = m.elements;\r\n\r\n // this.x = e[0] * x + e[3] * y + e[6] * z;\r\n // this.y = e[1] * x + e[4] * y + e[7] * z;\r\n // this.z = e[2] * x + e[5] * y + e[8] * z;\r\n\r\n // return this;\r\n\r\n // }\r\n\r\n // applyNormalMatrix(m) {\r\n\r\n // return this.applyMatrix3(m).normalize();\r\n\r\n // }\r\n\r\n applyMatrix4(m) {\r\n\r\n const x = this.x, y = this.y, z = this.z;\r\n const e = m.elements;\r\n\r\n const w = 1 / (e[3] * x + e[7] * y + e[11] * z + e[15]);\r\n\r\n this.x = (e[0] * x + e[4] * y + e[8] * z + e[12]) * w;\r\n this.y = (e[1] * x + e[5] * y + e[9] * z + e[13]) * w;\r\n this.z = (e[2] * x + e[6] * y + e[10] * z + e[14]) * w;\r\n\r\n return this;\r\n\r\n }\r\n\r\n applyQuaternion(q) {\r\n\r\n const x = this.x, y = this.y, z = this.z;\r\n const qx = q.x, qy = q.y, qz = q.z, qw = q.w;\r\n\r\n // calculate quat * vector\r\n\r\n const ix = qw * x + qy * z - qz * y;\r\n const iy = qw * y + qz * x - qx * z;\r\n const iz = qw * z + qx * y - qy * x;\r\n const iw = -qx * x - qy * y - qz * z;\r\n\r\n // calculate result * inverse quat\r\n\r\n this.x = ix * qw + iw * -qx + iy * -qz - iz * -qy;\r\n this.y = iy * qw + iw * -qy + iz * -qx - ix * -qz;\r\n this.z = iz * qw + iw * -qz + ix * -qy - iy * -qx;\r\n\r\n return this;\r\n\r\n }\r\n\r\n // project(camera) {\r\n\r\n // return this.applyMatrix4(camera.matrixWorldInverse).applyMatrix4(camera.projectionMatrix);\r\n\r\n // }\r\n\r\n // unproject(camera) {\r\n\r\n // return this.applyMatrix4(camera.projectionMatrixInverse).applyMatrix4(camera.matrixWorld);\r\n\r\n // }\r\n\r\n // transformDirection(m) {\r\n\r\n // // input: THREE.Matrix4 affine matrix\r\n // // vector interpreted as a direction\r\n\r\n // const x = this.x, y = this.y, z = this.z;\r\n // const e = m.elements;\r\n\r\n // this.x = e[0] * x + e[4] * y + e[8] * z;\r\n // this.y = e[1] * x + e[5] * y + e[9] * z;\r\n // this.z = e[2] * x + e[6] * y + e[10] * z;\r\n\r\n // return this.normalize();\r\n\r\n // }\r\n\r\n divide(v) {\r\n\r\n this.x /= v.x;\r\n this.y /= v.y;\r\n this.z /= v.z;\r\n\r\n return this;\r\n\r\n }\r\n\r\n divideScalar(scalar) {\r\n\r\n return this.multiplyScalar(1 / scalar);\r\n\r\n }\r\n\r\n min(v) {\r\n\r\n this.x = Math.min(this.x, v.x);\r\n this.y = Math.min(this.y, v.y);\r\n this.z = Math.min(this.z, v.z);\r\n\r\n return this;\r\n\r\n }\r\n\r\n max(v) {\r\n\r\n this.x = Math.max(this.x, v.x);\r\n this.y = Math.max(this.y, v.y);\r\n this.z = Math.max(this.z, v.z);\r\n\r\n return this;\r\n\r\n }\r\n\r\n clamp(min, max) {\r\n\r\n // assumes min < max, componentwise\r\n\r\n this.x = Math.max(min.x, Math.min(max.x, this.x));\r\n this.y = Math.max(min.y, Math.min(max.y, this.y));\r\n this.z = Math.max(min.z, Math.min(max.z, this.z));\r\n\r\n return this;\r\n\r\n }\r\n\r\n clampScalar(minVal, maxVal) {\r\n\r\n this.x = Math.max(minVal, Math.min(maxVal, this.x));\r\n this.y = Math.max(minVal, Math.min(maxVal, this.y));\r\n this.z = Math.max(minVal, Math.min(maxVal, this.z));\r\n\r\n return this;\r\n\r\n }\r\n\r\n clampLength(min, max) {\r\n\r\n const length = this.length();\r\n\r\n return this.divideScalar(length || 1).multiplyScalar(Math.max(min, Math.min(max, length)));\r\n\r\n }\r\n\r\n // floor() {\r\n\r\n // this.x = Math.floor(this.x);\r\n // this.y = Math.floor(this.y);\r\n // this.z = Math.floor(this.z);\r\n\r\n // return this;\r\n\r\n // }\r\n\r\n // ceil() {\r\n\r\n // this.x = Math.ceil(this.x);\r\n // this.y = Math.ceil(this.y);\r\n // this.z = Math.ceil(this.z);\r\n\r\n // return this;\r\n\r\n // }\r\n\r\n // round() {\r\n\r\n // this.x = Math.round(this.x);\r\n // this.y = Math.round(this.y);\r\n // this.z = Math.round(this.z);\r\n\r\n // return this;\r\n\r\n // }\r\n\r\n // roundToZero() {\r\n\r\n // this.x = (this.x < 0) ? Math.ceil(this.x) : Math.floor(this.x);\r\n // this.y = (this.y < 0) ? Math.ceil(this.y) : Math.floor(this.y);\r\n // this.z = (this.z < 0) ? Math.ceil(this.z) : Math.floor(this.z);\r\n\r\n // return this;\r\n\r\n // }\r\n\r\n // negate() {\r\n\r\n // this.x = -this.x;\r\n // this.y = -this.y;\r\n // this.z = -this.z;\r\n\r\n // return this;\r\n\r\n // }\r\n\r\n dot(v) {\r\n\r\n return this.x * v.x + this.y * v.y + this.z * v.z;\r\n\r\n }\r\n\r\n // TODO lengthSquared?\r\n\r\n lengthSq() {\r\n\r\n return this.x * this.x + this.y * this.y + this.z * this.z;\r\n\r\n }\r\n\r\n length() {\r\n\r\n return Math.sqrt(this.x * this.x + this.y * this.y + this.z * this.z);\r\n\r\n }\r\n\r\n // manhattanLength() {\r\n\r\n // return Math.abs(this.x) + Math.abs(this.y) + Math.abs(this.z);\r\n\r\n // }\r\n\r\n normalize() {\r\n\r\n return this.divideScalar(this.length() || 1);\r\n\r\n }\r\n\r\n setLength(length) {\r\n\r\n return this.normalize().multiplyScalar(length);\r\n\r\n }\r\n\r\n lerp(v, alpha) {\r\n\r\n this.x += (v.x - this.x) * alpha;\r\n this.y += (v.y - this.y) * alpha;\r\n this.z += (v.z - this.z) * alpha;\r\n\r\n return this;\r\n\r\n }\r\n\r\n lerpVectors(v1, v2, alpha) {\r\n\r\n this.x = v1.x + (v2.x - v1.x) * alpha;\r\n this.y = v1.y + (v2.y - v1.y) * alpha;\r\n this.z = v1.z + (v2.z - v1.z) * alpha;\r\n\r\n return this;\r\n\r\n }\r\n\r\n cross(v) {\r\n\r\n return this.crossVectors(this, v);\r\n\r\n }\r\n\r\n crossVectors(a, b) {\r\n\r\n const ax = a.x, ay = a.y, az = a.z;\r\n const bx = b.x, by = b.y, bz = b.z;\r\n\r\n this.x = ay * bz - az * by;\r\n this.y = az * bx - ax * bz;\r\n this.z = ax * by - ay * bx;\r\n\r\n return this;\r\n\r\n }\r\n\r\n // projectOnVector(v) {\r\n\r\n // const denominator = v.lengthSq();\r\n\r\n // if (denominator === 0) return this.set(0, 0, 0);\r\n\r\n // const scalar = v.dot(this) / denominator;\r\n\r\n // return this.copy(v).multiplyScalar(scalar);\r\n\r\n // }\r\n\r\n // projectOnPlane(planeNormal) {\r\n\r\n // _vector.copy(this).projectOnVector(planeNormal);\r\n\r\n // return this.sub(_vector);\r\n\r\n // }\r\n\r\n // reflect(normal) {\r\n\r\n // // reflect incident vector off plane orthogonal to normal\r\n // // normal is assumed to have unit length\r\n\r\n // return this.sub(_vector.copy(normal).multiplyScalar(2 * this.dot(normal)));\r\n\r\n // }\r\n\r\n // angleTo(v) {\r\n\r\n // const denominator = Math.sqrt(this.lengthSq() * v.lengthSq());\r\n\r\n // if (denominator === 0) return Math.PI / 2;\r\n\r\n // const theta = this.dot(v) / denominator;\r\n\r\n // // clamp, to handle numerical problems\r\n\r\n // return Math.acos(MathUtils.clamp(theta, -1, 1));\r\n\r\n // }\r\n\r\n distanceTo(v) {\r\n\r\n return Math.sqrt(this.distanceToSquared(v));\r\n\r\n }\r\n\r\n // distanceToSquared(v) {\r\n\r\n // const dx = this.x - v.x, dy = this.y - v.y, dz = this.z - v.z;\r\n\r\n // return dx * dx + dy * dy + dz * dz;\r\n\r\n // }\r\n\r\n // manhattanDistanceTo(v) {\r\n\r\n // return Math.abs(this.x - v.x) + Math.abs(this.y - v.y) + Math.abs(this.z - v.z);\r\n\r\n // }\r\n\r\n // setFromSpherical(s) {\r\n\r\n // return this.setFromSphericalCoords(s.radius, s.phi, s.theta);\r\n\r\n // }\r\n\r\n // setFromSphericalCoords(radius, phi, theta) {\r\n\r\n // const sinPhiRadius = Math.sin(phi) * radius;\r\n\r\n // this.x = sinPhiRadius * Math.sin(theta);\r\n // this.y = Math.cos(phi) * radius;\r\n // this.z = sinPhiRadius * Math.cos(theta);\r\n\r\n // return this;\r\n\r\n // }\r\n\r\n // setFromCylindrical(c) {\r\n\r\n // return this.setFromCylindricalCoords(c.radius, c.theta, c.y);\r\n\r\n // }\r\n\r\n // setFromCylindricalCoords(radius, theta, y) {\r\n\r\n // this.x = radius * Math.sin(theta);\r\n // this.y = y;\r\n // this.z = radius * Math.cos(theta);\r\n\r\n // return this;\r\n\r\n // }\r\n\r\n // setFromMatrixPosition(m) {\r\n\r\n // const e = m.elements;\r\n\r\n // this.x = e[12];\r\n // this.y = e[13];\r\n // this.z = e[14];\r\n\r\n // return this;\r\n\r\n // }\r\n\r\n // setFromMatrixScale(m) {\r\n\r\n // const sx = this.setFromMatrixColumn(m, 0).length();\r\n // const sy = this.setFromMatrixColumn(m, 1).length();\r\n // const sz = this.setFromMatrixColumn(m, 2).length();\r\n\r\n // this.x = sx;\r\n // this.y = sy;\r\n // this.z = sz;\r\n\r\n // return this;\r\n\r\n // }\r\n\r\n // setFromMatrixColumn(m, index) {\r\n\r\n // return this.fromArray(m.elements, index * 4);\r\n\r\n // }\r\n\r\n // setFromMatrix3Column(m, index) {\r\n\r\n // return this.fromArray(m.elements, index * 3);\r\n\r\n // }\r\n\r\n // setFromEuler(e) {\r\n\r\n // this.x = e._x;\r\n // this.y = e._y;\r\n // this.z = e._z;\r\n\r\n // return this;\r\n\r\n // }\r\n\r\n // setFromColor(c) {\r\n\r\n // this.x = c.r;\r\n // this.y = c.g;\r\n // this.z = c.b;\r\n\r\n // return this;\r\n\r\n // }\r\n\r\n equals(v) {\r\n\r\n return ((v.x === this.x) && (v.y === this.y) && (v.z === this.z));\r\n\r\n }\r\n\r\n fromArray(array, offset = 0) {\r\n\r\n this.x = array[offset];\r\n this.y = array[offset + 1];\r\n this.z = array[offset + 2];\r\n\r\n return this;\r\n\r\n }\r\n\r\n // toArray(array = [], offset = 0) {\r\n\r\n // array[offset] = this.x;\r\n // array[offset + 1] = this.y;\r\n // array[offset + 2] = this.z;\r\n\r\n // return array;\r\n\r\n // }\r\n\r\n // fromBufferAttribute(attribute, index) {\r\n\r\n // this.x = attribute.getX(index);\r\n // this.y = attribute.getY(index);\r\n // this.z = attribute.getZ(index);\r\n\r\n // return this;\r\n\r\n // }\r\n\r\n random() {\r\n\r\n this.x = Math.random();\r\n this.y = Math.random();\r\n this.z = Math.random();\r\n\r\n return this;\r\n\r\n }\r\n\r\n // randomDirection() {\r\n\r\n // // Derived from https://mathworld.wolfram.com/SpherePointPicking.html\r\n\r\n // const u = (Math.random() - 0.5) * 2;\r\n // const t = Math.random() * Math.PI * 2;\r\n // const f = Math.sqrt(1 - u ** 2);\r\n\r\n // this.x = f * Math.cos(t);\r\n // this.y = f * Math.sin(t);\r\n // this.z = u;\r\n\r\n // return this;\r\n\r\n // }\r\n\r\n}\r\n\r\nexport { Vector3 };\r\n",null,null,null,null,"/* eslint-disable no-tabs */\r\n\r\n// code copy from https://github.com/shawn0326/three.path/blob/master/src/PathPoint.js\r\n\r\nimport { Vector3 } from '../math/Vector3';\r\n\r\n/**\r\n * PathPoint\r\n */\r\nclass PathPoint {\r\n\tconstructor() {\r\n\t\tthis.pos = new Vector3();\r\n\t\tthis.dir = new Vector3();\r\n\t\tthis.right = new Vector3();\r\n\t\tthis.up = new Vector3(); // normal\r\n\t\tthis.dist = 0; // distance from start\r\n\t\tthis.widthScale = 1; // for corner\r\n\t\tthis.sharp = false; // marks as sharp corner\r\n\t}\r\n\r\n\tlerpPathPoints(p1, p2, alpha) {\r\n\t\tthis.pos.lerpVectors(p1.pos, p2.pos, alpha);\r\n\t\tthis.dir.lerpVectors(p1.dir, p2.dir, alpha);\r\n\t\tthis.up.lerpVectors(p1.up, p2.up, alpha);\r\n\t\tthis.right.lerpVectors(p1.right, p2.right, alpha);\r\n\t\tthis.dist = (p2.dist - p1.dist) * alpha + p1.dist;\r\n\t\tthis.widthScale = (p2.widthScale - p1.widthScale) * alpha + p1.widthScale;\r\n\t}\r\n\r\n\tcopy(source) {\r\n\t\tthis.pos.copy(source.pos);\r\n\t\tthis.dir.copy(source.dir);\r\n\t\tthis.up.copy(source.up);\r\n\t\tthis.right.copy(source.right);\r\n\t\tthis.dist = source.dist;\r\n\t\tthis.widthScale = source.widthScale;\r\n\t}\r\n\r\n}\r\n\r\nexport { PathPoint };\r\n","// code copy from https://github.com/mrdoob/three.js/blob/dev/src/math/Matrix4.js\r\n// import { WebGLCoordinateSystem, WebGPUCoordinateSystem } from '../constants.js';\r\n// import { Vector3 } from './Vector3.js';\r\n\r\nclass Matrix4 {\r\n\r\n constructor(n11, n12, n13, n14, n21, n22, n23, n24, n31, n32, n33, n34, n41, n42, n43, n44) {\r\n\r\n this.elements = [\r\n\r\n 1, 0, 0, 0,\r\n 0, 1, 0, 0,\r\n 0, 0, 1, 0,\r\n 0, 0, 0, 1\r\n\r\n ];\r\n\r\n if (n11 !== undefined) {\r\n\r\n this.set(n11, n12, n13, n14, n21, n22, n23, n24, n31, n32, n33, n34, n41, n42, n43, n44);\r\n\r\n }\r\n\r\n }\r\n\r\n set(n11, n12, n13, n14, n21, n22, n23, n24, n31, n32, n33, n34, n41, n42, n43, n44) {\r\n\r\n const te = this.elements;\r\n\r\n te[0] = n11; te[4] = n12; te[8] = n13; te[12] = n14;\r\n te[1] = n21; te[5] = n22; te[9] = n23; te[13] = n24;\r\n te[2] = n31; te[6] = n32; te[10] = n33; te[14] = n34;\r\n te[3] = n41; te[7] = n42; te[11] = n43; te[15] = n44;\r\n\r\n return this;\r\n\r\n }\r\n\r\n // identity() {\r\n\r\n // this.set(\r\n\r\n // 1, 0, 0, 0,\r\n // 0, 1, 0, 0,\r\n // 0, 0, 1, 0,\r\n // 0, 0, 0, 1\r\n\r\n // );\r\n\r\n // return this;\r\n\r\n // }\r\n\r\n // clone() {\r\n\r\n // return new Matrix4().fromArray(this.elements);\r\n\r\n // }\r\n\r\n // copy(m) {\r\n\r\n // const te = this.elements;\r\n // const me = m.elements;\r\n\r\n // te[0] = me[0]; te[1] = me[1]; te[2] = me[2]; te[3] = me[3];\r\n // te[4] = me[4]; te[5] = me[5]; te[6] = me[6]; te[7] = me[7];\r\n // te[8] = me[8]; te[9] = me[9]; te[10] = me[10]; te[11] = me[11];\r\n // te[12] = me[12]; te[13] = me[13]; te[14] = me[14]; te[15] = me[15];\r\n\r\n // return this;\r\n\r\n // }\r\n\r\n // copyPosition(m) {\r\n\r\n // const te = this.elements, me = m.elements;\r\n\r\n // te[12] = me[12];\r\n // te[13] = me[13];\r\n // te[14] = me[14];\r\n\r\n // return this;\r\n\r\n // }\r\n\r\n // setFromMatrix3(m) {\r\n\r\n // const me = m.elements;\r\n\r\n // this.set(\r\n\r\n // me[0], me[3], me[6], 0,\r\n // me[1], me[4], me[7], 0,\r\n // me[2], me[5], me[8], 0,\r\n // 0, 0, 0, 1\r\n\r\n // );\r\n\r\n // return this;\r\n\r\n // }\r\n\r\n // extractBasis(xAxis, yAxis, zAxis) {\r\n\r\n // xAxis.setFromMatrixColumn(this, 0);\r\n // yAxis.setFromMatrixColumn(this, 1);\r\n // zAxis.setFromMatrixColumn(this, 2);\r\n\r\n // return this;\r\n\r\n // }\r\n\r\n // makeBasis(xAxis, yAxis, zAxis) {\r\n\r\n // this.set(\r\n // xAxis.x, yAxis.x, zAxis.x, 0,\r\n // xAxis.y, yAxis.y, zAxis.y, 0,\r\n // xAxis.z, yAxis.z, zAxis.z, 0,\r\n // 0, 0, 0, 1\r\n // );\r\n\r\n // return this;\r\n\r\n // }\r\n\r\n // extractRotation(m) {\r\n\r\n // // this method does not support reflection matrices\r\n\r\n // const te = this.elements;\r\n // const me = m.elements;\r\n\r\n // const scaleX = 1 / _v1.setFromMatrixColumn(m, 0).length();\r\n // const scaleY = 1 / _v1.setFromMatrixColumn(m, 1).length();\r\n // const scaleZ = 1 / _v1.setFromMatrixColumn(m, 2).length();\r\n\r\n // te[0] = me[0] * scaleX;\r\n // te[1] = me[1] * scaleX;\r\n // te[2] = me[2] * scaleX;\r\n // te[3] = 0;\r\n\r\n // te[4] = me[4] * scaleY;\r\n // te[5] = me[5] * scaleY;\r\n // te[6] = me[6] * scaleY;\r\n // te[7] = 0;\r\n\r\n // te[8] = me[8] * scaleZ;\r\n // te[9] = me[9] * scaleZ;\r\n // te[10] = me[10] * scaleZ;\r\n // te[11] = 0;\r\n\r\n // te[12] = 0;\r\n // te[13] = 0;\r\n // te[14] = 0;\r\n // te[15] = 1;\r\n\r\n // return this;\r\n\r\n // }\r\n\r\n // makeRotationFromEuler(euler) {\r\n\r\n // const te = this.elements;\r\n\r\n // const x = euler.x, y = euler.y, z = euler.z;\r\n // const a = Math.cos(x), b = Math.sin(x);\r\n // const c = Math.cos(y), d = Math.sin(y);\r\n // const e = Math.cos(z), f = Math.sin(z);\r\n\r\n // if (euler.order === 'XYZ') {\r\n\r\n // const ae = a * e, af = a * f, be = b * e, bf = b * f;\r\n\r\n // te[0] = c * e;\r\n // te[4] = -c * f;\r\n // te[8] = d;\r\n\r\n // te[1] = af + be * d;\r\n // te[5] = ae - bf * d;\r\n // te[9] = -b * c;\r\n\r\n // te[2] = bf - ae * d;\r\n // te[6] = be + af * d;\r\n // te[10] = a * c;\r\n\r\n // } else if (euler.order === 'YXZ') {\r\n\r\n // const ce = c * e, cf = c * f, de = d * e, df = d * f;\r\n\r\n // te[0] = ce + df * b;\r\n // te[4] = de * b - cf;\r\n // te[8] = a * d;\r\n\r\n // te[1] = a * f;\r\n // te[5] = a * e;\r\n // te[9] = -b;\r\n\r\n // te[2] = cf * b - de;\r\n // te[6] = df + ce * b;\r\n // te[10] = a * c;\r\n\r\n // } else if (euler.order === 'ZXY') {\r\n\r\n // const ce = c * e, cf = c * f, de = d * e, df = d * f;\r\n\r\n // te[0] = ce - df * b;\r\n // te[4] = -a * f;\r\n // te[8] = de + cf * b;\r\n\r\n // te[1] = cf + de * b;\r\n // te[5] = a * e;\r\n // te[9] = df - ce * b;\r\n\r\n // te[2] = -a * d;\r\n // te[6] = b;\r\n // te[10] = a * c;\r\n\r\n // } else if (euler.order === 'ZYX') {\r\n\r\n // const ae = a * e, af = a * f, be = b * e, bf = b * f;\r\n\r\n // te[0] = c * e;\r\n // te[4] = be * d - af;\r\n // te[8] = ae * d + bf;\r\n\r\n // te[1] = c * f;\r\n // te[5] = bf * d + ae;\r\n // te[9] = af * d - be;\r\n\r\n // te[2] = -d;\r\n // te[6] = b * c;\r\n // te[10] = a * c;\r\n\r\n // } else if (euler.order === 'YZX') {\r\n\r\n // const ac = a * c, ad = a * d, bc = b * c, bd = b * d;\r\n\r\n // te[0] = c * e;\r\n // te[4] = bd - ac * f;\r\n // te[8] = bc * f + ad;\r\n\r\n // te[1] = f;\r\n // te[5] = a * e;\r\n // te[9] = -b * e;\r\n\r\n // te[2] = -d * e;\r\n // te[6] = ad * f + bc;\r\n // te[10] = ac - bd * f;\r\n\r\n // } else if (euler.order === 'XZY') {\r\n\r\n // const ac = a * c, ad = a * d, bc = b * c, bd = b * d;\r\n\r\n // te[0] = c * e;\r\n // te[4] = -f;\r\n // te[8] = d * e;\r\n\r\n // te[1] = ac * f + bd;\r\n // te[5] = a * e;\r\n // te[9] = ad * f - bc;\r\n\r\n // te[2] = bc * f - ad;\r\n // te[6] = b * e;\r\n // te[10] = bd * f + ac;\r\n\r\n // }\r\n\r\n // // bottom row\r\n // te[3] = 0;\r\n // te[7] = 0;\r\n // te[11] = 0;\r\n\r\n // // last column\r\n // te[12] = 0;\r\n // te[13] = 0;\r\n // te[14] = 0;\r\n // te[15] = 1;\r\n\r\n // return this;\r\n\r\n // }\r\n\r\n // makeRotationFromQuaternion(q) {\r\n\r\n // return this.compose(_zero, q, _one);\r\n\r\n // }\r\n\r\n // lookAt(eye, target, up) {\r\n\r\n // const te = this.elements;\r\n\r\n // _z.subVectors(eye, target);\r\n\r\n // if (_z.lengthSq() === 0) {\r\n\r\n // // eye and target are in the same position\r\n\r\n // _z.z = 1;\r\n\r\n // }\r\n\r\n // _z.normalize();\r\n // _x.crossVectors(up, _z);\r\n\r\n // if (_x.lengthSq() === 0) {\r\n\r\n // // up and z are parallel\r\n\r\n // if (Math.abs(up.z) === 1) {\r\n\r\n // _z.x += 0.0001;\r\n\r\n // } else {\r\n\r\n // _z.z += 0.0001;\r\n\r\n // }\r\n\r\n // _z.normalize();\r\n // _x.crossVectors(up, _z);\r\n\r\n // }\r\n\r\n // _x.normalize();\r\n // _y.crossVectors(_z, _x);\r\n\r\n // te[0] = _x.x; te[4] = _y.x; te[8] = _z.x;\r\n // te[1] = _x.y; te[5] = _y.y; te[9] = _z.y;\r\n // te[2] = _x.z; te[6] = _y.z; te[10] = _z.z;\r\n\r\n // return this;\r\n\r\n // }\r\n\r\n multiply(m) {\r\n\r\n return this.multiplyMatrices(this, m);\r\n\r\n }\r\n\r\n // premultiply(m) {\r\n\r\n // return this.multiplyMatrices(m, this);\r\n\r\n // }\r\n\r\n // multiplyMatrices(a, b) {\r\n\r\n // const ae = a.elements;\r\n // const be = b.elements;\r\n // const te = this.elements;\r\n\r\n // const a11 = ae[0], a12 = ae[4], a13 = ae[8], a14 = ae[12];\r\n // const a21 = ae[1], a22 = ae[5], a23 = ae[9], a24 = ae[13];\r\n // const a31 = ae[2], a32 = ae[6], a33 = ae[10], a34 = ae[14];\r\n // const a41 = ae[3], a42 = ae[7], a43 = ae[11], a44 = ae[15];\r\n\r\n // const b11 = be[0], b12 = be[4], b13 = be[8], b14 = be[12];\r\n // const b21 = be[1], b22 = be[5], b23 = be[9], b24 = be[13];\r\n // const b31 = be[2], b32 = be[6], b33 = be[10], b34 = be[14];\r\n // const b41 = be[3], b42 = be[7], b43 = be[11], b44 = be[15];\r\n\r\n // te[0] = a11 * b11 + a12 * b21 + a13 * b31 + a14 * b41;\r\n // te[4] = a11 * b12 + a12 * b22 + a13 * b32 + a14 * b42;\r\n // te[8] = a11 * b13 + a12 * b23 + a13 * b33 + a14 * b43;\r\n // te[12] = a11 * b14 + a12 * b24 + a13 * b34 + a14 * b44;\r\n\r\n // te[1] = a21 * b11 + a22 * b21 + a23 * b31 + a24 * b41;\r\n // te[5] = a21 * b12 + a22 * b22 + a23 * b32 + a24 * b42;\r\n // te[9] = a21 * b13 + a22 * b23 + a23 * b33 + a24 * b43;\r\n // te[13] = a21 * b14 + a22 * b24 + a23 * b34 + a24 * b44;\r\n\r\n // te[2] = a31 * b11 + a32 * b21 + a33 * b31 + a34 * b41;\r\n // te[6] = a31 * b12 + a32 * b22 + a33 * b32 + a34 * b42;\r\n // te[10] = a31 * b13 + a32 * b23 + a33 * b33 + a34 * b43;\r\n // te[14] = a31 * b14 + a32 * b24 + a33 * b34 + a34 * b44;\r\n\r\n // te[3] = a41 * b11 + a42 * b21 + a43 * b31 + a44 * b41;\r\n // te[7] = a41 * b12 + a42 * b22 + a43 * b32 + a44 * b42;\r\n // te[11] = a41 * b13 + a42 * b23 + a43 * b33 + a44 * b43;\r\n // te[15] = a41 * b14 + a42 * b24 + a43 * b34 + a44 * b44;\r\n\r\n // return this;\r\n\r\n // }\r\n\r\n // multiplyScalar(s) {\r\n\r\n // const te = this.elements;\r\n\r\n // te[0] *= s; te[4] *= s; te[8] *= s; te[12] *= s;\r\n // te[1] *= s; te[5] *= s; te[9] *= s; te[13] *= s;\r\n // te[2] *= s; te[6] *= s; te[10] *= s; te[14] *= s;\r\n // te[3] *= s; te[7] *= s; te[11] *= s; te[15] *= s;\r\n\r\n // return this;\r\n\r\n // }\r\n\r\n // determinant() {\r\n\r\n // const te = this.elements;\r\n\r\n // const n11 = te[0], n12 = te[4], n13 = te[8], n14 = te[12];\r\n // const n21 = te[1], n22 = te[5], n23 = te[9], n24 = te[13];\r\n // const n31 = te[2], n32 = te[6], n33 = te[10], n34 = te[14];\r\n // const n41 = te[3], n42 = te[7], n43 = te[11], n44 = te[15];\r\n\r\n // //TODO: make this more efficient\r\n // //( based on http://www.euclideanspace.com/maths/algebra/matrix/functions/inverse/fourD/index.htm )\r\n\r\n // return (\r\n // n41 * (\r\n // + n14 * n23 * n32\r\n // - n13 * n24 * n32\r\n // - n14 * n22 * n33\r\n // + n12 * n24 * n33\r\n // + n13 * n22 * n34\r\n // - n12 * n23 * n34\r\n // ) +\r\n // n42 * (\r\n // + n11 * n23 * n34\r\n // - n11 * n24 * n33\r\n // + n14 * n21 * n33\r\n // - n13 * n21 * n34\r\n // + n13 * n24 * n31\r\n // - n14 * n23 * n31\r\n // ) +\r\n // n43 * (\r\n // + n11 * n24 * n32\r\n // - n11 * n22 * n34\r\n // - n14 * n21 * n32\r\n // + n12 * n21 * n34\r\n // + n14 * n22 * n31\r\n // - n12 * n24 * n31\r\n // ) +\r\n // n44 * (\r\n // - n13 * n22 * n31\r\n // - n11 * n23 * n32\r\n // + n11 * n22 * n33\r\n // + n13 * n21 * n32\r\n // - n12 * n21 * n33\r\n // + n12 * n23 * n31\r\n // )\r\n\r\n // );\r\n\r\n // }\r\n\r\n // transpose() {\r\n\r\n // const te = this.elements;\r\n // let tmp;\r\n\r\n // tmp = te[1]; te[1] = te[4]; te[4] = tmp;\r\n // tmp = te[2]; te[2] = te[8]; te[8] = tmp;\r\n // tmp = te[6]; te[6] = te[9]; te[9] = tmp;\r\n\r\n // tmp = te[3]; te[3] = te[12]; te[12] = tmp;\r\n // tmp = te[7]; te[7] = te[13]; te[13] = tmp;\r\n // tmp = te[11]; te[11] = te[14]; te[14] = tmp;\r\n\r\n // return this;\r\n\r\n // }\r\n\r\n // setPosition(x, y, z) {\r\n\r\n // const te = this.elements;\r\n\r\n // if (x.isVector3) {\r\n\r\n // te[12] = x.x;\r\n // te[13] = x.y;\r\n // te[14] = x.z;\r\n\r\n // } else {\r\n\r\n // te[12] = x;\r\n // te[13] = y;\r\n // te[14] = z;\r\n\r\n // }\r\n\r\n // return this;\r\n\r\n // }\r\n\r\n // invert() {\r\n\r\n // // based on http://www.euclideanspace.com/maths/algebra/matrix/functions/inverse/fourD/index.htm\r\n // const te = this.elements,\r\n\r\n // n11 = te[0], n21 = te[1], n31 = te[2], n41 = te[3],\r\n // n12 = te[4], n22 = te[5], n32 = te[6], n42 = te[7],\r\n // n13 = te[8], n23 = te[9], n33 = te[10], n43 = te[11],\r\n // n14 = te[12], n24 = te[13], n34 = te[14], n44 = te[15],\r\n\r\n // t11 = n23 * n34 * n42 - n24 * n33 * n42 + n24 * n32 * n43 - n22 * n34 * n43 - n23 * n32 * n44 + n22 * n33 * n44,\r\n // t12 = n14 * n33 * n42 - n13 * n34 * n42 - n14 * n32 * n43 + n12 * n34 * n43 + n13 * n32 * n44 - n12 * n33 * n44,\r\n // t13 = n13 * n24 * n42 - n14 * n23 * n42 + n14 * n22 * n43 - n12 * n24 * n43 - n13 * n22 * n44 + n12 * n23 * n44,\r\n // t14 = n14 * n23 * n32 - n13 * n24 * n32 - n14 * n22 * n33 + n12 * n24 * n33 + n13 * n22 * n34 - n12 * n23 * n34;\r\n\r\n // const det = n11 * t11 + n21 * t12 + n31 * t13 + n41 * t14;\r\n\r\n // if (det === 0) return this.set(0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0);\r\n\r\n // const detInv = 1 / det;\r\n\r\n // te[0] = t11 * detInv;\r\n // te[1] = (n24 * n33 * n41 - n23 * n34 * n41 - n24 * n31 * n43 + n21 * n34 * n43 + n23 * n31 * n44 - n21 * n33 * n44) * detInv;\r\n // te[2] = (n22 * n34 * n41 - n24 * n32 * n41 + n24 * n31 * n42 - n21 * n34 * n42 - n22 * n31 * n44 + n21 * n32 * n44) * detInv;\r\n // te[3] = (n23 * n32 * n41 - n22 * n33 * n41 - n23 * n31 * n42 + n21 * n33 * n42 + n22 * n31 * n43 - n21 * n32 * n43) * detInv;\r\n\r\n // te[4] = t12 * detInv;\r\n // te[5] = (n13 * n34 * n41 - n14 * n33 * n41 + n14 * n31 * n43 - n11 * n34 * n43 - n13 * n31 * n44 + n11 * n33 * n44) * detInv;\r\n // te[6] = (n14 * n32 * n41 - n12 * n34 * n41 - n14 * n31 * n42 + n11 * n34 * n42 + n12 * n31 * n44 - n11 * n32 * n44) * detInv;\r\n // te[7] = (n12 * n33 * n41 - n13 * n32 * n41 + n13 * n31 * n42 - n11 * n33 * n42 - n12 * n31 * n43 + n11 * n32 * n43) * detInv;\r\n\r\n // te[8] = t13 * detInv;\r\n // te[9] = (n14 * n23 * n41 - n13 * n24 * n41 - n14 * n21 * n43 + n11 * n24 * n43 + n13 * n21 * n44 - n11 * n23 * n44) * detInv;\r\n // te[10] = (n12 * n24 * n41 - n14 * n22 * n41 + n14 * n21 * n42 - n11 * n24 * n42 - n12 * n21 * n44 + n11 * n22 * n44) * detInv;\r\n // te[11] = (n13 * n22 * n41 - n12 * n23 * n41 - n13 * n21 * n42 + n11 * n23 * n42 + n12 * n21 * n43 - n11 * n22 * n43) * detInv;\r\n\r\n // te[12] = t14 * detInv;\r\n // te[13] = (n13 * n24 * n31 - n14 * n23 * n31 + n14 * n21 * n33 - n11 * n24 * n33 - n13 * n21 * n34 + n11 * n23 * n34) * detInv;\r\n // te[14] = (n14 * n22 * n31 - n12 * n24 * n31 - n14 * n21 * n32 + n11 * n24 * n32 + n12 * n21 * n34 - n11 * n22 * n34) * detInv;\r\n // te[15] = (n12 * n23 * n31 - n13 * n22 * n31 + n13 * n21 * n32 - n11 * n23 * n32 - n12 * n21 * n33 + n11 * n22 * n33) * detInv;\r\n\r\n // return this;\r\n\r\n // }\r\n\r\n // scale(v) {\r\n\r\n // const te = this.elements;\r\n // const x = v.x, y = v.y, z = v.z;\r\n\r\n // te[0] *= x; te[4] *= y; te[8] *= z;\r\n // te[1] *= x; te[5] *= y; te[9] *= z;\r\n // te[2] *= x; te[6] *= y; te[10] *= z;\r\n // te[3] *= x; te[7] *= y; te[11] *= z;\r\n\r\n // return this;\r\n\r\n // }\r\n\r\n // getMaxScaleOnAxis() {\r\n\r\n // const te = this.elements;\r\n\r\n // const scaleXSq = te[0] * te[0] + te[1] * te[1] + te[2] * te[2];\r\n // const scaleYSq = te[4] * te[4] + te[5] * te[5] + te[6] * te[6];\r\n // const scaleZSq = te[8] * te[8] + te[9] * te[9] + te[10] * te[10];\r\n\r\n // return Math.sqrt(Math.max(scaleXSq, scaleYSq, scaleZSq));\r\n\r\n // }\r\n\r\n // makeTranslation(x, y, z) {\r\n\r\n // if (x.isVector3) {\r\n\r\n // this.set(\r\n\r\n // 1, 0, 0, x.x,\r\n // 0, 1, 0, x.y,\r\n // 0, 0, 1, x.z,\r\n // 0, 0, 0, 1\r\n\r\n // );\r\n\r\n // } else {\r\n\r\n // this.set(\r\n\r\n // 1, 0, 0, x,\r\n // 0, 1, 0, y,\r\n // 0, 0, 1, z,\r\n // 0, 0, 0, 1\r\n\r\n // );\r\n\r\n // }\r\n\r\n // return this;\r\n\r\n // }\r\n\r\n // makeRotationX(theta) {\r\n\r\n // const c = Math.cos(theta), s = Math.sin(theta);\r\n\r\n // this.set(\r\n\r\n // 1, 0, 0, 0,\r\n // 0, c, -s, 0,\r\n // 0, s, c, 0,\r\n // 0, 0, 0, 1\r\n\r\n // );\r\n\r\n // return this;\r\n\r\n // }\r\n\r\n // makeRotationY(theta) {\r\n\r\n // const c = Math.cos(theta), s = Math.sin(theta);\r\n\r\n // this.set(\r\n\r\n // c, 0, s, 0,\r\n // 0, 1, 0, 0,\r\n // -s, 0, c, 0,\r\n // 0, 0, 0, 1\r\n\r\n // );\r\n\r\n // return this;\r\n\r\n // }\r\n\r\n // makeRotationZ(theta) {\r\n\r\n // const c = Math.cos(theta), s = Math.sin(theta);\r\n\r\n // this.set(\r\n\r\n // c, -s, 0, 0,\r\n // s, c, 0, 0,\r\n // 0, 0, 1, 0,\r\n // 0, 0, 0, 1\r\n\r\n // );\r\n\r\n // return this;\r\n\r\n // }\r\n\r\n makeRotationAxis(axis, angle) {\r\n\r\n // Based on http://www.gamedev.net/reference/articles/article1199.asp\r\n\r\n const c = Math.cos(angle);\r\n const s = Math.sin(angle);\r\n const t = 1 - c;\r\n const x = axis.x, y = axis.y, z = axis.z;\r\n const tx = t * x, ty = t * y;\r\n\r\n this.set(\r\n\r\n tx * x + c, tx * y - s * z, tx * z + s * y, 0,\r\n tx * y + s * z, ty * y + c, ty * z - s * x, 0,\r\n tx * z - s * y, ty * z + s * x, t * z * z + c, 0,\r\n 0, 0, 0, 1\r\n\r\n );\r\n\r\n return this;\r\n\r\n }\r\n\r\n // makeScale(x, y, z) {\r\n\r\n // this.set(\r\n\r\n // x, 0, 0, 0,\r\n // 0, y, 0, 0,\r\n // 0, 0, z, 0,\r\n // 0, 0, 0, 1\r\n\r\n // );\r\n\r\n // return this;\r\n\r\n // }\r\n\r\n // makeShear(xy, xz, yx, yz, zx, zy) {\r\n\r\n // this.set(\r\n\r\n // 1, yx, zx, 0,\r\n // xy, 1, zy, 0,\r\n // xz, yz, 1, 0,\r\n // 0, 0, 0, 1\r\n\r\n // );\r\n\r\n // return this;\r\n\r\n // }\r\n\r\n // compose(position, quaternion, scale) {\r\n\r\n // const te = this.elements;\r\n\r\n // const x = quaternion._x, y = quaternion._y, z = quaternion._z, w = quaternion._w;\r\n // const x2 = x + x, y2 = y + y, z2 = z + z;\r\n // const xx = x * x2, xy = x * y2, xz = x * z2;\r\n // const yy = y * y2, yz = y * z2, zz = z * z2;\r\n // const wx = w * x2, wy = w * y2, wz = w * z2;\r\n\r\n // const sx = scale.x, sy = scale.y, sz = scale.z;\r\n\r\n // te[0] = (1 - (yy + zz)) * sx;\r\n // te[1] = (xy + wz) * sx;\r\n // te[2] = (xz - wy) * sx;\r\n // te[3] = 0;\r\n\r\n // te[4] = (xy - wz) * sy;\r\n // te[5] = (1 - (xx + zz)) * sy;\r\n // te[6] = (yz + wx) * sy;\r\n // te[7] = 0;\r\n\r\n // te[8] = (xz + wy) * sz;\r\n // te[9] = (yz - wx) * sz;\r\n // te[10] = (1 - (xx + yy)) * sz;\r\n // te[11] = 0;\r\n\r\n // te[12] = position.x;\r\n // te[13] = position.y;\r\n // te[14] = position.z;\r\n // te[15] = 1;\r\n\r\n // return this;\r\n\r\n // }\r\n\r\n // decompose(position, quaternion, scale) {\r\n\r\n // const te = this.elements;\r\n\r\n // let sx = _v1.set(te[0], te[1], te[2]).length();\r\n // const sy = _v1.set(te[4], te[5], te[6]).length();\r\n // const sz = _v1.set(te[8], te[9], te[10]).length();\r\n\r\n // // if determine is negative, we need to invert one scale\r\n // const det = this.determinant();\r\n // if (det < 0) sx = -sx;\r\n\r\n // position.x = te[12];\r\n // position.y = te[13];\r\n // position.z = te[14];\r\n\r\n // // scale the rotation part\r\n // _m1.copy(this);\r\n\r\n // const invSX = 1 / sx;\r\n // const invSY = 1 / sy;\r\n // const invSZ = 1 / sz;\r\n\r\n // _m1.elements[0] *= invSX;\r\n // _m1.elements[1] *= invSX;\r\n // _m1.elements[2] *= invSX;\r\n\r\n // _m1.elements[4] *= invSY;\r\n // _m1.elements[5] *= invSY;\r\n // _m1.elements[6] *= invSY;\r\n\r\n // _m1.elements[8] *= invSZ;\r\n // _m1.elements[9] *= invSZ;\r\n // _m1.elements[10] *= invSZ;\r\n\r\n // quaternion.setFromRotationMatrix(_m1);\r\n\r\n // scale.x = sx;\r\n // scale.y = sy;\r\n // scale.z = sz;\r\n\r\n // return this;\r\n\r\n // }\r\n\r\n // makePerspective(left, right, top, bottom, near, far, coordinateSystem = WebGLCoordinateSystem) {\r\n\r\n // const te = this.elements;\r\n // const x = 2 * near / (right - left);\r\n // const y = 2 * near / (top - bottom);\r\n\r\n // const a = (right + left) / (right - left);\r\n // const b = (top + bottom) / (top - bottom);\r\n\r\n // let c, d;\r\n\r\n // if (coordinateSystem === WebGLCoordinateSystem) {\r\n\r\n // c = - (far + near) / (far - near);\r\n // d = (- 2 * far * near) / (far - near);\r\n\r\n // } else if (coordinateSystem === WebGPUCoordinateSystem) {\r\n\r\n // c = - far / (far - near);\r\n // d = (- far * near) / (far - near);\r\n\r\n // } else {\r\n\r\n // throw new Error('THREE.Matrix4.makePerspective(): Invalid coordinate system: ' + coordinateSystem);\r\n\r\n // }\r\n\r\n // te[0] = x; te[4] = 0; te[8] = a; te[12] = 0;\r\n // te[1] = 0; te[5] = y; te[9] = b; te[13] = 0;\r\n // te[2] = 0; te[6] = 0; te[10] = c; te[14] = d;\r\n // te[3] = 0; te[7] = 0; te[11] = - 1; te[15] = 0;\r\n\r\n // return this;\r\n\r\n // }\r\n\r\n // makeOrthographic(left, right, top, bottom, near, far, coordinateSystem = WebGLCoordinateSystem) {\r\n\r\n // const te = this.elements;\r\n // const w = 1.0 / (right - left);\r\n // const h = 1.0 / (top - bottom);\r\n // const p = 1.0 / (far - near);\r\n\r\n // const x = (right + left) * w;\r\n // const y = (top + bottom) * h;\r\n\r\n // let z, zInv;\r\n\r\n // if (coordinateSystem === WebGLCoordinateSystem) {\r\n\r\n // z = (far + near) * p;\r\n // zInv = - 2 * p;\r\n\r\n // } else if (coordinateSystem === WebGPUCoordinateSystem) {\r\n\r\n // z = near * p;\r\n // zInv = - 1 * p;\r\n\r\n // } else {\r\n\r\n // throw new Error('THREE.Matrix4.makeOrthographic(): Invalid coordinate system: ' + coordinateSystem);\r\n\r\n // }\r\n\r\n // te[0] = 2 * w; te[4] = 0; te[8] = 0; te[12] = - x;\r\n // te[1] = 0; te[5] = 2 * h; te[9] = 0; te[13] = - y;\r\n // te[2] = 0; te[6] = 0; te[10] = zInv; te[14] = - z;\r\n // te[3] = 0; te[7] = 0; te[11] = 0; te[15] = 1;\r\n\r\n // return this;\r\n\r\n // }\r\n\r\n equals(matrix) {\r\n\r\n const te = this.elements;\r\n const me = matrix.elements;\r\n\r\n for (let i = 0; i < 16; i++) {\r\n\r\n if (te[i] !== me[i]) return false;\r\n\r\n }\r\n\r\n return true;\r\n\r\n }\r\n\r\n // fromArray(array, offset = 0) {\r\n\r\n // for (let i = 0; i < 16; i++) {\r\n\r\n // this.elements[i] = array[i + offset];\r\n\r\n // }\r\n\r\n // return this;\r\n\r\n // }\r\n\r\n // toArray(array = [], offset = 0) {\r\n\r\n // const te = this.elements;\r\n\r\n // array[offset] = te[0];\r\n // array[offset + 1] = te[1];\r\n // array[offset + 2] = te[2];\r\n // array[offset + 3] = te[3];\r\n\r\n // array[offset + 4] = te[4];\r\n // array[offset + 5] = te[5];\r\n // array[offset + 6] = te[6];\r\n // array[offset + 7] = te[7];\r\n\r\n // array[offset + 8] = te[8];\r\n // array[offset + 9] = te[9];\r\n // array[offset + 10] = te[10];\r\n // array[offset + 11] = te[11];\r\n\r\n // array[offset + 12] = te[12];\r\n // array[offset + 13] = te[13];\r\n // array[offset + 14] = te[14];\r\n // array[offset + 15] = te[15];\r\n\r\n // return array;\r\n\r\n // }\r\n\r\n}\r\n\r\n// const _v1 = new Vector3();\r\n// const _m1 = new Matrix4();\r\n// const _zero = new Vector3(0, 0, 0);\r\n// const _one = new Vector3(1, 1, 1);\r\n// const _x = new Vector3();\r\n// const _y = new Vector3();\r\n// const _z = new Vector3();\r\n\r\nexport { Matrix4 };\r\n","\r\n// code copy from https://github.com/mrdoob/three.js/blob/dev/src/extras/core/Curve.js\r\n// import * as MathUtils from '../../math/MathUtils.js';\r\n// import { Vector2 } from '../../math/Vector2.js';\r\n// import { Vector3 } from '../../math/Vector3.js';\r\n// import { Matrix4 } from '../../math/Matrix4.js';\r\n\r\n/**\r\n * Extensible curve object.\r\n *\r\n * Some common of curve methods:\r\n * .getPoint( t, optionalTarget ), .getTangent( t, optionalTarget )\r\n * .getPointAt( u, optionalTarget ), .getTangentAt( u, optionalTarget )\r\n * .getPoints(), .getSpacedPoints()\r\n * .getLength()\r\n * .updateArcLengths()\r\n *\r\n * This following curves inherit from THREE.Curve:\r\n *\r\n * -- 2D curves --\r\n * THREE.ArcCurve\r\n * THREE.CubicBezierCurve\r\n * THREE.EllipseCurve\r\n * THREE.LineCurve\r\n * THREE.QuadraticBezierCurve\r\n * THREE.SplineCurve\r\n *\r\n * -- 3D curves --\r\n * THREE.CatmullRomCurve3\r\n * THREE.CubicBezierCurve3\r\n * THREE.LineCurve3\r\n * THREE.QuadraticBezierCurve3\r\n *\r\n * A series of curves can be represented as a THREE.CurvePath.\r\n *\r\n **/\r\n\r\nclass Curve {\r\n\r\n constructor() {\r\n\r\n this.type = 'Curve';\r\n\r\n this.arcLengthDivisions = 200;\r\n\r\n }\r\n\r\n // Virtual base class method to overwrite and implement in subclasses\r\n\r\n getPoint() {\r\n\r\n console.warn('THREE.Curve: .getPoint() not implemented.');\r\n return null;\r\n\r\n }\r\n\r\n // Get point at relative position in curve according to arc length\r\n // - u [0 .. 1]\r\n\r\n getPointAt(u, optionalTarget) {\r\n\r\n const t = this.getUtoTmapping(u);\r\n return this.getPoint(t, optionalTarget);\r\n\r\n }\r\n\r\n // Get sequence of points using getPoint( t )\r\n\r\n getPoints(divisions = 5) {\r\n\r\n const points = [];\r\n\r\n for (let d = 0; d <= divisions; d++) {\r\n\r\n points.push(this.getPoint(d / divisions));\r\n\r\n }\r\n\r\n return points;\r\n\r\n }\r\n\r\n // // Get sequence of points using getPointAt( u )\r\n\r\n // getSpacedPoints(divisions = 5) {\r\n\r\n // const points = [];\r\n\r\n // for (let d = 0; d <= divisions; d++) {\r\n\r\n // points.push(this.getPointAt(d / divisions));\r\n\r\n // }\r\n\r\n // return points;\r\n\r\n // }\r\n\r\n // Get total curve arc length\r\n\r\n getLength() {\r\n\r\n const lengths = this.getLengths();\r\n return lengths[lengths.length - 1];\r\n\r\n }\r\n\r\n // Get list of cumulative segment lengths\r\n\r\n getLengths(divisions = this.arcLengthDivisions) {\r\n\r\n if (this.cacheArcLengths &&\r\n (this.cacheArcLengths.length === divisions + 1) &&\r\n !this.needsUpdate) {\r\n\r\n return this.cacheArcLengths;\r\n\r\n }\r\n\r\n this.needsUpdate = false;\r\n\r\n const cache = [];\r\n let current, last = this.getPoint(0);\r\n let sum = 0;\r\n\r\n cache.push(0);\r\n\r\n for (let p = 1; p <= divisions; p++) {\r\n\r\n current = this.getPoint(p / divisions);\r\n sum += current.distanceTo(last);\r\n cache.push(sum);\r\n last = current;\r\n\r\n }\r\n\r\n this.cacheArcLengths = cache;\r\n\r\n return cache; // { sums: cache, sum: sum }; Sum is in the last element.\r\n\r\n }\r\n\r\n // updateArcLengths() {\r\n\r\n // this.needsUpdate = true;\r\n // this.getLengths();\r\n\r\n // }\r\n\r\n // Given u ( 0 .. 1 ), get a t to find p. This gives you points which are equidistant\r\n\r\n getUtoTmapping(u, distance) {\r\n\r\n const arcLengths = this.getLengths();\r\n\r\n let i = 0;\r\n const il = arcLengths.length;\r\n\r\n let targetArcLength; // The targeted u distance value to get\r\n\r\n if (distance) {\r\n\r\n targetArcLength = distance;\r\n\r\n } else {\r\n\r\n targetArcLength = u * arcLengths[il - 1];\r\n\r\n }\r\n\r\n // binary search for the index with largest value smaller than target u distance\r\n\r\n let low = 0, high = il - 1, comparison;\r\n\r\n while (low <= high) {\r\n\r\n i = Math.floor(low + (high - low) / 2); // less likely to overflow, though probably not issue here, JS doesn't really have integers, all numbers are floats\r\n\r\n comparison = arcLengths[i] - targetArcLength;\r\n\r\n if (comparison < 0) {\r\n\r\n low = i + 1;\r\n\r\n } else if (comparison > 0) {\r\n\r\n high = i - 1;\r\n\r\n } else {\r\n\r\n high = i;\r\n break;\r\n\r\n // DONE\r\n\r\n }\r\n\r\n }\r\n\r\n i = high;\r\n\r\n if (arcLengths[i] === targetArcLength) {\r\n\r\n return i / (il - 1);\r\n\r\n }\r\n\r\n // we could get finer grain at lengths, or use simple interpolation between two points\r\n\r\n const lengthBefore = arcLengths[i];\r\n const lengthAfter = arcLengths[i + 1];\r\n\r\n const segmentLength = lengthAfter - lengthBefore;\r\n\r\n // determine where we are between the 'before' and 'after' points\r\n\r\n const segmentFraction = (targetArcLength - lengthBefore) / segmentLength;\r\n\r\n // add that fractional amount to t\r\n\r\n const t = (i + segmentFraction) / (il - 1);\r\n\r\n return t;\r\n\r\n }\r\n\r\n // Returns a unit vector tangent at t\r\n // In case any sub curve does not implement its tangent derivation,\r\n // 2 points a small delta apart will be used to find its gradient\r\n // which seems to give a reasonable approximation\r\n\r\n // getTangent(t, optionalTarget) {\r\n\r\n // const delta = 0.0001;\r\n // let t1 = t - delta;\r\n // let t2 = t + delta;\r\n\r\n // // Capping in case of danger\r\n\r\n // if (t1 < 0) t1 = 0;\r\n // if (t2 > 1) t2 = 1;\r\n\r\n // const pt1 = this.getPoint(t1);\r\n // const pt2 = this.getPoint(t2);\r\n\r\n // const tangent = optionalTarget || ((pt1.isVector2) ? new Vector2() : new Vector3());\r\n\r\n // tangent.copy(pt2).sub(pt1).normalize();\r\n\r\n // return tangent;\r\n\r\n // }\r\n\r\n // getTangentAt(u, optionalTarget) {\r\n\r\n // const t = this.getUtoTmapping(u);\r\n // return this.getTangent(t, optionalTarget);\r\n\r\n // }\r\n\r\n // computeFrenetFrames(segments, closed) {\r\n\r\n // // see http://www.cs.indiana.edu/pub/techreports/TR425.pdf\r\n\r\n // const normal = new Vector3();\r\n\r\n // const tangents = [];\r\n // const normals = [];\r\n // const binormals = [];\r\n\r\n // const vec = new Vector3();\r\n // const mat = new Matrix4();\r\n\r\n // // compute the tangent vectors for each segment on the curve\r\n\r\n // for (let i = 0; i <= segments; i++) {\r\n\r\n // const u = i / segments;\r\n\r\n // tangents[i] = this.getTangentAt(u, new Vector3());\r\n\r\n // }\r\n\r\n // // select an initial normal vector perpendicular to the first tangent vector,\r\n // // and in the direction of the minimum tangent xyz component\r\n\r\n // normals[0] = new Vector3();\r\n // binormals[0] = new Vector3();\r\n // let min = Number.MAX_VALUE;\r\n // const tx = Math.abs(tangents[0].x);\r\n // const ty = Math.abs(tangents[0].y);\r\n // const tz = Math.abs(tangents[0].z);\r\n\r\n // if (tx <= min) {\r\n\r\n // min = tx;\r\n // normal.set(1, 0, 0);\r\n\r\n // }\r\n\r\n // if (ty <= min) {\r\n\r\n // min = ty;\r\n // normal.set(0, 1, 0);\r\n\r\n // }\r\n\r\n // if (tz <= min) {\r\n\r\n // normal.set(0, 0, 1);\r\n\r\n // }\r\n\r\n // vec.crossVectors(tangents[0], normal).normalize();\r\n\r\n // normals[0].crossVectors(tangents[0], vec);\r\n // binormals[0].crossVectors(tangents[0], normals[0]);\r\n\r\n // // compute the slowly-varying normal and binormal vectors for each segment on the curve\r\n\r\n // for (let i = 1; i <= segments; i++) {\r\n\r\n // normals[i] = normals[i - 1].clone();\r\n\r\n // binormals[i] = binormals[i - 1].clone();\r\n\r\n // vec.crossVectors(tangents[i - 1], tangents[i]);\r\n\r\n // if (vec.length() > Number.EPSILON) {\r\n\r\n // vec.normalize();\r\n\r\n // const theta = Math.acos(MathUtils.clamp(tangents[i - 1].dot(tangents[i]), - 1, 1)); // clamp for floating pt errors\r\n\r\n // normals[i].applyMatrix4(mat.makeRotationAxis(vec, theta));\r\n\r\n // }\r\n\r\n // binormals[i].crossVectors(tangents[i], normals[i]);\r\n\r\n // }\r\n\r\n // // if the curve is closed, postprocess the vectors so the first and last normal vectors are the same\r\n\r\n // if (closed === true) {\r\n\r\n // let theta = Math.acos(MathUtils.clamp(normals[0].dot(normals[segments]), - 1, 1));\r\n // theta /= segments;\r\n\r\n // if (tangents[0].dot(vec.crossVectors(normals[0], normals[segments])) > 0) {\r\n\r\n // theta = - theta;\r\n\r\n // }\r\n\r\n // for (let i = 1; i <= segments; i++) {\r\n\r\n // // twist a little...\r\n // normals[i].applyMatrix4(mat.makeRotationAxis(tangents[i], theta * i));\r\n // binormals[i].crossVectors(tangents[i], normals[i]);\r\n\r\n // }\r\n\r\n // }\r\n\r\n // return {\r\n // tangents: tangents,\r\n // normals: normals,\r\n // binormals: binormals\r\n // };\r\n\r\n // }\r\n\r\n // clone() {\r\n\r\n // return new this.constructor().copy(this);\r\n\r\n // }\r\n\r\n // copy(source) {\r\n\r\n // this.arcLengthDivisions = source.arcLengthDivisions;\r\n\r\n // return this;\r\n\r\n // }\r\n\r\n // toJSON() {\r\n\r\n // const data = {\r\n // metadata: {\r\n // version: 4.6,\r\n // type: 'Curve',\r\n // generator: 'Curve.toJSON'\r\n // }\r\n // };\r\n\r\n // data.arcLengthDivisions = this.arcLengthDivisions;\r\n // data.type = this.type;\r\n\r\n // return data;\r\n\r\n // }\r\n\r\n // fromJSON(json) {\r\n\r\n // this.arcLengthDivisions = json.arcLengthDivisions;\r\n\r\n // return this;\r\n\r\n // }\r\n\r\n}\r\n\r\nexport { Curve };\r\n","/**\r\n * // code copy from https://github.com/mrdoob/three.js/blob/dev/src/extras/core/Interpolations.js\r\n * Bezier Curves formulas obtained from\r\n * https://en.wikipedia.org/wiki/B%C3%A9zier_curve\r\n */\r\n\r\nfunction CatmullRom(t, p0, p1, p2, p3) {\r\n\r\n const v0 = (p2 - p0) * 0.5;\r\n const v1 = (p3 - p1) * 0.5;\r\n const t2 = t * t;\r\n const t3 = t * t2;\r\n return (2 * p1 - 2 * p2 + v0 + v1) * t3 + (-3 * p1 + 3 * p2 - 2 * v0 - v1) * t2 + v0 * t + p1;\r\n\r\n}\r\n\r\n//\r\n\r\nfunction QuadraticBezierP0(t, p) {\r\n\r\n const k = 1 - t;\r\n return k * k * p;\r\n\r\n}\r\n\r\nfunction QuadraticBezierP1(t, p) {\r\n\r\n return 2 * (1 - t) * t * p;\r\n\r\n}\r\n\r\nfunction QuadraticBezierP2(t, p) {\r\n\r\n return t * t * p;\r\n\r\n}\r\n\r\nfunction QuadraticBezier(t, p0, p1, p2) {\r\n\r\n return QuadraticBezierP0(t, p0) + QuadraticBezierP1(t, p1) +\r\n QuadraticBezierP2(t, p2);\r\n\r\n}\r\n\r\n//\r\n\r\nfunction CubicBezierP0(t, p) {\r\n\r\n const k = 1 - t;\r\n return k * k * k * p;\r\n\r\n}\r\n\r\nfunction CubicBezierP1(t, p) {\r\n\r\n const k = 1 - t;\r\n return 3 * k * k * t * p;\r\n\r\n}\r\n\r\nfunction CubicBezierP2(t, p) {\r\n\r\n return 3 * (1 - t) * t * t * p;\r\n\r\n}\r\n\r\nfunction CubicBezierP3(t, p) {\r\n\r\n return t * t * t * p;\r\n\r\n}\r\n\r\nfunction CubicBezier(t, p0, p1, p2, p3) {\r\n\r\n return CubicBezierP0(t, p0) + CubicBezierP1(t, p1) + CubicBezierP2(t, p2) +\r\n CubicBezierP3(t, p3);\r\n\r\n}\r\n\r\nexport { CatmullRom, QuadraticBezier, CubicBezier };\r\n","// code copy from https://github.com/mrdoob/three.js/blob/dev/src/extras/curves/QuadraticBezierCurve3.js\r\nimport { Curve } from './Curve.js';\r\nimport { QuadraticBezier } from './Interpolations.js';\r\nimport { Vector3 } from './Vector3.js';\r\n\r\nclass QuadraticBezierCurve3 extends Curve {\r\n\r\n constructor(v0 = new Vector3(), v1 = new Vector3(), v2 = new Vector3()) {\r\n\r\n super();\r\n\r\n this.isQuadraticBezierCurve3 = true;\r\n\r\n this.type = 'QuadraticBezierCurve3';\r\n\r\n this.v0 = v0;\r\n this.v1 = v1;\r\n this.v2 = v2;\r\n\r\n }\r\n\r\n getPoint(t, optionalTarget = new Vector3()) {\r\n\r\n const point = optionalTarget;\r\n\r\n const v0 = this.v0, v1 = this.v1, v2 = this.v2;\r\n\r\n point.set(\r\n QuadraticBezier(t, v0.x, v1.x, v2.x),\r\n QuadraticBezier(t, v0.y, v1.y, v2.y),\r\n QuadraticBezier(t, v0.z, v1.z, v2.z)\r\n );\r\n\r\n return point;\r\n\r\n }\r\n\r\n // copy(source) {\r\n\r\n // super.copy(source);\r\n\r\n // this.v0.copy(source.v0);\r\n // this.v1.copy(source.v1);\r\n // this.v2.copy(source.v2);\r\n\r\n // return this;\r\n\r\n // }\r\n\r\n // toJSON() {\r\n\r\n // const data = super.toJSON();\r\n\r\n // data.v0 = this.v0.toArray();\r\n // data.v1 = this.v1.toArray();\r\n // data.v2 = this.v2.toArray();\r\n\r\n // return data;\r\n\r\n // }\r\n\r\n // fromJSON(json) {\r\n\r\n // super.fromJSON(json);\r\n\r\n // this.v0.fromArray(json.v0);\r\n // this.v1.fromArray(json.v1);\r\n // this.v2.fromArray(json.v2);\r\n\r\n // return this;\r\n\r\n // }\r\n\r\n}\r\n\r\nexport { QuadraticBezierCurve3 };\r\n","/* eslint-disable no-tabs */\r\n// code copy from https://github.com/shawn0326/three.path/blob/master/src/PathPointList.js\r\nimport { Matrix4 } from '../math/Matrix4.js';\r\nimport { QuadraticBezierCurve3 } from '../math/QuadraticBezierCurve3.js';\r\nimport { Vector3 } from '../math/Vector3.js';\r\nimport { PathPoint } from './PathPoint.js';\r\n\r\nconst helpVec3_1 = new Vector3();\r\nconst helpVec3_2 = new Vector3();\r\nconst helpVec3_3 = new Vector3();\r\nconst helpMat4 = new Matrix4();\r\nconst helpCurve = new QuadraticBezierCurve3();\r\n\r\nfunction _getCornerBezierCurve(last, current, next, cornerRadius, firstCorner, out) {\r\n\tconst lastDir = helpVec3_1.subVectors(current, last);\r\n\tconst nextDir = helpVec3_2.subVectors(next, current);\r\n\r\n\tconst lastDirLength = lastDir.length();\r\n\tconst nextDirLength = nextDir.length();\r\n\r\n\tlastDir.normalize();\r\n\tnextDir.normalize();\r\n\r\n\t// cornerRadius can not bigger then lineDistance / 2, auto fix this\r\n\tconst v0Dist = Math.min((firstCorner ? lastDirLength / 2 : lastDirLength) * 0.999999, cornerRadius);\r\n\tout.v0.copy(current).sub(lastDir.multiplyScalar(v0Dist));\r\n\r\n\tout.v1.copy(current);\r\n\r\n\tconst v2Dist = Math.min(nextDirLength / 2 * 0.999999, cornerRadius);\r\n\tout.v2.copy(current).add(nextDir.multiplyScalar(v2Dist));\r\n\r\n\treturn out;\r\n}\r\n\r\n/**\r\n * PathPointList\r\n * input points to generate a PathPoint list\r\n */\r\nclass PathPointList {\r\n\r\n\tconstructor() {\r\n\t\tthis.array = []; // path point array\r\n\t\tthis.count = 0;\r\n\t}\r\n\r\n\t/**\r\n\t * Set points\r\n\t * @param {THREE.Vector3[]} points key points array\r\n\t * @param {number} cornerRadius? the corner radius. set 0 to disable round corner. default is 0.1\r\n\t * @param {number} cornerSplit? the corner split. default is 10.\r\n\t * @param {number} up? force up. default is auto up (calculate by tangent).\r\n\t * @param {boolean} close? close path. default is false.\r\n\t */\r\n\tset(points, cornerRadius = 0.1, cornerSplit = 10, up = null, close = false) {\r\n\t\tpoints = points.slice(0);\r\n\r\n\t\tif (points.length < 2) {\r\n\t\t\tconsole.warn('PathPointList: points length less than 2.');\r\n\t\t\tthis.count = 0;\r\n\t\t\treturn;\r\n\t\t}\r\n\r\n\t\t// Auto close\r\n\t\tif (close && !points[0].equals(points[points.length - 1])) {\r\n\t\t\tpoints.push(new Vector3().copy(points[0]));\r\n\t\t}\r\n\r\n\t\t// Generate path point list\r\n\t\tfor (let i = 0, l = points.length; i < l; i++) {\r\n\t\t\tif (i === 0) {\r\n\t\t\t\tthis._start(points[i], points[i + 1], up);\r\n\t\t\t} else if (i === l - 1) {\r\n\t\t\t\tif (close) {\r\n\t\t\t\t\t// Connect end point and start point\r\n\t\t\t\t\tthis._corner(points[i], points[1], cornerRadius, cornerSplit, up);\r\n\r\n\t\t\t\t\t// Fix start point\r\n\t\t\t\t\tconst dist = this.array[0].dist; // should not copy dist\r\n\t\t\t\t\tthis.array[0].copy(this.array[this.count - 1]);\r\n\t\t\t\t\tthis.array[0].dist = dist;\r\n\t\t\t\t} else {\r\n\t\t\t\t\tthis._end(points[i]);\r\n\t\t\t\t}\r\n\t\t\t} else {\r\n\t\t\t\tthis._corner(points[i], points[i + 1], cornerRadius, cornerSplit, up);\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n\r\n\t/**\r\n\t * Get distance of this path\r\n\t * @return {number}\r\n\t */\r\n\tdistance() {\r\n\t\tif (this.count > 0) {\r\n\t\t\treturn this.array[this.count - 1].dist;\r\n\t\t}\r\n\t\treturn 0;\r\n\t}\r\n\r\n\t_getByIndex(index) {\r\n\t\tif (!this.array[index]) {\r\n\t\t\tthis.array[index] = new PathPoint();\r\n\t\t}\r\n\t\treturn this.array[index];\r\n\t}\r\n\r\n\t_start(current, next, up) {\r\n\t\tthis.count = 0;\r\n\r\n\t\tconst point = this._getByIndex(this.count);\r\n\r\n\t\tpoint.pos.copy(current);\r\n\t\tpoint.dir.subVectors(next, current);\r\n\r\n\t\t// init start up dir\r\n\t\tif (up) {\r\n\t\t\tpoint.up.copy(up);\r\n\t\t} else {\r\n\t\t\t// select an initial normal vector perpendicular to the first tangent vector\r\n\t\t\tlet min = Number.MAX_VALUE;\r\n\t\t\tconst tx = Math.abs(point.dir.x);\r\n\t\t\tconst ty = Math.abs(point.dir.y);\r\n\t\t\tconst tz = Math.abs(point.dir.z);\r\n\t\t\tif (tx < min) {\r\n\t\t\t\tmin = tx;\r\n\t\t\t\tpoint.up.set(1, 0, 0);\r\n\t\t\t}\r\n\t\t\tif (ty < min) {\r\n\t\t\t\tmin = ty;\r\n\t\t\t\tpoint.up.set(0, 1, 0);\r\n\t\t\t}\r\n\t\t\tif (tz < min) {\r\n\t\t\t\tpoint.up.set(0, 0, 1);\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\tpoint.right.crossVectors(point.dir, point.up).normalize();\r\n\t\tpoint.up.crossVectors(point.right, point.dir).normalize();\r\n\t\tpoint.dist = 0;\r\n\t\tpoint.widthScale = 1;\r\n\t\tpoint.sharp = false;\r\n\r\n\t\tpoint.dir.normalize();\r\n\r\n\t\tthis.count++;\r\n\t}\r\n\r\n\t_end(current) {\r\n\t\tconst lastPoint = this.array[this.count - 1];\r\n\t\tconst point = this._getByIndex(this.count);\r\n\r\n\t\tpoint.pos.copy(current);\r\n\t\tpoint.dir.subVectors(current, lastPoint.pos);\r\n\t\tconst dist = point.dir.length();\r\n\t\tpoint.dir.normalize();\r\n\r\n\t\tpoint.up.copy(lastPoint.up); // copy last up\r\n\r\n\t\tconst vec = helpVec3_1.crossVectors(lastPoint.dir, point.dir);\r\n\t\tif (vec.length() > Number.EPSILON) {\r\n\t\t\tvec.normalize();\r\n\t\t\tconst theta = Math.acos(Math.min(Math.max(lastPoint.dir.dot(point.dir), -1), 1)); // clamp for floating pt errors\r\n\t\t\tpoint.up.applyMatrix4(helpMat4.makeRotationAxis(vec, theta));\r\n\t\t}\r\n\r\n\t\tpoint.right.crossVectors(point.dir, point.up).normalize();\r\n\r\n\t\tpoint.dist = lastPoint.dist + dist;\r\n\t\tpoint.widthScale = 1;\r\n\t\tpoint.sharp = false;\r\n\r\n\t\tthis.count++;\r\n\t}\r\n\r\n\t_corner(current, next, cornerRadius, cornerSplit, up) {\r\n\t\tif (cornerRadius > 0 && cornerSplit > 0) {\r\n\t\t\tconst lastPoint = this.array[this.count - 1];\r\n\t\t\tconst curve = _getCornerBezierCurve(lastPoint.pos, current, next, cornerRadius, (this.count - 1) === 0, helpCurve);\r\n\t\t\tconst samplerPoints = curve.getPoints(cornerSplit); // TODO optimize\r\n\r\n\t\t\tfor (let f = 0; f < cornerSplit; f++) {\r\n\t\t\t\tthis._sharpCorner(samplerPoints[f], samplerPoints[f + 1], up, f === 0 ? 1 : 0);\r\n\t\t\t}\r\n\r\n\t\t\tif (!samplerPoints[cornerSplit].equals(next)) {\r\n\t\t\t\tthis._sharpCorner(samplerPoints[cornerSplit], next, up, 2);\r\n\t\t\t}\r\n\t\t} else {\r\n\t\t\tthis._sharpCorner(current, next, up, 0, true);\r\n\t\t}\r\n\t}\r\n\r\n\t// dirType: 0 - use middle dir / 1 - use last dir / 2- use next dir\r\n\t_sharpCorner(current, next, up, dirType = 0, sharp = false) {\r\n\t\tconst lastPoint = this.array[this.count - 1];\r\n\t\tconst point = this._getByIndex(this.count);\r\n\r\n\t\tconst lastDir = helpVec3_1.subVectors(current, lastPoint.pos);\r\n\t\tconst nextDir = helpVec3_2.subVectors(next, current);\r\n\r\n\t\tconst lastDirLength = lastDir.length();\r\n\r\n\t\tlastDir.normalize();\r\n\t\tnextDir.normalize();\r\n\r\n\t\tpoint.pos.copy(current);\r\n\r\n\t\tif (dirType === 1) {\r\n\t\t\tpoint.dir.copy(lastDir);\r\n\t\t} else if (dirType === 2) {\r\n\t\t\tpoint.dir.copy(nextDir);\r\n\t\t} else {\r\n\t\t\tpoint.dir.addVectors(lastDir, nextDir);\r\n\t\t\tpoint.dir.normalize();\r\n\t\t}\r\n\r\n\t\tif (up) {\r\n\t\t\tif (point.dir.dot(up) === 1) {\r\n\t\t\t\tpoint.right.crossVectors(nextDir, up).normalize();\r\n\t\t\t} else {\r\n\t\t\t\tpoint.right.crossVectors(point.dir, up).normalize();\r\n\t\t\t}\r\n\r\n\t\t\tpoint.up.crossVectors(point.right, point.dir).normalize();\r\n\t\t} else {\r\n\t\t\tpoint.up.copy(lastPoint.up);\r\n\r\n\t\t\tconst vec = helpVec3_3.crossVectors(lastPoint.dir, point.dir);\r\n\t\t\tif (vec.length() > Number.EPSILON) {\r\n\t\t\t\tvec.normalize();\r\n\t\t\t\tconst theta = Math.acos(Math.min(Math.max(lastPoint.dir.dot(point.dir), -1), 1)); // clamp for floating pt errors\r\n\t\t\t\tpoint.up.applyMatrix4(helpMat4.makeRotationAxis(vec, theta));\r\n\t\t\t}\r\n\r\n\t\t\tpoint.right.crossVectors(point.dir, point.up).normalize();\r\n\t\t}\r\n\r\n\t\tpoint.dist = lastPoint.dist + lastDirLength;\r\n\r\n\t\tconst _cos = lastDir.dot(nextDir);\r\n\t\tpoint.widthScale = Math.min(1 / Math.sqrt((1 + _cos) / 2), 1.415) || 1;\r\n\t\tpoint.sharp = (Math.abs(_cos - 1) > 0.05) && sharp;\r\n\r\n\t\tthis.count++;\r\n\t}\r\n\r\n}\r\n\r\nexport { PathPointList };\r\n",null,null,null,null,"var __defProp = Object.defineProperty;\nvar __getOwnPropDesc = Object.getOwnPropertyDescriptor;\nvar __getOwnPropNames = Object.getOwnPropertyNames;\nvar __hasOwnProp = Object.prototype.hasOwnProperty;\nvar __markAsModule = (target) => __defProp(target, \"__esModule\", { value: true });\nvar __export = (target, all) => {\n for (var name in all)\n __defProp(target, name, { get: all[name], enumerable: true });\n};\nvar __reExport = (target, module2, copyDefault, desc) => {\n if (module2 && typeof module2 === \"object\" || typeof module2 === \"function\") {\n for (let key of __getOwnPropNames(module2))\n if (!__hasOwnProp.call(target, key) && (copyDefault || key !== \"default\"))\n __defProp(target, key, { get: () => module2[key], enumerable: !(desc = __getOwnPropDesc(module2, key)) || desc.enumerable });\n }\n return target;\n};\nvar __toCommonJS = /* @__PURE__ */ ((cache) => {\n return (module2, temp) => {\n return cache && cache.get(module2) || (temp = __reExport(__markAsModule({}), module2, 1), cache && cache.set(module2, temp), temp);\n };\n})(typeof WeakMap !== \"undefined\" ? /* @__PURE__ */ new WeakMap() : 0);\n\n// src/bezier.js\nvar bezier_exports = {};\n__export(bezier_exports, {\n Bezier: () => Bezier\n});\n\n// src/utils.js\nvar { abs, cos, sin, acos, atan2, sqrt, pow } = Math;\nfunction crt(v) {\n return v < 0 ? -pow(-v, 1 / 3) : pow(v, 1 / 3);\n}\nvar pi = Math.PI;\nvar tau = 2 * pi;\nvar quart = pi / 2;\nvar epsilon = 1e-6;\nvar nMax = Number.MAX_SAFE_INTEGER || 9007199254740991;\nvar nMin = Number.MIN_SAFE_INTEGER || -9007199254740991;\nvar ZERO = { x: 0, y: 0, z: 0 };\nvar utils = {\n Tvalues: [\n -0.06405689286260563,\n 0.06405689286260563,\n -0.1911188674736163,\n 0.1911188674736163,\n -0.3150426796961634,\n 0.3150426796961634,\n -0.4337935076260451,\n 0.4337935076260451,\n -0.5454214713888396,\n 0.5454214713888396,\n -0.6480936519369755,\n 0.6480936519369755,\n -0.7401241915785544,\n 0.7401241915785544,\n -0.820001985973903,\n 0.820001985973903,\n -0.8864155270044011,\n 0.8864155270044011,\n -0.9382745520027328,\n 0.9382745520027328,\n -0.9747285559713095,\n 0.9747285559713095,\n -0.9951872199970213,\n 0.9951872199970213\n ],\n Cvalues: [\n 0.12793819534675216,\n 0.12793819534675216,\n 0.1258374563468283,\n 0.1258374563468283,\n 0.12167047292780339,\n 0.12167047292780339,\n 0.1155056680537256,\n 0.1155056680537256,\n 0.10744427011596563,\n 0.10744427011596563,\n 0.09761865210411388,\n 0.09761865210411388,\n 0.08619016153195327,\n 0.08619016153195327,\n 0.0733464814110803,\n 0.0733464814110803,\n 0.05929858491543678,\n 0.05929858491543678,\n 0.04427743881741981,\n 0.04427743881741981,\n 0.028531388628933663,\n 0.028531388628933663,\n 0.0123412297999872,\n 0.0123412297999872\n ],\n arcfn: function(t2, derivativeFn) {\n const d = derivativeFn(t2);\n let l = d.x * d.x + d.y * d.y;\n if (typeof d.z !== \"undefined\") {\n l += d.z * d.z;\n }\n return sqrt(l);\n },\n compute: function(t2, points, _3d) {\n if (t2 === 0) {\n points[0].t = 0;\n return points[0];\n }\n const order = points.length - 1;\n if (t2 === 1) {\n points[order].t = 1;\n return points[order];\n }\n const mt = 1 - t2;\n let p = points;\n if (order === 0) {\n points[0].t = t2;\n return points[0];\n }\n if (order === 1) {\n const ret = {\n x: mt * p[0].x + t2 * p[1].x,\n y: mt * p[0].y + t2 * p[1].y,\n t: t2\n };\n if (_3d) {\n ret.z = mt * p[0].z + t2 * p[1].z;\n }\n return ret;\n }\n if (order < 4) {\n let mt2 = mt * mt, t22 = t2 * t2, a, b, c, d = 0;\n if (order === 2) {\n p = [p[0], p[1], p[2], ZERO];\n a = mt2;\n b = mt * t2 * 2;\n c = t22;\n } else if (order === 3) {\n a = mt2 * mt;\n b = mt2 * t2 * 3;\n c = mt * t22 * 3;\n d = t2 * t22;\n }\n const ret = {\n x: a * p[0].x + b * p[1].x + c * p[2].x + d * p[3].x,\n y: a * p[0].y + b * p[1].y + c * p[2].y + d * p[3].y,\n t: t2\n };\n if (_3d) {\n ret.z = a * p[0].z + b * p[1].z + c * p[2].z + d * p[3].z;\n }\n return ret;\n }\n const dCpts = JSON.parse(JSON.stringify(points));\n while (dCpts.length > 1) {\n for (let i = 0; i < dCpts.length - 1; i++) {\n dCpts[i] = {\n x: dCpts[i].x + (dCpts[i + 1].x - dCpts[i].x) * t2,\n y: dCpts[i].y + (dCpts[i + 1].y - dCpts[i].y) * t2\n };\n if (typeof dCpts[i].z !== \"undefined\") {\n dCpts[i].z = dCpts[i].z + (dCpts[i + 1].z - dCpts[i].z) * t2;\n }\n }\n dCpts.splice(dCpts.length - 1, 1);\n }\n dCpts[0].t = t2;\n return dCpts[0];\n },\n computeWithRatios: function(t2, points, ratios, _3d) {\n const mt = 1 - t2, r = ratios, p = points;\n let f1 = r[0], f2 = r[1], f3 = r[2], f4 = r[3], d;\n f1 *= mt;\n f2 *= t2;\n if (p.length === 2) {\n d = f1 + f2;\n return {\n x: (f1 * p[0].x + f2 * p[1].x) / d,\n y: (f1 * p[0].y + f2 * p[1].y) / d,\n z: !_3d ? false : (f1 * p[0].z + f2 * p[1].z) / d,\n t: t2\n };\n }\n f1 *= mt;\n f2 *= 2 * mt;\n f3 *= t2 * t2;\n if (p.length === 3) {\n d = f1 + f2 + f3;\n return {\n x: (f1 * p[0].x + f2 * p[1].x + f3 * p[2].x) / d,\n y: (f1 * p[0].y + f2 * p[1].y + f3 * p[2].y) / d,\n z: !_3d ? false : (f1 * p[0].z + f2 * p[1].z + f3 * p[2].z) / d,\n t: t2\n };\n }\n f1 *= mt;\n f2 *= 1.5 * mt;\n f3 *= 3 * mt;\n f4 *= t2 * t2 * t2;\n if (p.length === 4) {\n d = f1 + f2 + f3 + f4;\n return {\n x: (f1 * p[0].x + f2 * p[1].x + f3 * p[2].x + f4 * p[3].x) / d,\n y: (f1 * p[0].y + f2 * p[1].y + f3 * p[2].y + f4 * p[3].y) / d,\n z: !_3d ? false : (f1 * p[0].z + f2 * p[1].z + f3 * p[2].z + f4 * p[3].z) / d,\n t: t2\n };\n }\n },\n derive: function(points, _3d) {\n const dpoints = [];\n for (let p = points, d = p.length, c = d - 1; d > 1; d--, c--) {\n const list = [];\n for (let j = 0, dpt; j < c; j++) {\n dpt = {\n x: c * (p[j + 1].x - p[j].x),\n y: c * (p[j + 1].y - p[j].y)\n };\n if (_3d) {\n dpt.z = c * (p[j + 1].z - p[j].z);\n }\n list.push(dpt);\n }\n dpoints.push(list);\n p = list;\n }\n return dpoints;\n },\n between: function(v, m, M) {\n return m <= v && v <= M || utils.approximately(v, m) || utils.approximately(v, M);\n },\n approximately: function(a, b, precision) {\n return abs(a - b) <= (precision || epsilon);\n },\n length: function(derivativeFn) {\n const z = 0.5, len = utils.Tvalues.length;\n let sum = 0;\n for (let i = 0, t2; i < len; i++) {\n t2 = z * utils.Tvalues[i] + z;\n sum += utils.Cvalues[i] * utils.arcfn(t2, derivativeFn);\n }\n return z * sum;\n },\n map: function(v, ds, de, ts, te) {\n const d1 = de - ds, d2 = te - ts, v2 = v - ds, r = v2 / d1;\n return ts + d2 * r;\n },\n lerp: function(r, v1, v2) {\n const ret = {\n x: v1.x + r * (v2.x - v1.x),\n y: v1.y + r * (v2.y - v1.y)\n };\n if (v1.z !== void 0 && v2.z !== void 0) {\n ret.z = v1.z + r * (v2.z - v1.z);\n }\n return ret;\n },\n pointToString: function(p) {\n let s = p.x + \"/\" + p.y;\n if (typeof p.z !== \"undefined\") {\n s += \"/\" + p.z;\n }\n return s;\n },\n pointsToString: function(points) {\n return \"[\" + points.map(utils.pointToString).join(\", \") + \"]\";\n },\n copy: function(obj) {\n return JSON.parse(JSON.stringify(obj));\n },\n angle: function(o, v1, v2) {\n const dx1 = v1.x - o.x, dy1 = v1.y - o.y, dx2 = v2.x - o.x, dy2 = v2.y - o.y, cross = dx1 * dy2 - dy1 * dx2, dot = dx1 * dx2 + dy1 * dy2;\n return atan2(cross, dot);\n },\n round: function(v, d) {\n const s = \"\" + v;\n const pos = s.indexOf(\".\");\n return parseFloat(s.substring(0, pos + 1 + d));\n },\n dist: function(p1, p2) {\n const dx = p1.x - p2.x, dy = p1.y - p2.y;\n return sqrt(dx * dx + dy * dy);\n },\n closest: function(LUT, point) {\n let mdist = pow(2, 63), mpos, d;\n LUT.forEach(function(p, idx) {\n d = utils.dist(point, p);\n if (d < mdist) {\n mdist = d;\n mpos = idx;\n }\n });\n return { mdist, mpos };\n },\n abcratio: function(t2, n) {\n if (n !== 2 && n !== 3) {\n return false;\n }\n if (typeof t2 === \"undefined\") {\n t2 = 0.5;\n } else if (t2 === 0 || t2 === 1) {\n return t2;\n }\n const bottom = pow(t2, n) + pow(1 - t2, n), top = bottom - 1;\n return abs(top / bottom);\n },\n projectionratio: function(t2, n) {\n if (n !== 2 && n !== 3) {\n return false;\n }\n if (typeof t2 === \"undefined\") {\n t2 = 0.5;\n } else if (t2 === 0 || t2 === 1) {\n return t2;\n }\n const top = pow(1 - t2, n), bottom = pow(t2, n) + top;\n return top / bottom;\n },\n lli8: function(x1, y1, x2, y2, x3, y3, x4, y4) {\n const nx = (x1 * y2 - y1 * x2) * (x3 - x4) - (x1 - x2) * (x3 * y4 - y3 * x4), ny = (x1 * y2 - y1 * x2) * (y3 - y4) - (y1 - y2) * (x3 * y4 - y3 * x4), d = (x1 - x2) * (y3 - y4) - (y1 - y2) * (x3 - x4);\n if (d == 0) {\n return false;\n }\n return { x: nx / d, y: ny / d };\n },\n lli4: function(p1, p2, p3, p4) {\n const x1 = p1.x, y1 = p1.y, x2 = p2.x, y2 = p2.y, x3 = p3.x, y3 = p3.y, x4 = p4.x, y4 = p4.y;\n return utils.lli8(x1, y1, x2, y2, x3, y3, x4, y4);\n },\n lli: function(v1, v2) {\n return utils.lli4(v1, v1.c, v2, v2.c);\n },\n makeline: function(p1, p2) {\n return new Bezier(p1.x, p1.y, (p1.x + p2.x) / 2, (p1.y + p2.y) / 2, p2.x, p2.y);\n },\n findbbox: function(sections) {\n let mx = nMax, my = nMax, MX = nMin, MY = nMin;\n sections.forEach(function(s) {\n const bbox = s.bbox();\n if (mx > bbox.x.min)\n mx = bbox.x.min;\n if (my > bbox.y.min)\n my = bbox.y.min;\n if (MX < bbox.x.max)\n MX = bbox.x.max;\n if (MY < bbox.y.max)\n MY = bbox.y.max;\n });\n return {\n x: { min: mx, mid: (mx + MX) / 2, max: MX, size: MX - mx },\n y: { min: my, mid: (my + MY) / 2, max: MY, size: MY - my }\n };\n },\n shapeintersections: function(s1, bbox1, s2, bbox2, curveIntersectionThreshold) {\n if (!utils.bboxoverlap(bbox1, bbox2))\n return [];\n const intersections = [];\n const a1 = [s1.startcap, s1.forward, s1.back, s1.endcap];\n const a2 = [s2.startcap, s2.forward, s2.back, s2.endcap];\n a1.forEach(function(l1) {\n if (l1.virtual)\n return;\n a2.forEach(function(l2) {\n if (l2.virtual)\n return;\n const iss = l1.intersects(l2, curveIntersectionThreshold);\n if (iss.length > 0) {\n iss.c1 = l1;\n iss.c2 = l2;\n iss.s1 = s1;\n iss.s2 = s2;\n intersections.push(iss);\n }\n });\n });\n return intersections;\n },\n makeshape: function(forward, back, curveIntersectionThreshold) {\n const bpl = back.points.length;\n const fpl = forward.points.length;\n const start = utils.makeline(back.points[bpl - 1], forward.points[0]);\n const end = utils.makeline(forward.points[fpl - 1], back.points[0]);\n const shape = {\n startcap: start,\n forward,\n back,\n endcap: end,\n bbox: utils.findbbox([start, forward, back, end])\n };\n shape.intersections = function(s2) {\n return utils.shapeintersections(shape, shape.bbox, s2, s2.bbox, curveIntersectionThreshold);\n };\n return shape;\n },\n getminmax: function(curve, d, list) {\n if (!list)\n return { min: 0, max: 0 };\n let min2 = nMax, max2 = nMin, t2, c;\n if (list.indexOf(0) === -1) {\n list = [0].concat(list);\n }\n if (list.indexOf(1) === -1) {\n list.push(1);\n }\n for (let i = 0, len = list.length; i < len; i++) {\n t2 = list[i];\n c = curve.get(t2);\n if (c[d] < min2) {\n min2 = c[d];\n }\n if (c[d] > max2) {\n max2 = c[d];\n }\n }\n return { min: min2, mid: (min2 + max2) / 2, max: max2, size: max2 - min2 };\n },\n align: function(points, line) {\n const tx = line.p1.x, ty = line.p1.y, a = -atan2(line.p2.y - ty, line.p2.x - tx), d = function(v) {\n return {\n x: (v.x - tx) * cos(a) - (v.y - ty) * sin(a),\n y: (v.x - tx) * sin(a) + (v.y - ty) * cos(a)\n };\n };\n return points.map(d);\n },\n roots: function(points, line) {\n line = line || { p1: { x: 0, y: 0 }, p2: { x: 1, y: 0 } };\n const order = points.length - 1;\n const aligned = utils.align(points, line);\n const reduce = function(t2) {\n return 0 <= t2 && t2 <= 1;\n };\n if (order === 2) {\n const a2 = aligned[0].y, b2 = aligned[1].y, c2 = aligned[2].y, d2 = a2 - 2 * b2 + c2;\n if (d2 !== 0) {\n const m1 = -sqrt(b2 * b2 - a2 * c2), m2 = -a2 + b2, v12 = -(m1 + m2) / d2, v2 = -(-m1 + m2) / d2;\n return [v12, v2].filter(reduce);\n } else if (b2 !== c2 && d2 === 0) {\n return [(2 * b2 - c2) / (2 * b2 - 2 * c2)].filter(reduce);\n }\n return [];\n }\n const pa = aligned[0].y, pb = aligned[1].y, pc = aligned[2].y, pd = aligned[3].y;\n let d = -pa + 3 * pb - 3 * pc + pd, a = 3 * pa - 6 * pb + 3 * pc, b = -3 * pa + 3 * pb, c = pa;\n if (utils.approximately(d, 0)) {\n if (utils.approximately(a, 0)) {\n if (utils.approximately(b, 0)) {\n return [];\n }\n return [-c / b].filter(reduce);\n }\n const q3 = sqrt(b * b - 4 * a * c), a2 = 2 * a;\n return [(q3 - b) / a2, (-b - q3) / a2].filter(reduce);\n }\n a /= d;\n b /= d;\n c /= d;\n const p = (3 * b - a * a) / 3, p3 = p / 3, q = (2 * a * a * a - 9 * a * b + 27 * c) / 27, q2 = q / 2, discriminant = q2 * q2 + p3 * p3 * p3;\n let u1, v1, x1, x2, x3;\n if (discriminant < 0) {\n const mp3 = -p / 3, mp33 = mp3 * mp3 * mp3, r = sqrt(mp33), t2 = -q / (2 * r), cosphi = t2 < -1 ? -1 : t2 > 1 ? 1 : t2, phi = acos(cosphi), crtr = crt(r), t1 = 2 * crtr;\n x1 = t1 * cos(phi / 3) - a / 3;\n x2 = t1 * cos((phi + tau) / 3) - a / 3;\n x3 = t1 * cos((phi + 2 * tau) / 3) - a / 3;\n return [x1, x2, x3].filter(reduce);\n } else if (discriminant === 0) {\n u1 = q2 < 0 ? crt(-q2) : -crt(q2);\n x1 = 2 * u1 - a / 3;\n x2 = -u1 - a / 3;\n return [x1, x2].filter(reduce);\n } else {\n const sd = sqrt(discriminant);\n u1 = crt(-q2 + sd);\n v1 = crt(q2 + sd);\n return [u1 - v1 - a / 3].filter(reduce);\n }\n },\n droots: function(p) {\n if (p.length === 3) {\n const a = p[0], b = p[1], c = p[2], d = a - 2 * b + c;\n if (d !== 0) {\n const m1 = -sqrt(b * b - a * c), m2 = -a + b, v1 = -(m1 + m2) / d, v2 = -(-m1 + m2) / d;\n return [v1, v2];\n } else if (b !== c && d === 0) {\n return [(2 * b - c) / (2 * (b - c))];\n }\n return [];\n }\n if (p.length === 2) {\n const a = p[0], b = p[1];\n if (a !== b) {\n return [a / (a - b)];\n }\n return [];\n }\n return [];\n },\n curvature: function(t2, d1, d2, _3d, kOnly) {\n let num, dnm, adk, dk, k = 0, r = 0;\n const d = utils.compute(t2, d1);\n const dd = utils.compute(t2, d2);\n const qdsum = d.x * d.x + d.y * d.y;\n if (_3d) {\n num = sqrt(pow(d.y * dd.z - dd.y * d.z, 2) + pow(d.z * dd.x - dd.z * d.x, 2) + pow(d.x * dd.y - dd.x * d.y, 2));\n dnm = pow(qdsum + d.z * d.z, 3 / 2);\n } else {\n num = d.x * dd.y - d.y * dd.x;\n dnm = pow(qdsum, 3 / 2);\n }\n if (num === 0 || dnm === 0) {\n return { k: 0, r: 0 };\n }\n k = num / dnm;\n r = dnm / num;\n if (!kOnly) {\n const pk = utils.curvature(t2 - 1e-3, d1, d2, _3d, true).k;\n const nk = utils.curvature(t2 + 1e-3, d1, d2, _3d, true).k;\n dk = (nk - k + (k - pk)) / 2;\n adk = (abs(nk - k) + abs(k - pk)) / 2;\n }\n return { k, r, dk, adk };\n },\n inflections: function(points) {\n if (points.length < 4)\n return [];\n const p = utils.align(points, { p1: points[0], p2: points.slice(-1)[0] }), a = p[2].x * p[1].y, b = p[3].x * p[1].y, c = p[1].x * p[2].y, d = p[3].x * p[2].y, v1 = 18 * (-3 * a + 2 * b + 3 * c - d), v2 = 18 * (3 * a - b - 3 * c), v3 = 18 * (c - a);\n if (utils.approximately(v1, 0)) {\n if (!utils.approximately(v2, 0)) {\n let t2 = -v3 / v2;\n if (0 <= t2 && t2 <= 1)\n return [t2];\n }\n return [];\n }\n const d2 = 2 * v1;\n if (utils.approximately(d2, 0))\n return [];\n const trm = v2 * v2 - 4 * v1 * v3;\n if (trm < 0)\n return [];\n const sq = Math.sqrt(trm);\n return [(sq - v2) / d2, -(v2 + sq) / d2].filter(function(r) {\n return 0 <= r && r <= 1;\n });\n },\n bboxoverlap: function(b1, b2) {\n const dims = [\"x\", \"y\"], len = dims.length;\n for (let i = 0, dim, l, t2, d; i < len; i++) {\n dim = dims[i];\n l = b1[dim].mid;\n t2 = b2[dim].mid;\n d = (b1[dim].size + b2[dim].size) / 2;\n if (abs(l - t2) >= d)\n return false;\n }\n return true;\n },\n expandbox: function(bbox, _bbox) {\n if (_bbox.x.min < bbox.x.min) {\n bbox.x.min = _bbox.x.min;\n }\n if (_bbox.y.min < bbox.y.min) {\n bbox.y.min = _bbox.y.min;\n }\n if (_bbox.z && _bbox.z.min < bbox.z.min) {\n bbox.z.min = _bbox.z.min;\n }\n if (_bbox.x.max > bbox.x.max) {\n bbox.x.max = _bbox.x.max;\n }\n if (_bbox.y.max > bbox.y.max) {\n bbox.y.max = _bbox.y.max;\n }\n if (_bbox.z && _bbox.z.max > bbox.z.max) {\n bbox.z.max = _bbox.z.max;\n }\n bbox.x.mid = (bbox.x.min + bbox.x.max) / 2;\n bbox.y.mid = (bbox.y.min + bbox.y.max) / 2;\n if (bbox.z) {\n bbox.z.mid = (bbox.z.min + bbox.z.max) / 2;\n }\n bbox.x.size = bbox.x.max - bbox.x.min;\n bbox.y.size = bbox.y.max - bbox.y.min;\n if (bbox.z) {\n bbox.z.size = bbox.z.max - bbox.z.min;\n }\n },\n pairiteration: function(c1, c2, curveIntersectionThreshold) {\n const c1b = c1.bbox(), c2b = c2.bbox(), r = 1e5, threshold = curveIntersectionThreshold || 0.5;\n if (c1b.x.size + c1b.y.size < threshold && c2b.x.size + c2b.y.size < threshold) {\n return [\n (r * (c1._t1 + c1._t2) / 2 | 0) / r + \"/\" + (r * (c2._t1 + c2._t2) / 2 | 0) / r\n ];\n }\n let cc1 = c1.split(0.5), cc2 = c2.split(0.5), pairs = [\n { left: cc1.left, right: cc2.left },\n { left: cc1.left, right: cc2.right },\n { left: cc1.right, right: cc2.right },\n { left: cc1.right, right: cc2.left }\n ];\n pairs = pairs.filter(function(pair) {\n return utils.bboxoverlap(pair.left.bbox(), pair.right.bbox());\n });\n let results = [];\n if (pairs.length === 0)\n return results;\n pairs.forEach(function(pair) {\n results = results.concat(utils.pairiteration(pair.left, pair.right, threshold));\n });\n results = results.filter(function(v, i) {\n return results.indexOf(v) === i;\n });\n return results;\n },\n getccenter: function(p1, p2, p3) {\n const dx1 = p2.x - p1.x, dy1 = p2.y - p1.y, dx2 = p3.x - p2.x, dy2 = p3.y - p2.y, dx1p = dx1 * cos(quart) - dy1 * sin(quart), dy1p = dx1 * sin(quart) + dy1 * cos(quart), dx2p = dx2 * cos(quart) - dy2 * sin(quart), dy2p = dx2 * sin(quart) + dy2 * cos(quart), mx1 = (p1.x + p2.x) / 2, my1 = (p1.y + p2.y) / 2, mx2 = (p2.x + p3.x) / 2, my2 = (p2.y + p3.y) / 2, mx1n = mx1 + dx1p, my1n = my1 + dy1p, mx2n = mx2 + dx2p, my2n = my2 + dy2p, arc = utils.lli8(mx1, my1, mx1n, my1n, mx2, my2, mx2n, my2n), r = utils.dist(arc, p1);\n let s = atan2(p1.y - arc.y, p1.x - arc.x), m = atan2(p2.y - arc.y, p2.x - arc.x), e = atan2(p3.y - arc.y, p3.x - arc.x), _;\n if (s < e) {\n if (s > m || m > e) {\n s += tau;\n }\n if (s > e) {\n _ = e;\n e = s;\n s = _;\n }\n } else {\n if (e < m && m < s) {\n _ = e;\n e = s;\n s = _;\n } else {\n e += tau;\n }\n }\n arc.s = s;\n arc.e = e;\n arc.r = r;\n return arc;\n },\n numberSort: function(a, b) {\n return a - b;\n }\n};\n\n// src/poly-bezier.js\nvar PolyBezier = class {\n constructor(curves) {\n this.curves = [];\n this._3d = false;\n if (!!curves) {\n this.curves = curves;\n this._3d = this.curves[0]._3d;\n }\n }\n valueOf() {\n return this.toString();\n }\n toString() {\n return \"[\" + this.curves.map(function(curve) {\n return utils.pointsToString(curve.points);\n }).join(\", \") + \"]\";\n }\n addCurve(curve) {\n this.curves.push(curve);\n this._3d = this._3d || curve._3d;\n }\n length() {\n return this.curves.map(function(v) {\n return v.length();\n }).reduce(function(a, b) {\n return a + b;\n });\n }\n curve(idx) {\n return this.curves[idx];\n }\n bbox() {\n const c = this.curves;\n var bbox = c[0].bbox();\n for (var i = 1; i < c.length; i++) {\n utils.expandbox(bbox, c[i].bbox());\n }\n return bbox;\n }\n offset(d) {\n const offset = [];\n this.curves.forEach(function(v) {\n offset.push(...v.offset(d));\n });\n return new PolyBezier(offset);\n }\n};\n\n// src/bezier.js\nvar { abs: abs2, min, max, cos: cos2, sin: sin2, acos: acos2, sqrt: sqrt2 } = Math;\nvar pi2 = Math.PI;\nvar Bezier = class {\n constructor(coords) {\n let args = coords && coords.forEach ? coords : Array.from(arguments).slice();\n let coordlen = false;\n if (typeof args[0] === \"object\") {\n coordlen = args.length;\n const newargs = [];\n args.forEach(function(point2) {\n [\"x\", \"y\", \"z\"].forEach(function(d) {\n if (typeof point2[d] !== \"undefined\") {\n newargs.push(point2[d]);\n }\n });\n });\n args = newargs;\n }\n let higher = false;\n const len = args.length;\n if (coordlen) {\n if (coordlen > 4) {\n if (arguments.length !== 1) {\n throw new Error(\"Only new Bezier(point[]) is accepted for 4th and higher order curves\");\n }\n higher = true;\n }\n } else {\n if (len !== 6 && len !== 8 && len !== 9 && len !== 12) {\n if (arguments.length !== 1) {\n throw new Error(\"Only new Bezier(point[]) is accepted for 4th and higher order curves\");\n }\n }\n }\n const _3d = this._3d = !higher && (len === 9 || len === 12) || coords && coords[0] && typeof coords[0].z !== \"undefined\";\n const points = this.points = [];\n for (let idx = 0, step = _3d ? 3 : 2; idx < len; idx += step) {\n var point = {\n x: args[idx],\n y: args[idx + 1]\n };\n if (_3d) {\n point.z = args[idx + 2];\n }\n points.push(point);\n }\n const order = this.order = points.length - 1;\n const dims = this.dims = [\"x\", \"y\"];\n if (_3d)\n dims.push(\"z\");\n this.dimlen = dims.length;\n const aligned = utils.align(points, { p1: points[0], p2: points[order] });\n const baselength = utils.dist(points[0], points[order]);\n this._linear = aligned.reduce((t2, p) => t2 + abs2(p.y), 0) < baselength / 50;\n this._lut = [];\n this._t1 = 0;\n this._t2 = 1;\n this.update();\n }\n static quadraticFromPoints(p1, p2, p3, t2) {\n if (typeof t2 === \"undefined\") {\n t2 = 0.5;\n }\n if (t2 === 0) {\n return new Bezier(p2, p2, p3);\n }\n if (t2 === 1) {\n return new Bezier(p1, p2, p2);\n }\n const abc = Bezier.getABC(2, p1, p2, p3, t2);\n return new Bezier(p1, abc.A, p3);\n }\n static cubicFromPoints(S, B, E, t2, d1) {\n if (typeof t2 === \"undefined\") {\n t2 = 0.5;\n }\n const abc = Bezier.getABC(3, S, B, E, t2);\n if (typeof d1 === \"undefined\") {\n d1 = utils.dist(B, abc.C);\n }\n const d2 = d1 * (1 - t2) / t2;\n const selen = utils.dist(S, E), lx = (E.x - S.x) / selen, ly = (E.y - S.y) / selen, bx1 = d1 * lx, by1 = d1 * ly, bx2 = d2 * lx, by2 = d2 * ly;\n const e1 = { x: B.x - bx1, y: B.y - by1 }, e2 = { x: B.x + bx2, y: B.y + by2 }, A = abc.A, v1 = { x: A.x + (e1.x - A.x) / (1 - t2), y: A.y + (e1.y - A.y) / (1 - t2) }, v2 = { x: A.x + (e2.x - A.x) / t2, y: A.y + (e2.y - A.y) / t2 }, nc1 = { x: S.x + (v1.x - S.x) / t2, y: S.y + (v1.y - S.y) / t2 }, nc2 = {\n x: E.x + (v2.x - E.x) / (1 - t2),\n y: E.y + (v2.y - E.y) / (1 - t2)\n };\n return new Bezier(S, nc1, nc2, E);\n }\n static getUtils() {\n return utils;\n }\n getUtils() {\n return Bezier.getUtils();\n }\n static get PolyBezier() {\n return PolyBezier;\n }\n valueOf() {\n return this.toString();\n }\n toString() {\n return utils.pointsToString(this.points);\n }\n toSVG() {\n if (this._3d)\n return false;\n const p = this.points, x = p[0].x, y = p[0].y, s = [\"M\", x, y, this.order === 2 ? \"Q\" : \"C\"];\n for (let i = 1, last = p.length; i < last; i++) {\n s.push(p[i].x);\n s.push(p[i].y);\n }\n return s.join(\" \");\n }\n setRatios(ratios) {\n if (ratios.length !== this.points.length) {\n throw new Error(\"incorrect number of ratio values\");\n }\n this.ratios = ratios;\n this._lut = [];\n }\n verify() {\n const print = this.coordDigest();\n if (print !== this._print) {\n this._print = print;\n this.update();\n }\n }\n coordDigest() {\n return this.points.map(function(c, pos) {\n return \"\" + pos + c.x + c.y + (c.z ? c.z : 0);\n }).join(\"\");\n }\n update() {\n this._lut = [];\n this.dpoints = utils.derive(this.points, this._3d);\n this.computedirection();\n }\n computedirection() {\n const points = this.points;\n const angle = utils.angle(points[0], points[this.order], points[1]);\n this.clockwise = angle > 0;\n }\n length() {\n return utils.length(this.derivative.bind(this));\n }\n static getABC(order = 2, S, B, E, t2 = 0.5) {\n const u = utils.projectionratio(t2, order), um = 1 - u, C = {\n x: u * S.x + um * E.x,\n y: u * S.y + um * E.y\n }, s = utils.abcratio(t2, order), A = {\n x: B.x + (B.x - C.x) / s,\n y: B.y + (B.y - C.y) / s\n };\n return { A, B, C, S, E };\n }\n getABC(t2, B) {\n B = B || this.get(t2);\n let S = this.points[0];\n let E = this.points[this.order];\n return Bezier.getABC(this.order, S, B, E, t2);\n }\n getLUT(steps) {\n this.verify();\n steps = steps || 100;\n if (this._lut.length === steps + 1) {\n return this._lut;\n }\n this._lut = [];\n steps++;\n this._lut = [];\n for (let i = 0, p, t2; i < steps; i++) {\n t2 = i / (steps - 1);\n p = this.compute(t2);\n p.t = t2;\n this._lut.push(p);\n }\n return this._lut;\n }\n on(point, error) {\n error = error || 5;\n const lut = this.getLUT(), hits = [];\n for (let i = 0, c, t2 = 0; i < lut.length; i++) {\n c = lut[i];\n if (utils.dist(c, point) < error) {\n hits.push(c);\n t2 += i / lut.length;\n }\n }\n if (!hits.length)\n return false;\n return t /= hits.length;\n }\n project(point) {\n const LUT = this.getLUT(), l = LUT.length - 1, closest = utils.closest(LUT, point), mpos = closest.mpos, t1 = (mpos - 1) / l, t2 = (mpos + 1) / l, step = 0.1 / l;\n let mdist = closest.mdist, t3 = t1, ft = t3, p;\n mdist += 1;\n for (let d; t3 < t2 + step; t3 += step) {\n p = this.compute(t3);\n d = utils.dist(point, p);\n if (d < mdist) {\n mdist = d;\n ft = t3;\n }\n }\n ft = ft < 0 ? 0 : ft > 1 ? 1 : ft;\n p = this.compute(ft);\n p.t = ft;\n p.d = mdist;\n return p;\n }\n get(t2) {\n return this.compute(t2);\n }\n point(idx) {\n return this.points[idx];\n }\n compute(t2) {\n if (this.ratios) {\n return utils.computeWithRatios(t2, this.points, this.ratios, this._3d);\n }\n return utils.compute(t2, this.points, this._3d, this.ratios);\n }\n raise() {\n const p = this.points, np = [p[0]], k = p.length;\n for (let i = 1, pi3, pim; i < k; i++) {\n pi3 = p[i];\n pim = p[i - 1];\n np[i] = {\n x: (k - i) / k * pi3.x + i / k * pim.x,\n y: (k - i) / k * pi3.y + i / k * pim.y\n };\n }\n np[k] = p[k - 1];\n return new Bezier(np);\n }\n derivative(t2) {\n return utils.compute(t2, this.dpoints[0], this._3d);\n }\n dderivative(t2) {\n return utils.compute(t2, this.dpoints[1], this._3d);\n }\n align() {\n let p = this.points;\n return new Bezier(utils.align(p, { p1: p[0], p2: p[p.length - 1] }));\n }\n curvature(t2) {\n return utils.curvature(t2, this.dpoints[0], this.dpoints[1], this._3d);\n }\n inflections() {\n return utils.inflections(this.points);\n }\n normal(t2) {\n return this._3d ? this.__normal3(t2) : this.__normal2(t2);\n }\n __normal2(t2) {\n const d = this.derivative(t2);\n const q = sqrt2(d.x * d.x + d.y * d.y);\n return { t: t2, x: -d.y / q, y: d.x / q };\n }\n __normal3(t2) {\n const r1 = this.derivative(t2), r2 = this.derivative(t2 + 0.01), q1 = sqrt2(r1.x * r1.x + r1.y * r1.y + r1.z * r1.z), q2 = sqrt2(r2.x * r2.x + r2.y * r2.y + r2.z * r2.z);\n r1.x /= q1;\n r1.y /= q1;\n r1.z /= q1;\n r2.x /= q2;\n r2.y /= q2;\n r2.z /= q2;\n const c = {\n x: r2.y * r1.z - r2.z * r1.y,\n y: r2.z * r1.x - r2.x * r1.z,\n z: r2.x * r1.y - r2.y * r1.x\n };\n const m = sqrt2(c.x * c.x + c.y * c.y + c.z * c.z);\n c.x /= m;\n c.y /= m;\n c.z /= m;\n const R = [\n c.x * c.x,\n c.x * c.y - c.z,\n c.x * c.z + c.y,\n c.x * c.y + c.z,\n c.y * c.y,\n c.y * c.z - c.x,\n c.x * c.z - c.y,\n c.y * c.z + c.x,\n c.z * c.z\n ];\n const n = {\n t: t2,\n x: R[0] * r1.x + R[1] * r1.y + R[2] * r1.z,\n y: R[3] * r1.x + R[4] * r1.y + R[5] * r1.z,\n z: R[6] * r1.x + R[7] * r1.y + R[8] * r1.z\n };\n return n;\n }\n hull(t2) {\n let p = this.points, _p = [], q = [], idx = 0;\n q[idx++] = p[0];\n q[idx++] = p[1];\n q[idx++] = p[2];\n if (this.order === 3) {\n q[idx++] = p[3];\n }\n while (p.length > 1) {\n _p = [];\n for (let i = 0, pt, l = p.length - 1; i < l; i++) {\n pt = utils.lerp(t2, p[i], p[i + 1]);\n q[idx++] = pt;\n _p.push(pt);\n }\n p = _p;\n }\n return q;\n }\n split(t1, t2) {\n if (t1 === 0 && !!t2) {\n return this.split(t2).left;\n }\n if (t2 === 1) {\n return this.split(t1).right;\n }\n const q = this.hull(t1);\n const result = {\n left: this.order === 2 ? new Bezier([q[0], q[3], q[5]]) : new Bezier([q[0], q[4], q[7], q[9]]),\n right: this.order === 2 ? new Bezier([q[5], q[4], q[2]]) : new Bezier([q[9], q[8], q[6], q[3]]),\n span: q\n };\n result.left._t1 = utils.map(0, 0, 1, this._t1, this._t2);\n result.left._t2 = utils.map(t1, 0, 1, this._t1, this._t2);\n result.right._t1 = utils.map(t1, 0, 1, this._t1, this._t2);\n result.right._t2 = utils.map(1, 0, 1, this._t1, this._t2);\n if (!t2) {\n return result;\n }\n t2 = utils.map(t2, t1, 1, 0, 1);\n return result.right.split(t2).left;\n }\n extrema() {\n const result = {};\n let roots = [];\n this.dims.forEach(function(dim) {\n let mfn = function(v) {\n return v[dim];\n };\n let p = this.dpoints[0].map(mfn);\n result[dim] = utils.droots(p);\n if (this.order === 3) {\n p = this.dpoints[1].map(mfn);\n result[dim] = result[dim].concat(utils.droots(p));\n }\n result[dim] = result[dim].filter(function(t2) {\n return t2 >= 0 && t2 <= 1;\n });\n roots = roots.concat(result[dim].sort(utils.numberSort));\n }.bind(this));\n result.values = roots.sort(utils.numberSort).filter(function(v, idx) {\n return roots.indexOf(v) === idx;\n });\n return result;\n }\n bbox() {\n const extrema = this.extrema(), result = {};\n this.dims.forEach(function(d) {\n result[d] = utils.getminmax(this, d, extrema[d]);\n }.bind(this));\n return result;\n }\n overlaps(curve) {\n const lbbox = this.bbox(), tbbox = curve.bbox();\n return utils.bboxoverlap(lbbox, tbbox);\n }\n offset(t2, d) {\n if (typeof d !== \"undefined\") {\n const c = this.get(t2), n = this.normal(t2);\n const ret = {\n c,\n n,\n x: c.x + n.x * d,\n y: c.y + n.y * d\n };\n if (this._3d) {\n ret.z = c.z + n.z * d;\n }\n return ret;\n }\n if (this._linear) {\n const nv = this.normal(0), coords = this.points.map(function(p) {\n const ret = {\n x: p.x + t2 * nv.x,\n y: p.y + t2 * nv.y\n };\n if (p.z && nv.z) {\n ret.z = p.z + t2 * nv.z;\n }\n return ret;\n });\n return [new Bezier(coords)];\n }\n return this.reduce().map(function(s) {\n if (s._linear) {\n return s.offset(t2)[0];\n }\n return s.scale(t2);\n });\n }\n simple() {\n if (this.order === 3) {\n const a1 = utils.angle(this.points[0], this.points[3], this.points[1]);\n const a2 = utils.angle(this.points[0], this.points[3], this.points[2]);\n if (a1 > 0 && a2 < 0 || a1 < 0 && a2 > 0)\n return false;\n }\n const n1 = this.normal(0);\n const n2 = this.normal(1);\n let s = n1.x * n2.x + n1.y * n2.y;\n if (this._3d) {\n s += n1.z * n2.z;\n }\n return abs2(acos2(s)) < pi2 / 3;\n }\n reduce() {\n let i, t1 = 0, t2 = 0, step = 0.01, segment, pass1 = [], pass2 = [];\n let extrema = this.extrema().values;\n if (extrema.indexOf(0) === -1) {\n extrema = [0].concat(extrema);\n }\n if (extrema.indexOf(1) === -1) {\n extrema.push(1);\n }\n for (t1 = extrema[0], i = 1; i < extrema.length; i++) {\n t2 = extrema[i];\n segment = this.split(t1, t2);\n segment._t1 = t1;\n segment._t2 = t2;\n pass1.push(segment);\n t1 = t2;\n }\n pass1.forEach(function(p1) {\n t1 = 0;\n t2 = 0;\n while (t2 <= 1) {\n for (t2 = t1 + step; t2 <= 1 + step; t2 += step) {\n segment = p1.split(t1, t2);\n if (!segment.simple()) {\n t2 -= step;\n if (abs2(t1 - t2) < step) {\n return [];\n }\n segment = p1.split(t1, t2);\n segment._t1 = utils.map(t1, 0, 1, p1._t1, p1._t2);\n segment._t2 = utils.map(t2, 0, 1, p1._t1, p1._t2);\n pass2.push(segment);\n t1 = t2;\n break;\n }\n }\n }\n if (t1 < 1) {\n segment = p1.split(t1, 1);\n segment._t1 = utils.map(t1, 0, 1, p1._t1, p1._t2);\n segment._t2 = p1._t2;\n pass2.push(segment);\n }\n });\n return pass2;\n }\n translate(v, d1, d2) {\n d2 = typeof d2 === \"number\" ? d2 : d1;\n const o = this.order;\n let d = this.points.map((_, i) => (1 - i / o) * d1 + i / o * d2);\n return new Bezier(this.points.map((p, i) => ({\n x: p.x + v.x * d[i],\n y: p.y + v.y * d[i]\n })));\n }\n scale(d) {\n const order = this.order;\n let distanceFn = false;\n if (typeof d === \"function\") {\n distanceFn = d;\n }\n if (distanceFn && order === 2) {\n return this.raise().scale(distanceFn);\n }\n const clockwise = this.clockwise;\n const points = this.points;\n if (this._linear) {\n return this.translate(this.normal(0), distanceFn ? distanceFn(0) : d, distanceFn ? distanceFn(1) : d);\n }\n const r1 = distanceFn ? distanceFn(0) : d;\n const r2 = distanceFn ? distanceFn(1) : d;\n const v = [this.offset(0, 10), this.offset(1, 10)];\n const np = [];\n const o = utils.lli4(v[0], v[0].c, v[1], v[1].c);\n if (!o) {\n throw new Error(\"cannot scale this curve. Try reducing it first.\");\n }\n [0, 1].forEach(function(t2) {\n const p = np[t2 * order] = utils.copy(points[t2 * order]);\n p.x += (t2 ? r2 : r1) * v[t2].n.x;\n p.y += (t2 ? r2 : r1) * v[t2].n.y;\n });\n if (!distanceFn) {\n [0, 1].forEach((t2) => {\n if (order === 2 && !!t2)\n return;\n const p = np[t2 * order];\n const d2 = this.derivative(t2);\n const p2 = { x: p.x + d2.x, y: p.y + d2.y };\n np[t2 + 1] = utils.lli4(p, p2, o, points[t2 + 1]);\n });\n return new Bezier(np);\n }\n [0, 1].forEach(function(t2) {\n if (order === 2 && !!t2)\n return;\n var p = points[t2 + 1];\n var ov = {\n x: p.x - o.x,\n y: p.y - o.y\n };\n var rc = distanceFn ? distanceFn((t2 + 1) / order) : d;\n if (distanceFn && !clockwise)\n rc = -rc;\n var m = sqrt2(ov.x * ov.x + ov.y * ov.y);\n ov.x /= m;\n ov.y /= m;\n np[t2 + 1] = {\n x: p.x + rc * ov.x,\n y: p.y + rc * ov.y\n };\n });\n return new Bezier(np);\n }\n outline(d1, d2, d3, d4) {\n d2 = d2 === void 0 ? d1 : d2;\n if (this._linear) {\n const n = this.normal(0);\n const start = this.points[0];\n const end = this.points[this.points.length - 1];\n let s, mid, e;\n if (d3 === void 0) {\n d3 = d1;\n d4 = d2;\n }\n s = { x: start.x + n.x * d1, y: start.y + n.y * d1 };\n e = { x: end.x + n.x * d3, y: end.y + n.y * d3 };\n mid = { x: (s.x + e.x) / 2, y: (s.y + e.y) / 2 };\n const fline = [s, mid, e];\n s = { x: start.x - n.x * d2, y: start.y - n.y * d2 };\n e = { x: end.x - n.x * d4, y: end.y - n.y * d4 };\n mid = { x: (s.x + e.x) / 2, y: (s.y + e.y) / 2 };\n const bline = [e, mid, s];\n const ls2 = utils.makeline(bline[2], fline[0]);\n const le2 = utils.makeline(fline[2], bline[0]);\n const segments2 = [ls2, new Bezier(fline), le2, new Bezier(bline)];\n return new PolyBezier(segments2);\n }\n const reduced = this.reduce(), len = reduced.length, fcurves = [];\n let bcurves = [], p, alen = 0, tlen = this.length();\n const graduated = typeof d3 !== \"undefined\" && typeof d4 !== \"undefined\";\n function linearDistanceFunction(s, e, tlen2, alen2, slen) {\n return function(v) {\n const f1 = alen2 / tlen2, f2 = (alen2 + slen) / tlen2, d = e - s;\n return utils.map(v, 0, 1, s + f1 * d, s + f2 * d);\n };\n }\n reduced.forEach(function(segment) {\n const slen = segment.length();\n if (graduated) {\n fcurves.push(segment.scale(linearDistanceFunction(d1, d3, tlen, alen, slen)));\n bcurves.push(segment.scale(linearDistanceFunction(-d2, -d4, tlen, alen, slen)));\n } else {\n fcurves.push(segment.scale(d1));\n bcurves.push(segment.scale(-d2));\n }\n alen += slen;\n });\n bcurves = bcurves.map(function(s) {\n p = s.points;\n if (p[3]) {\n s.points = [p[3], p[2], p[1], p[0]];\n } else {\n s.points = [p[2], p[1], p[0]];\n }\n return s;\n }).reverse();\n const fs = fcurves[0].points[0], fe = fcurves[len - 1].points[fcurves[len - 1].points.length - 1], bs = bcurves[len - 1].points[bcurves[len - 1].points.length - 1], be = bcurves[0].points[0], ls = utils.makeline(bs, fs), le = utils.makeline(fe, be), segments = [ls].concat(fcurves).concat([le]).concat(bcurves);\n return new PolyBezier(segments);\n }\n outlineshapes(d1, d2, curveIntersectionThreshold) {\n d2 = d2 || d1;\n const outline = this.outline(d1, d2).curves;\n const shapes = [];\n for (let i = 1, len = outline.length; i < len / 2; i++) {\n const shape = utils.makeshape(outline[i], outline[len - i], curveIntersectionThreshold);\n shape.startcap.virtual = i > 1;\n shape.endcap.virtual = i < len / 2 - 1;\n shapes.push(shape);\n }\n return shapes;\n }\n intersects(curve, curveIntersectionThreshold) {\n if (!curve)\n return this.selfintersects(curveIntersectionThreshold);\n if (curve.p1 && curve.p2) {\n return this.lineIntersects(curve);\n }\n if (curve instanceof Bezier) {\n curve = curve.reduce();\n }\n return this.curveintersects(this.reduce(), curve, curveIntersectionThreshold);\n }\n lineIntersects(line) {\n const mx = min(line.p1.x, line.p2.x), my = min(line.p1.y, line.p2.y), MX = max(line.p1.x, line.p2.x), MY = max(line.p1.y, line.p2.y);\n return utils.roots(this.points, line).filter((t2) => {\n var p = this.get(t2);\n return utils.between(p.x, mx, MX) && utils.between(p.y, my, MY);\n });\n }\n selfintersects(curveIntersectionThreshold) {\n const reduced = this.reduce(), len = reduced.length - 2, results = [];\n for (let i = 0, result, left, right; i < len; i++) {\n left = reduced.slice(i, i + 1);\n right = reduced.slice(i + 2);\n result = this.curveintersects(left, right, curveIntersectionThreshold);\n results.push(...result);\n }\n return results;\n }\n curveintersects(c1, c2, curveIntersectionThreshold) {\n const pairs = [];\n c1.forEach(function(l) {\n c2.forEach(function(r) {\n if (l.overlaps(r)) {\n pairs.push({ left: l, right: r });\n }\n });\n });\n let intersections = [];\n pairs.forEach(function(pair) {\n const result = utils.pairiteration(pair.left, pair.right, curveIntersectionThreshold);\n if (result.length > 0) {\n intersections = intersections.concat(result);\n }\n });\n return intersections;\n }\n arcs(errorThreshold) {\n errorThreshold = errorThreshold || 0.5;\n return this._iterate(errorThreshold, []);\n }\n _error(pc, np1, s, e) {\n const q = (e - s) / 4, c1 = this.get(s + q), c2 = this.get(e - q), ref = utils.dist(pc, np1), d1 = utils.dist(pc, c1), d2 = utils.dist(pc, c2);\n return abs2(d1 - ref) + abs2(d2 - ref);\n }\n _iterate(errorThreshold, circles) {\n let t_s = 0, t_e = 1, safety;\n do {\n safety = 0;\n t_e = 1;\n let np1 = this.get(t_s), np2, np3, arc, prev_arc;\n let curr_good = false, prev_good = false, done;\n let t_m = t_e, prev_e = 1, step = 0;\n do {\n prev_good = curr_good;\n prev_arc = arc;\n t_m = (t_s + t_e) / 2;\n step++;\n np2 = this.get(t_m);\n np3 = this.get(t_e);\n arc = utils.getccenter(np1, np2, np3);\n arc.interval = {\n start: t_s,\n end: t_e\n };\n let error = this._error(arc, np1, t_s, t_e);\n curr_good = error <= errorThreshold;\n done = prev_good && !curr_good;\n if (!done)\n prev_e = t_e;\n if (curr_good) {\n if (t_e >= 1) {\n arc.interval.end = prev_e = 1;\n prev_arc = arc;\n if (t_e > 1) {\n let d = {\n x: arc.x + arc.r * cos2(arc.e),\n y: arc.y + arc.r * sin2(arc.e)\n };\n arc.e += utils.angle({ x: arc.x, y: arc.y }, d, this.get(1));\n }\n break;\n }\n t_e = t_e + (t_e - t_s) / 2;\n } else {\n t_e = t_m;\n }\n } while (!done && safety++ < 100);\n if (safety >= 100) {\n break;\n }\n prev_arc = prev_arc ? prev_arc : arc;\n circles.push(prev_arc);\n t_s = prev_e;\n } while (t_e < 1);\n return circles;\n }\n};\nmodule.exports = __toCommonJS(bezier_exports);\n// Annotate the CommonJS export names for ESM import in node:\n0 && (module.exports = {\n Bezier\n});\n",null],"names":["earcut","data","holeIndices","dim","hasHoles","length","outerLen","outerNode","linkedList","triangles","next","prev","minX","minY","invSize","eliminateHoles","Infinity","maxX","maxY","i","x","y","Math","max","earcutLinked","start","end","clockwise","last","signedArea","insertNode","equals","removeNode","filterPoints","p","again","steiner","area","ear","pass","indexCurve","stop","isEarHashed","isEar","push","cureLocalIntersections","splitEarcut","a","b","c","ax","bx","cx","ay","by","cy","x0","min","y0","x1","y1","pointInTriangleExceptFirst","minZ","zOrder","maxZ","prevZ","n","nextZ","z","intersects","locallyInside","isValidDiagonal","splitPolygon","queue","len","list","getLeftmost","sort","compareXYSlope","eliminateHole","result","aSlope","bSlope","hole","bridge","findHoleBridge","bridgeReverse","hx","hy","qx","m","mx","my","tanMin","pointInTriangle","tan","abs","sectorContainsSector","sortLinked","numMerges","inSize","e","tail","q","pSize","qSize","leftmost","px","py","intersectsPolygon","middleInside","r","p1","p2","q1","q2","o1","sign","o2","o3","o4","onSegment","num","inside","a2","createNode","b2","an","bp","sum","j","Quaternion","w","isQuaternion","_x","_y","_z","_w","slerpFlat","dst","dstOffset","src0","srcOffset0","src1","srcOffset1","t","z0","w0","z1","w1","s","cos","dir","sqrSin","Number","EPSILON","sin","sqrt","atan2","tDir","f","multiplyQuaternionsFlat","set","_onChangeCallback","clone","constructor","copy","quaternion","setFromEuler","euler","update","order","_order","c1","c2","c3","s1","s2","s3","console","warn","setFromAxisAngle","axis","angle","halfAngle","setFromRotationMatrix","te","elements","m11","m12","m13","m21","m22","m23","m31","m32","m33","trace","setFromUnitVectors","vFrom","vTo","dot","normalize","rotateTowards","step","angleTo","slerp","identity","invert","conjugate","v","lengthSq","l","multiply","multiplyQuaternions","premultiply","qax","qay","qaz","qaw","qbx","qby","qbz","qbw","qb","cosHalfTheta","sqrSinHalfTheta","sinHalfTheta","halfTheta","ratioA","ratioB","slerpQuaternions","qa","random","theta1","PI","theta2","r1","r2","fromArray","array","offset","toArray","fromBufferAttribute","attribute","index","getX","getY","getZ","getW","toJSON","_onChange","callback","value","_quaternion","Vector3","undefined","add","addScalar","addVectors","addScaledVector","sub","subScalar","subVectors","multiplyScalar","scalar","multiplyVectors","applyAxisAngle","applyQuaternion","applyMatrix4","qy","qz","qw","ix","iy","iz","iw","divide","divideScalar","clamp","clampScalar","minVal","maxVal","clampLength","setLength","lerp","alpha","lerpVectors","v1","v2","cross","crossVectors","az","bz","distanceTo","distanceToSquared","generateTopAndBottom","generateSides","getAngle","PathPoint","pos","right","up","dist","widthScale","sharp","lerpPathPoints","source","Matrix4","n11","n12","n13","n14","n21","n22","n23","n24","n31","n32","n33","n34","n41","n42","n43","n44","multiplyMatrices","makeRotationAxis","tx","ty","matrix","me","Curve","type","arcLengthDivisions","getPoint","getPointAt","u","optionalTarget","getUtoTmapping","getPoints","divisions","points","d","getLength","lengths","getLengths","cacheArcLengths","needsUpdate","cache","current","distance","arcLengths","il","targetArcLength","low","high","comparison","floor","lengthBefore","lengthAfter","segmentLength","segmentFraction","QuadraticBezierP0","k","QuadraticBezierP1","QuadraticBezierP2","QuadraticBezier","p0","QuadraticBezierCurve3","v0","isQuadraticBezierCurve3","point","helpVec3_1","helpVec3_2","helpVec3_3","helpMat4","helpCurve","_getCornerBezierCurve","cornerRadius","firstCorner","out","lastDir","nextDir","lastDirLength","nextDirLength","v0Dist","v2Dist","PathPointList","count","cornerSplit","close","slice","_start","_corner","_end","_getByIndex","MAX_VALUE","tz","lastPoint","vec","theta","acos","curve","samplerPoints","_sharpCorner","dirType","_cos","UP","normalDir","__defProp","Object","defineProperty","__getOwnPropDesc","getOwnPropertyDescriptor","__getOwnPropNames","getOwnPropertyNames","__hasOwnProp","prototype","hasOwnProperty","__markAsModule","target","__export","all","name","get","enumerable","__reExport","module2","copyDefault","desc","key","call","__toCommonJS","temp","WeakMap","bezier_exports","Bezier","pow","crt","pi","tau","quart","epsilon","nMax","MAX_SAFE_INTEGER","nMin","MIN_SAFE_INTEGER","ZERO","utils","Tvalues","Cvalues","arcfn","t2","derivativeFn","compute","_3d","mt","ret","mt2","t22","dCpts","JSON","parse","stringify","splice","computeWithRatios","ratios","f1","f2","f3","f4","derive","dpoints","dpt","between","M","approximately","precision","map","ds","de","ts","d1","d2","pointToString","pointsToString","join","obj","o","dx1","dy1","dx2","dy2","round","indexOf","parseFloat","substring","dx","dy","closest","LUT","mdist","mpos","forEach","idx","abcratio","bottom","top","projectionratio","lli8","x2","y2","x3","y3","x4","y4","nx","ny","lli4","p3","p4","lli","makeline","findbbox","sections","MX","MY","bbox","mid","size","shapeintersections","bbox1","bbox2","curveIntersectionThreshold","bboxoverlap","intersections","a1","startcap","forward","back","endcap","l1","virtual","l2","iss","makeshape","bpl","fpl","shape","getminmax","min2","max2","concat","align","line","roots","aligned","reduce","m1","m2","v12","filter","pa","pb","pc","pd","q3","discriminant","u1","mp3","mp33","cosphi","phi","crtr","t1","sd","droots","curvature","kOnly","dnm","adk","dk","dd","qdsum","pk","nk","inflections","v3","trm","sq","b1","dims","expandbox","_bbox","pairiteration","c1b","c2b","threshold","_t1","_t2","cc1","split","cc2","pairs","left","pair","results","getccenter","dx1p","dy1p","dx2p","dy2p","mx1","my1","mx2","my2","mx1n","my1n","mx2n","my2n","arc","_","numberSort","PolyBezier","curves","valueOf","toString","addCurve","abs2","cos2","sin2","acos2","sqrt2","pi2","coords","args","Array","from","arguments","coordlen","newargs","point2","higher","Error","dimlen","baselength","_linear","_lut","quadraticFromPoints","abc","getABC","A","cubicFromPoints","S","B","E","C","selen","lx","ly","bx1","by1","bx2","by2","e1","e2","nc1","nc2","getUtils","toSVG","setRatios","verify","print","coordDigest","_print","computedirection","derivative","bind","um","getLUT","steps","on","error","lut","hits","project","t3","ft","raise","np","pi3","pim","dderivative","normal","__normal3","__normal2","R","hull","_p","pt","span","extrema","mfn","values","overlaps","lbbox","tbbox","nv","scale","simple","n1","n2","segment","pass1","pass2","translate","distanceFn","ov","rc","outline","d3","d4","fline","bline","ls2","le2","segments2","reduced","fcurves","bcurves","alen","tlen","graduated","linearDistanceFunction","tlen2","alen2","slen","reverse","fs","fe","bs","be","ls","le","segments","outlineshapes","shapes","selfintersects","lineIntersects","curveintersects","arcs","errorThreshold","_iterate","_error","np1","ref","circles","t_s","t_e","safety","np2","np3","prev_arc","curr_good","prev_good","done","t_m","prev_e","interval","bezier"],"mappings":"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CA;AAEA;AAEA;AAEA;AACA;AACA;AAEA;AACA;AACA;AAEA;AACA;AACA;AAEA;AAEA;AAEA;AACA;AACA;AAEA;AACA;AACA;AAEA;AACA;AACA;AAEA;AAEA;AAEA;AACA;AACA;AAEA;AACA;AACA;AAEA;AACA;AACA;AAEA;AAEA;AAEA;AACA;AACA;AAEA;AACA;AACA;AAEA;AACA;AACA;AAEA;AAEA;AAEA;AACA;AACA;AAEA;AACA;AACA;AAEA;AACA;AACA;AAEA;AAEA;AAEA;AACA;AACA;AAEA;AACA;AACA;AAEA;AACA;AACA;AAEA;AAEA;AACA;AACA;AACA;AAEA;AACA;AACA;AACA;AACA;AAEA;AAEA;AAEA;AAEA;AAEA;AAEA;AAEA;AAEA;AAEA;AAEA;AAEA;AAEA;AAEA;AACA;AAEA;AAEA;AAEA;AAEA;AAEA;AAEA;AAEA;AAEA;AACA;AAEA;AAEA;AACA;AAEA;AACA;AACA;AAEA;AAEA;;;SAEA/G,WAAA,SAAS3H,QAAAA,CAAAA,CAAT,EAAY;AAER,IAAA,OAAO,KAAK2O,gBAAL,CAAsB,IAAtB,EAA4B3O,CAA5B,CAAP,CAAA;AAEH;AAID;AAEA;AAEA;AAEA;AACA;AACA;AAEA;AACA;AACA;AACA;AAEA;AACA;AACA;AACA;AAEA;AACA;AACA;AACA;AAEA;AACA;AACA;AACA;AAEA;AACA;AACA;AACA;AAEA;AACA;AACA;AACA;AAEA;AAEA;AAEA;AAEA;AAEA;AACA;AACA;AACA;AAEA;AAEA;AAEA;AAEA;AAEA;AACA;AACA;AACA;AAEA;AACA;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAEA;AAEA;AAEA;AAEA;AACA;AAEA;AACA;AACA;AAEA;AACA;AACA;AAEA;AAEA;AAEA;AAEA;AAEA;AAEA;AACA;AACA;AAEA;AAEA;AACA;AACA;AAEA;AAEA;AAEA;AAEA;AAEA;AACA;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"}
1
+ {"version":3,"file":"poly-extrude.mjs","sources":["../node_modules/.pnpm/earcut@3.0.1/node_modules/earcut/src/earcut.js","../src/math/Quaternion.js","../src/math/Vector3.js","../src/util.ts","../src/polygon.ts","../src/polyline.ts","../src/cylinder.ts","../src/path/PathPoint.js","../src/math/Matrix4.js","../src/math/Curve.js","../src/math/Interpolations.js","../src/math/QuadraticBezierCurve3.js","../src/path/PathPointList.js","../src/path.ts","../src/tube.ts","../src/plane.ts","../src/polygonpath.ts","../node_modules/.pnpm/bezier-js@6.1.4/node_modules/bezier-js/dist/bezier.cjs","../src/polylinehelper.ts"],"sourcesContent":["\nexport default function earcut(data, holeIndices, dim = 2) {\n\n const hasHoles = holeIndices && holeIndices.length;\n const outerLen = hasHoles ? holeIndices[0] * dim : data.length;\n let outerNode = linkedList(data, 0, outerLen, dim, true);\n const triangles = [];\n\n if (!outerNode || outerNode.next === outerNode.prev) return triangles;\n\n let minX, minY, invSize;\n\n if (hasHoles) outerNode = eliminateHoles(data, holeIndices, outerNode, dim);\n\n // if the shape is not too simple, we'll use z-order curve hash later; calculate polygon bbox\n if (data.length > 80 * dim) {\n minX = Infinity;\n minY = Infinity;\n let maxX = -Infinity;\n let maxY = -Infinity;\n\n for (let i = dim; i < outerLen; i += dim) {\n const x = data[i];\n const y = data[i + 1];\n if (x < minX) minX = x;\n if (y < minY) minY = y;\n if (x > maxX) maxX = x;\n if (y > maxY) maxY = y;\n }\n\n // minX, minY and invSize are later used to transform coords into integers for z-order calculation\n invSize = Math.max(maxX - minX, maxY - minY);\n invSize = invSize !== 0 ? 32767 / invSize : 0;\n }\n\n earcutLinked(outerNode, triangles, dim, minX, minY, invSize, 0);\n\n return triangles;\n}\n\n// create a circular doubly linked list from polygon points in the specified winding order\nfunction linkedList(data, start, end, dim, clockwise) {\n let last;\n\n if (clockwise === (signedArea(data, start, end, dim) > 0)) {\n for (let i = start; i < end; i += dim) last = insertNode(i / dim | 0, data[i], data[i + 1], last);\n } else {\n for (let i = end - dim; i >= start; i -= dim) last = insertNode(i / dim | 0, data[i], data[i + 1], last);\n }\n\n if (last && equals(last, last.next)) {\n removeNode(last);\n last = last.next;\n }\n\n return last;\n}\n\n// eliminate colinear or duplicate points\nfunction filterPoints(start, end) {\n if (!start) return start;\n if (!end) end = start;\n\n let p = start,\n again;\n do {\n again = false;\n\n if (!p.steiner && (equals(p, p.next) || area(p.prev, p, p.next) === 0)) {\n removeNode(p);\n p = end = p.prev;\n if (p === p.next) break;\n again = true;\n\n } else {\n p = p.next;\n }\n } while (again || p !== end);\n\n return end;\n}\n\n// main ear slicing loop which triangulates a polygon (given as a linked list)\nfunction earcutLinked(ear, triangles, dim, minX, minY, invSize, pass) {\n if (!ear) return;\n\n // interlink polygon nodes in z-order\n if (!pass && invSize) indexCurve(ear, minX, minY, invSize);\n\n let stop = ear;\n\n // iterate through ears, slicing them one by one\n while (ear.prev !== ear.next) {\n const prev = ear.prev;\n const next = ear.next;\n\n if (invSize ? isEarHashed(ear, minX, minY, invSize) : isEar(ear)) {\n triangles.push(prev.i, ear.i, next.i); // cut off the triangle\n\n removeNode(ear);\n\n // skipping the next vertex leads to less sliver triangles\n ear = next.next;\n stop = next.next;\n\n continue;\n }\n\n ear = next;\n\n // if we looped through the whole remaining polygon and can't find any more ears\n if (ear === stop) {\n // try filtering points and slicing again\n if (!pass) {\n earcutLinked(filterPoints(ear), triangles, dim, minX, minY, invSize, 1);\n\n // if this didn't work, try curing all small self-intersections locally\n } else if (pass === 1) {\n ear = cureLocalIntersections(filterPoints(ear), triangles);\n earcutLinked(ear, triangles, dim, minX, minY, invSize, 2);\n\n // as a last resort, try splitting the remaining polygon into two\n } else if (pass === 2) {\n splitEarcut(ear, triangles, dim, minX, minY, invSize);\n }\n\n break;\n }\n }\n}\n\n// check whether a polygon node forms a valid ear with adjacent nodes\nfunction isEar(ear) {\n const a = ear.prev,\n b = ear,\n c = ear.next;\n\n if (area(a, b, c) >= 0) return false; // reflex, can't be an ear\n\n // now make sure we don't have other points inside the potential ear\n const ax = a.x, bx = b.x, cx = c.x, ay = a.y, by = b.y, cy = c.y;\n\n // triangle bbox\n const x0 = Math.min(ax, bx, cx),\n y0 = Math.min(ay, by, cy),\n x1 = Math.max(ax, bx, cx),\n y1 = Math.max(ay, by, cy);\n\n let p = c.next;\n while (p !== a) {\n if (p.x >= x0 && p.x <= x1 && p.y >= y0 && p.y <= y1 &&\n pointInTriangleExceptFirst(ax, ay, bx, by, cx, cy, p.x, p.y) &&\n area(p.prev, p, p.next) >= 0) return false;\n p = p.next;\n }\n\n return true;\n}\n\nfunction isEarHashed(ear, minX, minY, invSize) {\n const a = ear.prev,\n b = ear,\n c = ear.next;\n\n if (area(a, b, c) >= 0) return false; // reflex, can't be an ear\n\n const ax = a.x, bx = b.x, cx = c.x, ay = a.y, by = b.y, cy = c.y;\n\n // triangle bbox\n const x0 = Math.min(ax, bx, cx),\n y0 = Math.min(ay, by, cy),\n x1 = Math.max(ax, bx, cx),\n y1 = Math.max(ay, by, cy);\n\n // z-order range for the current triangle bbox;\n const minZ = zOrder(x0, y0, minX, minY, invSize),\n maxZ = zOrder(x1, y1, minX, minY, invSize);\n\n let p = ear.prevZ,\n n = ear.nextZ;\n\n // look for points inside the triangle in both directions\n while (p && p.z >= minZ && n && n.z <= maxZ) {\n if (p.x >= x0 && p.x <= x1 && p.y >= y0 && p.y <= y1 && p !== a && p !== c &&\n pointInTriangleExceptFirst(ax, ay, bx, by, cx, cy, p.x, p.y) && area(p.prev, p, p.next) >= 0) return false;\n p = p.prevZ;\n\n if (n.x >= x0 && n.x <= x1 && n.y >= y0 && n.y <= y1 && n !== a && n !== c &&\n pointInTriangleExceptFirst(ax, ay, bx, by, cx, cy, n.x, n.y) && area(n.prev, n, n.next) >= 0) return false;\n n = n.nextZ;\n }\n\n // look for remaining points in decreasing z-order\n while (p && p.z >= minZ) {\n if (p.x >= x0 && p.x <= x1 && p.y >= y0 && p.y <= y1 && p !== a && p !== c &&\n pointInTriangleExceptFirst(ax, ay, bx, by, cx, cy, p.x, p.y) && area(p.prev, p, p.next) >= 0) return false;\n p = p.prevZ;\n }\n\n // look for remaining points in increasing z-order\n while (n && n.z <= maxZ) {\n if (n.x >= x0 && n.x <= x1 && n.y >= y0 && n.y <= y1 && n !== a && n !== c &&\n pointInTriangleExceptFirst(ax, ay, bx, by, cx, cy, n.x, n.y) && area(n.prev, n, n.next) >= 0) return false;\n n = n.nextZ;\n }\n\n return true;\n}\n\n// go through all polygon nodes and cure small local self-intersections\nfunction cureLocalIntersections(start, triangles) {\n let p = start;\n do {\n const a = p.prev,\n b = p.next.next;\n\n if (!equals(a, b) && intersects(a, p, p.next, b) && locallyInside(a, b) && locallyInside(b, a)) {\n\n triangles.push(a.i, p.i, b.i);\n\n // remove two nodes involved\n removeNode(p);\n removeNode(p.next);\n\n p = start = b;\n }\n p = p.next;\n } while (p !== start);\n\n return filterPoints(p);\n}\n\n// try splitting polygon into two and triangulate them independently\nfunction splitEarcut(start, triangles, dim, minX, minY, invSize) {\n // look for a valid diagonal that divides the polygon into two\n let a = start;\n do {\n let b = a.next.next;\n while (b !== a.prev) {\n if (a.i !== b.i && isValidDiagonal(a, b)) {\n // split the polygon in two by the diagonal\n let c = splitPolygon(a, b);\n\n // filter colinear points around the cuts\n a = filterPoints(a, a.next);\n c = filterPoints(c, c.next);\n\n // run earcut on each half\n earcutLinked(a, triangles, dim, minX, minY, invSize, 0);\n earcutLinked(c, triangles, dim, minX, minY, invSize, 0);\n return;\n }\n b = b.next;\n }\n a = a.next;\n } while (a !== start);\n}\n\n// link every hole into the outer loop, producing a single-ring polygon without holes\nfunction eliminateHoles(data, holeIndices, outerNode, dim) {\n const queue = [];\n\n for (let i = 0, len = holeIndices.length; i < len; i++) {\n const start = holeIndices[i] * dim;\n const end = i < len - 1 ? holeIndices[i + 1] * dim : data.length;\n const list = linkedList(data, start, end, dim, false);\n if (list === list.next) list.steiner = true;\n queue.push(getLeftmost(list));\n }\n\n queue.sort(compareXYSlope);\n\n // process holes from left to right\n for (let i = 0; i < queue.length; i++) {\n outerNode = eliminateHole(queue[i], outerNode);\n }\n\n return outerNode;\n}\n\nfunction compareXYSlope(a, b) {\n let result = a.x - b.x;\n // when the left-most point of 2 holes meet at a vertex, sort the holes counterclockwise so that when we find\n // the bridge to the outer shell is always the point that they meet at.\n if (result === 0) {\n result = a.y - b.y;\n if (result === 0) {\n const aSlope = (a.next.y - a.y) / (a.next.x - a.x);\n const bSlope = (b.next.y - b.y) / (b.next.x - b.x);\n result = aSlope - bSlope;\n }\n }\n return result;\n}\n\n// find a bridge between vertices that connects hole with an outer ring and and link it\nfunction eliminateHole(hole, outerNode) {\n const bridge = findHoleBridge(hole, outerNode);\n if (!bridge) {\n return outerNode;\n }\n\n const bridgeReverse = splitPolygon(bridge, hole);\n\n // filter collinear points around the cuts\n filterPoints(bridgeReverse, bridgeReverse.next);\n return filterPoints(bridge, bridge.next);\n}\n\n// David Eberly's algorithm for finding a bridge between hole and outer polygon\nfunction findHoleBridge(hole, outerNode) {\n let p = outerNode;\n const hx = hole.x;\n const hy = hole.y;\n let qx = -Infinity;\n let m;\n\n // find a segment intersected by a ray from the hole's leftmost point to the left;\n // segment's endpoint with lesser x will be potential connection point\n // unless they intersect at a vertex, then choose the vertex\n if (equals(hole, p)) return p;\n do {\n if (equals(hole, p.next)) return p.next;\n else if (hy <= p.y && hy >= p.next.y && p.next.y !== p.y) {\n const x = p.x + (hy - p.y) * (p.next.x - p.x) / (p.next.y - p.y);\n if (x <= hx && x > qx) {\n qx = x;\n m = p.x < p.next.x ? p : p.next;\n if (x === hx) return m; // hole touches outer segment; pick leftmost endpoint\n }\n }\n p = p.next;\n } while (p !== outerNode);\n\n if (!m) return null;\n\n // look for points inside the triangle of hole point, segment intersection and endpoint;\n // if there are no points found, we have a valid connection;\n // otherwise choose the point of the minimum angle with the ray as connection point\n\n const stop = m;\n const mx = m.x;\n const my = m.y;\n let tanMin = Infinity;\n\n p = m;\n\n do {\n if (hx >= p.x && p.x >= mx && hx !== p.x &&\n pointInTriangle(hy < my ? hx : qx, hy, mx, my, hy < my ? qx : hx, hy, p.x, p.y)) {\n\n const tan = Math.abs(hy - p.y) / (hx - p.x); // tangential\n\n if (locallyInside(p, hole) &&\n (tan < tanMin || (tan === tanMin && (p.x > m.x || (p.x === m.x && sectorContainsSector(m, p)))))) {\n m = p;\n tanMin = tan;\n }\n }\n\n p = p.next;\n } while (p !== stop);\n\n return m;\n}\n\n// whether sector in vertex m contains sector in vertex p in the same coordinates\nfunction sectorContainsSector(m, p) {\n return area(m.prev, m, p.prev) < 0 && area(p.next, m, m.next) < 0;\n}\n\n// interlink polygon nodes in z-order\nfunction indexCurve(start, minX, minY, invSize) {\n let p = start;\n do {\n if (p.z === 0) p.z = zOrder(p.x, p.y, minX, minY, invSize);\n p.prevZ = p.prev;\n p.nextZ = p.next;\n p = p.next;\n } while (p !== start);\n\n p.prevZ.nextZ = null;\n p.prevZ = null;\n\n sortLinked(p);\n}\n\n// Simon Tatham's linked list merge sort algorithm\n// http://www.chiark.greenend.org.uk/~sgtatham/algorithms/listsort.html\nfunction sortLinked(list) {\n let numMerges;\n let inSize = 1;\n\n do {\n let p = list;\n let e;\n list = null;\n let tail = null;\n numMerges = 0;\n\n while (p) {\n numMerges++;\n let q = p;\n let pSize = 0;\n for (let i = 0; i < inSize; i++) {\n pSize++;\n q = q.nextZ;\n if (!q) break;\n }\n let qSize = inSize;\n\n while (pSize > 0 || (qSize > 0 && q)) {\n\n if (pSize !== 0 && (qSize === 0 || !q || p.z <= q.z)) {\n e = p;\n p = p.nextZ;\n pSize--;\n } else {\n e = q;\n q = q.nextZ;\n qSize--;\n }\n\n if (tail) tail.nextZ = e;\n else list = e;\n\n e.prevZ = tail;\n tail = e;\n }\n\n p = q;\n }\n\n tail.nextZ = null;\n inSize *= 2;\n\n } while (numMerges > 1);\n\n return list;\n}\n\n// z-order of a point given coords and inverse of the longer side of data bbox\nfunction zOrder(x, y, minX, minY, invSize) {\n // coords are transformed into non-negative 15-bit integer range\n x = (x - minX) * invSize | 0;\n y = (y - minY) * invSize | 0;\n\n x = (x | (x << 8)) & 0x00FF00FF;\n x = (x | (x << 4)) & 0x0F0F0F0F;\n x = (x | (x << 2)) & 0x33333333;\n x = (x | (x << 1)) & 0x55555555;\n\n y = (y | (y << 8)) & 0x00FF00FF;\n y = (y | (y << 4)) & 0x0F0F0F0F;\n y = (y | (y << 2)) & 0x33333333;\n y = (y | (y << 1)) & 0x55555555;\n\n return x | (y << 1);\n}\n\n// find the leftmost node of a polygon ring\nfunction getLeftmost(start) {\n let p = start,\n leftmost = start;\n do {\n if (p.x < leftmost.x || (p.x === leftmost.x && p.y < leftmost.y)) leftmost = p;\n p = p.next;\n } while (p !== start);\n\n return leftmost;\n}\n\n// check if a point lies within a convex triangle\nfunction pointInTriangle(ax, ay, bx, by, cx, cy, px, py) {\n return (cx - px) * (ay - py) >= (ax - px) * (cy - py) &&\n (ax - px) * (by - py) >= (bx - px) * (ay - py) &&\n (bx - px) * (cy - py) >= (cx - px) * (by - py);\n}\n\n// check if a point lies within a convex triangle but false if its equal to the first point of the triangle\nfunction pointInTriangleExceptFirst(ax, ay, bx, by, cx, cy, px, py) {\n return !(ax === px && ay === py) && pointInTriangle(ax, ay, bx, by, cx, cy, px, py);\n}\n\n// check if a diagonal between two polygon nodes is valid (lies in polygon interior)\nfunction isValidDiagonal(a, b) {\n return a.next.i !== b.i && a.prev.i !== b.i && !intersectsPolygon(a, b) && // dones't intersect other edges\n (locallyInside(a, b) && locallyInside(b, a) && middleInside(a, b) && // locally visible\n (area(a.prev, a, b.prev) || area(a, b.prev, b)) || // does not create opposite-facing sectors\n equals(a, b) && area(a.prev, a, a.next) > 0 && area(b.prev, b, b.next) > 0); // special zero-length case\n}\n\n// signed area of a triangle\nfunction area(p, q, r) {\n return (q.y - p.y) * (r.x - q.x) - (q.x - p.x) * (r.y - q.y);\n}\n\n// check if two points are equal\nfunction equals(p1, p2) {\n return p1.x === p2.x && p1.y === p2.y;\n}\n\n// check if two segments intersect\nfunction intersects(p1, q1, p2, q2) {\n const o1 = sign(area(p1, q1, p2));\n const o2 = sign(area(p1, q1, q2));\n const o3 = sign(area(p2, q2, p1));\n const o4 = sign(area(p2, q2, q1));\n\n if (o1 !== o2 && o3 !== o4) return true; // general case\n\n if (o1 === 0 && onSegment(p1, p2, q1)) return true; // p1, q1 and p2 are collinear and p2 lies on p1q1\n if (o2 === 0 && onSegment(p1, q2, q1)) return true; // p1, q1 and q2 are collinear and q2 lies on p1q1\n if (o3 === 0 && onSegment(p2, p1, q2)) return true; // p2, q2 and p1 are collinear and p1 lies on p2q2\n if (o4 === 0 && onSegment(p2, q1, q2)) return true; // p2, q2 and q1 are collinear and q1 lies on p2q2\n\n return false;\n}\n\n// for collinear points p, q, r, check if point q lies on segment pr\nfunction onSegment(p, q, r) {\n return q.x <= Math.max(p.x, r.x) && q.x >= Math.min(p.x, r.x) && q.y <= Math.max(p.y, r.y) && q.y >= Math.min(p.y, r.y);\n}\n\nfunction sign(num) {\n return num > 0 ? 1 : num < 0 ? -1 : 0;\n}\n\n// check if a polygon diagonal intersects any polygon segments\nfunction intersectsPolygon(a, b) {\n let p = a;\n do {\n if (p.i !== a.i && p.next.i !== a.i && p.i !== b.i && p.next.i !== b.i &&\n intersects(p, p.next, a, b)) return true;\n p = p.next;\n } while (p !== a);\n\n return false;\n}\n\n// check if a polygon diagonal is locally inside the polygon\nfunction locallyInside(a, b) {\n return area(a.prev, a, a.next) < 0 ?\n area(a, b, a.next) >= 0 && area(a, a.prev, b) >= 0 :\n area(a, b, a.prev) < 0 || area(a, a.next, b) < 0;\n}\n\n// check if the middle point of a polygon diagonal is inside the polygon\nfunction middleInside(a, b) {\n let p = a;\n let inside = false;\n const px = (a.x + b.x) / 2;\n const py = (a.y + b.y) / 2;\n do {\n if (((p.y > py) !== (p.next.y > py)) && p.next.y !== p.y &&\n (px < (p.next.x - p.x) * (py - p.y) / (p.next.y - p.y) + p.x))\n inside = !inside;\n p = p.next;\n } while (p !== a);\n\n return inside;\n}\n\n// link two polygon vertices with a bridge; if the vertices belong to the same ring, it splits polygon into two;\n// if one belongs to the outer ring and another to a hole, it merges it into a single ring\nfunction splitPolygon(a, b) {\n const a2 = createNode(a.i, a.x, a.y),\n b2 = createNode(b.i, b.x, b.y),\n an = a.next,\n bp = b.prev;\n\n a.next = b;\n b.prev = a;\n\n a2.next = an;\n an.prev = a2;\n\n b2.next = a2;\n a2.prev = b2;\n\n bp.next = b2;\n b2.prev = bp;\n\n return b2;\n}\n\n// create a node and optionally link it with previous one (in a circular doubly linked list)\nfunction insertNode(i, x, y, last) {\n const p = createNode(i, x, y);\n\n if (!last) {\n p.prev = p;\n p.next = p;\n\n } else {\n p.next = last.next;\n p.prev = last;\n last.next.prev = p;\n last.next = p;\n }\n return p;\n}\n\nfunction removeNode(p) {\n p.next.prev = p.prev;\n p.prev.next = p.next;\n\n if (p.prevZ) p.prevZ.nextZ = p.nextZ;\n if (p.nextZ) p.nextZ.prevZ = p.prevZ;\n}\n\nfunction createNode(i, x, y) {\n return {\n i, // vertex index in coordinates array\n x, y, // vertex coordinates\n prev: null, // previous and next vertex nodes in a polygon ring\n next: null,\n z: 0, // z-order curve value\n prevZ: null, // previous and next nodes in z-order\n nextZ: null,\n steiner: false // indicates whether this is a steiner point\n };\n}\n\n// return a percentage difference between the polygon area and its triangulation area;\n// used to verify correctness of triangulation\nexport function deviation(data, holeIndices, dim, triangles) {\n const hasHoles = holeIndices && holeIndices.length;\n const outerLen = hasHoles ? holeIndices[0] * dim : data.length;\n\n let polygonArea = Math.abs(signedArea(data, 0, outerLen, dim));\n if (hasHoles) {\n for (let i = 0, len = holeIndices.length; i < len; i++) {\n const start = holeIndices[i] * dim;\n const end = i < len - 1 ? holeIndices[i + 1] * dim : data.length;\n polygonArea -= Math.abs(signedArea(data, start, end, dim));\n }\n }\n\n let trianglesArea = 0;\n for (let i = 0; i < triangles.length; i += 3) {\n const a = triangles[i] * dim;\n const b = triangles[i + 1] * dim;\n const c = triangles[i + 2] * dim;\n trianglesArea += Math.abs(\n (data[a] - data[c]) * (data[b + 1] - data[a + 1]) -\n (data[a] - data[b]) * (data[c + 1] - data[a + 1]));\n }\n\n return polygonArea === 0 && trianglesArea === 0 ? 0 :\n Math.abs((trianglesArea - polygonArea) / polygonArea);\n}\n\nfunction signedArea(data, start, end, dim) {\n let sum = 0;\n for (let i = start, j = end - dim; i < end; i += dim) {\n sum += (data[j] - data[i]) * (data[i + 1] + data[j + 1]);\n j = i;\n }\n return sum;\n}\n\n// turn a polygon in a multi-dimensional array form (e.g. as in GeoJSON) into a form Earcut accepts\nexport function flatten(data) {\n const vertices = [];\n const holes = [];\n const dimensions = data[0][0].length;\n let holeIndex = 0;\n let prevLen = 0;\n\n for (const ring of data) {\n for (const p of ring) {\n for (let d = 0; d < dimensions; d++) vertices.push(p[d]);\n }\n if (prevLen) {\n holeIndex += prevLen;\n holes.push(holeIndex);\n }\n prevLen = ring.length;\n }\n return {vertices, holes, dimensions};\n}\n","// code copy from https://github.com/mrdoob/three.js/blob/dev/src/math/Quaternion.js\r\n\r\n// import { clamp } from './MathUtils.js';\r\n\r\nclass Quaternion {\r\n\r\n constructor(x = 0, y = 0, z = 0, w = 1) {\r\n\r\n this.isQuaternion = true;\r\n\r\n this._x = x;\r\n this._y = y;\r\n this._z = z;\r\n this._w = w;\r\n\r\n }\r\n\r\n static slerpFlat(dst, dstOffset, src0, srcOffset0, src1, srcOffset1, t) {\r\n\r\n // fuzz-free, array-based Quaternion SLERP operation\r\n\r\n let x0 = src0[srcOffset0 + 0],\r\n y0 = src0[srcOffset0 + 1],\r\n z0 = src0[srcOffset0 + 2],\r\n w0 = src0[srcOffset0 + 3];\r\n\r\n const x1 = src1[srcOffset1 + 0],\r\n y1 = src1[srcOffset1 + 1],\r\n z1 = src1[srcOffset1 + 2],\r\n w1 = src1[srcOffset1 + 3];\r\n\r\n if (t === 0) {\r\n\r\n dst[dstOffset + 0] = x0;\r\n dst[dstOffset + 1] = y0;\r\n dst[dstOffset + 2] = z0;\r\n dst[dstOffset + 3] = w0;\r\n return;\r\n\r\n }\r\n\r\n if (t === 1) {\r\n\r\n dst[dstOffset + 0] = x1;\r\n dst[dstOffset + 1] = y1;\r\n dst[dstOffset + 2] = z1;\r\n dst[dstOffset + 3] = w1;\r\n return;\r\n\r\n }\r\n\r\n if (w0 !== w1 || x0 !== x1 || y0 !== y1 || z0 !== z1) {\r\n\r\n let s = 1 - t;\r\n const cos = x0 * x1 + y0 * y1 + z0 * z1 + w0 * w1,\r\n dir = (cos >= 0 ? 1 : -1),\r\n sqrSin = 1 - cos * cos;\r\n\r\n // Skip the Slerp for tiny steps to avoid numeric problems:\r\n if (sqrSin > Number.EPSILON) {\r\n\r\n const sin = Math.sqrt(sqrSin),\r\n len = Math.atan2(sin, cos * dir);\r\n\r\n s = Math.sin(s * len) / sin;\r\n t = Math.sin(t * len) / sin;\r\n\r\n }\r\n\r\n const tDir = t * dir;\r\n\r\n x0 = x0 * s + x1 * tDir;\r\n y0 = y0 * s + y1 * tDir;\r\n z0 = z0 * s + z1 * tDir;\r\n w0 = w0 * s + w1 * tDir;\r\n\r\n // Normalize in case we just did a lerp:\r\n if (s === 1 - t) {\r\n\r\n const f = 1 / Math.sqrt(x0 * x0 + y0 * y0 + z0 * z0 + w0 * w0);\r\n\r\n x0 *= f;\r\n y0 *= f;\r\n z0 *= f;\r\n w0 *= f;\r\n\r\n }\r\n\r\n }\r\n\r\n dst[dstOffset] = x0;\r\n dst[dstOffset + 1] = y0;\r\n dst[dstOffset + 2] = z0;\r\n dst[dstOffset + 3] = w0;\r\n\r\n }\r\n\r\n static multiplyQuaternionsFlat(dst, dstOffset, src0, srcOffset0, src1, srcOffset1) {\r\n\r\n const x0 = src0[srcOffset0];\r\n const y0 = src0[srcOffset0 + 1];\r\n const z0 = src0[srcOffset0 + 2];\r\n const w0 = src0[srcOffset0 + 3];\r\n\r\n const x1 = src1[srcOffset1];\r\n const y1 = src1[srcOffset1 + 1];\r\n const z1 = src1[srcOffset1 + 2];\r\n const w1 = src1[srcOffset1 + 3];\r\n\r\n dst[dstOffset] = x0 * w1 + w0 * x1 + y0 * z1 - z0 * y1;\r\n dst[dstOffset + 1] = y0 * w1 + w0 * y1 + z0 * x1 - x0 * z1;\r\n dst[dstOffset + 2] = z0 * w1 + w0 * z1 + x0 * y1 - y0 * x1;\r\n dst[dstOffset + 3] = w0 * w1 - x0 * x1 - y0 * y1 - z0 * z1;\r\n\r\n return dst;\r\n\r\n }\r\n\r\n get x() {\r\n\r\n return this._x;\r\n\r\n }\r\n\r\n set x(value) {\r\n\r\n this._x = value;\r\n this._onChangeCallback();\r\n\r\n }\r\n\r\n get y() {\r\n\r\n return this._y;\r\n\r\n }\r\n\r\n set y(value) {\r\n\r\n this._y = value;\r\n this._onChangeCallback();\r\n\r\n }\r\n\r\n get z() {\r\n\r\n return this._z;\r\n\r\n }\r\n\r\n set z(value) {\r\n\r\n this._z = value;\r\n this._onChangeCallback();\r\n\r\n }\r\n\r\n get w() {\r\n\r\n return this._w;\r\n\r\n }\r\n\r\n set w(value) {\r\n\r\n this._w = value;\r\n this._onChangeCallback();\r\n\r\n }\r\n\r\n set(x, y, z, w) {\r\n\r\n this._x = x;\r\n this._y = y;\r\n this._z = z;\r\n this._w = w;\r\n\r\n this._onChangeCallback();\r\n\r\n return this;\r\n\r\n }\r\n\r\n clone() {\r\n\r\n return new this.constructor(this._x, this._y, this._z, this._w);\r\n\r\n }\r\n\r\n copy(quaternion) {\r\n\r\n this._x = quaternion.x;\r\n this._y = quaternion.y;\r\n this._z = quaternion.z;\r\n this._w = quaternion.w;\r\n\r\n this._onChangeCallback();\r\n\r\n return this;\r\n\r\n }\r\n\r\n setFromEuler(euler, update = true) {\r\n\r\n const x = euler._x, y = euler._y, z = euler._z, order = euler._order;\r\n\r\n // http://www.mathworks.com/matlabcentral/fileexchange/\r\n // 20696-function-to-convert-between-dcm-euler-angles-quaternions-and-euler-vectors/\r\n // content/SpinCalc.m\r\n\r\n const cos = Math.cos;\r\n const sin = Math.sin;\r\n\r\n const c1 = cos(x / 2);\r\n const c2 = cos(y / 2);\r\n const c3 = cos(z / 2);\r\n\r\n const s1 = sin(x / 2);\r\n const s2 = sin(y / 2);\r\n const s3 = sin(z / 2);\r\n\r\n switch (order) {\r\n\r\n case 'XYZ':\r\n this._x = s1 * c2 * c3 + c1 * s2 * s3;\r\n this._y = c1 * s2 * c3 - s1 * c2 * s3;\r\n this._z = c1 * c2 * s3 + s1 * s2 * c3;\r\n this._w = c1 * c2 * c3 - s1 * s2 * s3;\r\n break;\r\n\r\n case 'YXZ':\r\n this._x = s1 * c2 * c3 + c1 * s2 * s3;\r\n this._y = c1 * s2 * c3 - s1 * c2 * s3;\r\n this._z = c1 * c2 * s3 - s1 * s2 * c3;\r\n this._w = c1 * c2 * c3 + s1 * s2 * s3;\r\n break;\r\n\r\n case 'ZXY':\r\n this._x = s1 * c2 * c3 - c1 * s2 * s3;\r\n this._y = c1 * s2 * c3 + s1 * c2 * s3;\r\n this._z = c1 * c2 * s3 + s1 * s2 * c3;\r\n this._w = c1 * c2 * c3 - s1 * s2 * s3;\r\n break;\r\n\r\n case 'ZYX':\r\n this._x = s1 * c2 * c3 - c1 * s2 * s3;\r\n this._y = c1 * s2 * c3 + s1 * c2 * s3;\r\n this._z = c1 * c2 * s3 - s1 * s2 * c3;\r\n this._w = c1 * c2 * c3 + s1 * s2 * s3;\r\n break;\r\n\r\n case 'YZX':\r\n this._x = s1 * c2 * c3 + c1 * s2 * s3;\r\n this._y = c1 * s2 * c3 + s1 * c2 * s3;\r\n this._z = c1 * c2 * s3 - s1 * s2 * c3;\r\n this._w = c1 * c2 * c3 - s1 * s2 * s3;\r\n break;\r\n\r\n case 'XZY':\r\n this._x = s1 * c2 * c3 - c1 * s2 * s3;\r\n this._y = c1 * s2 * c3 - s1 * c2 * s3;\r\n this._z = c1 * c2 * s3 + s1 * s2 * c3;\r\n this._w = c1 * c2 * c3 + s1 * s2 * s3;\r\n break;\r\n\r\n default:\r\n console.warn('THREE.Quaternion: .setFromEuler() encountered an unknown order: ' + order);\r\n\r\n }\r\n\r\n if (update === true) this._onChangeCallback();\r\n\r\n return this;\r\n\r\n }\r\n\r\n setFromAxisAngle(axis, angle) {\r\n\r\n // http://www.euclideanspace.com/maths/geometry/rotations/conversions/angleToQuaternion/index.htm\r\n\r\n // assumes axis is normalized\r\n\r\n const halfAngle = angle / 2, s = Math.sin(halfAngle);\r\n\r\n this._x = axis.x * s;\r\n this._y = axis.y * s;\r\n this._z = axis.z * s;\r\n this._w = Math.cos(halfAngle);\r\n\r\n this._onChangeCallback();\r\n\r\n return this;\r\n\r\n }\r\n\r\n setFromRotationMatrix(m) {\r\n\r\n // http://www.euclideanspace.com/maths/geometry/rotations/conversions/matrixToQuaternion/index.htm\r\n\r\n // assumes the upper 3x3 of m is a pure rotation matrix (i.e, unscaled)\r\n\r\n const te = m.elements,\r\n\r\n m11 = te[0], m12 = te[4], m13 = te[8],\r\n m21 = te[1], m22 = te[5], m23 = te[9],\r\n m31 = te[2], m32 = te[6], m33 = te[10],\r\n\r\n trace = m11 + m22 + m33;\r\n\r\n if (trace > 0) {\r\n\r\n const s = 0.5 / Math.sqrt(trace + 1.0);\r\n\r\n this._w = 0.25 / s;\r\n this._x = (m32 - m23) * s;\r\n this._y = (m13 - m31) * s;\r\n this._z = (m21 - m12) * s;\r\n\r\n } else if (m11 > m22 && m11 > m33) {\r\n\r\n const s = 2.0 * Math.sqrt(1.0 + m11 - m22 - m33);\r\n\r\n this._w = (m32 - m23) / s;\r\n this._x = 0.25 * s;\r\n this._y = (m12 + m21) / s;\r\n this._z = (m13 + m31) / s;\r\n\r\n } else if (m22 > m33) {\r\n\r\n const s = 2.0 * Math.sqrt(1.0 + m22 - m11 - m33);\r\n\r\n this._w = (m13 - m31) / s;\r\n this._x = (m12 + m21) / s;\r\n this._y = 0.25 * s;\r\n this._z = (m23 + m32) / s;\r\n\r\n } else {\r\n\r\n const s = 2.0 * Math.sqrt(1.0 + m33 - m11 - m22);\r\n\r\n this._w = (m21 - m12) / s;\r\n this._x = (m13 + m31) / s;\r\n this._y = (m23 + m32) / s;\r\n this._z = 0.25 * s;\r\n\r\n }\r\n\r\n this._onChangeCallback();\r\n\r\n return this;\r\n\r\n }\r\n\r\n setFromUnitVectors(vFrom, vTo) {\r\n\r\n // assumes direction vectors vFrom and vTo are normalized\r\n\r\n let r = vFrom.dot(vTo) + 1;\r\n\r\n if (r < Number.EPSILON) {\r\n\r\n // vFrom and vTo point in opposite directions\r\n\r\n r = 0;\r\n\r\n if (Math.abs(vFrom.x) > Math.abs(vFrom.z)) {\r\n\r\n this._x = -vFrom.y;\r\n this._y = vFrom.x;\r\n this._z = 0;\r\n this._w = r;\r\n\r\n } else {\r\n\r\n this._x = 0;\r\n this._y = -vFrom.z;\r\n this._z = vFrom.y;\r\n this._w = r;\r\n\r\n }\r\n\r\n } else {\r\n\r\n // crossVectors( vFrom, vTo ); // inlined to avoid cyclic dependency on Vector3\r\n\r\n this._x = vFrom.y * vTo.z - vFrom.z * vTo.y;\r\n this._y = vFrom.z * vTo.x - vFrom.x * vTo.z;\r\n this._z = vFrom.x * vTo.y - vFrom.y * vTo.x;\r\n this._w = r;\r\n\r\n }\r\n\r\n return this.normalize();\r\n\r\n }\r\n\r\n // angleTo(q) {\r\n\r\n // return 2 * Math.acos(Math.abs(clamp(this.dot(q), -1, 1)));\r\n\r\n // }\r\n\r\n rotateTowards(q, step) {\r\n\r\n const angle = this.angleTo(q);\r\n\r\n if (angle === 0) return this;\r\n\r\n const t = Math.min(1, step / angle);\r\n\r\n this.slerp(q, t);\r\n\r\n return this;\r\n\r\n }\r\n\r\n identity() {\r\n\r\n return this.set(0, 0, 0, 1);\r\n\r\n }\r\n\r\n invert() {\r\n\r\n // quaternion is assumed to have unit length\r\n\r\n return this.conjugate();\r\n\r\n }\r\n\r\n conjugate() {\r\n\r\n this._x *= -1;\r\n this._y *= -1;\r\n this._z *= -1;\r\n\r\n this._onChangeCallback();\r\n\r\n return this;\r\n\r\n }\r\n\r\n dot(v) {\r\n\r\n return this._x * v._x + this._y * v._y + this._z * v._z + this._w * v._w;\r\n\r\n }\r\n\r\n lengthSq() {\r\n\r\n return this._x * this._x + this._y * this._y + this._z * this._z + this._w * this._w;\r\n\r\n }\r\n\r\n length() {\r\n\r\n return Math.sqrt(this._x * this._x + this._y * this._y + this._z * this._z + this._w * this._w);\r\n\r\n }\r\n\r\n normalize() {\r\n\r\n let l = this.length();\r\n\r\n if (l === 0) {\r\n\r\n this._x = 0;\r\n this._y = 0;\r\n this._z = 0;\r\n this._w = 1;\r\n\r\n } else {\r\n\r\n l = 1 / l;\r\n\r\n this._x = this._x * l;\r\n this._y = this._y * l;\r\n this._z = this._z * l;\r\n this._w = this._w * l;\r\n\r\n }\r\n\r\n this._onChangeCallback();\r\n\r\n return this;\r\n\r\n }\r\n\r\n multiply(q) {\r\n\r\n return this.multiplyQuaternions(this, q);\r\n\r\n }\r\n\r\n premultiply(q) {\r\n\r\n return this.multiplyQuaternions(q, this);\r\n\r\n }\r\n\r\n multiplyQuaternions(a, b) {\r\n\r\n // from http://www.euclideanspace.com/maths/algebra/realNormedAlgebra/quaternions/code/index.htm\r\n\r\n const qax = a._x, qay = a._y, qaz = a._z, qaw = a._w;\r\n const qbx = b._x, qby = b._y, qbz = b._z, qbw = b._w;\r\n\r\n this._x = qax * qbw + qaw * qbx + qay * qbz - qaz * qby;\r\n this._y = qay * qbw + qaw * qby + qaz * qbx - qax * qbz;\r\n this._z = qaz * qbw + qaw * qbz + qax * qby - qay * qbx;\r\n this._w = qaw * qbw - qax * qbx - qay * qby - qaz * qbz;\r\n\r\n this._onChangeCallback();\r\n\r\n return this;\r\n\r\n }\r\n\r\n slerp(qb, t) {\r\n\r\n if (t === 0) return this;\r\n if (t === 1) return this.copy(qb);\r\n\r\n const x = this._x, y = this._y, z = this._z, w = this._w;\r\n\r\n // http://www.euclideanspace.com/maths/algebra/realNormedAlgebra/quaternions/slerp/\r\n\r\n let cosHalfTheta = w * qb._w + x * qb._x + y * qb._y + z * qb._z;\r\n\r\n if (cosHalfTheta < 0) {\r\n\r\n this._w = -qb._w;\r\n this._x = -qb._x;\r\n this._y = -qb._y;\r\n this._z = -qb._z;\r\n\r\n cosHalfTheta = -cosHalfTheta;\r\n\r\n } else {\r\n\r\n this.copy(qb);\r\n\r\n }\r\n\r\n if (cosHalfTheta >= 1.0) {\r\n\r\n this._w = w;\r\n this._x = x;\r\n this._y = y;\r\n this._z = z;\r\n\r\n return this;\r\n\r\n }\r\n\r\n const sqrSinHalfTheta = 1.0 - cosHalfTheta * cosHalfTheta;\r\n\r\n if (sqrSinHalfTheta <= Number.EPSILON) {\r\n\r\n const s = 1 - t;\r\n this._w = s * w + t * this._w;\r\n this._x = s * x + t * this._x;\r\n this._y = s * y + t * this._y;\r\n this._z = s * z + t * this._z;\r\n\r\n this.normalize(); // normalize calls _onChangeCallback()\r\n\r\n return this;\r\n\r\n }\r\n\r\n const sinHalfTheta = Math.sqrt(sqrSinHalfTheta);\r\n const halfTheta = Math.atan2(sinHalfTheta, cosHalfTheta);\r\n const ratioA = Math.sin((1 - t) * halfTheta) / sinHalfTheta,\r\n ratioB = Math.sin(t * halfTheta) / sinHalfTheta;\r\n\r\n this._w = (w * ratioA + this._w * ratioB);\r\n this._x = (x * ratioA + this._x * ratioB);\r\n this._y = (y * ratioA + this._y * ratioB);\r\n this._z = (z * ratioA + this._z * ratioB);\r\n\r\n this._onChangeCallback();\r\n\r\n return this;\r\n\r\n }\r\n\r\n slerpQuaternions(qa, qb, t) {\r\n\r\n return this.copy(qa).slerp(qb, t);\r\n\r\n }\r\n\r\n random() {\r\n\r\n // sets this quaternion to a uniform random unit quaternnion\r\n\r\n // Ken Shoemake\r\n // Uniform random rotations\r\n // D. Kirk, editor, Graphics Gems III, pages 124-132. Academic Press, New York, 1992.\r\n\r\n const theta1 = 2 * Math.PI * Math.random();\r\n const theta2 = 2 * Math.PI * Math.random();\r\n\r\n const x0 = Math.random();\r\n const r1 = Math.sqrt(1 - x0);\r\n const r2 = Math.sqrt(x0);\r\n\r\n return this.set(\r\n r1 * Math.sin(theta1),\r\n r1 * Math.cos(theta1),\r\n r2 * Math.sin(theta2),\r\n r2 * Math.cos(theta2)\r\n );\r\n\r\n }\r\n\r\n equals(quaternion) {\r\n\r\n return (quaternion._x === this._x) && (quaternion._y === this._y) && (quaternion._z === this._z) && (quaternion._w === this._w);\r\n\r\n }\r\n\r\n fromArray(array, offset = 0) {\r\n\r\n this._x = array[offset];\r\n this._y = array[offset + 1];\r\n this._z = array[offset + 2];\r\n this._w = array[offset + 3];\r\n\r\n this._onChangeCallback();\r\n\r\n return this;\r\n\r\n }\r\n\r\n toArray(array = [], offset = 0) {\r\n\r\n array[offset] = this._x;\r\n array[offset + 1] = this._y;\r\n array[offset + 2] = this._z;\r\n array[offset + 3] = this._w;\r\n\r\n return array;\r\n\r\n }\r\n\r\n fromBufferAttribute(attribute, index) {\r\n\r\n this._x = attribute.getX(index);\r\n this._y = attribute.getY(index);\r\n this._z = attribute.getZ(index);\r\n this._w = attribute.getW(index);\r\n\r\n this._onChangeCallback();\r\n\r\n return this;\r\n\r\n }\r\n\r\n toJSON() {\r\n\r\n return this.toArray();\r\n\r\n }\r\n\r\n _onChange(callback) {\r\n\r\n this._onChangeCallback = callback;\r\n\r\n return this;\r\n\r\n }\r\n\r\n _onChangeCallback() { }\r\n\r\n // * [Symbol.iterator]() {\r\n\r\n // yield this._x;\r\n // yield this._y;\r\n // yield this._z;\r\n // yield this._w;\r\n\r\n // }\r\n\r\n}\r\n\r\nexport { Quaternion };\r\n","// import * as MathUtils from './MathUtils.js';\r\n// code copy from https://github.com/mrdoob/three.js/blob/dev/src/math/Vector3.js\r\n\r\nimport { Quaternion } from './Quaternion';\r\n\r\nconst _quaternion = new Quaternion();\r\n\r\nclass Vector3 {\r\n\r\n constructor(x = 0, y = 0, z = 0) {\r\n this.x = x;\r\n this.y = y;\r\n this.z = z;\r\n\r\n }\r\n\r\n set(x, y, z) {\r\n\r\n if (z === undefined) z = this.z; // sprite.scale.set(x,y)\r\n\r\n this.x = x;\r\n this.y = y;\r\n this.z = z;\r\n\r\n return this;\r\n\r\n }\r\n\r\n // setScalar(scalar) {\r\n\r\n // this.x = scalar;\r\n // this.y = scalar;\r\n // this.z = scalar;\r\n\r\n // return this;\r\n\r\n // }\r\n\r\n // setX(x) {\r\n\r\n // this.x = x;\r\n\r\n // return this;\r\n\r\n // }\r\n\r\n // setY(y) {\r\n\r\n // this.y = y;\r\n\r\n // return this;\r\n\r\n // }\r\n\r\n // setZ(z) {\r\n\r\n // this.z = z;\r\n\r\n // return this;\r\n\r\n // }\r\n\r\n // setComponent(index, value) {\r\n\r\n // switch (index) {\r\n\r\n // case 0: this.x = value; break;\r\n // case 1: this.y = value; break;\r\n // case 2: this.z = value; break;\r\n // default: throw new Error('index is out of range: ' + index);\r\n\r\n // }\r\n\r\n // return this;\r\n\r\n // }\r\n\r\n // getComponent(index) {\r\n\r\n // switch (index) {\r\n\r\n // case 0: return this.x;\r\n // case 1: return this.y;\r\n // case 2: return this.z;\r\n // default: throw new Error('index is out of range: ' + index);\r\n\r\n // }\r\n\r\n // }\r\n\r\n clone() {\r\n\r\n return new this.constructor(this.x, this.y, this.z);\r\n\r\n }\r\n\r\n copy(v) {\r\n\r\n this.x = v.x;\r\n this.y = v.y;\r\n this.z = v.z;\r\n\r\n return this;\r\n\r\n }\r\n\r\n add(v) {\r\n\r\n this.x += v.x;\r\n this.y += v.y;\r\n this.z += v.z;\r\n\r\n return this;\r\n\r\n }\r\n\r\n addScalar(s) {\r\n\r\n this.x += s;\r\n this.y += s;\r\n this.z += s;\r\n\r\n return this;\r\n\r\n }\r\n\r\n addVectors(a, b) {\r\n\r\n this.x = a.x + b.x;\r\n this.y = a.y + b.y;\r\n this.z = a.z + b.z;\r\n\r\n return this;\r\n\r\n }\r\n\r\n addScaledVector(v, s) {\r\n\r\n this.x += v.x * s;\r\n this.y += v.y * s;\r\n this.z += v.z * s;\r\n\r\n return this;\r\n\r\n }\r\n\r\n sub(v) {\r\n\r\n this.x -= v.x;\r\n this.y -= v.y;\r\n this.z -= v.z;\r\n\r\n return this;\r\n\r\n }\r\n\r\n subScalar(s) {\r\n\r\n this.x -= s;\r\n this.y -= s;\r\n this.z -= s;\r\n\r\n return this;\r\n\r\n }\r\n\r\n subVectors(a, b) {\r\n\r\n this.x = a.x - b.x;\r\n this.y = a.y - b.y;\r\n this.z = a.z - b.z;\r\n\r\n return this;\r\n\r\n }\r\n\r\n multiply(v) {\r\n\r\n this.x *= v.x;\r\n this.y *= v.y;\r\n this.z *= v.z;\r\n\r\n return this;\r\n\r\n }\r\n\r\n multiplyScalar(scalar) {\r\n\r\n this.x *= scalar;\r\n this.y *= scalar;\r\n this.z *= scalar;\r\n\r\n return this;\r\n\r\n }\r\n\r\n multiplyVectors(a, b) {\r\n\r\n this.x = a.x * b.x;\r\n this.y = a.y * b.y;\r\n this.z = a.z * b.z;\r\n\r\n return this;\r\n\r\n }\r\n\r\n // applyEuler(euler) {\r\n\r\n // return this.applyQuaternion(_quaternion.setFromEuler(euler));\r\n\r\n // }\r\n\r\n applyAxisAngle(axis, angle) {\r\n\r\n return this.applyQuaternion(_quaternion.setFromAxisAngle(axis, angle));\r\n\r\n }\r\n\r\n // applyMatrix3(m) {\r\n\r\n // const x = this.x, y = this.y, z = this.z;\r\n // const e = m.elements;\r\n\r\n // this.x = e[0] * x + e[3] * y + e[6] * z;\r\n // this.y = e[1] * x + e[4] * y + e[7] * z;\r\n // this.z = e[2] * x + e[5] * y + e[8] * z;\r\n\r\n // return this;\r\n\r\n // }\r\n\r\n // applyNormalMatrix(m) {\r\n\r\n // return this.applyMatrix3(m).normalize();\r\n\r\n // }\r\n\r\n applyMatrix4(m) {\r\n\r\n const x = this.x, y = this.y, z = this.z;\r\n const e = m.elements;\r\n\r\n const w = 1 / (e[3] * x + e[7] * y + e[11] * z + e[15]);\r\n\r\n this.x = (e[0] * x + e[4] * y + e[8] * z + e[12]) * w;\r\n this.y = (e[1] * x + e[5] * y + e[9] * z + e[13]) * w;\r\n this.z = (e[2] * x + e[6] * y + e[10] * z + e[14]) * w;\r\n\r\n return this;\r\n\r\n }\r\n\r\n applyQuaternion(q) {\r\n\r\n const x = this.x, y = this.y, z = this.z;\r\n const qx = q.x, qy = q.y, qz = q.z, qw = q.w;\r\n\r\n // calculate quat * vector\r\n\r\n const ix = qw * x + qy * z - qz * y;\r\n const iy = qw * y + qz * x - qx * z;\r\n const iz = qw * z + qx * y - qy * x;\r\n const iw = -qx * x - qy * y - qz * z;\r\n\r\n // calculate result * inverse quat\r\n\r\n this.x = ix * qw + iw * -qx + iy * -qz - iz * -qy;\r\n this.y = iy * qw + iw * -qy + iz * -qx - ix * -qz;\r\n this.z = iz * qw + iw * -qz + ix * -qy - iy * -qx;\r\n\r\n return this;\r\n\r\n }\r\n\r\n // project(camera) {\r\n\r\n // return this.applyMatrix4(camera.matrixWorldInverse).applyMatrix4(camera.projectionMatrix);\r\n\r\n // }\r\n\r\n // unproject(camera) {\r\n\r\n // return this.applyMatrix4(camera.projectionMatrixInverse).applyMatrix4(camera.matrixWorld);\r\n\r\n // }\r\n\r\n // transformDirection(m) {\r\n\r\n // // input: THREE.Matrix4 affine matrix\r\n // // vector interpreted as a direction\r\n\r\n // const x = this.x, y = this.y, z = this.z;\r\n // const e = m.elements;\r\n\r\n // this.x = e[0] * x + e[4] * y + e[8] * z;\r\n // this.y = e[1] * x + e[5] * y + e[9] * z;\r\n // this.z = e[2] * x + e[6] * y + e[10] * z;\r\n\r\n // return this.normalize();\r\n\r\n // }\r\n\r\n divide(v) {\r\n\r\n this.x /= v.x;\r\n this.y /= v.y;\r\n this.z /= v.z;\r\n\r\n return this;\r\n\r\n }\r\n\r\n divideScalar(scalar) {\r\n\r\n return this.multiplyScalar(1 / scalar);\r\n\r\n }\r\n\r\n min(v) {\r\n\r\n this.x = Math.min(this.x, v.x);\r\n this.y = Math.min(this.y, v.y);\r\n this.z = Math.min(this.z, v.z);\r\n\r\n return this;\r\n\r\n }\r\n\r\n max(v) {\r\n\r\n this.x = Math.max(this.x, v.x);\r\n this.y = Math.max(this.y, v.y);\r\n this.z = Math.max(this.z, v.z);\r\n\r\n return this;\r\n\r\n }\r\n\r\n clamp(min, max) {\r\n\r\n // assumes min < max, componentwise\r\n\r\n this.x = Math.max(min.x, Math.min(max.x, this.x));\r\n this.y = Math.max(min.y, Math.min(max.y, this.y));\r\n this.z = Math.max(min.z, Math.min(max.z, this.z));\r\n\r\n return this;\r\n\r\n }\r\n\r\n clampScalar(minVal, maxVal) {\r\n\r\n this.x = Math.max(minVal, Math.min(maxVal, this.x));\r\n this.y = Math.max(minVal, Math.min(maxVal, this.y));\r\n this.z = Math.max(minVal, Math.min(maxVal, this.z));\r\n\r\n return this;\r\n\r\n }\r\n\r\n clampLength(min, max) {\r\n\r\n const length = this.length();\r\n\r\n return this.divideScalar(length || 1).multiplyScalar(Math.max(min, Math.min(max, length)));\r\n\r\n }\r\n\r\n // floor() {\r\n\r\n // this.x = Math.floor(this.x);\r\n // this.y = Math.floor(this.y);\r\n // this.z = Math.floor(this.z);\r\n\r\n // return this;\r\n\r\n // }\r\n\r\n // ceil() {\r\n\r\n // this.x = Math.ceil(this.x);\r\n // this.y = Math.ceil(this.y);\r\n // this.z = Math.ceil(this.z);\r\n\r\n // return this;\r\n\r\n // }\r\n\r\n // round() {\r\n\r\n // this.x = Math.round(this.x);\r\n // this.y = Math.round(this.y);\r\n // this.z = Math.round(this.z);\r\n\r\n // return this;\r\n\r\n // }\r\n\r\n // roundToZero() {\r\n\r\n // this.x = (this.x < 0) ? Math.ceil(this.x) : Math.floor(this.x);\r\n // this.y = (this.y < 0) ? Math.ceil(this.y) : Math.floor(this.y);\r\n // this.z = (this.z < 0) ? Math.ceil(this.z) : Math.floor(this.z);\r\n\r\n // return this;\r\n\r\n // }\r\n\r\n // negate() {\r\n\r\n // this.x = -this.x;\r\n // this.y = -this.y;\r\n // this.z = -this.z;\r\n\r\n // return this;\r\n\r\n // }\r\n\r\n dot(v) {\r\n\r\n return this.x * v.x + this.y * v.y + this.z * v.z;\r\n\r\n }\r\n\r\n // TODO lengthSquared?\r\n\r\n lengthSq() {\r\n\r\n return this.x * this.x + this.y * this.y + this.z * this.z;\r\n\r\n }\r\n\r\n length() {\r\n\r\n return Math.sqrt(this.x * this.x + this.y * this.y + this.z * this.z);\r\n\r\n }\r\n\r\n // manhattanLength() {\r\n\r\n // return Math.abs(this.x) + Math.abs(this.y) + Math.abs(this.z);\r\n\r\n // }\r\n\r\n normalize() {\r\n\r\n return this.divideScalar(this.length() || 1);\r\n\r\n }\r\n\r\n setLength(length) {\r\n\r\n return this.normalize().multiplyScalar(length);\r\n\r\n }\r\n\r\n lerp(v, alpha) {\r\n\r\n this.x += (v.x - this.x) * alpha;\r\n this.y += (v.y - this.y) * alpha;\r\n this.z += (v.z - this.z) * alpha;\r\n\r\n return this;\r\n\r\n }\r\n\r\n lerpVectors(v1, v2, alpha) {\r\n\r\n this.x = v1.x + (v2.x - v1.x) * alpha;\r\n this.y = v1.y + (v2.y - v1.y) * alpha;\r\n this.z = v1.z + (v2.z - v1.z) * alpha;\r\n\r\n return this;\r\n\r\n }\r\n\r\n cross(v) {\r\n\r\n return this.crossVectors(this, v);\r\n\r\n }\r\n\r\n crossVectors(a, b) {\r\n\r\n const ax = a.x, ay = a.y, az = a.z;\r\n const bx = b.x, by = b.y, bz = b.z;\r\n\r\n this.x = ay * bz - az * by;\r\n this.y = az * bx - ax * bz;\r\n this.z = ax * by - ay * bx;\r\n\r\n return this;\r\n\r\n }\r\n\r\n // projectOnVector(v) {\r\n\r\n // const denominator = v.lengthSq();\r\n\r\n // if (denominator === 0) return this.set(0, 0, 0);\r\n\r\n // const scalar = v.dot(this) / denominator;\r\n\r\n // return this.copy(v).multiplyScalar(scalar);\r\n\r\n // }\r\n\r\n // projectOnPlane(planeNormal) {\r\n\r\n // _vector.copy(this).projectOnVector(planeNormal);\r\n\r\n // return this.sub(_vector);\r\n\r\n // }\r\n\r\n // reflect(normal) {\r\n\r\n // // reflect incident vector off plane orthogonal to normal\r\n // // normal is assumed to have unit length\r\n\r\n // return this.sub(_vector.copy(normal).multiplyScalar(2 * this.dot(normal)));\r\n\r\n // }\r\n\r\n // angleTo(v) {\r\n\r\n // const denominator = Math.sqrt(this.lengthSq() * v.lengthSq());\r\n\r\n // if (denominator === 0) return Math.PI / 2;\r\n\r\n // const theta = this.dot(v) / denominator;\r\n\r\n // // clamp, to handle numerical problems\r\n\r\n // return Math.acos(MathUtils.clamp(theta, -1, 1));\r\n\r\n // }\r\n\r\n distanceTo(v) {\r\n\r\n return Math.sqrt(this.distanceToSquared(v));\r\n\r\n }\r\n\r\n // distanceToSquared(v) {\r\n\r\n // const dx = this.x - v.x, dy = this.y - v.y, dz = this.z - v.z;\r\n\r\n // return dx * dx + dy * dy + dz * dz;\r\n\r\n // }\r\n\r\n // manhattanDistanceTo(v) {\r\n\r\n // return Math.abs(this.x - v.x) + Math.abs(this.y - v.y) + Math.abs(this.z - v.z);\r\n\r\n // }\r\n\r\n // setFromSpherical(s) {\r\n\r\n // return this.setFromSphericalCoords(s.radius, s.phi, s.theta);\r\n\r\n // }\r\n\r\n // setFromSphericalCoords(radius, phi, theta) {\r\n\r\n // const sinPhiRadius = Math.sin(phi) * radius;\r\n\r\n // this.x = sinPhiRadius * Math.sin(theta);\r\n // this.y = Math.cos(phi) * radius;\r\n // this.z = sinPhiRadius * Math.cos(theta);\r\n\r\n // return this;\r\n\r\n // }\r\n\r\n // setFromCylindrical(c) {\r\n\r\n // return this.setFromCylindricalCoords(c.radius, c.theta, c.y);\r\n\r\n // }\r\n\r\n // setFromCylindricalCoords(radius, theta, y) {\r\n\r\n // this.x = radius * Math.sin(theta);\r\n // this.y = y;\r\n // this.z = radius * Math.cos(theta);\r\n\r\n // return this;\r\n\r\n // }\r\n\r\n // setFromMatrixPosition(m) {\r\n\r\n // const e = m.elements;\r\n\r\n // this.x = e[12];\r\n // this.y = e[13];\r\n // this.z = e[14];\r\n\r\n // return this;\r\n\r\n // }\r\n\r\n // setFromMatrixScale(m) {\r\n\r\n // const sx = this.setFromMatrixColumn(m, 0).length();\r\n // const sy = this.setFromMatrixColumn(m, 1).length();\r\n // const sz = this.setFromMatrixColumn(m, 2).length();\r\n\r\n // this.x = sx;\r\n // this.y = sy;\r\n // this.z = sz;\r\n\r\n // return this;\r\n\r\n // }\r\n\r\n // setFromMatrixColumn(m, index) {\r\n\r\n // return this.fromArray(m.elements, index * 4);\r\n\r\n // }\r\n\r\n // setFromMatrix3Column(m, index) {\r\n\r\n // return this.fromArray(m.elements, index * 3);\r\n\r\n // }\r\n\r\n // setFromEuler(e) {\r\n\r\n // this.x = e._x;\r\n // this.y = e._y;\r\n // this.z = e._z;\r\n\r\n // return this;\r\n\r\n // }\r\n\r\n // setFromColor(c) {\r\n\r\n // this.x = c.r;\r\n // this.y = c.g;\r\n // this.z = c.b;\r\n\r\n // return this;\r\n\r\n // }\r\n\r\n equals(v) {\r\n\r\n return ((v.x === this.x) && (v.y === this.y) && (v.z === this.z));\r\n\r\n }\r\n\r\n fromArray(array, offset = 0) {\r\n\r\n this.x = array[offset];\r\n this.y = array[offset + 1];\r\n this.z = array[offset + 2];\r\n\r\n return this;\r\n\r\n }\r\n\r\n // toArray(array = [], offset = 0) {\r\n\r\n // array[offset] = this.x;\r\n // array[offset + 1] = this.y;\r\n // array[offset + 2] = this.z;\r\n\r\n // return array;\r\n\r\n // }\r\n\r\n // fromBufferAttribute(attribute, index) {\r\n\r\n // this.x = attribute.getX(index);\r\n // this.y = attribute.getY(index);\r\n // this.z = attribute.getZ(index);\r\n\r\n // return this;\r\n\r\n // }\r\n\r\n random() {\r\n\r\n this.x = Math.random();\r\n this.y = Math.random();\r\n this.z = Math.random();\r\n\r\n return this;\r\n\r\n }\r\n\r\n // randomDirection() {\r\n\r\n // // Derived from https://mathworld.wolfram.com/SpherePointPicking.html\r\n\r\n // const u = (Math.random() - 0.5) * 2;\r\n // const t = Math.random() * Math.PI * 2;\r\n // const f = Math.sqrt(1 - u ** 2);\r\n\r\n // this.x = f * Math.cos(t);\r\n // this.y = f * Math.sin(t);\r\n // this.z = u;\r\n\r\n // return this;\r\n\r\n // }\r\n\r\n}\r\n\r\nexport { Vector3 };\r\n",null,null,null,null,"/* eslint-disable no-tabs */\r\n\r\n// code copy from https://github.com/shawn0326/three.path/blob/master/src/PathPoint.js\r\n\r\nimport { Vector3 } from '../math/Vector3';\r\n\r\n/**\r\n * PathPoint\r\n */\r\nclass PathPoint {\r\n\tconstructor() {\r\n\t\tthis.pos = new Vector3();\r\n\t\tthis.dir = new Vector3();\r\n\t\tthis.right = new Vector3();\r\n\t\tthis.up = new Vector3(); // normal\r\n\t\tthis.dist = 0; // distance from start\r\n\t\tthis.widthScale = 1; // for corner\r\n\t\tthis.sharp = false; // marks as sharp corner\r\n\t}\r\n\r\n\tlerpPathPoints(p1, p2, alpha) {\r\n\t\tthis.pos.lerpVectors(p1.pos, p2.pos, alpha);\r\n\t\tthis.dir.lerpVectors(p1.dir, p2.dir, alpha);\r\n\t\tthis.up.lerpVectors(p1.up, p2.up, alpha);\r\n\t\tthis.right.lerpVectors(p1.right, p2.right, alpha);\r\n\t\tthis.dist = (p2.dist - p1.dist) * alpha + p1.dist;\r\n\t\tthis.widthScale = (p2.widthScale - p1.widthScale) * alpha + p1.widthScale;\r\n\t}\r\n\r\n\tcopy(source) {\r\n\t\tthis.pos.copy(source.pos);\r\n\t\tthis.dir.copy(source.dir);\r\n\t\tthis.up.copy(source.up);\r\n\t\tthis.right.copy(source.right);\r\n\t\tthis.dist = source.dist;\r\n\t\tthis.widthScale = source.widthScale;\r\n\t}\r\n\r\n}\r\n\r\nexport { PathPoint };\r\n","// code copy from https://github.com/mrdoob/three.js/blob/dev/src/math/Matrix4.js\r\n// import { WebGLCoordinateSystem, WebGPUCoordinateSystem } from '../constants.js';\r\n// import { Vector3 } from './Vector3.js';\r\n\r\nclass Matrix4 {\r\n\r\n constructor(n11, n12, n13, n14, n21, n22, n23, n24, n31, n32, n33, n34, n41, n42, n43, n44) {\r\n\r\n this.elements = [\r\n\r\n 1, 0, 0, 0,\r\n 0, 1, 0, 0,\r\n 0, 0, 1, 0,\r\n 0, 0, 0, 1\r\n\r\n ];\r\n\r\n if (n11 !== undefined) {\r\n\r\n this.set(n11, n12, n13, n14, n21, n22, n23, n24, n31, n32, n33, n34, n41, n42, n43, n44);\r\n\r\n }\r\n\r\n }\r\n\r\n set(n11, n12, n13, n14, n21, n22, n23, n24, n31, n32, n33, n34, n41, n42, n43, n44) {\r\n\r\n const te = this.elements;\r\n\r\n te[0] = n11; te[4] = n12; te[8] = n13; te[12] = n14;\r\n te[1] = n21; te[5] = n22; te[9] = n23; te[13] = n24;\r\n te[2] = n31; te[6] = n32; te[10] = n33; te[14] = n34;\r\n te[3] = n41; te[7] = n42; te[11] = n43; te[15] = n44;\r\n\r\n return this;\r\n\r\n }\r\n\r\n // identity() {\r\n\r\n // this.set(\r\n\r\n // 1, 0, 0, 0,\r\n // 0, 1, 0, 0,\r\n // 0, 0, 1, 0,\r\n // 0, 0, 0, 1\r\n\r\n // );\r\n\r\n // return this;\r\n\r\n // }\r\n\r\n // clone() {\r\n\r\n // return new Matrix4().fromArray(this.elements);\r\n\r\n // }\r\n\r\n // copy(m) {\r\n\r\n // const te = this.elements;\r\n // const me = m.elements;\r\n\r\n // te[0] = me[0]; te[1] = me[1]; te[2] = me[2]; te[3] = me[3];\r\n // te[4] = me[4]; te[5] = me[5]; te[6] = me[6]; te[7] = me[7];\r\n // te[8] = me[8]; te[9] = me[9]; te[10] = me[10]; te[11] = me[11];\r\n // te[12] = me[12]; te[13] = me[13]; te[14] = me[14]; te[15] = me[15];\r\n\r\n // return this;\r\n\r\n // }\r\n\r\n // copyPosition(m) {\r\n\r\n // const te = this.elements, me = m.elements;\r\n\r\n // te[12] = me[12];\r\n // te[13] = me[13];\r\n // te[14] = me[14];\r\n\r\n // return this;\r\n\r\n // }\r\n\r\n // setFromMatrix3(m) {\r\n\r\n // const me = m.elements;\r\n\r\n // this.set(\r\n\r\n // me[0], me[3], me[6], 0,\r\n // me[1], me[4], me[7], 0,\r\n // me[2], me[5], me[8], 0,\r\n // 0, 0, 0, 1\r\n\r\n // );\r\n\r\n // return this;\r\n\r\n // }\r\n\r\n // extractBasis(xAxis, yAxis, zAxis) {\r\n\r\n // xAxis.setFromMatrixColumn(this, 0);\r\n // yAxis.setFromMatrixColumn(this, 1);\r\n // zAxis.setFromMatrixColumn(this, 2);\r\n\r\n // return this;\r\n\r\n // }\r\n\r\n // makeBasis(xAxis, yAxis, zAxis) {\r\n\r\n // this.set(\r\n // xAxis.x, yAxis.x, zAxis.x, 0,\r\n // xAxis.y, yAxis.y, zAxis.y, 0,\r\n // xAxis.z, yAxis.z, zAxis.z, 0,\r\n // 0, 0, 0, 1\r\n // );\r\n\r\n // return this;\r\n\r\n // }\r\n\r\n // extractRotation(m) {\r\n\r\n // // this method does not support reflection matrices\r\n\r\n // const te = this.elements;\r\n // const me = m.elements;\r\n\r\n // const scaleX = 1 / _v1.setFromMatrixColumn(m, 0).length();\r\n // const scaleY = 1 / _v1.setFromMatrixColumn(m, 1).length();\r\n // const scaleZ = 1 / _v1.setFromMatrixColumn(m, 2).length();\r\n\r\n // te[0] = me[0] * scaleX;\r\n // te[1] = me[1] * scaleX;\r\n // te[2] = me[2] * scaleX;\r\n // te[3] = 0;\r\n\r\n // te[4] = me[4] * scaleY;\r\n // te[5] = me[5] * scaleY;\r\n // te[6] = me[6] * scaleY;\r\n // te[7] = 0;\r\n\r\n // te[8] = me[8] * scaleZ;\r\n // te[9] = me[9] * scaleZ;\r\n // te[10] = me[10] * scaleZ;\r\n // te[11] = 0;\r\n\r\n // te[12] = 0;\r\n // te[13] = 0;\r\n // te[14] = 0;\r\n // te[15] = 1;\r\n\r\n // return this;\r\n\r\n // }\r\n\r\n // makeRotationFromEuler(euler) {\r\n\r\n // const te = this.elements;\r\n\r\n // const x = euler.x, y = euler.y, z = euler.z;\r\n // const a = Math.cos(x), b = Math.sin(x);\r\n // const c = Math.cos(y), d = Math.sin(y);\r\n // const e = Math.cos(z), f = Math.sin(z);\r\n\r\n // if (euler.order === 'XYZ') {\r\n\r\n // const ae = a * e, af = a * f, be = b * e, bf = b * f;\r\n\r\n // te[0] = c * e;\r\n // te[4] = -c * f;\r\n // te[8] = d;\r\n\r\n // te[1] = af + be * d;\r\n // te[5] = ae - bf * d;\r\n // te[9] = -b * c;\r\n\r\n // te[2] = bf - ae * d;\r\n // te[6] = be + af * d;\r\n // te[10] = a * c;\r\n\r\n // } else if (euler.order === 'YXZ') {\r\n\r\n // const ce = c * e, cf = c * f, de = d * e, df = d * f;\r\n\r\n // te[0] = ce + df * b;\r\n // te[4] = de * b - cf;\r\n // te[8] = a * d;\r\n\r\n // te[1] = a * f;\r\n // te[5] = a * e;\r\n // te[9] = -b;\r\n\r\n // te[2] = cf * b - de;\r\n // te[6] = df + ce * b;\r\n // te[10] = a * c;\r\n\r\n // } else if (euler.order === 'ZXY') {\r\n\r\n // const ce = c * e, cf = c * f, de = d * e, df = d * f;\r\n\r\n // te[0] = ce - df * b;\r\n // te[4] = -a * f;\r\n // te[8] = de + cf * b;\r\n\r\n // te[1] = cf + de * b;\r\n // te[5] = a * e;\r\n // te[9] = df - ce * b;\r\n\r\n // te[2] = -a * d;\r\n // te[6] = b;\r\n // te[10] = a * c;\r\n\r\n // } else if (euler.order === 'ZYX') {\r\n\r\n // const ae = a * e, af = a * f, be = b * e, bf = b * f;\r\n\r\n // te[0] = c * e;\r\n // te[4] = be * d - af;\r\n // te[8] = ae * d + bf;\r\n\r\n // te[1] = c * f;\r\n // te[5] = bf * d + ae;\r\n // te[9] = af * d - be;\r\n\r\n // te[2] = -d;\r\n // te[6] = b * c;\r\n // te[10] = a * c;\r\n\r\n // } else if (euler.order === 'YZX') {\r\n\r\n // const ac = a * c, ad = a * d, bc = b * c, bd = b * d;\r\n\r\n // te[0] = c * e;\r\n // te[4] = bd - ac * f;\r\n // te[8] = bc * f + ad;\r\n\r\n // te[1] = f;\r\n // te[5] = a * e;\r\n // te[9] = -b * e;\r\n\r\n // te[2] = -d * e;\r\n // te[6] = ad * f + bc;\r\n // te[10] = ac - bd * f;\r\n\r\n // } else if (euler.order === 'XZY') {\r\n\r\n // const ac = a * c, ad = a * d, bc = b * c, bd = b * d;\r\n\r\n // te[0] = c * e;\r\n // te[4] = -f;\r\n // te[8] = d * e;\r\n\r\n // te[1] = ac * f + bd;\r\n // te[5] = a * e;\r\n // te[9] = ad * f - bc;\r\n\r\n // te[2] = bc * f - ad;\r\n // te[6] = b * e;\r\n // te[10] = bd * f + ac;\r\n\r\n // }\r\n\r\n // // bottom row\r\n // te[3] = 0;\r\n // te[7] = 0;\r\n // te[11] = 0;\r\n\r\n // // last column\r\n // te[12] = 0;\r\n // te[13] = 0;\r\n // te[14] = 0;\r\n // te[15] = 1;\r\n\r\n // return this;\r\n\r\n // }\r\n\r\n // makeRotationFromQuaternion(q) {\r\n\r\n // return this.compose(_zero, q, _one);\r\n\r\n // }\r\n\r\n // lookAt(eye, target, up) {\r\n\r\n // const te = this.elements;\r\n\r\n // _z.subVectors(eye, target);\r\n\r\n // if (_z.lengthSq() === 0) {\r\n\r\n // // eye and target are in the same position\r\n\r\n // _z.z = 1;\r\n\r\n // }\r\n\r\n // _z.normalize();\r\n // _x.crossVectors(up, _z);\r\n\r\n // if (_x.lengthSq() === 0) {\r\n\r\n // // up and z are parallel\r\n\r\n // if (Math.abs(up.z) === 1) {\r\n\r\n // _z.x += 0.0001;\r\n\r\n // } else {\r\n\r\n // _z.z += 0.0001;\r\n\r\n // }\r\n\r\n // _z.normalize();\r\n // _x.crossVectors(up, _z);\r\n\r\n // }\r\n\r\n // _x.normalize();\r\n // _y.crossVectors(_z, _x);\r\n\r\n // te[0] = _x.x; te[4] = _y.x; te[8] = _z.x;\r\n // te[1] = _x.y; te[5] = _y.y; te[9] = _z.y;\r\n // te[2] = _x.z; te[6] = _y.z; te[10] = _z.z;\r\n\r\n // return this;\r\n\r\n // }\r\n\r\n multiply(m) {\r\n\r\n return this.multiplyMatrices(this, m);\r\n\r\n }\r\n\r\n // premultiply(m) {\r\n\r\n // return this.multiplyMatrices(m, this);\r\n\r\n // }\r\n\r\n // multiplyMatrices(a, b) {\r\n\r\n // const ae = a.elements;\r\n // const be = b.elements;\r\n // const te = this.elements;\r\n\r\n // const a11 = ae[0], a12 = ae[4], a13 = ae[8], a14 = ae[12];\r\n // const a21 = ae[1], a22 = ae[5], a23 = ae[9], a24 = ae[13];\r\n // const a31 = ae[2], a32 = ae[6], a33 = ae[10], a34 = ae[14];\r\n // const a41 = ae[3], a42 = ae[7], a43 = ae[11], a44 = ae[15];\r\n\r\n // const b11 = be[0], b12 = be[4], b13 = be[8], b14 = be[12];\r\n // const b21 = be[1], b22 = be[5], b23 = be[9], b24 = be[13];\r\n // const b31 = be[2], b32 = be[6], b33 = be[10], b34 = be[14];\r\n // const b41 = be[3], b42 = be[7], b43 = be[11], b44 = be[15];\r\n\r\n // te[0] = a11 * b11 + a12 * b21 + a13 * b31 + a14 * b41;\r\n // te[4] = a11 * b12 + a12 * b22 + a13 * b32 + a14 * b42;\r\n // te[8] = a11 * b13 + a12 * b23 + a13 * b33 + a14 * b43;\r\n // te[12] = a11 * b14 + a12 * b24 + a13 * b34 + a14 * b44;\r\n\r\n // te[1] = a21 * b11 + a22 * b21 + a23 * b31 + a24 * b41;\r\n // te[5] = a21 * b12 + a22 * b22 + a23 * b32 + a24 * b42;\r\n // te[9] = a21 * b13 + a22 * b23 + a23 * b33 + a24 * b43;\r\n // te[13] = a21 * b14 + a22 * b24 + a23 * b34 + a24 * b44;\r\n\r\n // te[2] = a31 * b11 + a32 * b21 + a33 * b31 + a34 * b41;\r\n // te[6] = a31 * b12 + a32 * b22 + a33 * b32 + a34 * b42;\r\n // te[10] = a31 * b13 + a32 * b23 + a33 * b33 + a34 * b43;\r\n // te[14] = a31 * b14 + a32 * b24 + a33 * b34 + a34 * b44;\r\n\r\n // te[3] = a41 * b11 + a42 * b21 + a43 * b31 + a44 * b41;\r\n // te[7] = a41 * b12 + a42 * b22 + a43 * b32 + a44 * b42;\r\n // te[11] = a41 * b13 + a42 * b23 + a43 * b33 + a44 * b43;\r\n // te[15] = a41 * b14 + a42 * b24 + a43 * b34 + a44 * b44;\r\n\r\n // return this;\r\n\r\n // }\r\n\r\n // multiplyScalar(s) {\r\n\r\n // const te = this.elements;\r\n\r\n // te[0] *= s; te[4] *= s; te[8] *= s; te[12] *= s;\r\n // te[1] *= s; te[5] *= s; te[9] *= s; te[13] *= s;\r\n // te[2] *= s; te[6] *= s; te[10] *= s; te[14] *= s;\r\n // te[3] *= s; te[7] *= s; te[11] *= s; te[15] *= s;\r\n\r\n // return this;\r\n\r\n // }\r\n\r\n // determinant() {\r\n\r\n // const te = this.elements;\r\n\r\n // const n11 = te[0], n12 = te[4], n13 = te[8], n14 = te[12];\r\n // const n21 = te[1], n22 = te[5], n23 = te[9], n24 = te[13];\r\n // const n31 = te[2], n32 = te[6], n33 = te[10], n34 = te[14];\r\n // const n41 = te[3], n42 = te[7], n43 = te[11], n44 = te[15];\r\n\r\n // //TODO: make this more efficient\r\n // //( based on http://www.euclideanspace.com/maths/algebra/matrix/functions/inverse/fourD/index.htm )\r\n\r\n // return (\r\n // n41 * (\r\n // + n14 * n23 * n32\r\n // - n13 * n24 * n32\r\n // - n14 * n22 * n33\r\n // + n12 * n24 * n33\r\n // + n13 * n22 * n34\r\n // - n12 * n23 * n34\r\n // ) +\r\n // n42 * (\r\n // + n11 * n23 * n34\r\n // - n11 * n24 * n33\r\n // + n14 * n21 * n33\r\n // - n13 * n21 * n34\r\n // + n13 * n24 * n31\r\n // - n14 * n23 * n31\r\n // ) +\r\n // n43 * (\r\n // + n11 * n24 * n32\r\n // - n11 * n22 * n34\r\n // - n14 * n21 * n32\r\n // + n12 * n21 * n34\r\n // + n14 * n22 * n31\r\n // - n12 * n24 * n31\r\n // ) +\r\n // n44 * (\r\n // - n13 * n22 * n31\r\n // - n11 * n23 * n32\r\n // + n11 * n22 * n33\r\n // + n13 * n21 * n32\r\n // - n12 * n21 * n33\r\n // + n12 * n23 * n31\r\n // )\r\n\r\n // );\r\n\r\n // }\r\n\r\n // transpose() {\r\n\r\n // const te = this.elements;\r\n // let tmp;\r\n\r\n // tmp = te[1]; te[1] = te[4]; te[4] = tmp;\r\n // tmp = te[2]; te[2] = te[8]; te[8] = tmp;\r\n // tmp = te[6]; te[6] = te[9]; te[9] = tmp;\r\n\r\n // tmp = te[3]; te[3] = te[12]; te[12] = tmp;\r\n // tmp = te[7]; te[7] = te[13]; te[13] = tmp;\r\n // tmp = te[11]; te[11] = te[14]; te[14] = tmp;\r\n\r\n // return this;\r\n\r\n // }\r\n\r\n // setPosition(x, y, z) {\r\n\r\n // const te = this.elements;\r\n\r\n // if (x.isVector3) {\r\n\r\n // te[12] = x.x;\r\n // te[13] = x.y;\r\n // te[14] = x.z;\r\n\r\n // } else {\r\n\r\n // te[12] = x;\r\n // te[13] = y;\r\n // te[14] = z;\r\n\r\n // }\r\n\r\n // return this;\r\n\r\n // }\r\n\r\n // invert() {\r\n\r\n // // based on http://www.euclideanspace.com/maths/algebra/matrix/functions/inverse/fourD/index.htm\r\n // const te = this.elements,\r\n\r\n // n11 = te[0], n21 = te[1], n31 = te[2], n41 = te[3],\r\n // n12 = te[4], n22 = te[5], n32 = te[6], n42 = te[7],\r\n // n13 = te[8], n23 = te[9], n33 = te[10], n43 = te[11],\r\n // n14 = te[12], n24 = te[13], n34 = te[14], n44 = te[15],\r\n\r\n // t11 = n23 * n34 * n42 - n24 * n33 * n42 + n24 * n32 * n43 - n22 * n34 * n43 - n23 * n32 * n44 + n22 * n33 * n44,\r\n // t12 = n14 * n33 * n42 - n13 * n34 * n42 - n14 * n32 * n43 + n12 * n34 * n43 + n13 * n32 * n44 - n12 * n33 * n44,\r\n // t13 = n13 * n24 * n42 - n14 * n23 * n42 + n14 * n22 * n43 - n12 * n24 * n43 - n13 * n22 * n44 + n12 * n23 * n44,\r\n // t14 = n14 * n23 * n32 - n13 * n24 * n32 - n14 * n22 * n33 + n12 * n24 * n33 + n13 * n22 * n34 - n12 * n23 * n34;\r\n\r\n // const det = n11 * t11 + n21 * t12 + n31 * t13 + n41 * t14;\r\n\r\n // if (det === 0) return this.set(0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0);\r\n\r\n // const detInv = 1 / det;\r\n\r\n // te[0] = t11 * detInv;\r\n // te[1] = (n24 * n33 * n41 - n23 * n34 * n41 - n24 * n31 * n43 + n21 * n34 * n43 + n23 * n31 * n44 - n21 * n33 * n44) * detInv;\r\n // te[2] = (n22 * n34 * n41 - n24 * n32 * n41 + n24 * n31 * n42 - n21 * n34 * n42 - n22 * n31 * n44 + n21 * n32 * n44) * detInv;\r\n // te[3] = (n23 * n32 * n41 - n22 * n33 * n41 - n23 * n31 * n42 + n21 * n33 * n42 + n22 * n31 * n43 - n21 * n32 * n43) * detInv;\r\n\r\n // te[4] = t12 * detInv;\r\n // te[5] = (n13 * n34 * n41 - n14 * n33 * n41 + n14 * n31 * n43 - n11 * n34 * n43 - n13 * n31 * n44 + n11 * n33 * n44) * detInv;\r\n // te[6] = (n14 * n32 * n41 - n12 * n34 * n41 - n14 * n31 * n42 + n11 * n34 * n42 + n12 * n31 * n44 - n11 * n32 * n44) * detInv;\r\n // te[7] = (n12 * n33 * n41 - n13 * n32 * n41 + n13 * n31 * n42 - n11 * n33 * n42 - n12 * n31 * n43 + n11 * n32 * n43) * detInv;\r\n\r\n // te[8] = t13 * detInv;\r\n // te[9] = (n14 * n23 * n41 - n13 * n24 * n41 - n14 * n21 * n43 + n11 * n24 * n43 + n13 * n21 * n44 - n11 * n23 * n44) * detInv;\r\n // te[10] = (n12 * n24 * n41 - n14 * n22 * n41 + n14 * n21 * n42 - n11 * n24 * n42 - n12 * n21 * n44 + n11 * n22 * n44) * detInv;\r\n // te[11] = (n13 * n22 * n41 - n12 * n23 * n41 - n13 * n21 * n42 + n11 * n23 * n42 + n12 * n21 * n43 - n11 * n22 * n43) * detInv;\r\n\r\n // te[12] = t14 * detInv;\r\n // te[13] = (n13 * n24 * n31 - n14 * n23 * n31 + n14 * n21 * n33 - n11 * n24 * n33 - n13 * n21 * n34 + n11 * n23 * n34) * detInv;\r\n // te[14] = (n14 * n22 * n31 - n12 * n24 * n31 - n14 * n21 * n32 + n11 * n24 * n32 + n12 * n21 * n34 - n11 * n22 * n34) * detInv;\r\n // te[15] = (n12 * n23 * n31 - n13 * n22 * n31 + n13 * n21 * n32 - n11 * n23 * n32 - n12 * n21 * n33 + n11 * n22 * n33) * detInv;\r\n\r\n // return this;\r\n\r\n // }\r\n\r\n // scale(v) {\r\n\r\n // const te = this.elements;\r\n // const x = v.x, y = v.y, z = v.z;\r\n\r\n // te[0] *= x; te[4] *= y; te[8] *= z;\r\n // te[1] *= x; te[5] *= y; te[9] *= z;\r\n // te[2] *= x; te[6] *= y; te[10] *= z;\r\n // te[3] *= x; te[7] *= y; te[11] *= z;\r\n\r\n // return this;\r\n\r\n // }\r\n\r\n // getMaxScaleOnAxis() {\r\n\r\n // const te = this.elements;\r\n\r\n // const scaleXSq = te[0] * te[0] + te[1] * te[1] + te[2] * te[2];\r\n // const scaleYSq = te[4] * te[4] + te[5] * te[5] + te[6] * te[6];\r\n // const scaleZSq = te[8] * te[8] + te[9] * te[9] + te[10] * te[10];\r\n\r\n // return Math.sqrt(Math.max(scaleXSq, scaleYSq, scaleZSq));\r\n\r\n // }\r\n\r\n // makeTranslation(x, y, z) {\r\n\r\n // if (x.isVector3) {\r\n\r\n // this.set(\r\n\r\n // 1, 0, 0, x.x,\r\n // 0, 1, 0, x.y,\r\n // 0, 0, 1, x.z,\r\n // 0, 0, 0, 1\r\n\r\n // );\r\n\r\n // } else {\r\n\r\n // this.set(\r\n\r\n // 1, 0, 0, x,\r\n // 0, 1, 0, y,\r\n // 0, 0, 1, z,\r\n // 0, 0, 0, 1\r\n\r\n // );\r\n\r\n // }\r\n\r\n // return this;\r\n\r\n // }\r\n\r\n // makeRotationX(theta) {\r\n\r\n // const c = Math.cos(theta), s = Math.sin(theta);\r\n\r\n // this.set(\r\n\r\n // 1, 0, 0, 0,\r\n // 0, c, -s, 0,\r\n // 0, s, c, 0,\r\n // 0, 0, 0, 1\r\n\r\n // );\r\n\r\n // return this;\r\n\r\n // }\r\n\r\n // makeRotationY(theta) {\r\n\r\n // const c = Math.cos(theta), s = Math.sin(theta);\r\n\r\n // this.set(\r\n\r\n // c, 0, s, 0,\r\n // 0, 1, 0, 0,\r\n // -s, 0, c, 0,\r\n // 0, 0, 0, 1\r\n\r\n // );\r\n\r\n // return this;\r\n\r\n // }\r\n\r\n // makeRotationZ(theta) {\r\n\r\n // const c = Math.cos(theta), s = Math.sin(theta);\r\n\r\n // this.set(\r\n\r\n // c, -s, 0, 0,\r\n // s, c, 0, 0,\r\n // 0, 0, 1, 0,\r\n // 0, 0, 0, 1\r\n\r\n // );\r\n\r\n // return this;\r\n\r\n // }\r\n\r\n makeRotationAxis(axis, angle) {\r\n\r\n // Based on http://www.gamedev.net/reference/articles/article1199.asp\r\n\r\n const c = Math.cos(angle);\r\n const s = Math.sin(angle);\r\n const t = 1 - c;\r\n const x = axis.x, y = axis.y, z = axis.z;\r\n const tx = t * x, ty = t * y;\r\n\r\n this.set(\r\n\r\n tx * x + c, tx * y - s * z, tx * z + s * y, 0,\r\n tx * y + s * z, ty * y + c, ty * z - s * x, 0,\r\n tx * z - s * y, ty * z + s * x, t * z * z + c, 0,\r\n 0, 0, 0, 1\r\n\r\n );\r\n\r\n return this;\r\n\r\n }\r\n\r\n // makeScale(x, y, z) {\r\n\r\n // this.set(\r\n\r\n // x, 0, 0, 0,\r\n // 0, y, 0, 0,\r\n // 0, 0, z, 0,\r\n // 0, 0, 0, 1\r\n\r\n // );\r\n\r\n // return this;\r\n\r\n // }\r\n\r\n // makeShear(xy, xz, yx, yz, zx, zy) {\r\n\r\n // this.set(\r\n\r\n // 1, yx, zx, 0,\r\n // xy, 1, zy, 0,\r\n // xz, yz, 1, 0,\r\n // 0, 0, 0, 1\r\n\r\n // );\r\n\r\n // return this;\r\n\r\n // }\r\n\r\n // compose(position, quaternion, scale) {\r\n\r\n // const te = this.elements;\r\n\r\n // const x = quaternion._x, y = quaternion._y, z = quaternion._z, w = quaternion._w;\r\n // const x2 = x + x, y2 = y + y, z2 = z + z;\r\n // const xx = x * x2, xy = x * y2, xz = x * z2;\r\n // const yy = y * y2, yz = y * z2, zz = z * z2;\r\n // const wx = w * x2, wy = w * y2, wz = w * z2;\r\n\r\n // const sx = scale.x, sy = scale.y, sz = scale.z;\r\n\r\n // te[0] = (1 - (yy + zz)) * sx;\r\n // te[1] = (xy + wz) * sx;\r\n // te[2] = (xz - wy) * sx;\r\n // te[3] = 0;\r\n\r\n // te[4] = (xy - wz) * sy;\r\n // te[5] = (1 - (xx + zz)) * sy;\r\n // te[6] = (yz + wx) * sy;\r\n // te[7] = 0;\r\n\r\n // te[8] = (xz + wy) * sz;\r\n // te[9] = (yz - wx) * sz;\r\n // te[10] = (1 - (xx + yy)) * sz;\r\n // te[11] = 0;\r\n\r\n // te[12] = position.x;\r\n // te[13] = position.y;\r\n // te[14] = position.z;\r\n // te[15] = 1;\r\n\r\n // return this;\r\n\r\n // }\r\n\r\n // decompose(position, quaternion, scale) {\r\n\r\n // const te = this.elements;\r\n\r\n // let sx = _v1.set(te[0], te[1], te[2]).length();\r\n // const sy = _v1.set(te[4], te[5], te[6]).length();\r\n // const sz = _v1.set(te[8], te[9], te[10]).length();\r\n\r\n // // if determine is negative, we need to invert one scale\r\n // const det = this.determinant();\r\n // if (det < 0) sx = -sx;\r\n\r\n // position.x = te[12];\r\n // position.y = te[13];\r\n // position.z = te[14];\r\n\r\n // // scale the rotation part\r\n // _m1.copy(this);\r\n\r\n // const invSX = 1 / sx;\r\n // const invSY = 1 / sy;\r\n // const invSZ = 1 / sz;\r\n\r\n // _m1.elements[0] *= invSX;\r\n // _m1.elements[1] *= invSX;\r\n // _m1.elements[2] *= invSX;\r\n\r\n // _m1.elements[4] *= invSY;\r\n // _m1.elements[5] *= invSY;\r\n // _m1.elements[6] *= invSY;\r\n\r\n // _m1.elements[8] *= invSZ;\r\n // _m1.elements[9] *= invSZ;\r\n // _m1.elements[10] *= invSZ;\r\n\r\n // quaternion.setFromRotationMatrix(_m1);\r\n\r\n // scale.x = sx;\r\n // scale.y = sy;\r\n // scale.z = sz;\r\n\r\n // return this;\r\n\r\n // }\r\n\r\n // makePerspective(left, right, top, bottom, near, far, coordinateSystem = WebGLCoordinateSystem) {\r\n\r\n // const te = this.elements;\r\n // const x = 2 * near / (right - left);\r\n // const y = 2 * near / (top - bottom);\r\n\r\n // const a = (right + left) / (right - left);\r\n // const b = (top + bottom) / (top - bottom);\r\n\r\n // let c, d;\r\n\r\n // if (coordinateSystem === WebGLCoordinateSystem) {\r\n\r\n // c = - (far + near) / (far - near);\r\n // d = (- 2 * far * near) / (far - near);\r\n\r\n // } else if (coordinateSystem === WebGPUCoordinateSystem) {\r\n\r\n // c = - far / (far - near);\r\n // d = (- far * near) / (far - near);\r\n\r\n // } else {\r\n\r\n // throw new Error('THREE.Matrix4.makePerspective(): Invalid coordinate system: ' + coordinateSystem);\r\n\r\n // }\r\n\r\n // te[0] = x; te[4] = 0; te[8] = a; te[12] = 0;\r\n // te[1] = 0; te[5] = y; te[9] = b; te[13] = 0;\r\n // te[2] = 0; te[6] = 0; te[10] = c; te[14] = d;\r\n // te[3] = 0; te[7] = 0; te[11] = - 1; te[15] = 0;\r\n\r\n // return this;\r\n\r\n // }\r\n\r\n // makeOrthographic(left, right, top, bottom, near, far, coordinateSystem = WebGLCoordinateSystem) {\r\n\r\n // const te = this.elements;\r\n // const w = 1.0 / (right - left);\r\n // const h = 1.0 / (top - bottom);\r\n // const p = 1.0 / (far - near);\r\n\r\n // const x = (right + left) * w;\r\n // const y = (top + bottom) * h;\r\n\r\n // let z, zInv;\r\n\r\n // if (coordinateSystem === WebGLCoordinateSystem) {\r\n\r\n // z = (far + near) * p;\r\n // zInv = - 2 * p;\r\n\r\n // } else if (coordinateSystem === WebGPUCoordinateSystem) {\r\n\r\n // z = near * p;\r\n // zInv = - 1 * p;\r\n\r\n // } else {\r\n\r\n // throw new Error('THREE.Matrix4.makeOrthographic(): Invalid coordinate system: ' + coordinateSystem);\r\n\r\n // }\r\n\r\n // te[0] = 2 * w; te[4] = 0; te[8] = 0; te[12] = - x;\r\n // te[1] = 0; te[5] = 2 * h; te[9] = 0; te[13] = - y;\r\n // te[2] = 0; te[6] = 0; te[10] = zInv; te[14] = - z;\r\n // te[3] = 0; te[7] = 0; te[11] = 0; te[15] = 1;\r\n\r\n // return this;\r\n\r\n // }\r\n\r\n equals(matrix) {\r\n\r\n const te = this.elements;\r\n const me = matrix.elements;\r\n\r\n for (let i = 0; i < 16; i++) {\r\n\r\n if (te[i] !== me[i]) return false;\r\n\r\n }\r\n\r\n return true;\r\n\r\n }\r\n\r\n // fromArray(array, offset = 0) {\r\n\r\n // for (let i = 0; i < 16; i++) {\r\n\r\n // this.elements[i] = array[i + offset];\r\n\r\n // }\r\n\r\n // return this;\r\n\r\n // }\r\n\r\n // toArray(array = [], offset = 0) {\r\n\r\n // const te = this.elements;\r\n\r\n // array[offset] = te[0];\r\n // array[offset + 1] = te[1];\r\n // array[offset + 2] = te[2];\r\n // array[offset + 3] = te[3];\r\n\r\n // array[offset + 4] = te[4];\r\n // array[offset + 5] = te[5];\r\n // array[offset + 6] = te[6];\r\n // array[offset + 7] = te[7];\r\n\r\n // array[offset + 8] = te[8];\r\n // array[offset + 9] = te[9];\r\n // array[offset + 10] = te[10];\r\n // array[offset + 11] = te[11];\r\n\r\n // array[offset + 12] = te[12];\r\n // array[offset + 13] = te[13];\r\n // array[offset + 14] = te[14];\r\n // array[offset + 15] = te[15];\r\n\r\n // return array;\r\n\r\n // }\r\n\r\n}\r\n\r\n// const _v1 = new Vector3();\r\n// const _m1 = new Matrix4();\r\n// const _zero = new Vector3(0, 0, 0);\r\n// const _one = new Vector3(1, 1, 1);\r\n// const _x = new Vector3();\r\n// const _y = new Vector3();\r\n// const _z = new Vector3();\r\n\r\nexport { Matrix4 };\r\n","\r\n// code copy from https://github.com/mrdoob/three.js/blob/dev/src/extras/core/Curve.js\r\n// import * as MathUtils from '../../math/MathUtils.js';\r\n// import { Vector2 } from '../../math/Vector2.js';\r\n// import { Vector3 } from '../../math/Vector3.js';\r\n// import { Matrix4 } from '../../math/Matrix4.js';\r\n\r\n/**\r\n * Extensible curve object.\r\n *\r\n * Some common of curve methods:\r\n * .getPoint( t, optionalTarget ), .getTangent( t, optionalTarget )\r\n * .getPointAt( u, optionalTarget ), .getTangentAt( u, optionalTarget )\r\n * .getPoints(), .getSpacedPoints()\r\n * .getLength()\r\n * .updateArcLengths()\r\n *\r\n * This following curves inherit from THREE.Curve:\r\n *\r\n * -- 2D curves --\r\n * THREE.ArcCurve\r\n * THREE.CubicBezierCurve\r\n * THREE.EllipseCurve\r\n * THREE.LineCurve\r\n * THREE.QuadraticBezierCurve\r\n * THREE.SplineCurve\r\n *\r\n * -- 3D curves --\r\n * THREE.CatmullRomCurve3\r\n * THREE.CubicBezierCurve3\r\n * THREE.LineCurve3\r\n * THREE.QuadraticBezierCurve3\r\n *\r\n * A series of curves can be represented as a THREE.CurvePath.\r\n *\r\n **/\r\n\r\nclass Curve {\r\n\r\n constructor() {\r\n\r\n this.type = 'Curve';\r\n\r\n this.arcLengthDivisions = 200;\r\n\r\n }\r\n\r\n // Virtual base class method to overwrite and implement in subclasses\r\n\r\n getPoint() {\r\n\r\n console.warn('THREE.Curve: .getPoint() not implemented.');\r\n return null;\r\n\r\n }\r\n\r\n // Get point at relative position in curve according to arc length\r\n // - u [0 .. 1]\r\n\r\n getPointAt(u, optionalTarget) {\r\n\r\n const t = this.getUtoTmapping(u);\r\n return this.getPoint(t, optionalTarget);\r\n\r\n }\r\n\r\n // Get sequence of points using getPoint( t )\r\n\r\n getPoints(divisions = 5) {\r\n\r\n const points = [];\r\n\r\n for (let d = 0; d <= divisions; d++) {\r\n\r\n points.push(this.getPoint(d / divisions));\r\n\r\n }\r\n\r\n return points;\r\n\r\n }\r\n\r\n // // Get sequence of points using getPointAt( u )\r\n\r\n // getSpacedPoints(divisions = 5) {\r\n\r\n // const points = [];\r\n\r\n // for (let d = 0; d <= divisions; d++) {\r\n\r\n // points.push(this.getPointAt(d / divisions));\r\n\r\n // }\r\n\r\n // return points;\r\n\r\n // }\r\n\r\n // Get total curve arc length\r\n\r\n getLength() {\r\n\r\n const lengths = this.getLengths();\r\n return lengths[lengths.length - 1];\r\n\r\n }\r\n\r\n // Get list of cumulative segment lengths\r\n\r\n getLengths(divisions = this.arcLengthDivisions) {\r\n\r\n if (this.cacheArcLengths &&\r\n (this.cacheArcLengths.length === divisions + 1) &&\r\n !this.needsUpdate) {\r\n\r\n return this.cacheArcLengths;\r\n\r\n }\r\n\r\n this.needsUpdate = false;\r\n\r\n const cache = [];\r\n let current, last = this.getPoint(0);\r\n let sum = 0;\r\n\r\n cache.push(0);\r\n\r\n for (let p = 1; p <= divisions; p++) {\r\n\r\n current = this.getPoint(p / divisions);\r\n sum += current.distanceTo(last);\r\n cache.push(sum);\r\n last = current;\r\n\r\n }\r\n\r\n this.cacheArcLengths = cache;\r\n\r\n return cache; // { sums: cache, sum: sum }; Sum is in the last element.\r\n\r\n }\r\n\r\n // updateArcLengths() {\r\n\r\n // this.needsUpdate = true;\r\n // this.getLengths();\r\n\r\n // }\r\n\r\n // Given u ( 0 .. 1 ), get a t to find p. This gives you points which are equidistant\r\n\r\n getUtoTmapping(u, distance) {\r\n\r\n const arcLengths = this.getLengths();\r\n\r\n let i = 0;\r\n const il = arcLengths.length;\r\n\r\n let targetArcLength; // The targeted u distance value to get\r\n\r\n if (distance) {\r\n\r\n targetArcLength = distance;\r\n\r\n } else {\r\n\r\n targetArcLength = u * arcLengths[il - 1];\r\n\r\n }\r\n\r\n // binary search for the index with largest value smaller than target u distance\r\n\r\n let low = 0, high = il - 1, comparison;\r\n\r\n while (low <= high) {\r\n\r\n i = Math.floor(low + (high - low) / 2); // less likely to overflow, though probably not issue here, JS doesn't really have integers, all numbers are floats\r\n\r\n comparison = arcLengths[i] - targetArcLength;\r\n\r\n if (comparison < 0) {\r\n\r\n low = i + 1;\r\n\r\n } else if (comparison > 0) {\r\n\r\n high = i - 1;\r\n\r\n } else {\r\n\r\n high = i;\r\n break;\r\n\r\n // DONE\r\n\r\n }\r\n\r\n }\r\n\r\n i = high;\r\n\r\n if (arcLengths[i] === targetArcLength) {\r\n\r\n return i / (il - 1);\r\n\r\n }\r\n\r\n // we could get finer grain at lengths, or use simple interpolation between two points\r\n\r\n const lengthBefore = arcLengths[i];\r\n const lengthAfter = arcLengths[i + 1];\r\n\r\n const segmentLength = lengthAfter - lengthBefore;\r\n\r\n // determine where we are between the 'before' and 'after' points\r\n\r\n const segmentFraction = (targetArcLength - lengthBefore) / segmentLength;\r\n\r\n // add that fractional amount to t\r\n\r\n const t = (i + segmentFraction) / (il - 1);\r\n\r\n return t;\r\n\r\n }\r\n\r\n // Returns a unit vector tangent at t\r\n // In case any sub curve does not implement its tangent derivation,\r\n // 2 points a small delta apart will be used to find its gradient\r\n // which seems to give a reasonable approximation\r\n\r\n // getTangent(t, optionalTarget) {\r\n\r\n // const delta = 0.0001;\r\n // let t1 = t - delta;\r\n // let t2 = t + delta;\r\n\r\n // // Capping in case of danger\r\n\r\n // if (t1 < 0) t1 = 0;\r\n // if (t2 > 1) t2 = 1;\r\n\r\n // const pt1 = this.getPoint(t1);\r\n // const pt2 = this.getPoint(t2);\r\n\r\n // const tangent = optionalTarget || ((pt1.isVector2) ? new Vector2() : new Vector3());\r\n\r\n // tangent.copy(pt2).sub(pt1).normalize();\r\n\r\n // return tangent;\r\n\r\n // }\r\n\r\n // getTangentAt(u, optionalTarget) {\r\n\r\n // const t = this.getUtoTmapping(u);\r\n // return this.getTangent(t, optionalTarget);\r\n\r\n // }\r\n\r\n // computeFrenetFrames(segments, closed) {\r\n\r\n // // see http://www.cs.indiana.edu/pub/techreports/TR425.pdf\r\n\r\n // const normal = new Vector3();\r\n\r\n // const tangents = [];\r\n // const normals = [];\r\n // const binormals = [];\r\n\r\n // const vec = new Vector3();\r\n // const mat = new Matrix4();\r\n\r\n // // compute the tangent vectors for each segment on the curve\r\n\r\n // for (let i = 0; i <= segments; i++) {\r\n\r\n // const u = i / segments;\r\n\r\n // tangents[i] = this.getTangentAt(u, new Vector3());\r\n\r\n // }\r\n\r\n // // select an initial normal vector perpendicular to the first tangent vector,\r\n // // and in the direction of the minimum tangent xyz component\r\n\r\n // normals[0] = new Vector3();\r\n // binormals[0] = new Vector3();\r\n // let min = Number.MAX_VALUE;\r\n // const tx = Math.abs(tangents[0].x);\r\n // const ty = Math.abs(tangents[0].y);\r\n // const tz = Math.abs(tangents[0].z);\r\n\r\n // if (tx <= min) {\r\n\r\n // min = tx;\r\n // normal.set(1, 0, 0);\r\n\r\n // }\r\n\r\n // if (ty <= min) {\r\n\r\n // min = ty;\r\n // normal.set(0, 1, 0);\r\n\r\n // }\r\n\r\n // if (tz <= min) {\r\n\r\n // normal.set(0, 0, 1);\r\n\r\n // }\r\n\r\n // vec.crossVectors(tangents[0], normal).normalize();\r\n\r\n // normals[0].crossVectors(tangents[0], vec);\r\n // binormals[0].crossVectors(tangents[0], normals[0]);\r\n\r\n // // compute the slowly-varying normal and binormal vectors for each segment on the curve\r\n\r\n // for (let i = 1; i <= segments; i++) {\r\n\r\n // normals[i] = normals[i - 1].clone();\r\n\r\n // binormals[i] = binormals[i - 1].clone();\r\n\r\n // vec.crossVectors(tangents[i - 1], tangents[i]);\r\n\r\n // if (vec.length() > Number.EPSILON) {\r\n\r\n // vec.normalize();\r\n\r\n // const theta = Math.acos(MathUtils.clamp(tangents[i - 1].dot(tangents[i]), - 1, 1)); // clamp for floating pt errors\r\n\r\n // normals[i].applyMatrix4(mat.makeRotationAxis(vec, theta));\r\n\r\n // }\r\n\r\n // binormals[i].crossVectors(tangents[i], normals[i]);\r\n\r\n // }\r\n\r\n // // if the curve is closed, postprocess the vectors so the first and last normal vectors are the same\r\n\r\n // if (closed === true) {\r\n\r\n // let theta = Math.acos(MathUtils.clamp(normals[0].dot(normals[segments]), - 1, 1));\r\n // theta /= segments;\r\n\r\n // if (tangents[0].dot(vec.crossVectors(normals[0], normals[segments])) > 0) {\r\n\r\n // theta = - theta;\r\n\r\n // }\r\n\r\n // for (let i = 1; i <= segments; i++) {\r\n\r\n // // twist a little...\r\n // normals[i].applyMatrix4(mat.makeRotationAxis(tangents[i], theta * i));\r\n // binormals[i].crossVectors(tangents[i], normals[i]);\r\n\r\n // }\r\n\r\n // }\r\n\r\n // return {\r\n // tangents: tangents,\r\n // normals: normals,\r\n // binormals: binormals\r\n // };\r\n\r\n // }\r\n\r\n // clone() {\r\n\r\n // return new this.constructor().copy(this);\r\n\r\n // }\r\n\r\n // copy(source) {\r\n\r\n // this.arcLengthDivisions = source.arcLengthDivisions;\r\n\r\n // return this;\r\n\r\n // }\r\n\r\n // toJSON() {\r\n\r\n // const data = {\r\n // metadata: {\r\n // version: 4.6,\r\n // type: 'Curve',\r\n // generator: 'Curve.toJSON'\r\n // }\r\n // };\r\n\r\n // data.arcLengthDivisions = this.arcLengthDivisions;\r\n // data.type = this.type;\r\n\r\n // return data;\r\n\r\n // }\r\n\r\n // fromJSON(json) {\r\n\r\n // this.arcLengthDivisions = json.arcLengthDivisions;\r\n\r\n // return this;\r\n\r\n // }\r\n\r\n}\r\n\r\nexport { Curve };\r\n","/**\r\n * // code copy from https://github.com/mrdoob/three.js/blob/dev/src/extras/core/Interpolations.js\r\n * Bezier Curves formulas obtained from\r\n * https://en.wikipedia.org/wiki/B%C3%A9zier_curve\r\n */\r\n\r\nfunction CatmullRom(t, p0, p1, p2, p3) {\r\n\r\n const v0 = (p2 - p0) * 0.5;\r\n const v1 = (p3 - p1) * 0.5;\r\n const t2 = t * t;\r\n const t3 = t * t2;\r\n return (2 * p1 - 2 * p2 + v0 + v1) * t3 + (-3 * p1 + 3 * p2 - 2 * v0 - v1) * t2 + v0 * t + p1;\r\n\r\n}\r\n\r\n//\r\n\r\nfunction QuadraticBezierP0(t, p) {\r\n\r\n const k = 1 - t;\r\n return k * k * p;\r\n\r\n}\r\n\r\nfunction QuadraticBezierP1(t, p) {\r\n\r\n return 2 * (1 - t) * t * p;\r\n\r\n}\r\n\r\nfunction QuadraticBezierP2(t, p) {\r\n\r\n return t * t * p;\r\n\r\n}\r\n\r\nfunction QuadraticBezier(t, p0, p1, p2) {\r\n\r\n return QuadraticBezierP0(t, p0) + QuadraticBezierP1(t, p1) +\r\n QuadraticBezierP2(t, p2);\r\n\r\n}\r\n\r\n//\r\n\r\nfunction CubicBezierP0(t, p) {\r\n\r\n const k = 1 - t;\r\n return k * k * k * p;\r\n\r\n}\r\n\r\nfunction CubicBezierP1(t, p) {\r\n\r\n const k = 1 - t;\r\n return 3 * k * k * t * p;\r\n\r\n}\r\n\r\nfunction CubicBezierP2(t, p) {\r\n\r\n return 3 * (1 - t) * t * t * p;\r\n\r\n}\r\n\r\nfunction CubicBezierP3(t, p) {\r\n\r\n return t * t * t * p;\r\n\r\n}\r\n\r\nfunction CubicBezier(t, p0, p1, p2, p3) {\r\n\r\n return CubicBezierP0(t, p0) + CubicBezierP1(t, p1) + CubicBezierP2(t, p2) +\r\n CubicBezierP3(t, p3);\r\n\r\n}\r\n\r\nexport { CatmullRom, QuadraticBezier, CubicBezier };\r\n","// code copy from https://github.com/mrdoob/three.js/blob/dev/src/extras/curves/QuadraticBezierCurve3.js\r\nimport { Curve } from './Curve.js';\r\nimport { QuadraticBezier } from './Interpolations.js';\r\nimport { Vector3 } from './Vector3.js';\r\n\r\nclass QuadraticBezierCurve3 extends Curve {\r\n\r\n constructor(v0 = new Vector3(), v1 = new Vector3(), v2 = new Vector3()) {\r\n\r\n super();\r\n\r\n this.isQuadraticBezierCurve3 = true;\r\n\r\n this.type = 'QuadraticBezierCurve3';\r\n\r\n this.v0 = v0;\r\n this.v1 = v1;\r\n this.v2 = v2;\r\n\r\n }\r\n\r\n getPoint(t, optionalTarget = new Vector3()) {\r\n\r\n const point = optionalTarget;\r\n\r\n const v0 = this.v0, v1 = this.v1, v2 = this.v2;\r\n\r\n point.set(\r\n QuadraticBezier(t, v0.x, v1.x, v2.x),\r\n QuadraticBezier(t, v0.y, v1.y, v2.y),\r\n QuadraticBezier(t, v0.z, v1.z, v2.z)\r\n );\r\n\r\n return point;\r\n\r\n }\r\n\r\n // copy(source) {\r\n\r\n // super.copy(source);\r\n\r\n // this.v0.copy(source.v0);\r\n // this.v1.copy(source.v1);\r\n // this.v2.copy(source.v2);\r\n\r\n // return this;\r\n\r\n // }\r\n\r\n // toJSON() {\r\n\r\n // const data = super.toJSON();\r\n\r\n // data.v0 = this.v0.toArray();\r\n // data.v1 = this.v1.toArray();\r\n // data.v2 = this.v2.toArray();\r\n\r\n // return data;\r\n\r\n // }\r\n\r\n // fromJSON(json) {\r\n\r\n // super.fromJSON(json);\r\n\r\n // this.v0.fromArray(json.v0);\r\n // this.v1.fromArray(json.v1);\r\n // this.v2.fromArray(json.v2);\r\n\r\n // return this;\r\n\r\n // }\r\n\r\n}\r\n\r\nexport { QuadraticBezierCurve3 };\r\n","/* eslint-disable no-tabs */\r\n// code copy from https://github.com/shawn0326/three.path/blob/master/src/PathPointList.js\r\nimport { Matrix4 } from '../math/Matrix4.js';\r\nimport { QuadraticBezierCurve3 } from '../math/QuadraticBezierCurve3.js';\r\nimport { Vector3 } from '../math/Vector3.js';\r\nimport { PathPoint } from './PathPoint.js';\r\n\r\nconst helpVec3_1 = new Vector3();\r\nconst helpVec3_2 = new Vector3();\r\nconst helpVec3_3 = new Vector3();\r\nconst helpMat4 = new Matrix4();\r\nconst helpCurve = new QuadraticBezierCurve3();\r\n\r\nfunction _getCornerBezierCurve(last, current, next, cornerRadius, firstCorner, out) {\r\n\tconst lastDir = helpVec3_1.subVectors(current, last);\r\n\tconst nextDir = helpVec3_2.subVectors(next, current);\r\n\r\n\tconst lastDirLength = lastDir.length();\r\n\tconst nextDirLength = nextDir.length();\r\n\r\n\tlastDir.normalize();\r\n\tnextDir.normalize();\r\n\r\n\t// cornerRadius can not bigger then lineDistance / 2, auto fix this\r\n\tconst v0Dist = Math.min((firstCorner ? lastDirLength / 2 : lastDirLength) * 0.999999, cornerRadius);\r\n\tout.v0.copy(current).sub(lastDir.multiplyScalar(v0Dist));\r\n\r\n\tout.v1.copy(current);\r\n\r\n\tconst v2Dist = Math.min(nextDirLength / 2 * 0.999999, cornerRadius);\r\n\tout.v2.copy(current).add(nextDir.multiplyScalar(v2Dist));\r\n\r\n\treturn out;\r\n}\r\n\r\n/**\r\n * PathPointList\r\n * input points to generate a PathPoint list\r\n */\r\nclass PathPointList {\r\n\r\n\tconstructor() {\r\n\t\tthis.array = []; // path point array\r\n\t\tthis.count = 0;\r\n\t}\r\n\r\n\t/**\r\n\t * Set points\r\n\t * @param {THREE.Vector3[]} points key points array\r\n\t * @param {number} cornerRadius? the corner radius. set 0 to disable round corner. default is 0.1\r\n\t * @param {number} cornerSplit? the corner split. default is 10.\r\n\t * @param {number} up? force up. default is auto up (calculate by tangent).\r\n\t * @param {boolean} close? close path. default is false.\r\n\t */\r\n\tset(points, cornerRadius = 0.1, cornerSplit = 10, up = null, close = false) {\r\n\t\tpoints = points.slice(0);\r\n\r\n\t\tif (points.length < 2) {\r\n\t\t\tconsole.warn('PathPointList: points length less than 2.');\r\n\t\t\tthis.count = 0;\r\n\t\t\treturn;\r\n\t\t}\r\n\r\n\t\t// Auto close\r\n\t\tif (close && !points[0].equals(points[points.length - 1])) {\r\n\t\t\tpoints.push(new Vector3().copy(points[0]));\r\n\t\t}\r\n\r\n\t\t// Generate path point list\r\n\t\tfor (let i = 0, l = points.length; i < l; i++) {\r\n\t\t\tif (i === 0) {\r\n\t\t\t\tthis._start(points[i], points[i + 1], up);\r\n\t\t\t} else if (i === l - 1) {\r\n\t\t\t\tif (close) {\r\n\t\t\t\t\t// Connect end point and start point\r\n\t\t\t\t\tthis._corner(points[i], points[1], cornerRadius, cornerSplit, up);\r\n\r\n\t\t\t\t\t// Fix start point\r\n\t\t\t\t\tconst dist = this.array[0].dist; // should not copy dist\r\n\t\t\t\t\tthis.array[0].copy(this.array[this.count - 1]);\r\n\t\t\t\t\tthis.array[0].dist = dist;\r\n\t\t\t\t} else {\r\n\t\t\t\t\tthis._end(points[i]);\r\n\t\t\t\t}\r\n\t\t\t} else {\r\n\t\t\t\tthis._corner(points[i], points[i + 1], cornerRadius, cornerSplit, up);\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n\r\n\t/**\r\n\t * Get distance of this path\r\n\t * @return {number}\r\n\t */\r\n\tdistance() {\r\n\t\tif (this.count > 0) {\r\n\t\t\treturn this.array[this.count - 1].dist;\r\n\t\t}\r\n\t\treturn 0;\r\n\t}\r\n\r\n\t_getByIndex(index) {\r\n\t\tif (!this.array[index]) {\r\n\t\t\tthis.array[index] = new PathPoint();\r\n\t\t}\r\n\t\treturn this.array[index];\r\n\t}\r\n\r\n\t_start(current, next, up) {\r\n\t\tthis.count = 0;\r\n\r\n\t\tconst point = this._getByIndex(this.count);\r\n\r\n\t\tpoint.pos.copy(current);\r\n\t\tpoint.dir.subVectors(next, current);\r\n\r\n\t\t// init start up dir\r\n\t\tif (up) {\r\n\t\t\tpoint.up.copy(up);\r\n\t\t} else {\r\n\t\t\t// select an initial normal vector perpendicular to the first tangent vector\r\n\t\t\tlet min = Number.MAX_VALUE;\r\n\t\t\tconst tx = Math.abs(point.dir.x);\r\n\t\t\tconst ty = Math.abs(point.dir.y);\r\n\t\t\tconst tz = Math.abs(point.dir.z);\r\n\t\t\tif (tx < min) {\r\n\t\t\t\tmin = tx;\r\n\t\t\t\tpoint.up.set(1, 0, 0);\r\n\t\t\t}\r\n\t\t\tif (ty < min) {\r\n\t\t\t\tmin = ty;\r\n\t\t\t\tpoint.up.set(0, 1, 0);\r\n\t\t\t}\r\n\t\t\tif (tz < min) {\r\n\t\t\t\tpoint.up.set(0, 0, 1);\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\tpoint.right.crossVectors(point.dir, point.up).normalize();\r\n\t\tpoint.up.crossVectors(point.right, point.dir).normalize();\r\n\t\tpoint.dist = 0;\r\n\t\tpoint.widthScale = 1;\r\n\t\tpoint.sharp = false;\r\n\r\n\t\tpoint.dir.normalize();\r\n\r\n\t\tthis.count++;\r\n\t}\r\n\r\n\t_end(current) {\r\n\t\tconst lastPoint = this.array[this.count - 1];\r\n\t\tconst point = this._getByIndex(this.count);\r\n\r\n\t\tpoint.pos.copy(current);\r\n\t\tpoint.dir.subVectors(current, lastPoint.pos);\r\n\t\tconst dist = point.dir.length();\r\n\t\tpoint.dir.normalize();\r\n\r\n\t\tpoint.up.copy(lastPoint.up); // copy last up\r\n\r\n\t\tconst vec = helpVec3_1.crossVectors(lastPoint.dir, point.dir);\r\n\t\tif (vec.length() > Number.EPSILON) {\r\n\t\t\tvec.normalize();\r\n\t\t\tconst theta = Math.acos(Math.min(Math.max(lastPoint.dir.dot(point.dir), -1), 1)); // clamp for floating pt errors\r\n\t\t\tpoint.up.applyMatrix4(helpMat4.makeRotationAxis(vec, theta));\r\n\t\t}\r\n\r\n\t\tpoint.right.crossVectors(point.dir, point.up).normalize();\r\n\r\n\t\tpoint.dist = lastPoint.dist + dist;\r\n\t\tpoint.widthScale = 1;\r\n\t\tpoint.sharp = false;\r\n\r\n\t\tthis.count++;\r\n\t}\r\n\r\n\t_corner(current, next, cornerRadius, cornerSplit, up) {\r\n\t\tif (cornerRadius > 0 && cornerSplit > 0) {\r\n\t\t\tconst lastPoint = this.array[this.count - 1];\r\n\t\t\tconst curve = _getCornerBezierCurve(lastPoint.pos, current, next, cornerRadius, (this.count - 1) === 0, helpCurve);\r\n\t\t\tconst samplerPoints = curve.getPoints(cornerSplit); // TODO optimize\r\n\r\n\t\t\tfor (let f = 0; f < cornerSplit; f++) {\r\n\t\t\t\tthis._sharpCorner(samplerPoints[f], samplerPoints[f + 1], up, f === 0 ? 1 : 0);\r\n\t\t\t}\r\n\r\n\t\t\tif (!samplerPoints[cornerSplit].equals(next)) {\r\n\t\t\t\tthis._sharpCorner(samplerPoints[cornerSplit], next, up, 2);\r\n\t\t\t}\r\n\t\t} else {\r\n\t\t\tthis._sharpCorner(current, next, up, 0, true);\r\n\t\t}\r\n\t}\r\n\r\n\t// dirType: 0 - use middle dir / 1 - use last dir / 2- use next dir\r\n\t_sharpCorner(current, next, up, dirType = 0, sharp = false) {\r\n\t\tconst lastPoint = this.array[this.count - 1];\r\n\t\tconst point = this._getByIndex(this.count);\r\n\r\n\t\tconst lastDir = helpVec3_1.subVectors(current, lastPoint.pos);\r\n\t\tconst nextDir = helpVec3_2.subVectors(next, current);\r\n\r\n\t\tconst lastDirLength = lastDir.length();\r\n\r\n\t\tlastDir.normalize();\r\n\t\tnextDir.normalize();\r\n\r\n\t\tpoint.pos.copy(current);\r\n\r\n\t\tif (dirType === 1) {\r\n\t\t\tpoint.dir.copy(lastDir);\r\n\t\t} else if (dirType === 2) {\r\n\t\t\tpoint.dir.copy(nextDir);\r\n\t\t} else {\r\n\t\t\tpoint.dir.addVectors(lastDir, nextDir);\r\n\t\t\tpoint.dir.normalize();\r\n\t\t}\r\n\r\n\t\tif (up) {\r\n\t\t\tif (point.dir.dot(up) === 1) {\r\n\t\t\t\tpoint.right.crossVectors(nextDir, up).normalize();\r\n\t\t\t} else {\r\n\t\t\t\tpoint.right.crossVectors(point.dir, up).normalize();\r\n\t\t\t}\r\n\r\n\t\t\tpoint.up.crossVectors(point.right, point.dir).normalize();\r\n\t\t} else {\r\n\t\t\tpoint.up.copy(lastPoint.up);\r\n\r\n\t\t\tconst vec = helpVec3_3.crossVectors(lastPoint.dir, point.dir);\r\n\t\t\tif (vec.length() > Number.EPSILON) {\r\n\t\t\t\tvec.normalize();\r\n\t\t\t\tconst theta = Math.acos(Math.min(Math.max(lastPoint.dir.dot(point.dir), -1), 1)); // clamp for floating pt errors\r\n\t\t\t\tpoint.up.applyMatrix4(helpMat4.makeRotationAxis(vec, theta));\r\n\t\t\t}\r\n\r\n\t\t\tpoint.right.crossVectors(point.dir, point.up).normalize();\r\n\t\t}\r\n\r\n\t\tpoint.dist = lastPoint.dist + lastDirLength;\r\n\r\n\t\tconst _cos = lastDir.dot(nextDir);\r\n\t\tpoint.widthScale = Math.min(1 / Math.sqrt((1 + _cos) / 2), 1.415) || 1;\r\n\t\tpoint.sharp = (Math.abs(_cos - 1) > 0.05) && sharp;\r\n\r\n\t\tthis.count++;\r\n\t}\r\n\r\n}\r\n\r\nexport { PathPointList };\r\n",null,null,null,null,"var __defProp = Object.defineProperty;\nvar __getOwnPropDesc = Object.getOwnPropertyDescriptor;\nvar __getOwnPropNames = Object.getOwnPropertyNames;\nvar __hasOwnProp = Object.prototype.hasOwnProperty;\nvar __markAsModule = (target) => __defProp(target, \"__esModule\", { value: true });\nvar __export = (target, all) => {\n for (var name in all)\n __defProp(target, name, { get: all[name], enumerable: true });\n};\nvar __reExport = (target, module2, copyDefault, desc) => {\n if (module2 && typeof module2 === \"object\" || typeof module2 === \"function\") {\n for (let key of __getOwnPropNames(module2))\n if (!__hasOwnProp.call(target, key) && (copyDefault || key !== \"default\"))\n __defProp(target, key, { get: () => module2[key], enumerable: !(desc = __getOwnPropDesc(module2, key)) || desc.enumerable });\n }\n return target;\n};\nvar __toCommonJS = /* @__PURE__ */ ((cache) => {\n return (module2, temp) => {\n return cache && cache.get(module2) || (temp = __reExport(__markAsModule({}), module2, 1), cache && cache.set(module2, temp), temp);\n };\n})(typeof WeakMap !== \"undefined\" ? /* @__PURE__ */ new WeakMap() : 0);\n\n// src/bezier.js\nvar bezier_exports = {};\n__export(bezier_exports, {\n Bezier: () => Bezier\n});\n\n// src/utils.js\nvar { abs, cos, sin, acos, atan2, sqrt, pow } = Math;\nfunction crt(v) {\n return v < 0 ? -pow(-v, 1 / 3) : pow(v, 1 / 3);\n}\nvar pi = Math.PI;\nvar tau = 2 * pi;\nvar quart = pi / 2;\nvar epsilon = 1e-6;\nvar nMax = Number.MAX_SAFE_INTEGER || 9007199254740991;\nvar nMin = Number.MIN_SAFE_INTEGER || -9007199254740991;\nvar ZERO = { x: 0, y: 0, z: 0 };\nvar utils = {\n Tvalues: [\n -0.06405689286260563,\n 0.06405689286260563,\n -0.1911188674736163,\n 0.1911188674736163,\n -0.3150426796961634,\n 0.3150426796961634,\n -0.4337935076260451,\n 0.4337935076260451,\n -0.5454214713888396,\n 0.5454214713888396,\n -0.6480936519369755,\n 0.6480936519369755,\n -0.7401241915785544,\n 0.7401241915785544,\n -0.820001985973903,\n 0.820001985973903,\n -0.8864155270044011,\n 0.8864155270044011,\n -0.9382745520027328,\n 0.9382745520027328,\n -0.9747285559713095,\n 0.9747285559713095,\n -0.9951872199970213,\n 0.9951872199970213\n ],\n Cvalues: [\n 0.12793819534675216,\n 0.12793819534675216,\n 0.1258374563468283,\n 0.1258374563468283,\n 0.12167047292780339,\n 0.12167047292780339,\n 0.1155056680537256,\n 0.1155056680537256,\n 0.10744427011596563,\n 0.10744427011596563,\n 0.09761865210411388,\n 0.09761865210411388,\n 0.08619016153195327,\n 0.08619016153195327,\n 0.0733464814110803,\n 0.0733464814110803,\n 0.05929858491543678,\n 0.05929858491543678,\n 0.04427743881741981,\n 0.04427743881741981,\n 0.028531388628933663,\n 0.028531388628933663,\n 0.0123412297999872,\n 0.0123412297999872\n ],\n arcfn: function(t2, derivativeFn) {\n const d = derivativeFn(t2);\n let l = d.x * d.x + d.y * d.y;\n if (typeof d.z !== \"undefined\") {\n l += d.z * d.z;\n }\n return sqrt(l);\n },\n compute: function(t2, points, _3d) {\n if (t2 === 0) {\n points[0].t = 0;\n return points[0];\n }\n const order = points.length - 1;\n if (t2 === 1) {\n points[order].t = 1;\n return points[order];\n }\n const mt = 1 - t2;\n let p = points;\n if (order === 0) {\n points[0].t = t2;\n return points[0];\n }\n if (order === 1) {\n const ret = {\n x: mt * p[0].x + t2 * p[1].x,\n y: mt * p[0].y + t2 * p[1].y,\n t: t2\n };\n if (_3d) {\n ret.z = mt * p[0].z + t2 * p[1].z;\n }\n return ret;\n }\n if (order < 4) {\n let mt2 = mt * mt, t22 = t2 * t2, a, b, c, d = 0;\n if (order === 2) {\n p = [p[0], p[1], p[2], ZERO];\n a = mt2;\n b = mt * t2 * 2;\n c = t22;\n } else if (order === 3) {\n a = mt2 * mt;\n b = mt2 * t2 * 3;\n c = mt * t22 * 3;\n d = t2 * t22;\n }\n const ret = {\n x: a * p[0].x + b * p[1].x + c * p[2].x + d * p[3].x,\n y: a * p[0].y + b * p[1].y + c * p[2].y + d * p[3].y,\n t: t2\n };\n if (_3d) {\n ret.z = a * p[0].z + b * p[1].z + c * p[2].z + d * p[3].z;\n }\n return ret;\n }\n const dCpts = JSON.parse(JSON.stringify(points));\n while (dCpts.length > 1) {\n for (let i = 0; i < dCpts.length - 1; i++) {\n dCpts[i] = {\n x: dCpts[i].x + (dCpts[i + 1].x - dCpts[i].x) * t2,\n y: dCpts[i].y + (dCpts[i + 1].y - dCpts[i].y) * t2\n };\n if (typeof dCpts[i].z !== \"undefined\") {\n dCpts[i].z = dCpts[i].z + (dCpts[i + 1].z - dCpts[i].z) * t2;\n }\n }\n dCpts.splice(dCpts.length - 1, 1);\n }\n dCpts[0].t = t2;\n return dCpts[0];\n },\n computeWithRatios: function(t2, points, ratios, _3d) {\n const mt = 1 - t2, r = ratios, p = points;\n let f1 = r[0], f2 = r[1], f3 = r[2], f4 = r[3], d;\n f1 *= mt;\n f2 *= t2;\n if (p.length === 2) {\n d = f1 + f2;\n return {\n x: (f1 * p[0].x + f2 * p[1].x) / d,\n y: (f1 * p[0].y + f2 * p[1].y) / d,\n z: !_3d ? false : (f1 * p[0].z + f2 * p[1].z) / d,\n t: t2\n };\n }\n f1 *= mt;\n f2 *= 2 * mt;\n f3 *= t2 * t2;\n if (p.length === 3) {\n d = f1 + f2 + f3;\n return {\n x: (f1 * p[0].x + f2 * p[1].x + f3 * p[2].x) / d,\n y: (f1 * p[0].y + f2 * p[1].y + f3 * p[2].y) / d,\n z: !_3d ? false : (f1 * p[0].z + f2 * p[1].z + f3 * p[2].z) / d,\n t: t2\n };\n }\n f1 *= mt;\n f2 *= 1.5 * mt;\n f3 *= 3 * mt;\n f4 *= t2 * t2 * t2;\n if (p.length === 4) {\n d = f1 + f2 + f3 + f4;\n return {\n x: (f1 * p[0].x + f2 * p[1].x + f3 * p[2].x + f4 * p[3].x) / d,\n y: (f1 * p[0].y + f2 * p[1].y + f3 * p[2].y + f4 * p[3].y) / d,\n z: !_3d ? false : (f1 * p[0].z + f2 * p[1].z + f3 * p[2].z + f4 * p[3].z) / d,\n t: t2\n };\n }\n },\n derive: function(points, _3d) {\n const dpoints = [];\n for (let p = points, d = p.length, c = d - 1; d > 1; d--, c--) {\n const list = [];\n for (let j = 0, dpt; j < c; j++) {\n dpt = {\n x: c * (p[j + 1].x - p[j].x),\n y: c * (p[j + 1].y - p[j].y)\n };\n if (_3d) {\n dpt.z = c * (p[j + 1].z - p[j].z);\n }\n list.push(dpt);\n }\n dpoints.push(list);\n p = list;\n }\n return dpoints;\n },\n between: function(v, m, M) {\n return m <= v && v <= M || utils.approximately(v, m) || utils.approximately(v, M);\n },\n approximately: function(a, b, precision) {\n return abs(a - b) <= (precision || epsilon);\n },\n length: function(derivativeFn) {\n const z = 0.5, len = utils.Tvalues.length;\n let sum = 0;\n for (let i = 0, t2; i < len; i++) {\n t2 = z * utils.Tvalues[i] + z;\n sum += utils.Cvalues[i] * utils.arcfn(t2, derivativeFn);\n }\n return z * sum;\n },\n map: function(v, ds, de, ts, te) {\n const d1 = de - ds, d2 = te - ts, v2 = v - ds, r = v2 / d1;\n return ts + d2 * r;\n },\n lerp: function(r, v1, v2) {\n const ret = {\n x: v1.x + r * (v2.x - v1.x),\n y: v1.y + r * (v2.y - v1.y)\n };\n if (v1.z !== void 0 && v2.z !== void 0) {\n ret.z = v1.z + r * (v2.z - v1.z);\n }\n return ret;\n },\n pointToString: function(p) {\n let s = p.x + \"/\" + p.y;\n if (typeof p.z !== \"undefined\") {\n s += \"/\" + p.z;\n }\n return s;\n },\n pointsToString: function(points) {\n return \"[\" + points.map(utils.pointToString).join(\", \") + \"]\";\n },\n copy: function(obj) {\n return JSON.parse(JSON.stringify(obj));\n },\n angle: function(o, v1, v2) {\n const dx1 = v1.x - o.x, dy1 = v1.y - o.y, dx2 = v2.x - o.x, dy2 = v2.y - o.y, cross = dx1 * dy2 - dy1 * dx2, dot = dx1 * dx2 + dy1 * dy2;\n return atan2(cross, dot);\n },\n round: function(v, d) {\n const s = \"\" + v;\n const pos = s.indexOf(\".\");\n return parseFloat(s.substring(0, pos + 1 + d));\n },\n dist: function(p1, p2) {\n const dx = p1.x - p2.x, dy = p1.y - p2.y;\n return sqrt(dx * dx + dy * dy);\n },\n closest: function(LUT, point) {\n let mdist = pow(2, 63), mpos, d;\n LUT.forEach(function(p, idx) {\n d = utils.dist(point, p);\n if (d < mdist) {\n mdist = d;\n mpos = idx;\n }\n });\n return { mdist, mpos };\n },\n abcratio: function(t2, n) {\n if (n !== 2 && n !== 3) {\n return false;\n }\n if (typeof t2 === \"undefined\") {\n t2 = 0.5;\n } else if (t2 === 0 || t2 === 1) {\n return t2;\n }\n const bottom = pow(t2, n) + pow(1 - t2, n), top = bottom - 1;\n return abs(top / bottom);\n },\n projectionratio: function(t2, n) {\n if (n !== 2 && n !== 3) {\n return false;\n }\n if (typeof t2 === \"undefined\") {\n t2 = 0.5;\n } else if (t2 === 0 || t2 === 1) {\n return t2;\n }\n const top = pow(1 - t2, n), bottom = pow(t2, n) + top;\n return top / bottom;\n },\n lli8: function(x1, y1, x2, y2, x3, y3, x4, y4) {\n const nx = (x1 * y2 - y1 * x2) * (x3 - x4) - (x1 - x2) * (x3 * y4 - y3 * x4), ny = (x1 * y2 - y1 * x2) * (y3 - y4) - (y1 - y2) * (x3 * y4 - y3 * x4), d = (x1 - x2) * (y3 - y4) - (y1 - y2) * (x3 - x4);\n if (d == 0) {\n return false;\n }\n return { x: nx / d, y: ny / d };\n },\n lli4: function(p1, p2, p3, p4) {\n const x1 = p1.x, y1 = p1.y, x2 = p2.x, y2 = p2.y, x3 = p3.x, y3 = p3.y, x4 = p4.x, y4 = p4.y;\n return utils.lli8(x1, y1, x2, y2, x3, y3, x4, y4);\n },\n lli: function(v1, v2) {\n return utils.lli4(v1, v1.c, v2, v2.c);\n },\n makeline: function(p1, p2) {\n return new Bezier(p1.x, p1.y, (p1.x + p2.x) / 2, (p1.y + p2.y) / 2, p2.x, p2.y);\n },\n findbbox: function(sections) {\n let mx = nMax, my = nMax, MX = nMin, MY = nMin;\n sections.forEach(function(s) {\n const bbox = s.bbox();\n if (mx > bbox.x.min)\n mx = bbox.x.min;\n if (my > bbox.y.min)\n my = bbox.y.min;\n if (MX < bbox.x.max)\n MX = bbox.x.max;\n if (MY < bbox.y.max)\n MY = bbox.y.max;\n });\n return {\n x: { min: mx, mid: (mx + MX) / 2, max: MX, size: MX - mx },\n y: { min: my, mid: (my + MY) / 2, max: MY, size: MY - my }\n };\n },\n shapeintersections: function(s1, bbox1, s2, bbox2, curveIntersectionThreshold) {\n if (!utils.bboxoverlap(bbox1, bbox2))\n return [];\n const intersections = [];\n const a1 = [s1.startcap, s1.forward, s1.back, s1.endcap];\n const a2 = [s2.startcap, s2.forward, s2.back, s2.endcap];\n a1.forEach(function(l1) {\n if (l1.virtual)\n return;\n a2.forEach(function(l2) {\n if (l2.virtual)\n return;\n const iss = l1.intersects(l2, curveIntersectionThreshold);\n if (iss.length > 0) {\n iss.c1 = l1;\n iss.c2 = l2;\n iss.s1 = s1;\n iss.s2 = s2;\n intersections.push(iss);\n }\n });\n });\n return intersections;\n },\n makeshape: function(forward, back, curveIntersectionThreshold) {\n const bpl = back.points.length;\n const fpl = forward.points.length;\n const start = utils.makeline(back.points[bpl - 1], forward.points[0]);\n const end = utils.makeline(forward.points[fpl - 1], back.points[0]);\n const shape = {\n startcap: start,\n forward,\n back,\n endcap: end,\n bbox: utils.findbbox([start, forward, back, end])\n };\n shape.intersections = function(s2) {\n return utils.shapeintersections(shape, shape.bbox, s2, s2.bbox, curveIntersectionThreshold);\n };\n return shape;\n },\n getminmax: function(curve, d, list) {\n if (!list)\n return { min: 0, max: 0 };\n let min2 = nMax, max2 = nMin, t2, c;\n if (list.indexOf(0) === -1) {\n list = [0].concat(list);\n }\n if (list.indexOf(1) === -1) {\n list.push(1);\n }\n for (let i = 0, len = list.length; i < len; i++) {\n t2 = list[i];\n c = curve.get(t2);\n if (c[d] < min2) {\n min2 = c[d];\n }\n if (c[d] > max2) {\n max2 = c[d];\n }\n }\n return { min: min2, mid: (min2 + max2) / 2, max: max2, size: max2 - min2 };\n },\n align: function(points, line) {\n const tx = line.p1.x, ty = line.p1.y, a = -atan2(line.p2.y - ty, line.p2.x - tx), d = function(v) {\n return {\n x: (v.x - tx) * cos(a) - (v.y - ty) * sin(a),\n y: (v.x - tx) * sin(a) + (v.y - ty) * cos(a)\n };\n };\n return points.map(d);\n },\n roots: function(points, line) {\n line = line || { p1: { x: 0, y: 0 }, p2: { x: 1, y: 0 } };\n const order = points.length - 1;\n const aligned = utils.align(points, line);\n const reduce = function(t2) {\n return 0 <= t2 && t2 <= 1;\n };\n if (order === 2) {\n const a2 = aligned[0].y, b2 = aligned[1].y, c2 = aligned[2].y, d2 = a2 - 2 * b2 + c2;\n if (d2 !== 0) {\n const m1 = -sqrt(b2 * b2 - a2 * c2), m2 = -a2 + b2, v12 = -(m1 + m2) / d2, v2 = -(-m1 + m2) / d2;\n return [v12, v2].filter(reduce);\n } else if (b2 !== c2 && d2 === 0) {\n return [(2 * b2 - c2) / (2 * b2 - 2 * c2)].filter(reduce);\n }\n return [];\n }\n const pa = aligned[0].y, pb = aligned[1].y, pc = aligned[2].y, pd = aligned[3].y;\n let d = -pa + 3 * pb - 3 * pc + pd, a = 3 * pa - 6 * pb + 3 * pc, b = -3 * pa + 3 * pb, c = pa;\n if (utils.approximately(d, 0)) {\n if (utils.approximately(a, 0)) {\n if (utils.approximately(b, 0)) {\n return [];\n }\n return [-c / b].filter(reduce);\n }\n const q3 = sqrt(b * b - 4 * a * c), a2 = 2 * a;\n return [(q3 - b) / a2, (-b - q3) / a2].filter(reduce);\n }\n a /= d;\n b /= d;\n c /= d;\n const p = (3 * b - a * a) / 3, p3 = p / 3, q = (2 * a * a * a - 9 * a * b + 27 * c) / 27, q2 = q / 2, discriminant = q2 * q2 + p3 * p3 * p3;\n let u1, v1, x1, x2, x3;\n if (discriminant < 0) {\n const mp3 = -p / 3, mp33 = mp3 * mp3 * mp3, r = sqrt(mp33), t2 = -q / (2 * r), cosphi = t2 < -1 ? -1 : t2 > 1 ? 1 : t2, phi = acos(cosphi), crtr = crt(r), t1 = 2 * crtr;\n x1 = t1 * cos(phi / 3) - a / 3;\n x2 = t1 * cos((phi + tau) / 3) - a / 3;\n x3 = t1 * cos((phi + 2 * tau) / 3) - a / 3;\n return [x1, x2, x3].filter(reduce);\n } else if (discriminant === 0) {\n u1 = q2 < 0 ? crt(-q2) : -crt(q2);\n x1 = 2 * u1 - a / 3;\n x2 = -u1 - a / 3;\n return [x1, x2].filter(reduce);\n } else {\n const sd = sqrt(discriminant);\n u1 = crt(-q2 + sd);\n v1 = crt(q2 + sd);\n return [u1 - v1 - a / 3].filter(reduce);\n }\n },\n droots: function(p) {\n if (p.length === 3) {\n const a = p[0], b = p[1], c = p[2], d = a - 2 * b + c;\n if (d !== 0) {\n const m1 = -sqrt(b * b - a * c), m2 = -a + b, v1 = -(m1 + m2) / d, v2 = -(-m1 + m2) / d;\n return [v1, v2];\n } else if (b !== c && d === 0) {\n return [(2 * b - c) / (2 * (b - c))];\n }\n return [];\n }\n if (p.length === 2) {\n const a = p[0], b = p[1];\n if (a !== b) {\n return [a / (a - b)];\n }\n return [];\n }\n return [];\n },\n curvature: function(t2, d1, d2, _3d, kOnly) {\n let num, dnm, adk, dk, k = 0, r = 0;\n const d = utils.compute(t2, d1);\n const dd = utils.compute(t2, d2);\n const qdsum = d.x * d.x + d.y * d.y;\n if (_3d) {\n num = sqrt(pow(d.y * dd.z - dd.y * d.z, 2) + pow(d.z * dd.x - dd.z * d.x, 2) + pow(d.x * dd.y - dd.x * d.y, 2));\n dnm = pow(qdsum + d.z * d.z, 3 / 2);\n } else {\n num = d.x * dd.y - d.y * dd.x;\n dnm = pow(qdsum, 3 / 2);\n }\n if (num === 0 || dnm === 0) {\n return { k: 0, r: 0 };\n }\n k = num / dnm;\n r = dnm / num;\n if (!kOnly) {\n const pk = utils.curvature(t2 - 1e-3, d1, d2, _3d, true).k;\n const nk = utils.curvature(t2 + 1e-3, d1, d2, _3d, true).k;\n dk = (nk - k + (k - pk)) / 2;\n adk = (abs(nk - k) + abs(k - pk)) / 2;\n }\n return { k, r, dk, adk };\n },\n inflections: function(points) {\n if (points.length < 4)\n return [];\n const p = utils.align(points, { p1: points[0], p2: points.slice(-1)[0] }), a = p[2].x * p[1].y, b = p[3].x * p[1].y, c = p[1].x * p[2].y, d = p[3].x * p[2].y, v1 = 18 * (-3 * a + 2 * b + 3 * c - d), v2 = 18 * (3 * a - b - 3 * c), v3 = 18 * (c - a);\n if (utils.approximately(v1, 0)) {\n if (!utils.approximately(v2, 0)) {\n let t2 = -v3 / v2;\n if (0 <= t2 && t2 <= 1)\n return [t2];\n }\n return [];\n }\n const d2 = 2 * v1;\n if (utils.approximately(d2, 0))\n return [];\n const trm = v2 * v2 - 4 * v1 * v3;\n if (trm < 0)\n return [];\n const sq = Math.sqrt(trm);\n return [(sq - v2) / d2, -(v2 + sq) / d2].filter(function(r) {\n return 0 <= r && r <= 1;\n });\n },\n bboxoverlap: function(b1, b2) {\n const dims = [\"x\", \"y\"], len = dims.length;\n for (let i = 0, dim, l, t2, d; i < len; i++) {\n dim = dims[i];\n l = b1[dim].mid;\n t2 = b2[dim].mid;\n d = (b1[dim].size + b2[dim].size) / 2;\n if (abs(l - t2) >= d)\n return false;\n }\n return true;\n },\n expandbox: function(bbox, _bbox) {\n if (_bbox.x.min < bbox.x.min) {\n bbox.x.min = _bbox.x.min;\n }\n if (_bbox.y.min < bbox.y.min) {\n bbox.y.min = _bbox.y.min;\n }\n if (_bbox.z && _bbox.z.min < bbox.z.min) {\n bbox.z.min = _bbox.z.min;\n }\n if (_bbox.x.max > bbox.x.max) {\n bbox.x.max = _bbox.x.max;\n }\n if (_bbox.y.max > bbox.y.max) {\n bbox.y.max = _bbox.y.max;\n }\n if (_bbox.z && _bbox.z.max > bbox.z.max) {\n bbox.z.max = _bbox.z.max;\n }\n bbox.x.mid = (bbox.x.min + bbox.x.max) / 2;\n bbox.y.mid = (bbox.y.min + bbox.y.max) / 2;\n if (bbox.z) {\n bbox.z.mid = (bbox.z.min + bbox.z.max) / 2;\n }\n bbox.x.size = bbox.x.max - bbox.x.min;\n bbox.y.size = bbox.y.max - bbox.y.min;\n if (bbox.z) {\n bbox.z.size = bbox.z.max - bbox.z.min;\n }\n },\n pairiteration: function(c1, c2, curveIntersectionThreshold) {\n const c1b = c1.bbox(), c2b = c2.bbox(), r = 1e5, threshold = curveIntersectionThreshold || 0.5;\n if (c1b.x.size + c1b.y.size < threshold && c2b.x.size + c2b.y.size < threshold) {\n return [\n (r * (c1._t1 + c1._t2) / 2 | 0) / r + \"/\" + (r * (c2._t1 + c2._t2) / 2 | 0) / r\n ];\n }\n let cc1 = c1.split(0.5), cc2 = c2.split(0.5), pairs = [\n { left: cc1.left, right: cc2.left },\n { left: cc1.left, right: cc2.right },\n { left: cc1.right, right: cc2.right },\n { left: cc1.right, right: cc2.left }\n ];\n pairs = pairs.filter(function(pair) {\n return utils.bboxoverlap(pair.left.bbox(), pair.right.bbox());\n });\n let results = [];\n if (pairs.length === 0)\n return results;\n pairs.forEach(function(pair) {\n results = results.concat(utils.pairiteration(pair.left, pair.right, threshold));\n });\n results = results.filter(function(v, i) {\n return results.indexOf(v) === i;\n });\n return results;\n },\n getccenter: function(p1, p2, p3) {\n const dx1 = p2.x - p1.x, dy1 = p2.y - p1.y, dx2 = p3.x - p2.x, dy2 = p3.y - p2.y, dx1p = dx1 * cos(quart) - dy1 * sin(quart), dy1p = dx1 * sin(quart) + dy1 * cos(quart), dx2p = dx2 * cos(quart) - dy2 * sin(quart), dy2p = dx2 * sin(quart) + dy2 * cos(quart), mx1 = (p1.x + p2.x) / 2, my1 = (p1.y + p2.y) / 2, mx2 = (p2.x + p3.x) / 2, my2 = (p2.y + p3.y) / 2, mx1n = mx1 + dx1p, my1n = my1 + dy1p, mx2n = mx2 + dx2p, my2n = my2 + dy2p, arc = utils.lli8(mx1, my1, mx1n, my1n, mx2, my2, mx2n, my2n), r = utils.dist(arc, p1);\n let s = atan2(p1.y - arc.y, p1.x - arc.x), m = atan2(p2.y - arc.y, p2.x - arc.x), e = atan2(p3.y - arc.y, p3.x - arc.x), _;\n if (s < e) {\n if (s > m || m > e) {\n s += tau;\n }\n if (s > e) {\n _ = e;\n e = s;\n s = _;\n }\n } else {\n if (e < m && m < s) {\n _ = e;\n e = s;\n s = _;\n } else {\n e += tau;\n }\n }\n arc.s = s;\n arc.e = e;\n arc.r = r;\n return arc;\n },\n numberSort: function(a, b) {\n return a - b;\n }\n};\n\n// src/poly-bezier.js\nvar PolyBezier = class {\n constructor(curves) {\n this.curves = [];\n this._3d = false;\n if (!!curves) {\n this.curves = curves;\n this._3d = this.curves[0]._3d;\n }\n }\n valueOf() {\n return this.toString();\n }\n toString() {\n return \"[\" + this.curves.map(function(curve) {\n return utils.pointsToString(curve.points);\n }).join(\", \") + \"]\";\n }\n addCurve(curve) {\n this.curves.push(curve);\n this._3d = this._3d || curve._3d;\n }\n length() {\n return this.curves.map(function(v) {\n return v.length();\n }).reduce(function(a, b) {\n return a + b;\n });\n }\n curve(idx) {\n return this.curves[idx];\n }\n bbox() {\n const c = this.curves;\n var bbox = c[0].bbox();\n for (var i = 1; i < c.length; i++) {\n utils.expandbox(bbox, c[i].bbox());\n }\n return bbox;\n }\n offset(d) {\n const offset = [];\n this.curves.forEach(function(v) {\n offset.push(...v.offset(d));\n });\n return new PolyBezier(offset);\n }\n};\n\n// src/bezier.js\nvar { abs: abs2, min, max, cos: cos2, sin: sin2, acos: acos2, sqrt: sqrt2 } = Math;\nvar pi2 = Math.PI;\nvar Bezier = class {\n constructor(coords) {\n let args = coords && coords.forEach ? coords : Array.from(arguments).slice();\n let coordlen = false;\n if (typeof args[0] === \"object\") {\n coordlen = args.length;\n const newargs = [];\n args.forEach(function(point2) {\n [\"x\", \"y\", \"z\"].forEach(function(d) {\n if (typeof point2[d] !== \"undefined\") {\n newargs.push(point2[d]);\n }\n });\n });\n args = newargs;\n }\n let higher = false;\n const len = args.length;\n if (coordlen) {\n if (coordlen > 4) {\n if (arguments.length !== 1) {\n throw new Error(\"Only new Bezier(point[]) is accepted for 4th and higher order curves\");\n }\n higher = true;\n }\n } else {\n if (len !== 6 && len !== 8 && len !== 9 && len !== 12) {\n if (arguments.length !== 1) {\n throw new Error(\"Only new Bezier(point[]) is accepted for 4th and higher order curves\");\n }\n }\n }\n const _3d = this._3d = !higher && (len === 9 || len === 12) || coords && coords[0] && typeof coords[0].z !== \"undefined\";\n const points = this.points = [];\n for (let idx = 0, step = _3d ? 3 : 2; idx < len; idx += step) {\n var point = {\n x: args[idx],\n y: args[idx + 1]\n };\n if (_3d) {\n point.z = args[idx + 2];\n }\n points.push(point);\n }\n const order = this.order = points.length - 1;\n const dims = this.dims = [\"x\", \"y\"];\n if (_3d)\n dims.push(\"z\");\n this.dimlen = dims.length;\n const aligned = utils.align(points, { p1: points[0], p2: points[order] });\n const baselength = utils.dist(points[0], points[order]);\n this._linear = aligned.reduce((t2, p) => t2 + abs2(p.y), 0) < baselength / 50;\n this._lut = [];\n this._t1 = 0;\n this._t2 = 1;\n this.update();\n }\n static quadraticFromPoints(p1, p2, p3, t2) {\n if (typeof t2 === \"undefined\") {\n t2 = 0.5;\n }\n if (t2 === 0) {\n return new Bezier(p2, p2, p3);\n }\n if (t2 === 1) {\n return new Bezier(p1, p2, p2);\n }\n const abc = Bezier.getABC(2, p1, p2, p3, t2);\n return new Bezier(p1, abc.A, p3);\n }\n static cubicFromPoints(S, B, E, t2, d1) {\n if (typeof t2 === \"undefined\") {\n t2 = 0.5;\n }\n const abc = Bezier.getABC(3, S, B, E, t2);\n if (typeof d1 === \"undefined\") {\n d1 = utils.dist(B, abc.C);\n }\n const d2 = d1 * (1 - t2) / t2;\n const selen = utils.dist(S, E), lx = (E.x - S.x) / selen, ly = (E.y - S.y) / selen, bx1 = d1 * lx, by1 = d1 * ly, bx2 = d2 * lx, by2 = d2 * ly;\n const e1 = { x: B.x - bx1, y: B.y - by1 }, e2 = { x: B.x + bx2, y: B.y + by2 }, A = abc.A, v1 = { x: A.x + (e1.x - A.x) / (1 - t2), y: A.y + (e1.y - A.y) / (1 - t2) }, v2 = { x: A.x + (e2.x - A.x) / t2, y: A.y + (e2.y - A.y) / t2 }, nc1 = { x: S.x + (v1.x - S.x) / t2, y: S.y + (v1.y - S.y) / t2 }, nc2 = {\n x: E.x + (v2.x - E.x) / (1 - t2),\n y: E.y + (v2.y - E.y) / (1 - t2)\n };\n return new Bezier(S, nc1, nc2, E);\n }\n static getUtils() {\n return utils;\n }\n getUtils() {\n return Bezier.getUtils();\n }\n static get PolyBezier() {\n return PolyBezier;\n }\n valueOf() {\n return this.toString();\n }\n toString() {\n return utils.pointsToString(this.points);\n }\n toSVG() {\n if (this._3d)\n return false;\n const p = this.points, x = p[0].x, y = p[0].y, s = [\"M\", x, y, this.order === 2 ? \"Q\" : \"C\"];\n for (let i = 1, last = p.length; i < last; i++) {\n s.push(p[i].x);\n s.push(p[i].y);\n }\n return s.join(\" \");\n }\n setRatios(ratios) {\n if (ratios.length !== this.points.length) {\n throw new Error(\"incorrect number of ratio values\");\n }\n this.ratios = ratios;\n this._lut = [];\n }\n verify() {\n const print = this.coordDigest();\n if (print !== this._print) {\n this._print = print;\n this.update();\n }\n }\n coordDigest() {\n return this.points.map(function(c, pos) {\n return \"\" + pos + c.x + c.y + (c.z ? c.z : 0);\n }).join(\"\");\n }\n update() {\n this._lut = [];\n this.dpoints = utils.derive(this.points, this._3d);\n this.computedirection();\n }\n computedirection() {\n const points = this.points;\n const angle = utils.angle(points[0], points[this.order], points[1]);\n this.clockwise = angle > 0;\n }\n length() {\n return utils.length(this.derivative.bind(this));\n }\n static getABC(order = 2, S, B, E, t2 = 0.5) {\n const u = utils.projectionratio(t2, order), um = 1 - u, C = {\n x: u * S.x + um * E.x,\n y: u * S.y + um * E.y\n }, s = utils.abcratio(t2, order), A = {\n x: B.x + (B.x - C.x) / s,\n y: B.y + (B.y - C.y) / s\n };\n return { A, B, C, S, E };\n }\n getABC(t2, B) {\n B = B || this.get(t2);\n let S = this.points[0];\n let E = this.points[this.order];\n return Bezier.getABC(this.order, S, B, E, t2);\n }\n getLUT(steps) {\n this.verify();\n steps = steps || 100;\n if (this._lut.length === steps + 1) {\n return this._lut;\n }\n this._lut = [];\n steps++;\n this._lut = [];\n for (let i = 0, p, t2; i < steps; i++) {\n t2 = i / (steps - 1);\n p = this.compute(t2);\n p.t = t2;\n this._lut.push(p);\n }\n return this._lut;\n }\n on(point, error) {\n error = error || 5;\n const lut = this.getLUT(), hits = [];\n for (let i = 0, c, t2 = 0; i < lut.length; i++) {\n c = lut[i];\n if (utils.dist(c, point) < error) {\n hits.push(c);\n t2 += i / lut.length;\n }\n }\n if (!hits.length)\n return false;\n return t /= hits.length;\n }\n project(point) {\n const LUT = this.getLUT(), l = LUT.length - 1, closest = utils.closest(LUT, point), mpos = closest.mpos, t1 = (mpos - 1) / l, t2 = (mpos + 1) / l, step = 0.1 / l;\n let mdist = closest.mdist, t3 = t1, ft = t3, p;\n mdist += 1;\n for (let d; t3 < t2 + step; t3 += step) {\n p = this.compute(t3);\n d = utils.dist(point, p);\n if (d < mdist) {\n mdist = d;\n ft = t3;\n }\n }\n ft = ft < 0 ? 0 : ft > 1 ? 1 : ft;\n p = this.compute(ft);\n p.t = ft;\n p.d = mdist;\n return p;\n }\n get(t2) {\n return this.compute(t2);\n }\n point(idx) {\n return this.points[idx];\n }\n compute(t2) {\n if (this.ratios) {\n return utils.computeWithRatios(t2, this.points, this.ratios, this._3d);\n }\n return utils.compute(t2, this.points, this._3d, this.ratios);\n }\n raise() {\n const p = this.points, np = [p[0]], k = p.length;\n for (let i = 1, pi3, pim; i < k; i++) {\n pi3 = p[i];\n pim = p[i - 1];\n np[i] = {\n x: (k - i) / k * pi3.x + i / k * pim.x,\n y: (k - i) / k * pi3.y + i / k * pim.y\n };\n }\n np[k] = p[k - 1];\n return new Bezier(np);\n }\n derivative(t2) {\n return utils.compute(t2, this.dpoints[0], this._3d);\n }\n dderivative(t2) {\n return utils.compute(t2, this.dpoints[1], this._3d);\n }\n align() {\n let p = this.points;\n return new Bezier(utils.align(p, { p1: p[0], p2: p[p.length - 1] }));\n }\n curvature(t2) {\n return utils.curvature(t2, this.dpoints[0], this.dpoints[1], this._3d);\n }\n inflections() {\n return utils.inflections(this.points);\n }\n normal(t2) {\n return this._3d ? this.__normal3(t2) : this.__normal2(t2);\n }\n __normal2(t2) {\n const d = this.derivative(t2);\n const q = sqrt2(d.x * d.x + d.y * d.y);\n return { t: t2, x: -d.y / q, y: d.x / q };\n }\n __normal3(t2) {\n const r1 = this.derivative(t2), r2 = this.derivative(t2 + 0.01), q1 = sqrt2(r1.x * r1.x + r1.y * r1.y + r1.z * r1.z), q2 = sqrt2(r2.x * r2.x + r2.y * r2.y + r2.z * r2.z);\n r1.x /= q1;\n r1.y /= q1;\n r1.z /= q1;\n r2.x /= q2;\n r2.y /= q2;\n r2.z /= q2;\n const c = {\n x: r2.y * r1.z - r2.z * r1.y,\n y: r2.z * r1.x - r2.x * r1.z,\n z: r2.x * r1.y - r2.y * r1.x\n };\n const m = sqrt2(c.x * c.x + c.y * c.y + c.z * c.z);\n c.x /= m;\n c.y /= m;\n c.z /= m;\n const R = [\n c.x * c.x,\n c.x * c.y - c.z,\n c.x * c.z + c.y,\n c.x * c.y + c.z,\n c.y * c.y,\n c.y * c.z - c.x,\n c.x * c.z - c.y,\n c.y * c.z + c.x,\n c.z * c.z\n ];\n const n = {\n t: t2,\n x: R[0] * r1.x + R[1] * r1.y + R[2] * r1.z,\n y: R[3] * r1.x + R[4] * r1.y + R[5] * r1.z,\n z: R[6] * r1.x + R[7] * r1.y + R[8] * r1.z\n };\n return n;\n }\n hull(t2) {\n let p = this.points, _p = [], q = [], idx = 0;\n q[idx++] = p[0];\n q[idx++] = p[1];\n q[idx++] = p[2];\n if (this.order === 3) {\n q[idx++] = p[3];\n }\n while (p.length > 1) {\n _p = [];\n for (let i = 0, pt, l = p.length - 1; i < l; i++) {\n pt = utils.lerp(t2, p[i], p[i + 1]);\n q[idx++] = pt;\n _p.push(pt);\n }\n p = _p;\n }\n return q;\n }\n split(t1, t2) {\n if (t1 === 0 && !!t2) {\n return this.split(t2).left;\n }\n if (t2 === 1) {\n return this.split(t1).right;\n }\n const q = this.hull(t1);\n const result = {\n left: this.order === 2 ? new Bezier([q[0], q[3], q[5]]) : new Bezier([q[0], q[4], q[7], q[9]]),\n right: this.order === 2 ? new Bezier([q[5], q[4], q[2]]) : new Bezier([q[9], q[8], q[6], q[3]]),\n span: q\n };\n result.left._t1 = utils.map(0, 0, 1, this._t1, this._t2);\n result.left._t2 = utils.map(t1, 0, 1, this._t1, this._t2);\n result.right._t1 = utils.map(t1, 0, 1, this._t1, this._t2);\n result.right._t2 = utils.map(1, 0, 1, this._t1, this._t2);\n if (!t2) {\n return result;\n }\n t2 = utils.map(t2, t1, 1, 0, 1);\n return result.right.split(t2).left;\n }\n extrema() {\n const result = {};\n let roots = [];\n this.dims.forEach(function(dim) {\n let mfn = function(v) {\n return v[dim];\n };\n let p = this.dpoints[0].map(mfn);\n result[dim] = utils.droots(p);\n if (this.order === 3) {\n p = this.dpoints[1].map(mfn);\n result[dim] = result[dim].concat(utils.droots(p));\n }\n result[dim] = result[dim].filter(function(t2) {\n return t2 >= 0 && t2 <= 1;\n });\n roots = roots.concat(result[dim].sort(utils.numberSort));\n }.bind(this));\n result.values = roots.sort(utils.numberSort).filter(function(v, idx) {\n return roots.indexOf(v) === idx;\n });\n return result;\n }\n bbox() {\n const extrema = this.extrema(), result = {};\n this.dims.forEach(function(d) {\n result[d] = utils.getminmax(this, d, extrema[d]);\n }.bind(this));\n return result;\n }\n overlaps(curve) {\n const lbbox = this.bbox(), tbbox = curve.bbox();\n return utils.bboxoverlap(lbbox, tbbox);\n }\n offset(t2, d) {\n if (typeof d !== \"undefined\") {\n const c = this.get(t2), n = this.normal(t2);\n const ret = {\n c,\n n,\n x: c.x + n.x * d,\n y: c.y + n.y * d\n };\n if (this._3d) {\n ret.z = c.z + n.z * d;\n }\n return ret;\n }\n if (this._linear) {\n const nv = this.normal(0), coords = this.points.map(function(p) {\n const ret = {\n x: p.x + t2 * nv.x,\n y: p.y + t2 * nv.y\n };\n if (p.z && nv.z) {\n ret.z = p.z + t2 * nv.z;\n }\n return ret;\n });\n return [new Bezier(coords)];\n }\n return this.reduce().map(function(s) {\n if (s._linear) {\n return s.offset(t2)[0];\n }\n return s.scale(t2);\n });\n }\n simple() {\n if (this.order === 3) {\n const a1 = utils.angle(this.points[0], this.points[3], this.points[1]);\n const a2 = utils.angle(this.points[0], this.points[3], this.points[2]);\n if (a1 > 0 && a2 < 0 || a1 < 0 && a2 > 0)\n return false;\n }\n const n1 = this.normal(0);\n const n2 = this.normal(1);\n let s = n1.x * n2.x + n1.y * n2.y;\n if (this._3d) {\n s += n1.z * n2.z;\n }\n return abs2(acos2(s)) < pi2 / 3;\n }\n reduce() {\n let i, t1 = 0, t2 = 0, step = 0.01, segment, pass1 = [], pass2 = [];\n let extrema = this.extrema().values;\n if (extrema.indexOf(0) === -1) {\n extrema = [0].concat(extrema);\n }\n if (extrema.indexOf(1) === -1) {\n extrema.push(1);\n }\n for (t1 = extrema[0], i = 1; i < extrema.length; i++) {\n t2 = extrema[i];\n segment = this.split(t1, t2);\n segment._t1 = t1;\n segment._t2 = t2;\n pass1.push(segment);\n t1 = t2;\n }\n pass1.forEach(function(p1) {\n t1 = 0;\n t2 = 0;\n while (t2 <= 1) {\n for (t2 = t1 + step; t2 <= 1 + step; t2 += step) {\n segment = p1.split(t1, t2);\n if (!segment.simple()) {\n t2 -= step;\n if (abs2(t1 - t2) < step) {\n return [];\n }\n segment = p1.split(t1, t2);\n segment._t1 = utils.map(t1, 0, 1, p1._t1, p1._t2);\n segment._t2 = utils.map(t2, 0, 1, p1._t1, p1._t2);\n pass2.push(segment);\n t1 = t2;\n break;\n }\n }\n }\n if (t1 < 1) {\n segment = p1.split(t1, 1);\n segment._t1 = utils.map(t1, 0, 1, p1._t1, p1._t2);\n segment._t2 = p1._t2;\n pass2.push(segment);\n }\n });\n return pass2;\n }\n translate(v, d1, d2) {\n d2 = typeof d2 === \"number\" ? d2 : d1;\n const o = this.order;\n let d = this.points.map((_, i) => (1 - i / o) * d1 + i / o * d2);\n return new Bezier(this.points.map((p, i) => ({\n x: p.x + v.x * d[i],\n y: p.y + v.y * d[i]\n })));\n }\n scale(d) {\n const order = this.order;\n let distanceFn = false;\n if (typeof d === \"function\") {\n distanceFn = d;\n }\n if (distanceFn && order === 2) {\n return this.raise().scale(distanceFn);\n }\n const clockwise = this.clockwise;\n const points = this.points;\n if (this._linear) {\n return this.translate(this.normal(0), distanceFn ? distanceFn(0) : d, distanceFn ? distanceFn(1) : d);\n }\n const r1 = distanceFn ? distanceFn(0) : d;\n const r2 = distanceFn ? distanceFn(1) : d;\n const v = [this.offset(0, 10), this.offset(1, 10)];\n const np = [];\n const o = utils.lli4(v[0], v[0].c, v[1], v[1].c);\n if (!o) {\n throw new Error(\"cannot scale this curve. Try reducing it first.\");\n }\n [0, 1].forEach(function(t2) {\n const p = np[t2 * order] = utils.copy(points[t2 * order]);\n p.x += (t2 ? r2 : r1) * v[t2].n.x;\n p.y += (t2 ? r2 : r1) * v[t2].n.y;\n });\n if (!distanceFn) {\n [0, 1].forEach((t2) => {\n if (order === 2 && !!t2)\n return;\n const p = np[t2 * order];\n const d2 = this.derivative(t2);\n const p2 = { x: p.x + d2.x, y: p.y + d2.y };\n np[t2 + 1] = utils.lli4(p, p2, o, points[t2 + 1]);\n });\n return new Bezier(np);\n }\n [0, 1].forEach(function(t2) {\n if (order === 2 && !!t2)\n return;\n var p = points[t2 + 1];\n var ov = {\n x: p.x - o.x,\n y: p.y - o.y\n };\n var rc = distanceFn ? distanceFn((t2 + 1) / order) : d;\n if (distanceFn && !clockwise)\n rc = -rc;\n var m = sqrt2(ov.x * ov.x + ov.y * ov.y);\n ov.x /= m;\n ov.y /= m;\n np[t2 + 1] = {\n x: p.x + rc * ov.x,\n y: p.y + rc * ov.y\n };\n });\n return new Bezier(np);\n }\n outline(d1, d2, d3, d4) {\n d2 = d2 === void 0 ? d1 : d2;\n if (this._linear) {\n const n = this.normal(0);\n const start = this.points[0];\n const end = this.points[this.points.length - 1];\n let s, mid, e;\n if (d3 === void 0) {\n d3 = d1;\n d4 = d2;\n }\n s = { x: start.x + n.x * d1, y: start.y + n.y * d1 };\n e = { x: end.x + n.x * d3, y: end.y + n.y * d3 };\n mid = { x: (s.x + e.x) / 2, y: (s.y + e.y) / 2 };\n const fline = [s, mid, e];\n s = { x: start.x - n.x * d2, y: start.y - n.y * d2 };\n e = { x: end.x - n.x * d4, y: end.y - n.y * d4 };\n mid = { x: (s.x + e.x) / 2, y: (s.y + e.y) / 2 };\n const bline = [e, mid, s];\n const ls2 = utils.makeline(bline[2], fline[0]);\n const le2 = utils.makeline(fline[2], bline[0]);\n const segments2 = [ls2, new Bezier(fline), le2, new Bezier(bline)];\n return new PolyBezier(segments2);\n }\n const reduced = this.reduce(), len = reduced.length, fcurves = [];\n let bcurves = [], p, alen = 0, tlen = this.length();\n const graduated = typeof d3 !== \"undefined\" && typeof d4 !== \"undefined\";\n function linearDistanceFunction(s, e, tlen2, alen2, slen) {\n return function(v) {\n const f1 = alen2 / tlen2, f2 = (alen2 + slen) / tlen2, d = e - s;\n return utils.map(v, 0, 1, s + f1 * d, s + f2 * d);\n };\n }\n reduced.forEach(function(segment) {\n const slen = segment.length();\n if (graduated) {\n fcurves.push(segment.scale(linearDistanceFunction(d1, d3, tlen, alen, slen)));\n bcurves.push(segment.scale(linearDistanceFunction(-d2, -d4, tlen, alen, slen)));\n } else {\n fcurves.push(segment.scale(d1));\n bcurves.push(segment.scale(-d2));\n }\n alen += slen;\n });\n bcurves = bcurves.map(function(s) {\n p = s.points;\n if (p[3]) {\n s.points = [p[3], p[2], p[1], p[0]];\n } else {\n s.points = [p[2], p[1], p[0]];\n }\n return s;\n }).reverse();\n const fs = fcurves[0].points[0], fe = fcurves[len - 1].points[fcurves[len - 1].points.length - 1], bs = bcurves[len - 1].points[bcurves[len - 1].points.length - 1], be = bcurves[0].points[0], ls = utils.makeline(bs, fs), le = utils.makeline(fe, be), segments = [ls].concat(fcurves).concat([le]).concat(bcurves);\n return new PolyBezier(segments);\n }\n outlineshapes(d1, d2, curveIntersectionThreshold) {\n d2 = d2 || d1;\n const outline = this.outline(d1, d2).curves;\n const shapes = [];\n for (let i = 1, len = outline.length; i < len / 2; i++) {\n const shape = utils.makeshape(outline[i], outline[len - i], curveIntersectionThreshold);\n shape.startcap.virtual = i > 1;\n shape.endcap.virtual = i < len / 2 - 1;\n shapes.push(shape);\n }\n return shapes;\n }\n intersects(curve, curveIntersectionThreshold) {\n if (!curve)\n return this.selfintersects(curveIntersectionThreshold);\n if (curve.p1 && curve.p2) {\n return this.lineIntersects(curve);\n }\n if (curve instanceof Bezier) {\n curve = curve.reduce();\n }\n return this.curveintersects(this.reduce(), curve, curveIntersectionThreshold);\n }\n lineIntersects(line) {\n const mx = min(line.p1.x, line.p2.x), my = min(line.p1.y, line.p2.y), MX = max(line.p1.x, line.p2.x), MY = max(line.p1.y, line.p2.y);\n return utils.roots(this.points, line).filter((t2) => {\n var p = this.get(t2);\n return utils.between(p.x, mx, MX) && utils.between(p.y, my, MY);\n });\n }\n selfintersects(curveIntersectionThreshold) {\n const reduced = this.reduce(), len = reduced.length - 2, results = [];\n for (let i = 0, result, left, right; i < len; i++) {\n left = reduced.slice(i, i + 1);\n right = reduced.slice(i + 2);\n result = this.curveintersects(left, right, curveIntersectionThreshold);\n results.push(...result);\n }\n return results;\n }\n curveintersects(c1, c2, curveIntersectionThreshold) {\n const pairs = [];\n c1.forEach(function(l) {\n c2.forEach(function(r) {\n if (l.overlaps(r)) {\n pairs.push({ left: l, right: r });\n }\n });\n });\n let intersections = [];\n pairs.forEach(function(pair) {\n const result = utils.pairiteration(pair.left, pair.right, curveIntersectionThreshold);\n if (result.length > 0) {\n intersections = intersections.concat(result);\n }\n });\n return intersections;\n }\n arcs(errorThreshold) {\n errorThreshold = errorThreshold || 0.5;\n return this._iterate(errorThreshold, []);\n }\n _error(pc, np1, s, e) {\n const q = (e - s) / 4, c1 = this.get(s + q), c2 = this.get(e - q), ref = utils.dist(pc, np1), d1 = utils.dist(pc, c1), d2 = utils.dist(pc, c2);\n return abs2(d1 - ref) + abs2(d2 - ref);\n }\n _iterate(errorThreshold, circles) {\n let t_s = 0, t_e = 1, safety;\n do {\n safety = 0;\n t_e = 1;\n let np1 = this.get(t_s), np2, np3, arc, prev_arc;\n let curr_good = false, prev_good = false, done;\n let t_m = t_e, prev_e = 1, step = 0;\n do {\n prev_good = curr_good;\n prev_arc = arc;\n t_m = (t_s + t_e) / 2;\n step++;\n np2 = this.get(t_m);\n np3 = this.get(t_e);\n arc = utils.getccenter(np1, np2, np3);\n arc.interval = {\n start: t_s,\n end: t_e\n };\n let error = this._error(arc, np1, t_s, t_e);\n curr_good = error <= errorThreshold;\n done = prev_good && !curr_good;\n if (!done)\n prev_e = t_e;\n if (curr_good) {\n if (t_e >= 1) {\n arc.interval.end = prev_e = 1;\n prev_arc = arc;\n if (t_e > 1) {\n let d = {\n x: arc.x + arc.r * cos2(arc.e),\n y: arc.y + arc.r * sin2(arc.e)\n };\n arc.e += utils.angle({ x: arc.x, y: arc.y }, d, this.get(1));\n }\n break;\n }\n t_e = t_e + (t_e - t_s) / 2;\n } else {\n t_e = t_m;\n }\n } while (!done && safety++ < 100);\n if (safety >= 100) {\n break;\n }\n prev_arc = prev_arc ? prev_arc : arc;\n circles.push(prev_arc);\n t_s = prev_e;\n } while (t_e < 1);\n return circles;\n }\n};\nmodule.exports = __toCommonJS(bezier_exports);\n// Annotate the CommonJS export names for ESM import in node:\n0 && (module.exports = {\n Bezier\n});\n",null],"names":["earcut","data","holeIndices","dim","hasHoles","length","outerLen","outerNode","linkedList","triangles","next","prev","minX","minY","invSize","eliminateHoles","Infinity","maxX","maxY","i","x","y","Math","max","earcutLinked","start","end","clockwise","last","signedArea","insertNode","equals","removeNode","filterPoints","p","again","steiner","area","ear","pass","indexCurve","stop","isEarHashed","isEar","push","cureLocalIntersections","splitEarcut","a","b","c","ax","bx","cx","ay","by","cy","x0","min","y0","x1","y1","pointInTriangleExceptFirst","minZ","zOrder","maxZ","prevZ","n","nextZ","z","intersects","locallyInside","isValidDiagonal","splitPolygon","queue","len","list","getLeftmost","sort","compareXYSlope","eliminateHole","result","aSlope","bSlope","hole","bridge","findHoleBridge","bridgeReverse","hx","hy","qx","m","mx","my","tanMin","pointInTriangle","tan","abs","sectorContainsSector","sortLinked","numMerges","inSize","e","tail","q","pSize","qSize","leftmost","px","py","intersectsPolygon","middleInside","r","p1","p2","q1","q2","o1","sign","o2","o3","o4","onSegment","num","inside","a2","createNode","b2","an","bp","sum","j","Quaternion","w","isQuaternion","_x","_y","_z","_w","slerpFlat","dst","dstOffset","src0","srcOffset0","src1","srcOffset1","t","z0","w0","z1","w1","s","cos","dir","sqrSin","Number","EPSILON","sin","sqrt","atan2","tDir","f","multiplyQuaternionsFlat","set","_onChangeCallback","clone","constructor","copy","quaternion","setFromEuler","euler","update","order","_order","c1","c2","c3","s1","s2","s3","console","warn","setFromAxisAngle","axis","angle","halfAngle","setFromRotationMatrix","te","elements","m11","m12","m13","m21","m22","m23","m31","m32","m33","trace","setFromUnitVectors","vFrom","vTo","dot","normalize","rotateTowards","step","angleTo","slerp","identity","invert","conjugate","v","lengthSq","l","multiply","multiplyQuaternions","premultiply","qax","qay","qaz","qaw","qbx","qby","qbz","qbw","qb","cosHalfTheta","sqrSinHalfTheta","sinHalfTheta","halfTheta","ratioA","ratioB","slerpQuaternions","qa","random","theta1","PI","theta2","r1","r2","fromArray","array","offset","toArray","fromBufferAttribute","attribute","index","getX","getY","getZ","getW","toJSON","_onChange","callback","value","_quaternion","Vector3","undefined","add","addScalar","addVectors","addScaledVector","sub","subScalar","subVectors","multiplyScalar","scalar","multiplyVectors","applyAxisAngle","applyQuaternion","applyMatrix4","qy","qz","qw","ix","iy","iz","iw","divide","divideScalar","clamp","clampScalar","minVal","maxVal","clampLength","setLength","lerp","alpha","lerpVectors","v1","v2","cross","crossVectors","az","bz","distanceTo","distanceToSquared","generateTopAndBottom","generateSides","getAngle","PathPoint","pos","right","up","dist","widthScale","sharp","lerpPathPoints","source","Matrix4","n11","n12","n13","n14","n21","n22","n23","n24","n31","n32","n33","n34","n41","n42","n43","n44","multiplyMatrices","makeRotationAxis","tx","ty","matrix","me","Curve","type","arcLengthDivisions","getPoint","getPointAt","u","optionalTarget","getUtoTmapping","getPoints","divisions","points","d","getLength","lengths","getLengths","cacheArcLengths","needsUpdate","cache","current","distance","arcLengths","il","targetArcLength","low","high","comparison","floor","lengthBefore","lengthAfter","segmentLength","segmentFraction","QuadraticBezierP0","k","QuadraticBezierP1","QuadraticBezierP2","QuadraticBezier","p0","QuadraticBezierCurve3","v0","isQuadraticBezierCurve3","point","helpVec3_1","helpVec3_2","helpVec3_3","helpMat4","helpCurve","_getCornerBezierCurve","cornerRadius","firstCorner","out","lastDir","nextDir","lastDirLength","nextDirLength","v0Dist","v2Dist","PathPointList","count","cornerSplit","close","slice","_start","_corner","_end","_getByIndex","MAX_VALUE","tz","lastPoint","vec","theta","acos","curve","samplerPoints","_sharpCorner","dirType","_cos","UP","normalDir","__defProp","Object","defineProperty","__getOwnPropDesc","getOwnPropertyDescriptor","__getOwnPropNames","getOwnPropertyNames","__hasOwnProp","prototype","hasOwnProperty","__markAsModule","target","__export","all","name","get","enumerable","__reExport","module2","copyDefault","desc","key","call","__toCommonJS","temp","WeakMap","bezier_exports","Bezier","pow","crt","pi","tau","quart","epsilon","nMax","MAX_SAFE_INTEGER","nMin","MIN_SAFE_INTEGER","ZERO","utils","Tvalues","Cvalues","arcfn","t2","derivativeFn","compute","_3d","mt","ret","mt2","t22","dCpts","JSON","parse","stringify","splice","computeWithRatios","ratios","f1","f2","f3","f4","derive","dpoints","dpt","between","M","approximately","precision","map","ds","de","ts","d1","d2","pointToString","pointsToString","join","obj","o","dx1","dy1","dx2","dy2","round","indexOf","parseFloat","substring","dx","dy","closest","LUT","mdist","mpos","forEach","idx","abcratio","bottom","top","projectionratio","lli8","x2","y2","x3","y3","x4","y4","nx","ny","lli4","p3","p4","lli","makeline","findbbox","sections","MX","MY","bbox","mid","size","shapeintersections","bbox1","bbox2","curveIntersectionThreshold","bboxoverlap","intersections","a1","startcap","forward","back","endcap","l1","virtual","l2","iss","makeshape","bpl","fpl","shape","getminmax","min2","max2","concat","align","line","roots","aligned","reduce","m1","m2","v12","filter","pa","pb","pc","pd","q3","discriminant","u1","mp3","mp33","cosphi","phi","crtr","t1","sd","droots","curvature","kOnly","dnm","adk","dk","dd","qdsum","pk","nk","inflections","v3","trm","sq","b1","dims","expandbox","_bbox","pairiteration","c1b","c2b","threshold","_t1","_t2","cc1","split","cc2","pairs","left","pair","results","getccenter","dx1p","dy1p","dx2p","dy2p","mx1","my1","mx2","my2","mx1n","my1n","mx2n","my2n","arc","_","numberSort","PolyBezier","curves","valueOf","toString","addCurve","abs2","cos2","sin2","acos2","sqrt2","pi2","coords","args","Array","from","arguments","coordlen","newargs","point2","higher","Error","dimlen","baselength","_linear","_lut","quadraticFromPoints","abc","getABC","A","cubicFromPoints","S","B","E","C","selen","lx","ly","bx1","by1","bx2","by2","e1","e2","nc1","nc2","getUtils","toSVG","setRatios","verify","print","coordDigest","_print","computedirection","derivative","bind","um","getLUT","steps","on","error","lut","hits","project","t3","ft","raise","np","pi3","pim","dderivative","normal","__normal3","__normal2","R","hull","_p","pt","span","extrema","mfn","values","overlaps","lbbox","tbbox","nv","scale","simple","n1","n2","segment","pass1","pass2","translate","distanceFn","ov","rc","outline","d3","d4","fline","bline","ls2","le2","segments2","reduced","fcurves","bcurves","alen","tlen","graduated","linearDistanceFunction","tlen2","alen2","slen","reverse","fs","fe","bs","be","ls","le","segments","outlineshapes","shapes","selfintersects","lineIntersects","curveintersects","arcs","errorThreshold","_iterate","_error","np1","ref","circles","t_s","t_e","safety","np2","np3","prev_arc","curr_good","prev_good","done","t_m","prev_e","interval","bezier"],"mappings":"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CA;AAEA;AAEA;AAEA;AACA;AACA;AAEA;AACA;AACA;AAEA;AACA;AACA;AAEA;AAEA;AAEA;AACA;AACA;AAEA;AACA;AACA;AAEA;AACA;AACA;AAEA;AAEA;AAEA;AACA;AACA;AAEA;AACA;AACA;AAEA;AACA;AACA;AAEA;AAEA;AAEA;AACA;AACA;AAEA;AACA;AACA;AAEA;AACA;AACA;AAEA;AAEA;AAEA;AACA;AACA;AAEA;AACA;AACA;AAEA;AACA;AACA;AAEA;AAEA;AAEA;AACA;AACA;AAEA;AACA;AACA;AAEA;AACA;AACA;AAEA;AAEA;AACA;AACA;AACA;AAEA;AACA;AACA;AACA;AACA;AAEA;AAEA;AAEA;AAEA;AAEA;AAEA;AAEA;AAEA;AAEA;AAEA;AAEA;AAEA;AAEA;AACA;AAEA;AAEA;AAEA;AAEA;AAEA;AAEA;AAEA;AAEA;AACA;AAEA;AAEA;AACA;AAEA;AACA;AACA;AAEA;AAEA;;;SAEA/G,WAAA,SAAS3H,QAAAA,CAAAA,CAAT,EAAY;AAER,IAAA,OAAO,KAAK2O,gBAAL,CAAsB,IAAtB,EAA4B3O,CAA5B,CAAP,CAAA;AAEH;AAID;AAEA;AAEA;AAEA;AACA;AACA;AAEA;AACA;AACA;AACA;AAEA;AACA;AACA;AACA;AAEA;AACA;AACA;AACA;AAEA;AACA;AACA;AACA;AAEA;AACA;AACA;AACA;AAEA;AACA;AACA;AACA;AAEA;AAEA;AAEA;AAEA;AAEA;AACA;AACA;AACA;AAEA;AAEA;AAEA;AAEA;AAEA;AACA;AACA;AACA;AAEA;AACA;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAEA;AAEA;AAEA;AAEA;AACA;AAEA;AACA;AACA;AAEA;AACA;AACA;AAEA;AAEA;AAEA;AAEA;AAEA;AAEA;AACA;AACA;AAEA;AAEA;AACA;AACA;AAEA;AAEA;AAEA;AAEA;AAEA;AACA;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"}