@donut-games/engine 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/dist/core/index.d.ts +6 -0
- package/dist/core/index.js +1158 -0
- package/dist/core/index.js.map +1 -0
- package/dist/ctrllr/index.d.ts +1 -0
- package/dist/ctrllr/index.js +302 -0
- package/dist/ctrllr/index.js.map +1 -0
- package/dist/index.d.ts +1 -0
- package/dist/index.js +1158 -0
- package/dist/index.js.map +1 -0
- package/dist/math/index.d.ts +1 -0
- package/dist/math/index.js +708 -0
- package/dist/math/index.js.map +1 -0
- package/dist/pixi/index.d.ts +1 -0
- package/dist/pixi/index.js +967 -0
- package/dist/pixi/index.js.map +1 -0
- package/dist/player/index.d.ts +1 -0
- package/dist/player/index.js +2193 -0
- package/dist/player/index.js.map +1 -0
- package/dist/three/index.d.ts +1 -0
- package/dist/three/index.js +6 -0
- package/dist/three/index.js.map +1 -0
- package/package.json +74 -0
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../../../math/src/vector2.ts","../../../math/src/vector3.ts","../../../math/src/quaternion.ts","../../../math/src/matrix4.ts","../../../math/src/math-utilities.ts"],"names":[],"mappings":"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","file":"index.js","sourcesContent":["/**\n * An immutable 2D vector with x and y components.\n */\nexport class Vector2 {\n /**\n * Creates a new Vector2.\n * @param x - The x component.\n * @param y - The y component.\n */\n constructor(\n /** The x component. */\n public readonly x: number,\n /** The y component. */\n public readonly y: number,\n ) {}\n\n /**\n * Adds another vector to this vector and returns the result.\n * @param other - The vector to add.\n * @returns A new Vector2 representing the sum.\n */\n add(other: Vector2): Vector2 {\n return new Vector2(this.x + other.x, this.y + other.y);\n }\n\n /**\n * Subtracts another vector from this vector and returns the result.\n * @param other - The vector to subtract.\n * @returns A new Vector2 representing the difference.\n */\n subtract(other: Vector2): Vector2 {\n return new Vector2(this.x - other.x, this.y - other.y);\n }\n\n /**\n * Scales this vector by a scalar value and returns the result.\n * @param scalar - The scalar multiplier.\n * @returns A new scaled Vector2.\n */\n scale(scalar: number): Vector2 {\n return new Vector2(this.x * scalar, this.y * scalar);\n }\n\n /**\n * Returns the normalized (unit length) version of this vector.\n * If the vector has zero length, returns a zero vector.\n * @returns A new normalized Vector2.\n */\n normalize(): Vector2 {\n const magnitude = Math.sqrt(this.x * this.x + this.y * this.y);\n if (magnitude === 0) {\n return Vector2.zero();\n }\n return new Vector2(this.x / magnitude, this.y / magnitude);\n }\n\n /**\n * Computes the dot product of this vector with another.\n * @param other - The other vector.\n * @returns The dot product.\n */\n dot(other: Vector2): number {\n return this.x * other.x + this.y * other.y;\n }\n\n /**\n * Computes the Euclidean distance between this vector and another.\n * @param other - The other vector.\n * @returns The distance.\n */\n distance(other: Vector2): number {\n return Math.sqrt(this.distanceSquared(other));\n }\n\n /**\n * Computes the squared Euclidean distance between this vector and another.\n * @param other - The other vector.\n * @returns The squared distance.\n */\n distanceSquared(other: Vector2): number {\n const deltaX = this.x - other.x;\n const deltaY = this.y - other.y;\n return deltaX * deltaX + deltaY * deltaY;\n }\n\n /**\n * Linearly interpolates between this vector and a target vector.\n * @param target - The target vector.\n * @param interpolation - The interpolation factor, typically between 0 and 1.\n * @returns A new interpolated Vector2.\n */\n lerp(target: Vector2, interpolation: number): Vector2 {\n return new Vector2(\n this.x + (target.x - this.x) * interpolation,\n this.y + (target.y - this.y) * interpolation,\n );\n }\n\n /**\n * Creates a copy of this vector.\n * @returns A new Vector2 with the same components.\n */\n clone(): Vector2 {\n return new Vector2(this.x, this.y);\n }\n\n /**\n * Checks whether this vector is equal to another within floating-point tolerance.\n * @param other - The vector to compare against.\n * @param epsilon - The tolerance for comparison. Defaults to 1e-6.\n * @returns True if the vectors are approximately equal.\n */\n equals(other: Vector2, epsilon: number = 1e-6): boolean {\n return (\n Math.abs(this.x - other.x) <= epsilon &&\n Math.abs(this.y - other.y) <= epsilon\n );\n }\n\n /**\n * Returns a string representation of this vector.\n * @returns A string in the format \"Vector2(x, y)\".\n */\n toString(): string {\n return `Vector2(${this.x}, ${this.y})`;\n }\n\n /** Returns a vector with all components set to zero. */\n static zero(): Vector2 {\n return new Vector2(0, 0);\n }\n\n /** Returns a vector with all components set to one. */\n static one(): Vector2 {\n return new Vector2(1, 1);\n }\n\n /** Returns the up direction vector (0, 1). */\n static up(): Vector2 {\n return new Vector2(0, 1);\n }\n\n /** Returns the down direction vector (0, -1). */\n static down(): Vector2 {\n return new Vector2(0, -1);\n }\n\n /** Returns the left direction vector (-1, 0). */\n static left(): Vector2 {\n return new Vector2(-1, 0);\n }\n\n /** Returns the right direction vector (1, 0). */\n static right(): Vector2 {\n return new Vector2(1, 0);\n }\n}\n","/**\n * An immutable 3D vector with x, y, and z components.\n */\nexport class Vector3 {\n /**\n * Creates a new Vector3.\n * @param x - The x component.\n * @param y - The y component.\n * @param z - The z component.\n */\n constructor(\n /** The x component. */\n public readonly x: number,\n /** The y component. */\n public readonly y: number,\n /** The z component. */\n public readonly z: number,\n ) {}\n\n /**\n * Adds another vector to this vector and returns the result.\n * @param other - The vector to add.\n * @returns A new Vector3 representing the sum.\n */\n add(other: Vector3): Vector3 {\n return new Vector3(this.x + other.x, this.y + other.y, this.z + other.z);\n }\n\n /**\n * Subtracts another vector from this vector and returns the result.\n * @param other - The vector to subtract.\n * @returns A new Vector3 representing the difference.\n */\n subtract(other: Vector3): Vector3 {\n return new Vector3(this.x - other.x, this.y - other.y, this.z - other.z);\n }\n\n /**\n * Scales this vector by a scalar value and returns the result.\n * @param scalar - The scalar multiplier.\n * @returns A new scaled Vector3.\n */\n scale(scalar: number): Vector3 {\n return new Vector3(this.x * scalar, this.y * scalar, this.z * scalar);\n }\n\n /**\n * Returns the normalized (unit length) version of this vector.\n * If the vector has zero length, returns a zero vector.\n * @returns A new normalized Vector3.\n */\n normalize(): Vector3 {\n const magnitude = Math.sqrt(this.x * this.x + this.y * this.y + this.z * this.z);\n if (magnitude === 0) {\n return Vector3.zero();\n }\n return new Vector3(this.x / magnitude, this.y / magnitude, this.z / magnitude);\n }\n\n /**\n * Computes the dot product of this vector with another.\n * @param other - The other vector.\n * @returns The dot product.\n */\n dot(other: Vector3): number {\n return this.x * other.x + this.y * other.y + this.z * other.z;\n }\n\n /**\n * Computes the cross product of this vector with another.\n * @param other - The other vector.\n * @returns A new Vector3 representing the cross product.\n */\n cross(other: Vector3): Vector3 {\n return new Vector3(\n this.y * other.z - this.z * other.y,\n this.z * other.x - this.x * other.z,\n this.x * other.y - this.y * other.x,\n );\n }\n\n /**\n * Computes the Euclidean distance between this vector and another.\n * @param other - The other vector.\n * @returns The distance.\n */\n distance(other: Vector3): number {\n return Math.sqrt(this.distanceSquared(other));\n }\n\n /**\n * Computes the squared Euclidean distance between this vector and another.\n * @param other - The other vector.\n * @returns The squared distance.\n */\n distanceSquared(other: Vector3): number {\n const deltaX = this.x - other.x;\n const deltaY = this.y - other.y;\n const deltaZ = this.z - other.z;\n return deltaX * deltaX + deltaY * deltaY + deltaZ * deltaZ;\n }\n\n /**\n * Linearly interpolates between this vector and a target vector.\n * @param target - The target vector.\n * @param interpolation - The interpolation factor, typically between 0 and 1.\n * @returns A new interpolated Vector3.\n */\n lerp(target: Vector3, interpolation: number): Vector3 {\n return new Vector3(\n this.x + (target.x - this.x) * interpolation,\n this.y + (target.y - this.y) * interpolation,\n this.z + (target.z - this.z) * interpolation,\n );\n }\n\n /**\n * Creates a copy of this vector.\n * @returns A new Vector3 with the same components.\n */\n clone(): Vector3 {\n return new Vector3(this.x, this.y, this.z);\n }\n\n /**\n * Checks whether this vector is equal to another within floating-point tolerance.\n * @param other - The vector to compare against.\n * @param epsilon - The tolerance for comparison. Defaults to 1e-6.\n * @returns True if the vectors are approximately equal.\n */\n equals(other: Vector3, epsilon: number = 1e-6): boolean {\n return (\n Math.abs(this.x - other.x) <= epsilon &&\n Math.abs(this.y - other.y) <= epsilon &&\n Math.abs(this.z - other.z) <= epsilon\n );\n }\n\n /**\n * Returns a string representation of this vector.\n * @returns A string in the format \"Vector3(x, y, z)\".\n */\n toString(): string {\n return `Vector3(${this.x}, ${this.y}, ${this.z})`;\n }\n\n /** Returns a vector with all components set to zero. */\n static zero(): Vector3 {\n return new Vector3(0, 0, 0);\n }\n\n /** Returns a vector with all components set to one. */\n static one(): Vector3 {\n return new Vector3(1, 1, 1);\n }\n\n /** Returns the up direction vector (0, 1, 0). */\n static up(): Vector3 {\n return new Vector3(0, 1, 0);\n }\n\n /** Returns the down direction vector (0, -1, 0). */\n static down(): Vector3 {\n return new Vector3(0, -1, 0);\n }\n\n /** Returns the left direction vector (-1, 0, 0). */\n static left(): Vector3 {\n return new Vector3(-1, 0, 0);\n }\n\n /** Returns the right direction vector (1, 0, 0). */\n static right(): Vector3 {\n return new Vector3(1, 0, 0);\n }\n\n /** Returns the forward direction vector (0, 0, 1). */\n static forward(): Vector3 {\n return new Vector3(0, 0, 1);\n }\n\n /** Returns the back direction vector (0, 0, -1). */\n static back(): Vector3 {\n return new Vector3(0, 0, -1);\n }\n}\n","import { Vector3 } from './vector3.js';\n\n/**\n * An immutable quaternion representing a rotation in 3D space.\n * Uses the convention (x, y, z, w) where w is the scalar component.\n */\nexport class Quaternion {\n /**\n * Creates a new Quaternion.\n * @param x - The x component.\n * @param y - The y component.\n * @param z - The z component.\n * @param w - The w (scalar) component.\n */\n constructor(\n /** The x component. */\n public readonly x: number,\n /** The y component. */\n public readonly y: number,\n /** The z component. */\n public readonly z: number,\n /** The w (scalar) component. */\n public readonly w: number,\n ) {}\n\n /**\n * Multiplies this quaternion by another (composes rotations).\n * @param other - The quaternion to multiply with.\n * @returns A new Quaternion representing the combined rotation.\n */\n multiply(other: Quaternion): Quaternion {\n return new Quaternion(\n this.w * other.x + this.x * other.w + this.y * other.z - this.z * other.y,\n this.w * other.y - this.x * other.z + this.y * other.w + this.z * other.x,\n this.w * other.z + this.x * other.y - this.y * other.x + this.z * other.w,\n this.w * other.w - this.x * other.x - this.y * other.y - this.z * other.z,\n );\n }\n\n /**\n * Returns the inverse (conjugate divided by squared magnitude) of this quaternion.\n * For unit quaternions, this is the same as the conjugate.\n * @returns A new Quaternion representing the inverse rotation.\n */\n inverse(): Quaternion {\n const magnitudeSquared = this.x * this.x + this.y * this.y + this.z * this.z + this.w * this.w;\n if (magnitudeSquared === 0) {\n return Quaternion.identity();\n }\n return new Quaternion(\n -this.x / magnitudeSquared,\n -this.y / magnitudeSquared,\n -this.z / magnitudeSquared,\n this.w / magnitudeSquared,\n );\n }\n\n /**\n * Returns a normalized (unit length) version of this quaternion.\n * @returns A new normalized Quaternion.\n */\n normalize(): Quaternion {\n const magnitude = Math.sqrt(this.x * this.x + this.y * this.y + this.z * this.z + this.w * this.w);\n if (magnitude === 0) {\n return Quaternion.identity();\n }\n return new Quaternion(\n this.x / magnitude,\n this.y / magnitude,\n this.z / magnitude,\n this.w / magnitude,\n );\n }\n\n /**\n * Performs spherical linear interpolation between this quaternion and a target.\n * @param target - The target quaternion.\n * @param interpolation - The interpolation factor, typically between 0 and 1.\n * @returns A new interpolated Quaternion.\n */\n slerp(target: Quaternion, interpolation: number): Quaternion {\n let cosHalfAngle = this.x * target.x + this.y * target.y + this.z * target.z + this.w * target.w;\n\n let targetX = target.x;\n let targetY = target.y;\n let targetZ = target.z;\n let targetW = target.w;\n\n // If the dot product is negative, negate one quaternion to take the shorter path.\n if (cosHalfAngle < 0) {\n cosHalfAngle = -cosHalfAngle;\n targetX = -targetX;\n targetY = -targetY;\n targetZ = -targetZ;\n targetW = -targetW;\n }\n\n // If quaternions are very close, use linear interpolation to avoid division by zero.\n if (cosHalfAngle > 0.9995) {\n return new Quaternion(\n this.x + (targetX - this.x) * interpolation,\n this.y + (targetY - this.y) * interpolation,\n this.z + (targetZ - this.z) * interpolation,\n this.w + (targetW - this.w) * interpolation,\n ).normalize();\n }\n\n const halfAngle = Math.acos(cosHalfAngle);\n const sinHalfAngle = Math.sin(halfAngle);\n const ratioA = Math.sin((1 - interpolation) * halfAngle) / sinHalfAngle;\n const ratioB = Math.sin(interpolation * halfAngle) / sinHalfAngle;\n\n return new Quaternion(\n this.x * ratioA + targetX * ratioB,\n this.y * ratioA + targetY * ratioB,\n this.z * ratioA + targetZ * ratioB,\n this.w * ratioA + targetW * ratioB,\n );\n }\n\n /**\n * Converts this quaternion to Euler angles (in radians).\n * Returns a Vector3 with (pitch, yaw, roll) as (x, y, z).\n * @returns A Vector3 containing the Euler angles in radians.\n */\n toEulerAngles(): Vector3 {\n // Roll (x-axis rotation)\n const sinRollCosP = 2 * (this.w * this.x + this.y * this.z);\n const cosRollCosP = 1 - 2 * (this.x * this.x + this.y * this.y);\n const roll = Math.atan2(sinRollCosP, cosRollCosP);\n\n // Pitch (y-axis rotation)\n const sinPitch = 2 * (this.w * this.y - this.z * this.x);\n let pitch: number;\n if (Math.abs(sinPitch) >= 1) {\n pitch = Math.sign(sinPitch) * (Math.PI / 2); // Clamp to avoid NaN from asin\n } else {\n pitch = Math.asin(sinPitch);\n }\n\n // Yaw (z-axis rotation)\n const sinYawCosP = 2 * (this.w * this.z + this.x * this.y);\n const cosYawCosP = 1 - 2 * (this.y * this.y + this.z * this.z);\n const yaw = Math.atan2(sinYawCosP, cosYawCosP);\n\n return new Vector3(roll, pitch, yaw);\n }\n\n /**\n * Rotates a Vector3 by this quaternion.\n * @param vector - The vector to rotate.\n * @returns A new rotated Vector3.\n */\n rotateVector3(vector: Vector3): Vector3 {\n const vectorQuaternion = new Quaternion(vector.x, vector.y, vector.z, 0);\n const result = this.multiply(vectorQuaternion).multiply(this.inverse());\n return new Vector3(result.x, result.y, result.z);\n }\n\n /** Creates a deep copy of this quaternion. */\n clone(): Quaternion {\n return new Quaternion(this.x, this.y, this.z, this.w);\n }\n\n /**\n * Checks if this quaternion is approximately equal to another.\n * @param other - The quaternion to compare against.\n * @param epsilon - The tolerance for floating-point comparison.\n */\n equals(other: Quaternion, epsilon: number = 1e-6): boolean {\n return (\n Math.abs(this.x - other.x) < epsilon &&\n Math.abs(this.y - other.y) < epsilon &&\n Math.abs(this.z - other.z) < epsilon &&\n Math.abs(this.w - other.w) < epsilon\n );\n }\n\n /** Returns a string representation of this quaternion. */\n toString(): string {\n return `Quaternion(${this.x}, ${this.y}, ${this.z}, ${this.w})`;\n }\n\n /** Returns the identity quaternion (no rotation). */\n static identity(): Quaternion {\n return new Quaternion(0, 0, 0, 1);\n }\n\n /**\n * Creates a quaternion from Euler angles (in radians).\n * @param euler - A Vector3 containing (roll, pitch, yaw) as (x, y, z) in radians.\n * @returns A new Quaternion representing the rotation.\n */\n static fromEulerAngles(euler: Vector3): Quaternion {\n const halfRoll = euler.x * 0.5;\n const halfPitch = euler.y * 0.5;\n const halfYaw = euler.z * 0.5;\n\n const sinRoll = Math.sin(halfRoll);\n const cosRoll = Math.cos(halfRoll);\n const sinPitch = Math.sin(halfPitch);\n const cosPitch = Math.cos(halfPitch);\n const sinYaw = Math.sin(halfYaw);\n const cosYaw = Math.cos(halfYaw);\n\n return new Quaternion(\n sinRoll * cosPitch * cosYaw - cosRoll * sinPitch * sinYaw,\n cosRoll * sinPitch * cosYaw + sinRoll * cosPitch * sinYaw,\n cosRoll * cosPitch * sinYaw - sinRoll * sinPitch * cosYaw,\n cosRoll * cosPitch * cosYaw + sinRoll * sinPitch * sinYaw,\n );\n }\n\n /**\n * Creates a quaternion from an axis-angle representation.\n * @param axis - The axis of rotation (should be normalized).\n * @param angleRadians - The angle of rotation in radians.\n * @returns A new Quaternion representing the rotation.\n */\n static fromAxisAngle(axis: Vector3, angleRadians: number): Quaternion {\n const halfAngle = angleRadians * 0.5;\n const sinHalfAngle = Math.sin(halfAngle);\n return new Quaternion(\n axis.x * sinHalfAngle,\n axis.y * sinHalfAngle,\n axis.z * sinHalfAngle,\n Math.cos(halfAngle),\n );\n }\n}\n","import { Vector3 } from './vector3.js';\nimport { Quaternion } from './quaternion.js';\n\n/**\n * The result of decomposing a 4x4 transformation matrix into its components.\n */\nexport interface DecomposeResult {\n /** The translation component. */\n position: Vector3;\n /** The rotation component. */\n rotation: Quaternion;\n /** The scale component. */\n scale: Vector3;\n}\n\n/**\n * A 4x4 transformation matrix stored in column-major order using a Float64Array.\n */\nexport class Matrix4 {\n /** The 16 matrix elements in column-major order. */\n public readonly elements: Float64Array;\n\n /**\n * Creates a new Matrix4.\n * @param elements - Optional Float64Array of 16 elements in column-major order. Defaults to identity.\n */\n constructor(elements?: Float64Array) {\n if (elements) {\n this.elements = new Float64Array(elements);\n } else {\n this.elements = new Float64Array(16);\n this.elements[0] = 1;\n this.elements[5] = 1;\n this.elements[10] = 1;\n this.elements[15] = 1;\n }\n }\n\n /**\n * Multiplies this matrix by another matrix.\n * @param other - The matrix to multiply with.\n * @returns A new Matrix4 containing the result.\n */\n multiply(other: Matrix4): Matrix4 {\n const a = this.elements;\n const b = other.elements;\n const result = new Float64Array(16);\n\n for (let column = 0; column < 4; column++) {\n for (let row = 0; row < 4; row++) {\n let sum = 0;\n for (let k = 0; k < 4; k++) {\n sum += a[k * 4 + row] * b[column * 4 + k];\n }\n result[column * 4 + row] = sum;\n }\n }\n\n return new Matrix4(result);\n }\n\n /**\n * Computes the inverse of this matrix.\n * Returns the identity matrix if the matrix is singular (determinant is zero).\n * @returns A new Matrix4 containing the inverse.\n */\n inverse(): Matrix4 {\n const m = this.elements;\n const inv = new Float64Array(16);\n\n inv[0] =\n m[5] * m[10] * m[15] - m[5] * m[11] * m[14] -\n m[9] * m[6] * m[15] + m[9] * m[7] * m[14] +\n m[13] * m[6] * m[11] - m[13] * m[7] * m[10];\n\n inv[4] =\n -m[4] * m[10] * m[15] + m[4] * m[11] * m[14] +\n m[8] * m[6] * m[15] - m[8] * m[7] * m[14] -\n m[12] * m[6] * m[11] + m[12] * m[7] * m[10];\n\n inv[8] =\n m[4] * m[9] * m[15] - m[4] * m[11] * m[13] -\n m[8] * m[5] * m[15] + m[8] * m[7] * m[13] +\n m[12] * m[5] * m[11] - m[12] * m[7] * m[9];\n\n inv[12] =\n -m[4] * m[9] * m[14] + m[4] * m[10] * m[13] +\n m[8] * m[5] * m[14] - m[8] * m[6] * m[13] -\n m[12] * m[5] * m[10] + m[12] * m[6] * m[9];\n\n inv[1] =\n -m[1] * m[10] * m[15] + m[1] * m[11] * m[14] +\n m[9] * m[2] * m[15] - m[9] * m[3] * m[14] -\n m[13] * m[2] * m[11] + m[13] * m[3] * m[10];\n\n inv[5] =\n m[0] * m[10] * m[15] - m[0] * m[11] * m[14] -\n m[8] * m[2] * m[15] + m[8] * m[3] * m[14] +\n m[12] * m[2] * m[11] - m[12] * m[3] * m[10];\n\n inv[9] =\n -m[0] * m[9] * m[15] + m[0] * m[11] * m[13] +\n m[8] * m[1] * m[15] - m[8] * m[3] * m[13] -\n m[12] * m[1] * m[11] + m[12] * m[3] * m[9];\n\n inv[13] =\n m[0] * m[9] * m[14] - m[0] * m[10] * m[13] -\n m[8] * m[1] * m[14] + m[8] * m[2] * m[13] +\n m[12] * m[1] * m[10] - m[12] * m[2] * m[9];\n\n inv[2] =\n m[1] * m[6] * m[15] - m[1] * m[7] * m[14] -\n m[5] * m[2] * m[15] + m[5] * m[3] * m[14] +\n m[13] * m[2] * m[7] - m[13] * m[3] * m[6];\n\n inv[6] =\n -m[0] * m[6] * m[15] + m[0] * m[7] * m[14] +\n m[4] * m[2] * m[15] - m[4] * m[3] * m[14] -\n m[12] * m[2] * m[7] + m[12] * m[3] * m[6];\n\n inv[10] =\n m[0] * m[5] * m[15] - m[0] * m[7] * m[13] -\n m[4] * m[1] * m[15] + m[4] * m[3] * m[13] +\n m[12] * m[1] * m[7] - m[12] * m[3] * m[5];\n\n inv[14] =\n -m[0] * m[5] * m[14] + m[0] * m[6] * m[13] +\n m[4] * m[1] * m[14] - m[4] * m[2] * m[13] -\n m[12] * m[1] * m[6] + m[12] * m[2] * m[5];\n\n inv[3] =\n -m[1] * m[6] * m[11] + m[1] * m[7] * m[10] +\n m[5] * m[2] * m[11] - m[5] * m[3] * m[10] -\n m[9] * m[2] * m[7] + m[9] * m[3] * m[6];\n\n inv[7] =\n m[0] * m[6] * m[11] - m[0] * m[7] * m[10] -\n m[4] * m[2] * m[11] + m[4] * m[3] * m[10] +\n m[8] * m[2] * m[7] - m[8] * m[3] * m[6];\n\n inv[11] =\n -m[0] * m[5] * m[11] + m[0] * m[7] * m[9] +\n m[4] * m[1] * m[11] - m[4] * m[3] * m[9] -\n m[8] * m[1] * m[7] + m[8] * m[3] * m[5];\n\n inv[15] =\n m[0] * m[5] * m[10] - m[0] * m[6] * m[9] -\n m[4] * m[1] * m[10] + m[4] * m[2] * m[9] +\n m[8] * m[1] * m[6] - m[8] * m[2] * m[5];\n\n const determinant = m[0] * inv[0] + m[1] * inv[4] + m[2] * inv[8] + m[3] * inv[12];\n\n if (determinant === 0) {\n return Matrix4.identity();\n }\n\n const inverseDeterminant = 1.0 / determinant;\n for (let i = 0; i < 16; i++) {\n inv[i] *= inverseDeterminant;\n }\n\n return new Matrix4(inv);\n }\n\n /**\n * Computes the transpose of this matrix.\n * @returns A new transposed Matrix4.\n */\n transpose(): Matrix4 {\n const m = this.elements;\n const result = new Float64Array(16);\n\n for (let column = 0; column < 4; column++) {\n for (let row = 0; row < 4; row++) {\n result[column * 4 + row] = m[row * 4 + column];\n }\n }\n\n return new Matrix4(result);\n }\n\n /**\n * Decomposes this matrix into position, rotation, and scale components.\n * Assumes the matrix is a valid TRS (translation-rotation-scale) matrix.\n * @returns An object containing position, rotation, and scale.\n */\n decompose(): DecomposeResult {\n const m = this.elements;\n\n // Extract translation\n const position = new Vector3(m[12], m[13], m[14]);\n\n // Extract scale by computing the length of each column vector\n const scaleX = Math.sqrt(m[0] * m[0] + m[1] * m[1] + m[2] * m[2]);\n const scaleY = Math.sqrt(m[4] * m[4] + m[5] * m[5] + m[6] * m[6]);\n const scaleZ = Math.sqrt(m[8] * m[8] + m[9] * m[9] + m[10] * m[10]);\n const scale = new Vector3(scaleX, scaleY, scaleZ);\n\n // Extract rotation by removing scale from the rotation columns\n const inverseScaleX = scaleX === 0 ? 0 : 1 / scaleX;\n const inverseScaleY = scaleY === 0 ? 0 : 1 / scaleY;\n const inverseScaleZ = scaleZ === 0 ? 0 : 1 / scaleZ;\n\n const rotationMatrix00 = m[0] * inverseScaleX;\n const rotationMatrix01 = m[4] * inverseScaleY;\n const rotationMatrix02 = m[8] * inverseScaleZ;\n const rotationMatrix10 = m[1] * inverseScaleX;\n const rotationMatrix11 = m[5] * inverseScaleY;\n const rotationMatrix12 = m[9] * inverseScaleZ;\n const rotationMatrix20 = m[2] * inverseScaleX;\n const rotationMatrix21 = m[6] * inverseScaleY;\n const rotationMatrix22 = m[10] * inverseScaleZ;\n\n // Convert 3x3 rotation matrix to quaternion\n const trace = rotationMatrix00 + rotationMatrix11 + rotationMatrix22;\n let rotation: Quaternion;\n\n if (trace > 0) {\n const s = 0.5 / Math.sqrt(trace + 1.0);\n rotation = new Quaternion(\n (rotationMatrix21 - rotationMatrix12) * s,\n (rotationMatrix02 - rotationMatrix20) * s,\n (rotationMatrix10 - rotationMatrix01) * s,\n 0.25 / s,\n );\n } else if (rotationMatrix00 > rotationMatrix11 && rotationMatrix00 > rotationMatrix22) {\n const s = 2.0 * Math.sqrt(1.0 + rotationMatrix00 - rotationMatrix11 - rotationMatrix22);\n rotation = new Quaternion(\n 0.25 * s,\n (rotationMatrix01 + rotationMatrix10) / s,\n (rotationMatrix02 + rotationMatrix20) / s,\n (rotationMatrix21 - rotationMatrix12) / s,\n );\n } else if (rotationMatrix11 > rotationMatrix22) {\n const s = 2.0 * Math.sqrt(1.0 + rotationMatrix11 - rotationMatrix00 - rotationMatrix22);\n rotation = new Quaternion(\n (rotationMatrix01 + rotationMatrix10) / s,\n 0.25 * s,\n (rotationMatrix12 + rotationMatrix21) / s,\n (rotationMatrix02 - rotationMatrix20) / s,\n );\n } else {\n const s = 2.0 * Math.sqrt(1.0 + rotationMatrix22 - rotationMatrix00 - rotationMatrix11);\n rotation = new Quaternion(\n (rotationMatrix02 + rotationMatrix20) / s,\n (rotationMatrix12 + rotationMatrix21) / s,\n 0.25 * s,\n (rotationMatrix10 - rotationMatrix01) / s,\n );\n }\n\n return { position, rotation, scale };\n }\n\n /** Returns a 4x4 identity matrix. */\n static identity(): Matrix4 {\n return new Matrix4();\n }\n\n /**\n * Composes a transformation matrix from position, rotation, and scale.\n * @param position - The translation component.\n * @param rotation - The rotation component as a quaternion.\n * @param scale - The scale component.\n * @returns A new Matrix4 representing the composed transformation.\n */\n static compose(position: Vector3, rotation: Quaternion, scale: Vector3): Matrix4 {\n const x = rotation.x;\n const y = rotation.y;\n const z = rotation.z;\n const w = rotation.w;\n\n const x2 = x + x;\n const y2 = y + y;\n const z2 = z + z;\n const xx = x * x2;\n const xy = x * y2;\n const xz = x * z2;\n const yy = y * y2;\n const yz = y * z2;\n const zz = z * z2;\n const wx = w * x2;\n const wy = w * y2;\n const wz = w * z2;\n\n const elements = new Float64Array(16);\n\n elements[0] = (1 - (yy + zz)) * scale.x;\n elements[1] = (xy + wz) * scale.x;\n elements[2] = (xz - wy) * scale.x;\n elements[3] = 0;\n\n elements[4] = (xy - wz) * scale.y;\n elements[5] = (1 - (xx + zz)) * scale.y;\n elements[6] = (yz + wx) * scale.y;\n elements[7] = 0;\n\n elements[8] = (xz + wy) * scale.z;\n elements[9] = (yz - wx) * scale.z;\n elements[10] = (1 - (xx + yy)) * scale.z;\n elements[11] = 0;\n\n elements[12] = position.x;\n elements[13] = position.y;\n elements[14] = position.z;\n elements[15] = 1;\n\n return new Matrix4(elements);\n }\n}\n","/**\n * Clamps a value between a minimum and maximum bound.\n * @param value - The value to clamp.\n * @param minimum - The lower bound.\n * @param maximum - The upper bound.\n * @returns The clamped value.\n */\nexport function clamp(value: number, minimum: number, maximum: number): number {\n return Math.min(maximum, Math.max(minimum, value));\n}\n\n/**\n * Linearly interpolates between two values.\n * @param start - The start value.\n * @param end - The end value.\n * @param interpolation - The interpolation factor, typically between 0 and 1.\n * @returns The interpolated value.\n */\nexport function lerp(start: number, end: number, interpolation: number): number {\n return start + (end - start) * interpolation;\n}\n\n/**\n * Converts degrees to radians.\n * @param degrees - The angle in degrees.\n * @returns The angle in radians.\n */\nexport function degreesToRadians(degrees: number): number {\n return degrees * (Math.PI / 180);\n}\n\n/**\n * Converts radians to degrees.\n * @param radians - The angle in radians.\n * @returns The angle in degrees.\n */\nexport function radiansToDegrees(radians: number): number {\n return radians * (180 / Math.PI);\n}\n\n/**\n * Checks whether two numbers are approximately equal within a given epsilon tolerance.\n * @param first - The first number.\n * @param second - The second number.\n * @param epsilon - The tolerance for comparison. Defaults to 1e-6.\n * @returns True if the numbers are within epsilon of each other.\n */\nexport function approximatelyEqual(first: number, second: number, epsilon: number = 1e-6): boolean {\n return Math.abs(first - second) <= epsilon;\n}\n"]}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export * from '@donut/pixi';
|