poly-extrude 0.16.0 → 0.17.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/index.d.ts +3 -2
- package/dist/index.js +3 -2
- package/dist/index.js.map +1 -1
- package/dist/poly-extrude.js +380 -47
- package/dist/poly-extrude.js.map +1 -1
- package/dist/poly-extrude.min.js +2 -2
- package/dist/poly-extrude.mjs +379 -48
- package/dist/poly-extrude.mjs.map +1 -1
- package/dist/polygon.d.ts +1 -0
- package/dist/polygon.js +43 -33
- package/dist/polygon.js.map +1 -1
- package/dist/polygonpath.d.ts +11 -0
- package/dist/polygonpath.js +262 -0
- package/dist/polygonpath.js.map +1 -0
- package/dist/util.d.ts +7 -1
- package/dist/util.js +63 -0
- package/dist/util.js.map +1 -1
- package/package.json +1 -1
- package/readme.md +2 -0
- package/src/index.ts +5 -2
- package/src/polygon.ts +50 -32
- package/src/polygonpath.ts +315 -0
- package/src/util.ts +68 -1
package/dist/poly-extrude.js.map
CHANGED
@@ -1 +1 @@
|
|
1
|
-
{"version":3,"file":"poly-extrude.js","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"],"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],"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","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"],"mappings":"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CA;EACA;EAEA;EACA;EACA;EACA;EACA;EAEA;EAEA;EAEA;EAEA;EAEA;EAEA;EAEA;EAEA;EAEA;EAEA;EAEA;EAEA;EAEA;EACA;EAEA;EAEA;EAEA;EAEA;EAEA;EAEA;EAEA;EAEA;EACA;EAEA;EAEA;EACA;EAEA;EACA;EACA;EAEA;EAEA;;;WAEA9G,WAAA,SAAS3H,QAAAA,CAAAA,CAAT,EAAY;EAER,IAAA,OAAO,KAAK0O,gBAAL,CAAsB,IAAtB,EAA4B1O,CAA5B,CAAP,CAAA;EAEH;EAID;EAEA;EAEA;EAEA;EACA;EACA;EAEA;EACA;EACA;EACA;EAEA;EACA;EACA;EACA;EAEA;EACA;EACA;EACA;EAEA;EACA;EACA;EACA;EAEA;EACA;EACA;EACA;EAEA;EACA;EACA;EACA;EAEA;EAEA;EAEA;EAEA;EAEA;EACA;EACA;EACA;EAEA;EAEA;EAEA;EAEA;EAEA;EACA;EACA;EACA;EAEA;EACA;EAEA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EAEA;EAEA;EAEA;EAEA;EACA;EAEA;EACA;EACA;EAEA;EACA;EACA;EAEA;EAEA;EAEA;EAEA;EAEA;EAEA;EACA;EACA;EAEA;EAEA;EACA;EACA;EAEA;EAEA;EAEA;EAEA;EAEA;EACA;EAEA;EACA;EACA;EACA;EAEA;EACA;EACA;EACA;EAEA;EAEA;EAEA;EAEA;EACA;EACA;EACA;EAEA;EACA;EACA;EACA;EAEA;EACA;EACA;EACA;EAEA;EACA;EACA;EACA;EAEA;EAEA;EAEA;EAEA;EACA;EAEA;EACA;EACA;EACA;EAEA;EAEA;EAEA;EAEA;EAEA;EACA;EACA;EAEA;EAEA;EAEA;EAEA;EAEA;EAEA;EACA;EACA;EACA;EAEA;EAEA;EAEA;EAEA;EACA;EACA;EACA;EAEA;EAEA;EAEA;EAEA;EAEA;EAEA;EAEA;EAEA;EACA;EACA;EACA;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"}
|
1
|
+
{"version":3,"file":"poly-extrude.js","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"],"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],"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"],"mappings":"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"}
|