math 0.0.0 → 0.1.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/API.md +1605 -0
- package/LICENSE +21 -0
- package/README.md +197 -0
- package/dist/color/color.js +136 -0
- package/dist/color/color.js.map +1 -0
- package/dist/color/colorspace.js +43 -0
- package/dist/color/colorspace.js.map +1 -0
- package/dist/color/hsl.js +123 -0
- package/dist/color/hsl.js.map +1 -0
- package/dist/color/index.js +7 -0
- package/dist/color/index.js.map +1 -0
- package/dist/color/parse.js +276 -0
- package/dist/color/parse.js.map +1 -0
- package/dist/core/angle.js +43 -0
- package/dist/core/angle.js.map +1 -0
- package/dist/core/euler.js +212 -0
- package/dist/core/euler.js.map +1 -0
- package/dist/core/mat2.js +385 -0
- package/dist/core/mat2.js.map +1 -0
- package/dist/core/mat2d.js +422 -0
- package/dist/core/mat2d.js.map +1 -0
- package/dist/core/mat3.js +749 -0
- package/dist/core/mat3.js.map +1 -0
- package/dist/core/mat4.js +2197 -0
- package/dist/core/mat4.js.map +1 -0
- package/dist/core/polar.js +200 -0
- package/dist/core/polar.js.map +1 -0
- package/dist/core/quat.js +730 -0
- package/dist/core/quat.js.map +1 -0
- package/dist/core/quat2.js +883 -0
- package/dist/core/quat2.js.map +1 -0
- package/dist/core/scalar.js +112 -0
- package/dist/core/scalar.js.map +1 -0
- package/dist/core/spherical.js +248 -0
- package/dist/core/spherical.js.map +1 -0
- package/dist/core/vec2.js +597 -0
- package/dist/core/vec2.js.map +1 -0
- package/dist/core/vec3.js +916 -0
- package/dist/core/vec3.js.map +1 -0
- package/dist/core/vec4.js +573 -0
- package/dist/core/vec4.js.map +1 -0
- package/dist/geometry/circumcircle.js +39 -0
- package/dist/geometry/circumcircle.js.map +1 -0
- package/dist/geometry/index.js +6 -0
- package/dist/geometry/index.js.map +1 -0
- package/dist/geometry/polygon2-decompose.js +411 -0
- package/dist/geometry/polygon2-decompose.js.map +1 -0
- package/dist/geometry/polygon2-triangulate.js +222 -0
- package/dist/geometry/polygon2-triangulate.js.map +1 -0
- package/dist/geometry/quickhull2.js +123 -0
- package/dist/geometry/quickhull2.js.map +1 -0
- package/dist/geometry/quickhull3.js +605 -0
- package/dist/geometry/quickhull3.js.map +1 -0
- package/dist/ik/fabrik2.js +675 -0
- package/dist/ik/fabrik2.js.map +1 -0
- package/dist/ik/fabrik3.js +912 -0
- package/dist/ik/fabrik3.js.map +1 -0
- package/dist/ik/index.js +5 -0
- package/dist/ik/index.js.map +1 -0
- package/dist/index.js +27 -0
- package/dist/index.js.map +1 -0
- package/dist/noise/fractal.js +185 -0
- package/dist/noise/fractal.js.map +1 -0
- package/dist/noise/index.js +16 -0
- package/dist/noise/index.js.map +1 -0
- package/dist/noise/perlin2d.js +50 -0
- package/dist/noise/perlin2d.js.map +1 -0
- package/dist/noise/perlin3d.js +72 -0
- package/dist/noise/perlin3d.js.map +1 -0
- package/dist/noise/permutation.js +120 -0
- package/dist/noise/permutation.js.map +1 -0
- package/dist/noise/simplex2d.js +84 -0
- package/dist/noise/simplex2d.js.map +1 -0
- package/dist/noise/simplex3d.js +147 -0
- package/dist/noise/simplex3d.js.map +1 -0
- package/dist/noise/simplex4d.js +149 -0
- package/dist/noise/simplex4d.js.map +1 -0
- package/dist/noise/worley2d.js +50 -0
- package/dist/noise/worley2d.js.map +1 -0
- package/dist/noise/worley3d.js +61 -0
- package/dist/noise/worley3d.js.map +1 -0
- package/dist/random/index.js +9 -0
- package/dist/random/index.js.map +1 -0
- package/dist/random/isaac32.js +164 -0
- package/dist/random/isaac32.js.map +1 -0
- package/dist/random/isaac64.js +215 -0
- package/dist/random/isaac64.js.map +1 -0
- package/dist/random/mulberry32.js +48 -0
- package/dist/random/mulberry32.js.map +1 -0
- package/dist/random/random.js +120 -0
- package/dist/random/random.js.map +1 -0
- package/dist/shapes/box2.js +300 -0
- package/dist/shapes/box2.js.map +1 -0
- package/dist/shapes/box3.js +550 -0
- package/dist/shapes/box3.js.map +1 -0
- package/dist/shapes/circle.js +6 -0
- package/dist/shapes/circle.js.map +1 -0
- package/dist/shapes/frustum.js +662 -0
- package/dist/shapes/frustum.js.map +1 -0
- package/dist/shapes/index.js +25 -0
- package/dist/shapes/index.js.map +1 -0
- package/dist/shapes/obb3.js +557 -0
- package/dist/shapes/obb3.js.map +1 -0
- package/dist/shapes/plane3.js +267 -0
- package/dist/shapes/plane3.js.map +1 -0
- package/dist/shapes/polygon2.js +451 -0
- package/dist/shapes/polygon2.js.map +1 -0
- package/dist/shapes/raycast3.js +164 -0
- package/dist/shapes/raycast3.js.map +1 -0
- package/dist/shapes/segment2.js +82 -0
- package/dist/shapes/segment2.js.map +1 -0
- package/dist/shapes/sphere.js +23 -0
- package/dist/shapes/sphere.js.map +1 -0
- package/dist/shapes/triangle2.js +79 -0
- package/dist/shapes/triangle2.js.map +1 -0
- package/dist/shapes/triangle3.js +60 -0
- package/dist/shapes/triangle3.js.map +1 -0
- package/dist/src/color/color.d.ts +50 -0
- package/dist/src/color/colorspace.d.ts +15 -0
- package/dist/src/color/hsl.d.ts +28 -0
- package/dist/src/color/index.d.ts +5 -0
- package/dist/src/color/parse.d.ts +15 -0
- package/dist/src/core/angle.d.ts +29 -0
- package/dist/src/core/arrays.d.ts +4 -0
- package/dist/src/core/euler.d.ts +78 -0
- package/dist/src/core/index.d.ts +27 -0
- package/dist/src/core/mat2.d.ts +217 -0
- package/dist/src/core/mat2d.d.ts +218 -0
- package/dist/src/core/mat3.d.ts +295 -0
- package/dist/src/core/mat4.d.ts +667 -0
- package/dist/src/core/polar.d.ts +151 -0
- package/dist/src/core/quat.d.ts +370 -0
- package/dist/src/core/quat2.d.ts +344 -0
- package/dist/src/core/scalar.d.ts +75 -0
- package/dist/src/core/spherical.d.ts +165 -0
- package/dist/src/core/vec2.d.ts +403 -0
- package/dist/src/core/vec3.d.ts +493 -0
- package/dist/src/core/vec4.d.ts +336 -0
- package/dist/src/geometry/circumcircle.d.ts +9 -0
- package/dist/src/geometry/index.d.ts +5 -0
- package/dist/src/geometry/polygon2-decompose.d.ts +25 -0
- package/dist/src/geometry/polygon2-triangulate.d.ts +15 -0
- package/dist/src/geometry/quickhull2.d.ts +10 -0
- package/dist/src/geometry/quickhull3.d.ts +27 -0
- package/dist/src/ik/fabrik2.d.ts +314 -0
- package/dist/src/ik/fabrik3.d.ts +371 -0
- package/dist/src/ik/index.d.ts +2 -0
- package/dist/src/index.d.ts +1 -0
- package/dist/src/noise/fractal.d.ts +95 -0
- package/dist/src/noise/index.d.ts +9 -0
- package/dist/src/noise/perlin2d.d.ts +19 -0
- package/dist/src/noise/perlin3d.d.ts +20 -0
- package/dist/src/noise/permutation.d.ts +22 -0
- package/dist/src/noise/simplex2d.d.ts +19 -0
- package/dist/src/noise/simplex3d.d.ts +20 -0
- package/dist/src/noise/simplex4d.d.ts +24 -0
- package/dist/src/noise/worley2d.d.ts +22 -0
- package/dist/src/noise/worley3d.d.ts +23 -0
- package/dist/src/random/index.d.ts +8 -0
- package/dist/src/random/isaac32.d.ts +62 -0
- package/dist/src/random/isaac64.d.ts +75 -0
- package/dist/src/random/mulberry32.d.ts +43 -0
- package/dist/src/random/random.d.ts +67 -0
- package/dist/src/shapes/box2.d.ts +174 -0
- package/dist/src/shapes/box3.d.ts +213 -0
- package/dist/src/shapes/circle.d.ts +7 -0
- package/dist/src/shapes/frustum.d.ts +147 -0
- package/dist/src/shapes/index.d.ts +20 -0
- package/dist/src/shapes/obb3.d.ts +105 -0
- package/dist/src/shapes/plane3.d.ts +130 -0
- package/dist/src/shapes/polygon2.d.ts +155 -0
- package/dist/src/shapes/raycast3.d.ts +42 -0
- package/dist/src/shapes/segment2.d.ts +34 -0
- package/dist/src/shapes/sphere.d.ts +19 -0
- package/dist/src/shapes/triangle2.d.ts +53 -0
- package/dist/src/shapes/triangle3.d.ts +29 -0
- package/dist/src/time/easing.d.ts +21 -0
- package/dist/src/time/index.d.ts +6 -0
- package/dist/src/time/spring-core.d.ts +15 -0
- package/dist/src/time/spring.d.ts +36 -0
- package/dist/src/time/spring2.d.ts +11 -0
- package/dist/src/time/spring3.d.ts +11 -0
- package/dist/src/time/spring4.d.ts +11 -0
- package/dist/time/easing.js +24 -0
- package/dist/time/easing.js.map +1 -0
- package/dist/time/index.js +11 -0
- package/dist/time/index.js.map +1 -0
- package/dist/time/spring-core.js +48 -0
- package/dist/time/spring-core.js.map +1 -0
- package/dist/time/spring.js +62 -0
- package/dist/time/spring.js.map +1 -0
- package/dist/time/spring2.js +31 -0
- package/dist/time/spring2.js.map +1 -0
- package/dist/time/spring3.js +32 -0
- package/dist/time/spring3.js.map +1 -0
- package/dist/time/spring4.js +32 -0
- package/dist/time/spring4.js.map +1 -0
- package/package.json +90 -12
- package/skills/math/SKILL.md +140 -0
- package/math.coffee +0 -36
- package/math.js +0 -67
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"quat.js","sources":["../../src/core/quat.ts"],"sourcesContent":["import type { MutableArrayLike } from './arrays';\nimport type { Euler, EulerOrder } from './euler';\nimport type { Mat3 } from './mat3';\nimport * as mat3 from './mat3';\nimport type { Mat4 } from './mat4';\nimport { EPSILON } from './scalar';\nimport type { Vec3 } from './vec3';\nimport * as vec3 from './vec3';\nimport * as vec4 from './vec4';\n\n/** A quaternion that represents rotation */\nexport type Quat = [x: number, y: number, z: number, w: number];\n\n/**\n * Creates a new identity quat\n *\n * @returns a new quaternion\n */\nexport function create(): Quat {\n return [0, 0, 0, 1];\n}\n\n/**\n * Sets the components of a quat from a buffer\n * @param out the receiving quaternion\n * @param buffer the source buffer\n * @param startIndex the starting index in the buffer\n * @returns out\n */\nexport function fromBuffer(out: Quat, buffer: ArrayLike<number>, startIndex: number): Quat {\n out[0] = buffer[startIndex];\n out[1] = buffer[startIndex + 1];\n out[2] = buffer[startIndex + 2];\n out[3] = buffer[startIndex + 3];\n return out;\n}\n\n/**\n * Writes the components of a quat to a buffer\n * @param outBuffer The output buffer\n * @param q The source quaternion\n * @param startIndex The starting index in the buffer\n * @returns The output buffer\n */\nexport function toBuffer(outBuffer: MutableArrayLike<number>, q: Quat, startIndex: number): MutableArrayLike<number> {\n outBuffer[startIndex] = q[0];\n outBuffer[startIndex + 1] = q[1];\n outBuffer[startIndex + 2] = q[2];\n outBuffer[startIndex + 3] = q[3];\n return outBuffer;\n}\n\n/**\n * Set a quat to the identity quaternion\n *\n * @param out the receiving quaternion\n * @returns out\n */\nexport function identity(out: Quat): Quat {\n out[0] = 0;\n out[1] = 0;\n out[2] = 0;\n out[3] = 1;\n return out;\n}\n\n/**\n * Sets a quat from the given angle and rotation axis,\n * then returns it.\n *\n * @param out the receiving quaternion\n * @param axis the axis around which to rotate\n * @param rad the angle in radians\n * @returns out\n **/\nexport function setAxisAngle(out: Quat, axis: Vec3, rad: number): Quat {\n rad *= 0.5;\n const s = Math.sin(rad);\n out[0] = s * axis[0];\n out[1] = s * axis[1];\n out[2] = s * axis[2];\n out[3] = Math.cos(rad);\n return out;\n}\n\n/**\n * Gets the rotation axis and angle for a given\n * quaternion. If a quaternion is created with\n * setAxisAngle, this method will return the same\n * values as providied in the original parameter list\n * OR functionally equivalent values.\n * Example: The quaternion formed by axis [0, 0, 1] and\n * angle -90 is the same as the quaternion formed by\n * [0, 0, 1] and 270. This method favors the latter.\n * @param out_axis Vector receiving the axis of rotation\n * @param q Quaternion to be decomposed\n * @return Angle, in radians, of the rotation\n */\nexport function getAxisAngle(out_axis: Vec3, q: Quat): number {\n const rad = Math.acos(q[3]) * 2.0;\n const s = Math.sin(rad / 2.0);\n if (s > EPSILON) {\n out_axis[0] = q[0] / s;\n out_axis[1] = q[1] / s;\n out_axis[2] = q[2] / s;\n } else {\n // If s is zero, return any axis (no rotation - axis does not matter)\n out_axis[0] = 1;\n out_axis[1] = 0;\n out_axis[2] = 0;\n }\n return rad;\n}\n\n/**\n * Gets the angular distance between two unit quaternions\n *\n * @param a Origin unit quaternion\n * @param b Destination unit quaternion\n * @return Angle, in radians, between the two quaternions\n */\nexport function getAngle(a: Quat, b: Quat): number {\n const dotproduct = dot(a, b);\n\n return Math.acos(2 * dotproduct * dotproduct - 1);\n}\n\n/**\n * Multiplies two quat's\n *\n * @param out the receiving quaternion\n * @param a the first operand\n * @param b the second operand\n * @returns out\n */\nexport function multiply(out: Quat, a: Quat, b: Quat): Quat {\n const ax = a[0];\n const ay = a[1];\n const az = a[2];\n const aw = a[3];\n const bx = b[0];\n const by = b[1];\n const bz = b[2];\n const bw = b[3];\n\n out[0] = ax * bw + aw * bx + ay * bz - az * by;\n out[1] = ay * bw + aw * by + az * bx - ax * bz;\n out[2] = az * bw + aw * bz + ax * by - ay * bx;\n out[3] = aw * bw - ax * bx - ay * by - az * bz;\n return out;\n}\n\n/**\n * Rotates a quaternion by the given angle about the X axis\n *\n * @param out quat receiving operation result\n * @param a quat to rotate\n * @param rad angle (in radians) to rotate\n * @returns out\n */\nexport function rotateX(out: Quat, a: Quat, rad: number): Quat {\n rad *= 0.5;\n\n const ax = a[0];\n const ay = a[1];\n const az = a[2];\n const aw = a[3];\n const bx = Math.sin(rad);\n const bw = Math.cos(rad);\n\n out[0] = ax * bw + aw * bx;\n out[1] = ay * bw + az * bx;\n out[2] = az * bw - ay * bx;\n out[3] = aw * bw - ax * bx;\n return out;\n}\n\n/**\n * Rotates a quaternion by the given angle about the Y axis\n *\n * @param out quat receiving operation result\n * @param a quat to rotate\n * @param rad angle (in radians) to rotate\n * @returns out\n */\nexport function rotateY(out: Quat, a: Quat, rad: number): Quat {\n rad *= 0.5;\n\n const ax = a[0];\n const ay = a[1];\n const az = a[2];\n const aw = a[3];\n const by = Math.sin(rad);\n const bw = Math.cos(rad);\n\n out[0] = ax * bw - az * by;\n out[1] = ay * bw + aw * by;\n out[2] = az * bw + ax * by;\n out[3] = aw * bw - ay * by;\n return out;\n}\n\n/**\n * Rotates a quaternion by the given angle about the Z axis\n *\n * @param out quat receiving operation result\n * @param a quat to rotate\n * @param rad angle (in radians) to rotate\n * @returns out\n */\nexport function rotateZ(out: Quat, a: Quat, rad: number): Quat {\n rad *= 0.5;\n\n const ax = a[0];\n const ay = a[1];\n const az = a[2];\n const aw = a[3];\n const bz = Math.sin(rad);\n const bw = Math.cos(rad);\n\n out[0] = ax * bw + ay * bz;\n out[1] = ay * bw - ax * bz;\n out[2] = az * bw + aw * bz;\n out[3] = aw * bw - az * bz;\n return out;\n}\n\n/**\n * Calculates the W component of a quat from the X, Y, and Z components.\n * Assumes that quaternion is 1 unit in length.\n * Any existing W component will be ignored.\n *\n * @param out the receiving quaternion\n * @param a quat to calculate W component of\n * @returns out\n */\nexport function calculateW(out: Quat, a: Quat): Quat {\n const x = a[0];\n const y = a[1];\n const z = a[2];\n\n out[0] = x;\n out[1] = y;\n out[2] = z;\n out[3] = Math.sqrt(Math.abs(1.0 - x * x - y * y - z * z));\n return out;\n}\n\n/**\n * Calculate the exponential of a unit quaternion.\n *\n * @param out the receiving quaternion\n * @param a quat to calculate the exponential of\n * @returns out\n */\nexport function exp(out: Quat, a: Quat): Quat {\n const x = a[0];\n const y = a[1];\n const z = a[2];\n const w = a[3];\n\n const r = Math.sqrt(x * x + y * y + z * z);\n const et = Math.exp(w);\n const s = r > 0 ? (et * Math.sin(r)) / r : 0;\n\n out[0] = x * s;\n out[1] = y * s;\n out[2] = z * s;\n out[3] = et * Math.cos(r);\n\n return out;\n}\n\n/**\n * Calculate the natural logarithm of a unit quaternion.\n *\n * @param out the receiving quaternion\n * @param a quat to calculate the exponential of\n * @returns out\n */\nexport function ln(out: Quat, a: Quat): Quat {\n const x = a[0];\n const y = a[1];\n const z = a[2];\n const w = a[3];\n\n const r = Math.sqrt(x * x + y * y + z * z);\n const t = r > 0 ? Math.atan2(r, w) / r : 0;\n\n out[0] = x * t;\n out[1] = y * t;\n out[2] = z * t;\n out[3] = 0.5 * Math.log(x * x + y * y + z * z + w * w);\n\n return out;\n}\n\n/**\n * Calculate the scalar power of a unit quaternion.\n *\n * @param out the receiving quaternion\n * @param a quat to calculate the exponential of\n * @param b amount to scale the quaternion by\n * @returns out\n */\nexport function pow(out: Quat, a: Quat, b: number): Quat {\n ln(out, a);\n scale(out, out, b);\n exp(out, out);\n return out;\n}\n\n/**\n * Performs a spherical linear interpolation between two quat\n *\n * @param out the receiving quaternion\n * @param a the first operand\n * @param b the second operand\n * @param t interpolation amount, in the range [0-1], between the two inputs\n * @returns out\n */\nexport function slerp(out: Quat, a: Quat, b: Quat, t: number): Quat {\n // benchmarks:\n // http://jsperf.com/quaternion-slerp-implementations\n const ax = a[0];\n const ay = a[1];\n const az = a[2];\n const aw = a[3];\n let bx = b[0];\n let by = b[1];\n let bz = b[2];\n let bw = b[3];\n\n let omega: number;\n let cosom: number;\n let sinom: number;\n let scale0: number;\n let scale1: number;\n\n // calc cosine\n cosom = ax * bx + ay * by + az * bz + aw * bw;\n // adjust signs (if necessary)\n if (cosom < 0.0) {\n cosom = -cosom;\n bx = -bx;\n by = -by;\n bz = -bz;\n bw = -bw;\n }\n // calculate coefficients\n if (1.0 - cosom > EPSILON) {\n // standard case (slerp)\n omega = Math.acos(cosom);\n sinom = Math.sin(omega);\n scale0 = Math.sin((1.0 - t) * omega) / sinom;\n scale1 = Math.sin(t * omega) / sinom;\n } else {\n // \"from\" and \"to\" quaternions are very close\n // ... so we can do a linear interpolation\n scale0 = 1.0 - t;\n scale1 = t;\n }\n // calculate final values\n out[0] = scale0 * ax + scale1 * bx;\n out[1] = scale0 * ay + scale1 * by;\n out[2] = scale0 * az + scale1 * bz;\n out[3] = scale0 * aw + scale1 * bw;\n\n return out;\n}\n\n/**\n * Calculates the inverse of a quat\n *\n * @param out the receiving quaternion\n * @param a quat to calculate inverse of\n * @returns out\n */\nexport function invert(out: Quat, a: Quat): Quat {\n const a0 = a[0];\n const a1 = a[1];\n const a2 = a[2];\n const a3 = a[3];\n const dot = a0 * a0 + a1 * a1 + a2 * a2 + a3 * a3;\n\n if (dot === 0) {\n out[0] = 0;\n out[1] = 0;\n out[2] = 0;\n out[3] = 0;\n return out;\n }\n\n const invDot = 1.0 / dot;\n out[0] = -a0 * invDot;\n out[1] = -a1 * invDot;\n out[2] = -a2 * invDot;\n out[3] = a3 * invDot;\n return out;\n}\n\n/**\n * Calculates the conjugate of a quat\n * If the quaternion is normalized, this function is faster than quat.inverse and produces the same result.\n *\n * @param out the receiving quaternion\n * @param a quat to calculate conjugate of\n * @returns out\n */\nexport function conjugate(out: Quat, a: Quat): Quat {\n out[0] = -a[0];\n out[1] = -a[1];\n out[2] = -a[2];\n out[3] = a[3];\n return out;\n}\n\n/**\n * Creates a quaternion from the given 3x3 rotation matrix.\n *\n * NOTE: The resultant quaternion is not normalized, so you should be sure\n * to renormalize the quaternion yourself where necessary.\n *\n * @param out the receiving quaternion\n * @param m rotation matrix\n * @returns out\n */\nexport function fromMat3(out: Quat, m: Mat3): Quat {\n // Algorithm in Ken Shoemake's article in 1987 SIGGRAPH course notes\n // article \"Quaternion Calculus and Fast Animation\".\n const fTrace = m[0] + m[4] + m[8];\n let fRoot: number;\n\n if (fTrace > 0.0) {\n // |w| > 1/2, may as well choose w > 1/2\n fRoot = Math.sqrt(fTrace + 1.0); // 2w\n out[3] = 0.5 * fRoot;\n fRoot = 0.5 / fRoot; // 1/(4w)\n out[0] = (m[5] - m[7]) * fRoot;\n out[1] = (m[6] - m[2]) * fRoot;\n out[2] = (m[1] - m[3]) * fRoot;\n } else {\n // |w| <= 1/2\n let i = 0;\n if (m[4] > m[0]) i = 1;\n if (m[8] > m[i * 3 + i]) i = 2;\n const j = (i + 1) % 3;\n const k = (i + 2) % 3;\n\n fRoot = Math.sqrt(m[i * 3 + i] - m[j * 3 + j] - m[k * 3 + k] + 1.0);\n out[i] = 0.5 * fRoot;\n fRoot = 0.5 / fRoot;\n out[3] = (m[j * 3 + k] - m[k * 3 + j]) * fRoot;\n out[j] = (m[j * 3 + i] + m[i * 3 + j]) * fRoot;\n out[k] = (m[k * 3 + i] + m[i * 3 + k]) * fRoot;\n }\n\n return out;\n}\n\n/**\n * Calculates a quaternion from a 4x4 rotation matrix\n * Extracts the 3x3 rotation part and calls fromMat3\n *\n * @param out the receiving quaternion\n * @param m rotation matrix\n * @returns out\n */\nexport function fromMat4(out: Quat, m: Mat4): Quat {\n const m3 = mat3.create();\n mat3.fromMat4(m3, m);\n return fromMat3(out, m3);\n}\n\n/**\n * Creates a quaternion from the given euler\n * @param out the receiving quaternion\n * @param euler the euler to create the quaternion from\n * @returns out\n */\nexport function fromEuler(out: Quat, euler: Euler): Quat {\n const x = euler[0];\n const y = euler[1];\n const z = euler[2];\n const order = euler[3] || 'xyz';\n\n const cos = Math.cos;\n const sin = Math.sin;\n\n const c1 = cos(x / 2);\n const c2 = cos(y / 2);\n const c3 = cos(z / 2);\n\n const s1 = sin(x / 2);\n const s2 = sin(y / 2);\n const s3 = sin(z / 2);\n\n switch (order) {\n case 'xyz':\n out[0] = s1 * c2 * c3 + c1 * s2 * s3;\n out[1] = c1 * s2 * c3 - s1 * c2 * s3;\n out[2] = c1 * c2 * s3 + s1 * s2 * c3;\n out[3] = c1 * c2 * c3 - s1 * s2 * s3;\n break;\n\n case 'yxz':\n out[0] = s1 * c2 * c3 + c1 * s2 * s3;\n out[1] = c1 * s2 * c3 - s1 * c2 * s3;\n out[2] = c1 * c2 * s3 - s1 * s2 * c3;\n out[3] = c1 * c2 * c3 + s1 * s2 * s3;\n break;\n\n case 'zxy':\n out[0] = s1 * c2 * c3 - c1 * s2 * s3;\n out[1] = c1 * s2 * c3 + s1 * c2 * s3;\n out[2] = c1 * c2 * s3 + s1 * s2 * c3;\n out[3] = c1 * c2 * c3 - s1 * s2 * s3;\n break;\n\n case 'zyx':\n out[0] = s1 * c2 * c3 - c1 * s2 * s3;\n out[1] = c1 * s2 * c3 + s1 * c2 * s3;\n out[2] = c1 * c2 * s3 - s1 * s2 * c3;\n out[3] = c1 * c2 * c3 + s1 * s2 * s3;\n break;\n\n case 'yzx':\n out[0] = s1 * c2 * c3 + c1 * s2 * s3;\n out[1] = c1 * s2 * c3 + s1 * c2 * s3;\n out[2] = c1 * c2 * s3 - s1 * s2 * c3;\n out[3] = c1 * c2 * c3 - s1 * s2 * s3;\n break;\n\n case 'xzy':\n out[0] = s1 * c2 * c3 - c1 * s2 * s3;\n out[1] = c1 * s2 * c3 - s1 * c2 * s3;\n out[2] = c1 * c2 * s3 + s1 * s2 * c3;\n out[3] = c1 * c2 * c3 + s1 * s2 * s3;\n break;\n\n default:\n console.warn(`fromEuler() encountered an unknown order: ${order}`);\n }\n\n return out;\n}\n\nconst _fromDegrees_euler: Euler = [0, 0, 0, 'xyz'];\n\n/**\n * Creates a quaternion from euler angles specified in degrees.\n * Shorthand for converting degrees to radians and then creating a quaternion from euler.\n *\n * @param out the receiving quaternion\n * @param x The x euler rotation in degrees\n * @param y The y euler rotation in degrees\n * @param z The z euler rotation in degrees\n * @param order The order of rotation\n * @returns out\n */\nexport function fromDegrees(out: Quat, x: number, y: number, z: number, order: EulerOrder): Quat {\n _fromDegrees_euler[0] = (x * Math.PI) / 180;\n _fromDegrees_euler[1] = (y * Math.PI) / 180;\n _fromDegrees_euler[2] = (z * Math.PI) / 180;\n _fromDegrees_euler[3] = order;\n\n return fromEuler(out, _fromDegrees_euler);\n}\n\n/**\n * Returns a string representation of a quaternion\n *\n * @param a vector to represent as a string\n * @returns string representation of the vector\n */\nexport function str(a: Quat): string {\n return `quat(${a[0]}, ${a[1]}, ${a[2]}, ${a[3]})`;\n}\n\n/**\n * Creates a new quat initialized with values from an existing quaternion\n *\n * @param a quaternion to clone\n * @returns a new quaternion\n */\nexport const clone = vec4.clone;\n\n/**\n * Creates a new quat initialized with the given values\n *\n * @param x X component\n * @param y Y component\n * @param z Z component\n * @param w W component\n * @returns a new quaternion\n */\nexport const fromValues = vec4.fromValues;\n\n/**\n * Copy the values from one quat to another\n *\n * @param out the receiving quaternion\n * @param a the source quaternion\n * @returns out\n */\nexport const copy = vec4.copy;\n\n/**\n * Set the components of a quat to the given values\n *\n * @param out the receiving quaternion\n * @param x X component\n * @param y Y component\n * @param z Z component\n * @param w W component\n * @returns out\n */\nexport const set = vec4.set;\n\n/**\n * Adds two quat's\n *\n * @param out the receiving quaternion\n * @param a the first operand\n * @param b the second operand\n * @returns out\n */\nexport const add = vec4.add;\n\n/**\n * Scales a quat by a scalar number\n *\n * @param out the receiving quaternion\n * @param a the quaternion to scale\n * @param b amount to scale the quaternion by\n * @returns out\n */\nexport const scale = vec4.scale;\n\n/**\n * Calculates the dot product of two quat's\n *\n * @param a the first operand\n * @param b the second operand\n * @returns dot product of a and b\n */\nexport const dot = vec4.dot;\n\n/**\n * Performs a linear interpolation between two quat's\n *\n * @param out the receiving quaternion\n * @param a the first operand\n * @param b the second operand\n * @param t interpolation amount, in the range [0-1], between the two inputs\n * @returns out\n */\nexport const lerp = vec4.lerp;\n\n/**\n * Calculates the length of a quat\n *\n * @param a quaternion to calculate length of\n * @returns length of a\n */\nexport const length = vec4.length;\n\n/**\n * Alias for {@link length}\n */\nexport const len = length;\n\n/**\n * Calculates the squared length of a quat\n *\n * @param a quaternion to calculate squared length of\n * @returns squared length of a\n */\nexport const squaredLength = vec4.squaredLength;\n\n/**\n * Alias for {@link squaredLength}\n */\nexport const sqrLen = squaredLength;\n\n/**\n * Alias for {@link multiply}\n */\nexport const mul = multiply;\n\n/**\n * Normalize a quat\n *\n * @param out the receiving quaternion\n * @param a quaternion to normalize\n * @returns out\n */\nexport const normalize = vec4.normalize;\n\n/**\n * Returns whether or not the quaternions have exactly the same elements in the same position (when compared with ===)\n *\n * @param a The first quaternion.\n * @param b The second quaternion.\n * @returns True if the quaternions are equal, false otherwise.\n */\nexport const exactEquals = vec4.exactEquals;\n\n/**\n * Returns whether or not the quaternions have approximately the same elements in the same position.\n *\n * @param a The first quaternion.\n * @param b The second quaternion.\n * @returns True if the quaternions are equal, false otherwise.\n */\nexport function equals(a: Quat, b: Quat): boolean {\n return Math.abs(vec4.dot(a, b)) >= 1 - EPSILON;\n}\n\n/**\n * Sets a quaternion to represent the shortest rotation from one\n * vector to another.\n *\n * Both vectors are assumed to be unit length.\n *\n * @param out the receiving quaternion.\n * @param a the initial vector\n * @param b the destination vector\n * @returns out\n */\nexport const rotationTo = /* @__PURE__ */ (() => {\n const tmpvec3 = vec3.create();\n const xUnitVec3 = vec3.fromValues(1, 0, 0);\n const yUnitVec3 = vec3.fromValues(0, 1, 0);\n\n return (out: Quat, a: Vec3, b: Vec3): Quat => {\n const dot = vec3.dot(a, b);\n\n if (dot < -0.999999) {\n vec3.cross(tmpvec3, xUnitVec3, a);\n if (vec3.length(tmpvec3) < 0.000001) vec3.cross(tmpvec3, yUnitVec3, a);\n vec3.normalize(tmpvec3, tmpvec3);\n setAxisAngle(out, tmpvec3, Math.PI);\n return out;\n }\n\n if (dot > 0.999999) {\n out[0] = 0;\n out[1] = 0;\n out[2] = 0;\n out[3] = 1;\n return out;\n }\n\n vec3.cross(tmpvec3, a, b);\n out[0] = tmpvec3[0];\n out[1] = tmpvec3[1];\n out[2] = tmpvec3[2];\n out[3] = 1 + dot;\n return normalize(out, out);\n };\n})();\n\n/**\n * Performs a spherical linear interpolation with two control points\n *\n * @param out the receiving quaternion\n * @param a the first operand\n * @param b the second operand\n * @param c the third operand\n * @param d the fourth operand\n * @param t interpolation amount, in the range [0-1], between the two inputs\n * @returns out\n */\nexport const sqlerp = /* @__PURE__ */ (() => {\n const temp1 = create();\n const temp2 = create();\n\n return (out: Quat, a: Quat, b: Quat, c: Quat, d: Quat, t: number): Quat => {\n slerp(temp1, a, d, t);\n slerp(temp2, b, c, t);\n slerp(out, temp1, temp2, 2 * t * (1 - t));\n\n return out;\n };\n})();\n\n/**\n * Sets the specified quaternion with values corresponding to the given\n * axes. Each axis is a vec3 and is expected to be unit length and\n * perpendicular to all other specified axes.\n *\n * @param view the vector representing the viewing direction\n * @param right the vector representing the local \"right\" direction\n * @param up the vector representing the local \"up\" direction\n * @returns out\n */\nexport const setAxes = /* @__PURE__ */ (() => {\n const matr = mat3.create();\n\n return (out: Quat, view: Vec3, right: Vec3, up: Vec3): Quat => {\n matr[0] = right[0];\n matr[3] = right[1];\n matr[6] = right[2];\n\n matr[1] = up[0];\n matr[4] = up[1];\n matr[7] = up[2];\n\n matr[2] = -view[0];\n matr[5] = -view[1];\n matr[8] = -view[2];\n\n return normalize(out, fromMat3(out, matr));\n };\n})();\n"],"names":["mat3.create","mat3.fromMat4","vec4.clone","vec4.fromValues","vec4.copy","vec4.set","vec4.add","vec4.scale","vec4.dot","vec4.lerp","vec4.length","vec4.squaredLength","vec4.normalize","vec4.exactEquals","vec3.create","vec3.fromValues","vec3.dot","vec3.cross","vec3.length","vec3.normalize"],"mappings":"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"}
|