@kiberon-labs/behave-graph-scene 1.0.1 → 2.0.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/.storybook/main.ts +18 -0
- package/.storybook/preview.ts +16 -0
- package/.storybook/vscode.css +822 -0
- package/.turbo/turbo-build.log +4 -3
- package/CHANGELOG.md +84 -0
- package/README.md +1 -1
- package/dist/Abstractions/Drivers/DummyScene.d.ts +47 -3
- package/dist/Abstractions/Drivers/DummyScene.d.ts.map +1 -1
- package/dist/Abstractions/Drivers/DummyScene.js +57 -0
- package/dist/Abstractions/Drivers/DummyScene.js.map +1 -1
- package/dist/Abstractions/IScene.d.ts +63 -4
- package/dist/Abstractions/IScene.d.ts.map +1 -1
- package/dist/Abstractions/IScene.js +19 -0
- package/dist/Abstractions/IScene.js.map +1 -0
- package/dist/Nodes/Actions/AddLight.d.ts +21 -0
- package/dist/Nodes/Actions/AddLight.d.ts.map +1 -0
- package/dist/Nodes/Actions/AddLight.js +38 -0
- package/dist/Nodes/Actions/AddLight.js.map +1 -0
- package/dist/Nodes/Actions/CloneMesh.d.ts +16 -0
- package/dist/Nodes/Actions/CloneMesh.d.ts.map +1 -0
- package/dist/Nodes/Actions/CloneMesh.js +28 -0
- package/dist/Nodes/Actions/CloneMesh.js.map +1 -0
- package/dist/Nodes/Actions/CreateMesh.d.ts +22 -0
- package/dist/Nodes/Actions/CreateMesh.d.ts.map +1 -0
- package/dist/Nodes/Actions/CreateMesh.js +44 -0
- package/dist/Nodes/Actions/CreateMesh.js.map +1 -0
- package/dist/Nodes/Actions/DeleteMesh.d.ts +15 -0
- package/dist/Nodes/Actions/DeleteMesh.d.ts.map +1 -0
- package/dist/Nodes/Actions/DeleteMesh.js +27 -0
- package/dist/Nodes/Actions/DeleteMesh.js.map +1 -0
- package/dist/Nodes/Actions/EaseSceneProperty.d.ts +1 -1
- package/dist/Nodes/Actions/EaseSceneProperty.d.ts.map +1 -1
- package/dist/Nodes/Actions/EaseSceneProperty.js +2 -2
- package/dist/Nodes/Actions/EaseSceneProperty.js.map +1 -1
- package/dist/Nodes/Actions/LookAt.d.ts +16 -0
- package/dist/Nodes/Actions/LookAt.d.ts.map +1 -0
- package/dist/Nodes/Actions/LookAt.js +35 -0
- package/dist/Nodes/Actions/LookAt.js.map +1 -0
- package/dist/Nodes/Actions/MoveTowards.d.ts +21 -0
- package/dist/Nodes/Actions/MoveTowards.d.ts.map +1 -0
- package/dist/Nodes/Actions/MoveTowards.js +46 -0
- package/dist/Nodes/Actions/MoveTowards.js.map +1 -0
- package/dist/Nodes/Actions/RemoveLight.d.ts +15 -0
- package/dist/Nodes/Actions/RemoveLight.d.ts.map +1 -0
- package/dist/Nodes/Actions/RemoveLight.js +27 -0
- package/dist/Nodes/Actions/RemoveLight.js.map +1 -0
- package/dist/Nodes/Actions/SetLightProperty.d.ts +25 -0
- package/dist/Nodes/Actions/SetLightProperty.d.ts.map +1 -0
- package/dist/Nodes/Actions/SetLightProperty.js +64 -0
- package/dist/Nodes/Actions/SetLightProperty.js.map +1 -0
- package/dist/Nodes/Actions/SetMaterialProperty.d.ts +25 -0
- package/dist/Nodes/Actions/SetMaterialProperty.d.ts.map +1 -0
- package/dist/Nodes/Actions/SetMaterialProperty.js +69 -0
- package/dist/Nodes/Actions/SetMaterialProperty.js.map +1 -0
- package/dist/Nodes/Actions/SetMeshPosition.d.ts +18 -0
- package/dist/Nodes/Actions/SetMeshPosition.d.ts.map +1 -0
- package/dist/Nodes/Actions/SetMeshPosition.js +34 -0
- package/dist/Nodes/Actions/SetMeshPosition.js.map +1 -0
- package/dist/Nodes/Actions/SetMeshVisible.d.ts +16 -0
- package/dist/Nodes/Actions/SetMeshVisible.d.ts.map +1 -0
- package/dist/Nodes/Actions/SetMeshVisible.js +28 -0
- package/dist/Nodes/Actions/SetMeshVisible.js.map +1 -0
- package/dist/Nodes/Actions/SetSceneProperty.d.ts +12 -1
- package/dist/Nodes/Actions/SetSceneProperty.d.ts.map +1 -1
- package/dist/Nodes/Actions/SetSceneProperty.js +1 -1
- package/dist/Nodes/Actions/SetSceneProperty.js.map +1 -1
- package/dist/Nodes/Events/OnAnyMeshClicked.d.ts +13 -0
- package/dist/Nodes/Events/OnAnyMeshClicked.d.ts.map +1 -0
- package/dist/Nodes/Events/OnAnyMeshClicked.js +34 -0
- package/dist/Nodes/Events/OnAnyMeshClicked.js.map +1 -0
- package/dist/Nodes/Events/OnSceneChanged.d.ts +12 -0
- package/dist/Nodes/Events/OnSceneChanged.d.ts.map +1 -0
- package/dist/Nodes/Events/OnSceneChanged.js +28 -0
- package/dist/Nodes/Events/OnSceneChanged.js.map +1 -0
- package/dist/Nodes/Events/OnSceneNodeClick.d.ts +14 -1
- package/dist/Nodes/Events/OnSceneNodeClick.d.ts.map +1 -1
- package/dist/Nodes/Events/OnSceneNodeClick.js +1 -1
- package/dist/Nodes/Events/OnSceneNodeClick.js.map +1 -1
- package/dist/Nodes/Logic/ColorNodes.d.ts +17 -13
- package/dist/Nodes/Logic/ColorNodes.d.ts.map +1 -1
- package/dist/Nodes/Logic/EulerNodes.d.ts +16 -12
- package/dist/Nodes/Logic/EulerNodes.d.ts.map +1 -1
- package/dist/Nodes/Logic/Mat3Nodes.d.ts +26 -23
- package/dist/Nodes/Logic/Mat3Nodes.d.ts.map +1 -1
- package/dist/Nodes/Logic/Mat3Nodes.js +0 -14
- package/dist/Nodes/Logic/Mat3Nodes.js.map +1 -1
- package/dist/Nodes/Logic/Mat4Nodes.d.ts +32 -28
- package/dist/Nodes/Logic/Mat4Nodes.d.ts.map +1 -1
- package/dist/Nodes/Logic/QuatNodes.d.ts +22 -18
- package/dist/Nodes/Logic/QuatNodes.d.ts.map +1 -1
- package/dist/Nodes/Logic/Vec2Nodes.d.ts +16 -12
- package/dist/Nodes/Logic/Vec2Nodes.d.ts.map +1 -1
- package/dist/Nodes/Logic/Vec3Nodes.d.ts +17 -13
- package/dist/Nodes/Logic/Vec3Nodes.d.ts.map +1 -1
- package/dist/Nodes/Logic/Vec4Nodes.d.ts +16 -12
- package/dist/Nodes/Logic/Vec4Nodes.d.ts.map +1 -1
- package/dist/Nodes/Queries/GetDistanceBetween.d.ts +18 -0
- package/dist/Nodes/Queries/GetDistanceBetween.d.ts.map +1 -0
- package/dist/Nodes/Queries/GetDistanceBetween.js +30 -0
- package/dist/Nodes/Queries/GetDistanceBetween.js.map +1 -0
- package/dist/Nodes/Queries/GetLightProperty.d.ts +23 -0
- package/dist/Nodes/Queries/GetLightProperty.d.ts.map +1 -0
- package/dist/Nodes/Queries/GetLightProperty.js +68 -0
- package/dist/Nodes/Queries/GetLightProperty.js.map +1 -0
- package/dist/Nodes/Queries/GetMaterialProperty.d.ts +23 -0
- package/dist/Nodes/Queries/GetMaterialProperty.d.ts.map +1 -0
- package/dist/Nodes/Queries/GetMaterialProperty.js +69 -0
- package/dist/Nodes/Queries/GetMaterialProperty.js.map +1 -0
- package/dist/Nodes/Queries/GetMeshPosition.d.ts +16 -0
- package/dist/Nodes/Queries/GetMeshPosition.d.ts.map +1 -0
- package/dist/Nodes/Queries/GetMeshPosition.js +29 -0
- package/dist/Nodes/Queries/GetMeshPosition.js.map +1 -0
- package/dist/Nodes/Queries/GetSceneProperty.d.ts +10 -1
- package/dist/Nodes/Queries/GetSceneProperty.d.ts.map +1 -1
- package/dist/Nodes/Queries/GetSceneProperty.js +2 -2
- package/dist/Nodes/Queries/GetSceneProperty.js.map +1 -1
- package/dist/Values/Internal/Mat3.d.ts +1 -1
- package/dist/Values/Internal/Mat3.d.ts.map +1 -1
- package/dist/Values/Internal/Mat3.js +1 -3
- package/dist/Values/Internal/Mat3.js.map +1 -1
- package/dist/Values/Internal/Mat4.d.ts.map +1 -1
- package/dist/Values/Internal/Mat4.js +1 -3
- package/dist/Values/Internal/Mat4.js.map +1 -1
- package/dist/Values/Internal/Vec3.d.ts +1 -1
- package/dist/Values/Internal/Vec3.d.ts.map +1 -1
- package/dist/Values/Internal/Vec3.js +0 -2
- package/dist/Values/Internal/Vec3.js.map +1 -1
- package/dist/Values/Internal/Vec4.d.ts.map +1 -1
- package/dist/Values/Internal/Vec4.js +0 -1
- package/dist/Values/Internal/Vec4.js.map +1 -1
- package/dist/_virtual/rolldown_runtime.js +23 -1
- package/dist/behave-graph.manifest.json +6082 -0
- package/dist/buildScene.d.ts.map +1 -1
- package/dist/buildScene.js +24 -3
- package/dist/buildScene.js.map +1 -1
- package/dist/index.d.ts +29 -3
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +22 -4
- package/dist/manifest.source.d.ts +7 -0
- package/dist/manifest.source.d.ts.map +1 -0
- package/dist/manifest.source.js +54 -0
- package/dist/manifest.source.js.map +1 -0
- package/dist/node_modules/.pnpm/react@19.2.3/node_modules/react/cjs/react-jsx-runtime.development.js +207 -0
- package/dist/node_modules/.pnpm/react@19.2.3/node_modules/react/cjs/react-jsx-runtime.development.js.map +1 -0
- package/dist/node_modules/.pnpm/react@19.2.3/node_modules/react/cjs/react-jsx-runtime.production.js +40 -0
- package/dist/node_modules/.pnpm/react@19.2.3/node_modules/react/cjs/react-jsx-runtime.production.js.map +1 -0
- package/dist/node_modules/.pnpm/react@19.2.3/node_modules/react/cjs/react.development.js +766 -0
- package/dist/node_modules/.pnpm/react@19.2.3/node_modules/react/cjs/react.development.js.map +1 -0
- package/dist/node_modules/.pnpm/react@19.2.3/node_modules/react/cjs/react.production.js +367 -0
- package/dist/node_modules/.pnpm/react@19.2.3/node_modules/react/cjs/react.production.js.map +1 -0
- package/dist/node_modules/.pnpm/react@19.2.3/node_modules/react/index.js +15 -0
- package/dist/node_modules/.pnpm/react@19.2.3/node_modules/react/index.js.map +1 -0
- package/dist/node_modules/.pnpm/react@19.2.3/node_modules/react/jsx-runtime.js +15 -0
- package/dist/node_modules/.pnpm/react@19.2.3/node_modules/react/jsx-runtime.js.map +1 -0
- package/dist/packages/nodes/scene/package.js +7 -0
- package/dist/packages/nodes/scene/package.js.map +1 -0
- package/dist/registerSceneProfile.d.ts +3 -3
- package/dist/registerSceneProfile.d.ts.map +1 -1
- package/dist/registerSceneProfile.js +35 -1
- package/dist/registerSceneProfile.js.map +1 -1
- package/dist/ui/controls/vec3.d.ts +9 -0
- package/dist/ui/controls/vec3.d.ts.map +1 -0
- package/dist/ui/controls/vec3.js +99 -0
- package/dist/ui/controls/vec3.js.map +1 -0
- package/package.json +28 -9
- package/src/Abstractions/Drivers/DummyScene.ts +110 -2
- package/src/Abstractions/IScene.ts +74 -3
- package/src/Nodes/Actions/AddLight.ts +46 -0
- package/src/Nodes/Actions/CloneMesh.ts +31 -0
- package/src/Nodes/Actions/CreateMesh.ts +47 -0
- package/src/Nodes/Actions/DeleteMesh.ts +29 -0
- package/src/Nodes/Actions/EaseSceneProperty.ts +6 -2
- package/src/Nodes/Actions/LookAt.ts +34 -0
- package/src/Nodes/Actions/MoveTowards.ts +55 -0
- package/src/Nodes/Actions/RemoveLight.ts +29 -0
- package/src/Nodes/Actions/SetLightProperty.ts +60 -0
- package/src/Nodes/Actions/SetMaterialProperty.ts +62 -0
- package/src/Nodes/Actions/SetMeshPosition.ts +37 -0
- package/src/Nodes/Actions/SetMeshVisible.ts +31 -0
- package/src/Nodes/Actions/SetSceneProperty.ts +3 -5
- package/src/Nodes/Events/OnAnyMeshClicked.ts +48 -0
- package/src/Nodes/Events/OnSceneChanged.ts +43 -0
- package/src/Nodes/Events/OnSceneNodeClick.ts +3 -3
- package/src/Nodes/Logic/Mat3Nodes.ts +0 -10
- package/src/Nodes/Queries/GetDistanceBetween.ts +37 -0
- package/src/Nodes/Queries/GetLightProperty.ts +53 -0
- package/src/Nodes/Queries/GetMaterialProperty.ts +55 -0
- package/src/Nodes/Queries/GetMeshPosition.ts +32 -0
- package/src/Nodes/Queries/GetSceneProperty.ts +4 -5
- package/src/Values/Internal/Mat3.ts +3 -3
- package/src/Values/Internal/Mat4.ts +5 -4
- package/src/Values/Internal/Vec3.ts +5 -4
- package/src/Values/Internal/Vec4.ts +3 -2
- package/src/buildScene.ts +36 -2
- package/src/index.ts +26 -2
- package/src/manifest.source.ts +61 -0
- package/src/registerSceneProfile.ts +41 -4
- package/src/ui/controls/vec3.tsx +69 -0
- package/stories/click.stories.tsx +112 -0
- package/stories/components/DemoScene.ts +610 -0
- package/stories/components/SceneViewer.tsx +204 -0
- package/stories/components/SceneViewerPanel.tsx +41 -0
- package/stories/data/clickDemo.json +94 -0
- package/stories/data/rotate.json +402 -0
- package/stories/index.stories.tsx +90 -0
- package/stories/plugin/sceneViewerPlugin.tsx +88 -0
- package/tests/manifest.test.ts +65 -0
- package/tests/readSceneGraphs.test.ts +8 -1
- package/tests/registerSceneProfile.test.ts +6 -5
- package/tsconfig.json +18 -11
- package/tsdown.config.ts +5 -1
- package/vite.config.js +7 -0
- package/src/Values/Internal/Mat2.ts +0 -214
- package/src/loadScene.ts +0 -81
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Mat3.js","names":["c","a"],"sources":["../../../src/Values/Internal/Mat3.ts"],"sourcesContent":["import {\n EPSILON,\n equalsTolerance,\n parseSafeFloats,\n toSafeString\n} from '@kiberon-labs/behave-graph';\n\nimport { Mat4 } from './Mat4.js';\nimport { Vec2 } from './Vec2.js';\nimport { Vec3 } from './Vec3.js';\nimport { Vec4 } from './Vec4.js';\n\n// uses OpenGL matrix layout where each column is specified subsequently in order from left to right.\n// ( x, y, 1 ) x [ 0 3 6 ] = ( x', y', 1 )\n// [ 1 4 7 ]\n// [ 2 5 8 ]\n// where elements 2 and 5 would be translation in 2D, as they would multiplied\n// by the last virtual element of the 2D vector.\n\nconst NUM_ROWS = 3;\nconst NUM_COLUMNS = 3;\nconst NUM_ELEMENTS = NUM_ROWS * NUM_COLUMNS;\n\ntype Mat3Elements = [\n number,\n number,\n number,\n number,\n number,\n number,\n number,\n number,\n number\n];\nexport type Mat3JSON = Mat3Elements;\n\nexport class Mat3 {\n public elements: Mat3Elements;\n constructor(elements: Mat3Elements = [1, 0, 0, 0, 1, 0, 0, 0, 1]) {\n if (elements.length !== NUM_ELEMENTS) {\n throw new Error(\n `elements must have length ${NUM_ELEMENTS}, got ${elements.length}`\n );\n }\n this.elements = elements;\n }\n\n clone(result = new Mat3()): Mat3 {\n return result.set(this.elements);\n }\n set(elements: Mat3Elements): this {\n if (elements.length !== NUM_ELEMENTS) {\n throw new Error(\n `elements must have length ${NUM_ELEMENTS}, got ${elements.length}`\n );\n }\n this.elements = [...elements];\n return this;\n }\n}\n\nexport function mat3SetColumn3(\n m: Mat3,\n columnIndex: number,\n column: Vec3,\n result = new Mat3()\n): Mat3 {\n const re = result.set(m.elements).elements;\n const base = columnIndex * NUM_ROWS;\n re[base + 0] = column.x;\n re[base + 1] = column.y;\n re[base + 2] = column.z;\n return result;\n}\n\nexport function mat3SetRow3(\n m: Mat3,\n rowIndex: number,\n row: Vec3,\n result = new Mat3()\n): Mat3 {\n const re = result.set(m.elements).elements;\n re[rowIndex + NUM_COLUMNS * 0] = row.x;\n re[rowIndex + NUM_COLUMNS * 1] = row.y;\n re[rowIndex + NUM_COLUMNS * 2] = row.z;\n return result;\n}\n\nexport function column3ToMat3(\n a: Vec3,\n b: Vec3,\n c: Vec3,\n result = new Mat3()\n): Mat3 {\n const re = result.elements;\n const columns = [a, b, c];\n for (let c = 0; c < columns.length; c++) {\n const base = c * NUM_ROWS;\n const column = columns[c]!;\n re[base + 0] = column.x;\n re[base + 1] = column.y;\n re[base + 2] = column.z;\n }\n return result;\n}\n\nexport function mat3Equals(a: Mat3, b: Mat3, tolerance = EPSILON): boolean {\n for (let i = 0; i < NUM_ELEMENTS; i++) {\n if (!equalsTolerance(a.elements[i]!, b.elements[i]!, tolerance))\n return false;\n }\n return true;\n}\nexport function mat3Add(a: Mat3, b: Mat3, result: Mat3 = new Mat3()): Mat3 {\n for (let i = 0; i < NUM_ELEMENTS; i++) {\n result.elements[i] = a.elements[i]! + b.elements[i]!;\n }\n return result;\n}\nexport function mat3Subtract(\n a: Mat3,\n b: Mat3,\n result: Mat3 = new Mat3()\n): Mat3 {\n result.elements = a.elements.map(\n (a, i) => a - b.elements[i]!\n ) as Mat3Elements;\n return result;\n}\nexport function mat3MultiplyByScalar(\n a: Mat3,\n b: number,\n result: Mat3 = new Mat3()\n): Mat3 {\n result.elements = a.elements.map((x) => x * b) as Mat3Elements;\n return result;\n}\nexport function mat3Negate(a: Mat3, result: Mat3 = new Mat3()): Mat3 {\n result.elements = a.elements.map((x) => -x) as Mat3Elements;\n return result;\n}\n\nexport function mat3Multiply(a: Mat3, b: Mat3, result = new Mat3()): Mat3 {\n const ae = a.elements;\n const be = b.elements;\n const te = result.elements;\n\n const a11 = ae[0],\n a12 = ae[3],\n a13 = ae[6];\n const a21 = ae[1],\n a22 = ae[4],\n a23 = ae[7];\n const a31 = ae[2],\n a32 = ae[5],\n a33 = ae[8];\n\n const b11 = be[0],\n b12 = be[3],\n b13 = be[6];\n const b21 = be[1],\n b22 = be[4],\n b23 = be[7];\n const b31 = be[2],\n b32 = be[5],\n b33 = be[8];\n\n te[0] = a11 * b11 + a12 * b21 + a13 * b31;\n te[3] = a11 * b12 + a12 * b22 + a13 * b32;\n te[6] = a11 * b13 + a12 * b23 + a13 * b33;\n\n te[1] = a21 * b11 + a22 * b21 + a23 * b31;\n te[4] = a21 * b12 + a22 * b22 + a23 * b32;\n te[7] = a21 * b13 + a22 * b23 + a23 * b33;\n\n te[2] = a31 * b11 + a32 * b21 + a33 * b31;\n te[5] = a31 * b12 + a32 * b22 + a33 * b32;\n te[8] = a31 * b13 + a32 * b23 + a33 * b33;\n\n return result;\n}\n\nexport function mat3Determinant(m: Mat3): number {\n const me = m.elements;\n\n const a = me[0],\n b = me[1],\n c = me[2],\n d = me[3],\n e = me[4],\n f = me[5],\n g = me[6],\n h = me[7],\n i = me[8];\n\n return a * e * i - a * f * h - b * d * i + b * f * g + c * d * h - c * e * g;\n}\n\nexport function mat3Transpose(m: Mat3, result = new Mat3()): Mat3 {\n const me = m.elements;\n const te = result.elements;\n\n te[0] = me[0];\n te[4] = me[4];\n te[8] = me[8];\n\n te[1] = me[3];\n te[3] = me[1];\n\n te[2] = me[6];\n te[6] = me[2];\n\n te[5] = me[7];\n te[7] = me[5];\n\n return result;\n}\n\nexport function mat3Inverse(m: Mat3, result = new Mat3()): Mat3 {\n const e = m.elements;\n\n const n11 = e[0],\n n21 = e[1],\n n31 = e[2],\n n12 = e[3],\n n22 = e[4],\n n32 = e[5],\n n13 = e[6],\n n23 = e[7],\n n33 = e[8],\n t11 = n33 * n22 - n32 * n23,\n t12 = n32 * n13 - n33 * n12,\n t13 = n23 * n12 - n22 * n13,\n det = n11 * t11 + n21 * t12 + n31 * t13;\n\n if (det === 0) {\n throw new Error('can not invert degenerate matrix');\n }\n\n const detInv = 1 / det;\n\n const re = result.elements;\n\n // TODO: replace with a set\n re[0] = t11 * detInv;\n re[1] = (n31 * n23 - n33 * n21) * detInv;\n re[2] = (n32 * n21 - n31 * n22) * detInv;\n\n re[3] = t12 * detInv;\n re[4] = (n33 * n11 - n31 * n13) * detInv;\n re[5] = (n31 * n12 - n32 * n11) * detInv;\n\n re[6] = t13 * detInv;\n re[7] = (n21 * n13 - n23 * n11) * detInv;\n re[8] = (n22 * n11 - n21 * n12) * detInv;\n\n return result;\n}\n\nexport function mat3Mix(\n a: Mat3,\n b: Mat3,\n t: number,\n result = new Mat3()\n): Mat3 {\n const s = 1 - t;\n for (let i = 0; i < NUM_ELEMENTS; i++) {\n result.elements[i] = a.elements[i]! * s + b.elements[i]! * t;\n }\n return result;\n}\nexport function mat3FromArray(\n array: Float32Array | number[],\n offset = 0,\n result: Mat3 = new Mat3()\n): Mat3 {\n for (let i = 0; i < NUM_ELEMENTS; i++) {\n result.elements[i] = array[offset + i]!;\n }\n return result;\n}\nexport function mat3ToArray(\n a: Mat3,\n array: Float32Array | number[],\n offset = 0\n): void {\n for (let i = 0; i < NUM_ELEMENTS; i++) {\n array[offset + i] = a.elements[i]!;\n }\n}\n\nexport function mat3ToString(a: Mat3): string {\n return toSafeString(a.elements);\n}\nexport function mat3Parse(text: string, result = new Mat3()): Mat3 {\n return mat3FromArray(parseSafeFloats(text), 0, result);\n}\n\nexport function eulerToMat3(euler: Vec3, result = new Mat3()): Mat3 {\n const te = result.elements;\n\n const x = euler.x,\n y = euler.y,\n z = euler.z;\n const a = Math.cos(x),\n b = Math.sin(x);\n const c = Math.cos(y),\n d = Math.sin(y);\n const e = Math.cos(z),\n f = Math.sin(z);\n\n const ae = a * e,\n af = a * f,\n be = b * e,\n bf = b * f;\n\n te[0] = c * e;\n te[3] = -c * f;\n te[6] = d;\n\n te[1] = af + be * d;\n te[4] = ae - bf * d;\n te[7] = -b * c;\n\n te[2] = bf - ae * d;\n te[5] = be + af * d;\n te[8] = a * c;\n\n return result;\n}\n\nexport function quatToMat3(q: Vec4, result = new Mat3()): Mat3 {\n const x = q.x,\n y = q.y,\n z = q.z,\n w = q.w;\n const x2 = x + x,\n y2 = y + y,\n z2 = z + z;\n const xx = x * x2,\n xy = x * y2,\n xz = x * z2;\n const yy = y * y2,\n yz = y * z2,\n zz = z * z2;\n const wx = w * x2,\n wy = w * y2,\n wz = w * z2;\n\n return result.set([\n 1 - (yy + zz),\n xy - wz,\n xz + wy,\n xy + wz,\n 1 - (xx + zz),\n yz - wx,\n xz - wy,\n yz + wx,\n 1 - (xx + yy)\n ]);\n}\n\nexport function scale2ToMat3(s: Vec2, result = new Mat3()): Mat3 {\n return result.set([s.x, 0, 0, 0, s.y, 0, 0, 0, 1]);\n}\n// from gl-matrix\nexport function mat3ToScale2(m: Mat4, result = new Vec2()): Vec2 {\n const mat = m.elements;\n const m11 = mat[0];\n const m12 = mat[1];\n const m21 = mat[3];\n const m22 = mat[4];\n\n return result.set(\n Math.sqrt(m11 * m11 + m12 * m12),\n Math.sqrt(m21 * m21 + m22 * m22)\n );\n}\n\nexport function translation2ToMat3(t: Vec2, result = new Mat3()): Mat3 {\n return result.set([1, 0, t.x, 0, 1, t.y, 0, 0, 1]);\n}\nexport function mat3ToTranslation2(m: Mat3, result = new Vec2()): Vec2 {\n return result.set(m.elements[2], m.elements[5]);\n}\n\nexport function scale3ToMat3(s: Vec3, result = new Mat3()): Mat3 {\n return result.set([s.x, 0, 0, 0, s.y, 0, 0, 0, s.z]);\n}\n// from gl-matrix\nexport function mat3ToScale3(m: Mat4, result = new Vec3()): Vec3 {\n const me = m.elements;\n const m11 = me[0];\n const m12 = me[1];\n const m13 = me[2];\n const m21 = me[3];\n const m22 = me[4];\n const m23 = me[5];\n const m31 = me[6];\n const m32 = me[7];\n const m33 = me[8];\n\n return result.set(\n Math.sqrt(m11 * m11 + m12 * m12 + m13 * m13),\n Math.sqrt(m21 * m21 + m22 * m22 + m23 * m23),\n Math.sqrt(m31 * m31 + m32 * m32 + m33 * m33)\n );\n}\nexport function mat4ToMat3(a: Mat4, result = new Mat3()): Mat3 {\n const ae = a.elements;\n return result.set([\n ae[0],\n ae[1],\n ae[2],\n ae[4],\n ae[5],\n ae[6],\n ae[8],\n ae[9],\n ae[10]\n ]);\n}\n"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"Mat3.js","names":["c","a"],"sources":["../../../src/Values/Internal/Mat3.ts"],"sourcesContent":["import {\n EPSILON,\n equalsTolerance,\n parseSafeFloats,\n toSafeString\n} from '@kiberon-labs/behave-graph';\n\nimport type { Mat4 } from './Mat4.js';\nimport { Vec2 } from './Vec2.js';\nimport { Vec3 } from './Vec3.js';\nimport type { Vec4 } from './Vec4.js';\n\n// uses OpenGL matrix layout where each column is specified subsequently in order from left to right.\n// ( x, y, 1 ) x [ 0 3 6 ] = ( x', y', 1 )\n// [ 1 4 7 ]\n// [ 2 5 8 ]\n// where elements 2 and 5 would be translation in 2D, as they would multiplied\n// by the last virtual element of the 2D vector.\n\nconst NUM_ROWS = 3;\nconst NUM_COLUMNS = 3;\nconst NUM_ELEMENTS = NUM_ROWS * NUM_COLUMNS;\n\ntype Mat3Elements = [\n number,\n number,\n number,\n number,\n number,\n number,\n number,\n number,\n number\n];\nexport type Mat3JSON = Mat3Elements;\n\nexport class Mat3 {\n public elements: Mat3Elements;\n constructor(elements: Mat3Elements = [1, 0, 0, 0, 1, 0, 0, 0, 1]) {\n if (elements.length !== NUM_ELEMENTS) {\n throw new Error(\n `elements must have length ${NUM_ELEMENTS}, got ${elements.length}`\n );\n }\n this.elements = elements;\n }\n\n clone(result = new Mat3()): Mat3 {\n return result.set(this.elements);\n }\n set(elements: Mat3Elements): this {\n if (elements.length !== NUM_ELEMENTS) {\n throw new Error(\n `elements must have length ${NUM_ELEMENTS}, got ${elements.length}`\n );\n }\n this.elements = [...elements];\n return this;\n }\n}\n\nexport function mat3SetColumn3(\n m: Mat3,\n columnIndex: number,\n column: Vec3,\n result = new Mat3()\n): Mat3 {\n const re = result.set(m.elements).elements;\n const base = columnIndex * NUM_ROWS;\n re[base + 0] = column.x;\n re[base + 1] = column.y;\n re[base + 2] = column.z;\n return result;\n}\n\nexport function mat3SetRow3(\n m: Mat3,\n rowIndex: number,\n row: Vec3,\n result = new Mat3()\n): Mat3 {\n const re = result.set(m.elements).elements;\n re[rowIndex] = row.x;\n re[rowIndex + NUM_COLUMNS * 1] = row.y;\n re[rowIndex + NUM_COLUMNS * 2] = row.z;\n return result;\n}\n\nexport function column3ToMat3(\n a: Vec3,\n b: Vec3,\n c: Vec3,\n result = new Mat3()\n): Mat3 {\n const re = result.elements;\n const columns = [a, b, c];\n for (let c = 0; c < columns.length; c++) {\n const base = c * NUM_ROWS;\n const column = columns[c]!;\n re[base + 0] = column.x;\n re[base + 1] = column.y;\n re[base + 2] = column.z;\n }\n return result;\n}\n\nexport function mat3Equals(a: Mat3, b: Mat3, tolerance = EPSILON): boolean {\n for (let i = 0; i < NUM_ELEMENTS; i++) {\n if (!equalsTolerance(a.elements[i]!, b.elements[i]!, tolerance))\n return false;\n }\n return true;\n}\nexport function mat3Add(a: Mat3, b: Mat3, result: Mat3 = new Mat3()): Mat3 {\n for (let i = 0; i < NUM_ELEMENTS; i++) {\n result.elements[i] = a.elements[i]! + b.elements[i]!;\n }\n return result;\n}\nexport function mat3Subtract(\n a: Mat3,\n b: Mat3,\n result: Mat3 = new Mat3()\n): Mat3 {\n result.elements = a.elements.map(\n (a, i) => a - b.elements[i]!\n ) as Mat3Elements;\n return result;\n}\nexport function mat3MultiplyByScalar(\n a: Mat3,\n b: number,\n result: Mat3 = new Mat3()\n): Mat3 {\n result.elements = a.elements.map((x) => x * b) as Mat3Elements;\n return result;\n}\nexport function mat3Negate(a: Mat3, result: Mat3 = new Mat3()): Mat3 {\n result.elements = a.elements.map((x) => -x) as Mat3Elements;\n return result;\n}\n\nexport function mat3Multiply(a: Mat3, b: Mat3, result = new Mat3()): Mat3 {\n const ae = a.elements;\n const be = b.elements;\n const te = result.elements;\n\n const a11 = ae[0],\n a12 = ae[3],\n a13 = ae[6];\n const a21 = ae[1],\n a22 = ae[4],\n a23 = ae[7];\n const a31 = ae[2],\n a32 = ae[5],\n a33 = ae[8];\n\n const b11 = be[0],\n b12 = be[3],\n b13 = be[6];\n const b21 = be[1],\n b22 = be[4],\n b23 = be[7];\n const b31 = be[2],\n b32 = be[5],\n b33 = be[8];\n\n te[0] = a11 * b11 + a12 * b21 + a13 * b31;\n te[3] = a11 * b12 + a12 * b22 + a13 * b32;\n te[6] = a11 * b13 + a12 * b23 + a13 * b33;\n\n te[1] = a21 * b11 + a22 * b21 + a23 * b31;\n te[4] = a21 * b12 + a22 * b22 + a23 * b32;\n te[7] = a21 * b13 + a22 * b23 + a23 * b33;\n\n te[2] = a31 * b11 + a32 * b21 + a33 * b31;\n te[5] = a31 * b12 + a32 * b22 + a33 * b32;\n te[8] = a31 * b13 + a32 * b23 + a33 * b33;\n\n return result;\n}\n\nexport function mat3Determinant(m: Mat3): number {\n const me = m.elements;\n\n const a = me[0],\n b = me[1],\n c = me[2],\n d = me[3],\n e = me[4],\n f = me[5],\n g = me[6],\n h = me[7],\n i = me[8];\n\n return a * e * i - a * f * h - b * d * i + b * f * g + c * d * h - c * e * g;\n}\n\nexport function mat3Transpose(m: Mat3, result = new Mat3()): Mat3 {\n const me = m.elements;\n const te = result.elements;\n\n te[0] = me[0];\n te[4] = me[4];\n te[8] = me[8];\n\n te[1] = me[3];\n te[3] = me[1];\n\n te[2] = me[6];\n te[6] = me[2];\n\n te[5] = me[7];\n te[7] = me[5];\n\n return result;\n}\n\nexport function mat3Inverse(m: Mat3, result = new Mat3()): Mat3 {\n const e = m.elements;\n\n const n11 = e[0],\n n21 = e[1],\n n31 = e[2],\n n12 = e[3],\n n22 = e[4],\n n32 = e[5],\n n13 = e[6],\n n23 = e[7],\n n33 = e[8],\n t11 = n33 * n22 - n32 * n23,\n t12 = n32 * n13 - n33 * n12,\n t13 = n23 * n12 - n22 * n13,\n det = n11 * t11 + n21 * t12 + n31 * t13;\n\n if (det === 0) {\n throw new Error('can not invert degenerate matrix');\n }\n\n const detInv = 1 / det;\n\n const re = result.elements;\n\n // TODO: replace with a set\n re[0] = t11 * detInv;\n re[1] = (n31 * n23 - n33 * n21) * detInv;\n re[2] = (n32 * n21 - n31 * n22) * detInv;\n\n re[3] = t12 * detInv;\n re[4] = (n33 * n11 - n31 * n13) * detInv;\n re[5] = (n31 * n12 - n32 * n11) * detInv;\n\n re[6] = t13 * detInv;\n re[7] = (n21 * n13 - n23 * n11) * detInv;\n re[8] = (n22 * n11 - n21 * n12) * detInv;\n\n return result;\n}\n\nexport function mat3Mix(\n a: Mat3,\n b: Mat3,\n t: number,\n result = new Mat3()\n): Mat3 {\n const s = 1 - t;\n for (let i = 0; i < NUM_ELEMENTS; i++) {\n result.elements[i] = a.elements[i]! * s + b.elements[i]! * t;\n }\n return result;\n}\nexport function mat3FromArray(\n array: Float32Array | number[],\n offset = 0,\n result: Mat3 = new Mat3()\n): Mat3 {\n for (let i = 0; i < NUM_ELEMENTS; i++) {\n result.elements[i] = array[offset + i]!;\n }\n return result;\n}\nexport function mat3ToArray(\n a: Mat3,\n array: Float32Array | number[],\n offset = 0\n): void {\n for (let i = 0; i < NUM_ELEMENTS; i++) {\n array[offset + i] = a.elements[i]!;\n }\n}\n\nexport function mat3ToString(a: Mat3): string {\n return toSafeString(a.elements);\n}\nexport function mat3Parse(text: string, result = new Mat3()): Mat3 {\n return mat3FromArray(parseSafeFloats(text), 0, result);\n}\n\nexport function eulerToMat3(euler: Vec3, result = new Mat3()): Mat3 {\n const te = result.elements;\n\n const x = euler.x,\n y = euler.y,\n z = euler.z;\n const a = Math.cos(x),\n b = Math.sin(x);\n const c = Math.cos(y),\n d = Math.sin(y);\n const e = Math.cos(z),\n f = Math.sin(z);\n\n const ae = a * e,\n af = a * f,\n be = b * e,\n bf = b * f;\n\n te[0] = c * e;\n te[3] = -c * f;\n te[6] = d;\n\n te[1] = af + be * d;\n te[4] = ae - bf * d;\n te[7] = -b * c;\n\n te[2] = bf - ae * d;\n te[5] = be + af * d;\n te[8] = a * c;\n\n return result;\n}\n\nexport function quatToMat3(q: Vec4, result = new Mat3()): Mat3 {\n const x = q.x,\n y = q.y,\n z = q.z,\n w = q.w;\n const x2 = x + x,\n y2 = y + y,\n z2 = z + z;\n const xx = x * x2,\n xy = x * y2,\n xz = x * z2;\n const yy = y * y2,\n yz = y * z2,\n zz = z * z2;\n const wx = w * x2,\n wy = w * y2,\n wz = w * z2;\n\n return result.set([\n 1 - (yy + zz),\n xy - wz,\n xz + wy,\n xy + wz,\n 1 - (xx + zz),\n yz - wx,\n xz - wy,\n yz + wx,\n 1 - (xx + yy)\n ]);\n}\n\nexport function scale2ToMat3(s: Vec2, result = new Mat3()): Mat3 {\n return result.set([s.x, 0, 0, 0, s.y, 0, 0, 0, 1]);\n}\n// from gl-matrix\nexport function mat3ToScale2(m: Mat4, result = new Vec2()): Vec2 {\n const mat = m.elements;\n const m11 = mat[0];\n const m12 = mat[1];\n const m21 = mat[3];\n const m22 = mat[4];\n\n return result.set(\n Math.sqrt(m11 * m11 + m12 * m12),\n Math.sqrt(m21 * m21 + m22 * m22)\n );\n}\n\nexport function translation2ToMat3(t: Vec2, result = new Mat3()): Mat3 {\n return result.set([1, 0, t.x, 0, 1, t.y, 0, 0, 1]);\n}\nexport function mat3ToTranslation2(m: Mat3, result = new Vec2()): Vec2 {\n return result.set(m.elements[2], m.elements[5]);\n}\n\nexport function scale3ToMat3(s: Vec3, result = new Mat3()): Mat3 {\n return result.set([s.x, 0, 0, 0, s.y, 0, 0, 0, s.z]);\n}\n// from gl-matrix\nexport function mat3ToScale3(m: Mat4, result = new Vec3()): Vec3 {\n const me = m.elements;\n const m11 = me[0];\n const m12 = me[1];\n const m13 = me[2];\n const m21 = me[3];\n const m22 = me[4];\n const m23 = me[5];\n const m31 = me[6];\n const m32 = me[7];\n const m33 = me[8];\n\n return result.set(\n Math.sqrt(m11 * m11 + m12 * m12 + m13 * m13),\n Math.sqrt(m21 * m21 + m22 * m22 + m23 * m23),\n Math.sqrt(m31 * m31 + m32 * m32 + m33 * m33)\n );\n}\nexport function mat4ToMat3(a: Mat4, result = new Mat3()): Mat3 {\n const ae = a.elements;\n return result.set([\n ae[0],\n ae[1],\n ae[2],\n ae[4],\n ae[5],\n ae[6],\n ae[8],\n ae[9],\n ae[10]\n ]);\n}\n"],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Mat4.d.ts","names":[],"sources":["../../../src/Values/Internal/Mat4.ts"],"sourcesContent":[],"mappings":";;;;;;
|
|
1
|
+
{"version":3,"file":"Mat4.d.ts","names":[],"sources":["../../../src/Values/Internal/Mat4.ts"],"sourcesContent":[],"mappings":"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"}
|
|
@@ -1,5 +1,3 @@
|
|
|
1
|
-
import "./Vec2.js";
|
|
2
|
-
import "./Vec4.js";
|
|
3
1
|
import { eulerToMat3, quatToMat3 } from "./Mat3.js";
|
|
4
2
|
import { Vec3, vec3Cross, vec3Length, vec3MultiplyByScalar, vec3Normalize, vec3Subtract } from "./Vec3.js";
|
|
5
3
|
import { EPSILON, equalsTolerance, parseSafeFloats, toSafeString } from "@kiberon-labs/behave-graph";
|
|
@@ -52,7 +50,7 @@ function mat4SetColumn4(m, columnIndex, column, result = new Mat4()) {
|
|
|
52
50
|
function mat4SetRow4(m, rowIndex, row, result = new Mat4()) {
|
|
53
51
|
const re = result.set(m.elements).elements;
|
|
54
52
|
const base = Number(rowIndex);
|
|
55
|
-
re[base
|
|
53
|
+
re[base] = row.x;
|
|
56
54
|
re[base + NUM_COLUMNS * 1] = row.y;
|
|
57
55
|
re[base + NUM_COLUMNS * 2] = row.z;
|
|
58
56
|
re[base + NUM_COLUMNS * 3] = row.w;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Mat4.js","names":["c","a"],"sources":["../../../src/Values/Internal/Mat4.ts"],"sourcesContent":["import {\n EPSILON,\n equalsTolerance,\n parseSafeFloats,\n toSafeString\n} from '@kiberon-labs/behave-graph';\n\nimport { eulerToMat3, Mat3, quatToMat3 } from './Mat3.js';\nimport { Vec2 } from './Vec2.js';\nimport {\n Vec3,\n vec3Cross,\n vec3Length,\n vec3MultiplyByScalar,\n vec3Normalize,\n vec3Subtract\n} from './Vec3.js';\nimport { Vec4 } from './Vec4.js';\n\n// uses OpenGL matrix layout where each column is specified subsequently in order from left to right.\n// ( x, y, z, 1 ) x [ 0 4 8 12] = ( x', y', z', 1 )\n// [ 1 5 9 13]\n// [ 2 6 10 14]\n// [ 3 7 11 15]\n// where elements 3, 7, 11 would be translation in 3D, as they would multiplied\n// by the last virtual element of the 3D vector.\n\nconst NUM_ROWS = 4;\nconst NUM_COLUMNS = 4;\nconst NUM_ELEMENTS = NUM_ROWS * NUM_COLUMNS;\n\ntype Mat4Elements = [\n number,\n number,\n number,\n number,\n number,\n number,\n number,\n number,\n number,\n number,\n number,\n number,\n number,\n number,\n number,\n number\n];\nexport type Mat4JSON = Mat4Elements;\n\nexport class Mat4 {\n public elements: Mat4Elements;\n constructor(\n elements: Mat4Elements = [1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1]\n ) {\n if (elements.length !== NUM_ELEMENTS) {\n throw new Error(\n `elements must have length ${NUM_ELEMENTS}, got ${elements.length}`\n );\n }\n this.elements = elements;\n }\n\n clone(result = new Mat4()): Mat4 {\n return result.set(this.elements);\n }\n set(elements: Mat4Elements): this {\n if (elements.length !== NUM_ELEMENTS) {\n throw new Error(\n `elements must have length ${NUM_ELEMENTS}, got ${elements.length}`\n );\n }\n this.elements = [...elements];\n return this;\n }\n}\n\nexport function mat4SetColumn4(\n m: Mat4,\n columnIndex: bigint,\n column: Vec4,\n result = new Mat4()\n): Mat4 {\n const re = result.set(m.elements).elements;\n const base = Number(columnIndex) * NUM_ROWS;\n re[base + 0] = column.x;\n re[base + 1] = column.y;\n re[base + 2] = column.z;\n re[base + 3] = column.w;\n return result;\n}\n\nexport function mat4SetRow4(\n m: Mat4,\n rowIndex: bigint,\n row: Vec4,\n result = new Mat4()\n): Mat4 {\n const re = result.set(m.elements).elements;\n const base = Number(rowIndex);\n re[base + NUM_COLUMNS * 0] = row.x;\n re[base + NUM_COLUMNS * 1] = row.y;\n re[base + NUM_COLUMNS * 2] = row.z;\n re[base + NUM_COLUMNS * 3] = row.w;\n return result;\n}\n\nexport function column4ToMat4(\n a: Vec4,\n b: Vec4,\n c: Vec4,\n d: Vec4,\n result = new Mat4()\n): Mat4 {\n const re = result.elements;\n const columns = [a, b, c, d];\n for (let c = 0; c < columns.length; c++) {\n const base = c * NUM_ROWS;\n const column = columns[c]!;\n re[base + 0] = column.x;\n re[base + 1] = column.y;\n re[base + 2] = column.z;\n re[base + 3] = column.w;\n }\n return result;\n}\n\nexport function mat4Equals(\n a: Mat4,\n b: Mat4,\n tolerance: number = EPSILON\n): boolean {\n for (let i = 0; i < NUM_ELEMENTS; i++) {\n if (!equalsTolerance(a.elements[i]!, b.elements[i]!, tolerance))\n return false;\n }\n return true;\n}\n\nexport function mat4Add(a: Mat4, b: Mat4, result: Mat4 = new Mat4()): Mat4 {\n result.elements = a.elements.map(\n (a, i) => a + b.elements[i]!\n ) as Mat4Elements;\n return result;\n}\nexport function mat4Subtract(\n a: Mat4,\n b: Mat4,\n result: Mat4 = new Mat4()\n): Mat4 {\n result.elements = a.elements.map(\n (a, i) => a - b.elements[i]!\n ) as Mat4Elements;\n return result;\n}\n\nexport function mat4MultiplyByScalar(\n a: Mat4,\n b: number,\n result: Mat4 = new Mat4()\n): Mat4 {\n result.elements = a.elements.map((a) => a * b) as Mat4Elements;\n return result;\n}\n\nexport function mat4Negate(a: Mat4, result: Mat4 = new Mat4()): Mat4 {\n result.elements = a.elements.map((a) => -a) as Mat4Elements;\n return result;\n}\n\nexport function mat4Multiply(a: Mat4, b: Mat4, result = new Mat4()): Mat4 {\n const ae = a.elements;\n const be = b.elements;\n const te = result.elements;\n\n const a11 = ae[0],\n a12 = ae[4],\n a13 = ae[8],\n a14 = ae[12];\n const a21 = ae[1],\n a22 = ae[5],\n a23 = ae[9],\n a24 = ae[13];\n const a31 = ae[2],\n a32 = ae[6],\n a33 = ae[10],\n a34 = ae[14];\n const a41 = ae[3],\n a42 = ae[7],\n a43 = ae[11],\n a44 = ae[15];\n\n const b11 = be[0],\n b12 = be[4],\n b13 = be[8],\n b14 = be[12];\n const b21 = be[1],\n b22 = be[5],\n b23 = be[9],\n b24 = be[13];\n const b31 = be[2],\n b32 = be[6],\n b33 = be[10],\n b34 = be[14];\n const b41 = be[3],\n b42 = be[7],\n b43 = be[11],\n b44 = be[15];\n\n // TODO: Replace with set(...)\n te[0] = a11 * b11 + a12 * b21 + a13 * b31 + a14 * b41;\n te[4] = a11 * b12 + a12 * b22 + a13 * b32 + a14 * b42;\n te[8] = a11 * b13 + a12 * b23 + a13 * b33 + a14 * b43;\n te[12] = a11 * b14 + a12 * b24 + a13 * b34 + a14 * b44;\n\n te[1] = a21 * b11 + a22 * b21 + a23 * b31 + a24 * b41;\n te[5] = a21 * b12 + a22 * b22 + a23 * b32 + a24 * b42;\n te[9] = a21 * b13 + a22 * b23 + a23 * b33 + a24 * b43;\n te[13] = a21 * b14 + a22 * b24 + a23 * b34 + a24 * b44;\n\n te[2] = a31 * b11 + a32 * b21 + a33 * b31 + a34 * b41;\n te[6] = a31 * b12 + a32 * b22 + a33 * b32 + a34 * b42;\n te[10] = a31 * b13 + a32 * b23 + a33 * b33 + a34 * b43;\n te[14] = a31 * b14 + a32 * b24 + a33 * b34 + a34 * b44;\n\n te[3] = a41 * b11 + a42 * b21 + a43 * b31 + a44 * b41;\n te[7] = a41 * b12 + a42 * b22 + a43 * b32 + a44 * b42;\n te[11] = a41 * b13 + a42 * b23 + a43 * b33 + a44 * b43;\n te[15] = a41 * b14 + a42 * b24 + a43 * b34 + a44 * b44;\n\n return result;\n}\n\nexport function mat4Determinant(m: Mat4): number {\n // based on http://www.euclideanspace.com/maths/algebra/matrix/functions/inverse/fourD/index.htm\n const me = m.elements,\n n11 = me[0],\n n21 = me[1],\n n31 = me[2],\n n41 = me[3],\n n12 = me[4],\n n22 = me[5],\n n32 = me[6],\n n42 = me[7],\n n13 = me[8],\n n23 = me[9],\n n33 = me[10],\n n43 = me[11],\n n14 = me[12],\n n24 = me[13],\n n34 = me[14],\n n44 = me[15],\n t11 =\n n23 * n34 * n42 -\n n24 * n33 * n42 +\n n24 * n32 * n43 -\n n22 * n34 * n43 -\n n23 * n32 * n44 +\n n22 * n33 * n44,\n t12 =\n n14 * n33 * n42 -\n n13 * n34 * n42 -\n n14 * n32 * n43 +\n n12 * n34 * n43 +\n n13 * n32 * n44 -\n n12 * n33 * n44,\n t13 =\n n13 * n24 * n42 -\n n14 * n23 * n42 +\n n14 * n22 * n43 -\n n12 * n24 * n43 -\n n13 * n22 * n44 +\n n12 * n23 * n44,\n t14 =\n n14 * n23 * n32 -\n n13 * n24 * n32 -\n n14 * n22 * n33 +\n n12 * n24 * n33 +\n n13 * n22 * n34 -\n n12 * n23 * n34;\n\n return n11 * t11 + n21 * t12 + n31 * t13 + n41 * t14;\n}\nexport function mat4Adjoint(m: Mat4, result = new Mat4()): Mat4 {\n // from gl-matrix\n const a = m.elements;\n const out = result.elements;\n const a00 = a[0],\n a01 = a[1],\n a02 = a[2],\n a03 = a[3];\n const a10 = a[4],\n a11 = a[5],\n a12 = a[6],\n a13 = a[7];\n const a20 = a[8],\n a21 = a[9],\n a22 = a[10],\n a23 = a[11];\n const a30 = a[12],\n a31 = a[13],\n a32 = a[14],\n a33 = a[15];\n\n const b00 = a00 * a11 - a01 * a10;\n const b01 = a00 * a12 - a02 * a10;\n const b02 = a00 * a13 - a03 * a10;\n const b03 = a01 * a12 - a02 * a11;\n const b04 = a01 * a13 - a03 * a11;\n const b05 = a02 * a13 - a03 * a12;\n const b06 = a20 * a31 - a21 * a30;\n const b07 = a20 * a32 - a22 * a30;\n const b08 = a20 * a33 - a23 * a30;\n const b09 = a21 * a32 - a22 * a31;\n const b10 = a21 * a33 - a23 * a31;\n const b11 = a22 * a33 - a23 * a32;\n\n out[0] = a11 * b11 - a12 * b10 + a13 * b09;\n out[1] = a02 * b10 - a01 * b11 - a03 * b09;\n out[2] = a31 * b05 - a32 * b04 + a33 * b03;\n out[3] = a22 * b04 - a21 * b05 - a23 * b03;\n out[4] = a12 * b08 - a10 * b11 - a13 * b07;\n out[5] = a00 * b11 - a02 * b08 + a03 * b07;\n out[6] = a32 * b02 - a30 * b05 - a33 * b01;\n out[7] = a20 * b05 - a22 * b02 + a23 * b01;\n out[8] = a10 * b10 - a11 * b08 + a13 * b06;\n out[9] = a01 * b08 - a00 * b10 - a03 * b06;\n out[10] = a30 * b04 - a31 * b02 + a33 * b00;\n out[11] = a21 * b02 - a20 * b04 - a23 * b00;\n out[12] = a11 * b07 - a10 * b09 - a12 * b06;\n out[13] = a00 * b09 - a01 * b07 + a02 * b06;\n out[14] = a31 * b01 - a30 * b03 - a32 * b00;\n out[15] = a20 * b03 - a21 * b01 + a22 * b00;\n return result;\n}\n\nexport function mat4Transpose(m: Mat4, result = new Mat4()): Mat4 {\n const re = m.clone(result).elements;\n let tmp;\n\n // TODO: replace this with just reading from me and setting re, no need for a temporary\n tmp = re[1];\n re[1] = re[4];\n re[4] = tmp;\n tmp = re[2];\n re[2] = re[8];\n re[8] = tmp;\n tmp = re[6];\n re[6] = re[9];\n re[9] = tmp;\n\n tmp = re[3];\n re[3] = re[12];\n re[12] = tmp;\n tmp = re[7];\n re[7] = re[13];\n re[13] = tmp;\n tmp = re[11];\n re[11] = re[14];\n re[14] = tmp;\n\n return result;\n}\n\nexport function mat4Inverse(m: Mat4, result = new Mat4()): Mat4 {\n // based on http://www.euclideanspace.com/maths/algebra/matrix/functions/inverse/fourD/index.htm\n const me = m.elements,\n n11 = me[0],\n n21 = me[1],\n n31 = me[2],\n n41 = me[3],\n n12 = me[4],\n n22 = me[5],\n n32 = me[6],\n n42 = me[7],\n n13 = me[8],\n n23 = me[9],\n n33 = me[10],\n n43 = me[11],\n n14 = me[12],\n n24 = me[13],\n n34 = me[14],\n n44 = me[15],\n t11 =\n n23 * n34 * n42 -\n n24 * n33 * n42 +\n n24 * n32 * n43 -\n n22 * n34 * n43 -\n n23 * n32 * n44 +\n n22 * n33 * n44,\n t12 =\n n14 * n33 * n42 -\n n13 * n34 * n42 -\n n14 * n32 * n43 +\n n12 * n34 * n43 +\n n13 * n32 * n44 -\n n12 * n33 * n44,\n t13 =\n n13 * n24 * n42 -\n n14 * n23 * n42 +\n n14 * n22 * n43 -\n n12 * n24 * n43 -\n n13 * n22 * n44 +\n n12 * n23 * n44,\n t14 =\n n14 * n23 * n32 -\n n13 * n24 * n32 -\n n14 * n22 * n33 +\n n12 * n24 * n33 +\n n13 * n22 * n34 -\n n12 * n23 * n34;\n\n const det = n11 * t11 + n21 * t12 + n31 * t13 + n41 * t14;\n\n if (det === 0) {\n throw new Error('can not invert degenerate matrix');\n }\n\n const detInv = 1 / det;\n\n // TODO: replace with a set\n const re = result.elements;\n re[0] = t11 * detInv;\n re[1] =\n (n24 * n33 * n41 -\n n23 * n34 * n41 -\n n24 * n31 * n43 +\n n21 * n34 * n43 +\n n23 * n31 * n44 -\n n21 * n33 * n44) *\n detInv;\n re[2] =\n (n22 * n34 * n41 -\n n24 * n32 * n41 +\n n24 * n31 * n42 -\n n21 * n34 * n42 -\n n22 * n31 * n44 +\n n21 * n32 * n44) *\n detInv;\n re[3] =\n (n23 * n32 * n41 -\n n22 * n33 * n41 -\n n23 * n31 * n42 +\n n21 * n33 * n42 +\n n22 * n31 * n43 -\n n21 * n32 * n43) *\n detInv;\n\n re[4] = t12 * detInv;\n re[5] =\n (n13 * n34 * n41 -\n n14 * n33 * n41 +\n n14 * n31 * n43 -\n n11 * n34 * n43 -\n n13 * n31 * n44 +\n n11 * n33 * n44) *\n detInv;\n re[6] =\n (n14 * n32 * n41 -\n n12 * n34 * n41 -\n n14 * n31 * n42 +\n n11 * n34 * n42 +\n n12 * n31 * n44 -\n n11 * n32 * n44) *\n detInv;\n re[7] =\n (n12 * n33 * n41 -\n n13 * n32 * n41 +\n n13 * n31 * n42 -\n n11 * n33 * n42 -\n n12 * n31 * n43 +\n n11 * n32 * n43) *\n detInv;\n\n re[8] = t13 * detInv;\n re[9] =\n (n14 * n23 * n41 -\n n13 * n24 * n41 -\n n14 * n21 * n43 +\n n11 * n24 * n43 +\n n13 * n21 * n44 -\n n11 * n23 * n44) *\n detInv;\n re[10] =\n (n12 * n24 * n41 -\n n14 * n22 * n41 +\n n14 * n21 * n42 -\n n11 * n24 * n42 -\n n12 * n21 * n44 +\n n11 * n22 * n44) *\n detInv;\n re[11] =\n (n13 * n22 * n41 -\n n12 * n23 * n41 -\n n13 * n21 * n42 +\n n11 * n23 * n42 +\n n12 * n21 * n43 -\n n11 * n22 * n43) *\n detInv;\n\n re[12] = t14 * detInv;\n re[13] =\n (n13 * n24 * n31 -\n n14 * n23 * n31 +\n n14 * n21 * n33 -\n n11 * n24 * n33 -\n n13 * n21 * n34 +\n n11 * n23 * n34) *\n detInv;\n re[14] =\n (n14 * n22 * n31 -\n n12 * n24 * n31 -\n n14 * n21 * n32 +\n n11 * n24 * n32 +\n n12 * n21 * n34 -\n n11 * n22 * n34) *\n detInv;\n re[15] =\n (n12 * n23 * n31 -\n n13 * n22 * n31 +\n n13 * n21 * n32 -\n n11 * n23 * n32 -\n n12 * n21 * n33 +\n n11 * n22 * n33) *\n detInv;\n\n return result;\n}\n\nexport function mat4Mix(\n a: Mat4,\n b: Mat4,\n t: number,\n result = new Mat4()\n): Mat4 {\n const s = 1 - t;\n for (let i = 0; i < NUM_ELEMENTS; i++) {\n result.elements[i] = a.elements[i]! * s + b.elements[i]! * t;\n }\n return result;\n}\n\nexport function mat4FromArray(\n array: Float32Array | number[],\n offset = 0,\n result: Mat4 = new Mat4()\n): Mat4 {\n for (let i = 0; i < NUM_ELEMENTS; i++) {\n result.elements[i] = array[offset + i]!;\n }\n return result;\n}\n\nexport function mat4ToArray(\n a: Mat4,\n array: Float32Array | number[],\n offset = 0\n): void {\n for (let i = 0; i < NUM_ELEMENTS; i++) {\n array[offset + i] = a.elements[i]!;\n }\n}\n\nexport function mat4ToString(a: Mat4): string {\n return toSafeString(a.elements);\n}\n\nexport function mat4Parse(text: string, result = new Mat4()): Mat4 {\n return mat4FromArray(parseSafeFloats(text), 0, result);\n}\n\nexport function mat3ToMat4(a: Mat3, result = new Mat4()): Mat4 {\n const ae = a.elements;\n return result.set([\n ae[0],\n ae[1],\n ae[2],\n 0,\n ae[3],\n ae[4],\n ae[5],\n 0,\n ae[6],\n ae[7],\n ae[8],\n 0,\n 0,\n 0,\n 0,\n 1\n ]);\n}\n\nexport function eulerToMat4(e: Vec3, result = new Mat4()): Mat4 {\n return mat3ToMat4(eulerToMat3(e), result);\n}\n\nexport function quatToMat4(q: Vec4, result = new Mat4()): Mat4 {\n return mat3ToMat4(quatToMat3(q), result);\n}\n\nexport function scale3ToMat4(s: Vec3, result = new Mat4()): Mat4 {\n return result.set([s.x, 0, 0, 0, 0, s.y, 0, 0, 0, 0, s.z, 0, 0, 0, 0, 1]);\n}\n// from gl-matrix\nexport function mat4ToScale3(m: Mat4, result = new Vec3()): Vec3 {\n const mat = m.elements;\n const m11 = mat[0];\n const m12 = mat[1];\n const m13 = mat[2];\n const m21 = mat[4];\n const m22 = mat[5];\n const m23 = mat[6];\n const m31 = mat[8];\n const m32 = mat[9];\n const m33 = mat[10];\n\n return result.set(\n Math.sqrt(m11 * m11 + m12 * m12 + m13 * m13),\n Math.sqrt(m21 * m21 + m22 * m22 + m23 * m23),\n Math.sqrt(m31 * m31 + m32 * m32 + m33 * m33)\n );\n}\n\nexport function translation3ToMat4(t: Vec3, result = new Mat4()): Mat4 {\n return result.set([1, 0, 0, t.x, 0, 1, 0, t.y, 0, 0, 1, t.z, 0, 0, 0, 1]);\n}\nexport function mat4ToTranslation3(m: Mat4, result = new Vec3()): Vec3 {\n const me = m.elements;\n return result.set(me[3], me[7], me[11]);\n}\nexport function mat4Translate(m: Mat4, t: Vec3, result = new Mat4()): Mat4 {\n return mat4Multiply(m, translation3ToMat4(t), result);\n}\nexport function mat4Scale(m: Mat4, s: Vec3, result = new Mat4()): Mat4 {\n return mat4Multiply(m, scale3ToMat4(s), result);\n}\nexport function mat4RotateByQuat(m: Mat4, q: Vec4, result = new Mat4()): Mat4 {\n return mat4Multiply(m, quatToMat4(q), result);\n}\nexport function mat4RotateByEuler(m: Mat4, e: Vec3, result = new Mat4()): Mat4 {\n return mat4Multiply(m, eulerToMat4(e), result);\n}\n\nexport function mat4TransformPoint3(\n m: Mat4,\n v: Vec4,\n result = new Vec3()\n): Vec3 {\n const x = v.x,\n y = v.y,\n z = v.z;\n const e = m.elements;\n\n const w = 1 / (e[3] * x + e[7] * y + e[11] * z + e[15]);\n\n result.x = (e[0] * x + e[4] * y + e[8] * z + e[12]) * w;\n result.y = (e[1] * x + e[5] * y + e[9] * z + e[13]) * w;\n result.z = (e[2] * x + e[6] * y + e[10] * z + e[14]) * w;\n\n return result;\n}\n\nexport function mat4TransformNormal3(\n v: Vec3,\n m: Mat4,\n result = new Vec3()\n): Vec3 {\n const x = v.x,\n y = v.y,\n z = v.z;\n const e = m.elements;\n\n result.x = e[0] * x + e[4] * y + e[8] * z;\n result.y = e[1] * x + e[5] * y + e[9] * z;\n result.z = e[2] * x + e[6] * y + e[10] * z;\n\n return vec3Normalize(result, result);\n}\n\nexport function mat4Perspective(\n left: number,\n right: number,\n top: number,\n bottom: number,\n near: number,\n far: number,\n result = new Mat4()\n): Mat4 {\n const x = (2 * near) / (right - left);\n const y = (2 * near) / (top - bottom);\n\n const a = (right + left) / (right - left);\n const b = (top + bottom) / (top - bottom);\n const c = -(far + near) / (far - near);\n const d = (-2 * far * near) / (far - near);\n\n return result.set([x, 0, a, 0, 0, y, b, 0, 0, 0, c, d, 0, 0, -1, 0]);\n}\n\nexport function mat4PerspectiveFov(\n verticalFov: number,\n near: number,\n far: number,\n zoom: number,\n aspectRatio: number,\n result = new Mat4()\n): Mat4 {\n const height = (2 * near * Math.tan((verticalFov * Math.PI) / 180)) / zoom;\n const width = height * aspectRatio;\n\n // NOTE: OpenGL screen coordinates are -bottomt to +top, -left to +right.\n\n const right = width * 0.5;\n const left = right - width;\n\n const top = height * 0.5;\n const bottom = top - height;\n\n return mat4Perspective(left, right, top, bottom, near, far, result);\n}\n\n// TODO: Replace with a Box3?\nexport function mat4Orthogonal(\n left: number,\n right: number,\n top: number,\n bottom: number,\n near: number,\n far: number,\n result = new Mat4()\n): Mat4 {\n const w = 1 / (right - left);\n const h = 1 / (top - bottom);\n const p = 1 / (far - near);\n\n const x = (right + left) * w;\n const y = (top + bottom) * h;\n const z = (far + near) * p;\n\n return result.set([\n 2 * w,\n 0,\n 0,\n -x,\n 0,\n 2 * h,\n 0,\n -y,\n 0,\n 0,\n -2 * p,\n -z,\n 0,\n 0,\n 0,\n 1\n ]);\n}\n\nexport function mat4OrthogonalSimple(\n height: number,\n center: Vec2,\n near: number,\n far: number,\n zoom: number,\n aspectRatio = 1,\n result = new Mat4()\n): Mat4 {\n height /= zoom;\n const width = height * aspectRatio;\n\n const left = -width * 0.5 + center.x;\n const right = left + width;\n\n const top = -height * 0.5 + center.y;\n const bottom = top + height;\n\n return mat4Orthogonal(left, right, top, bottom, near, far, result);\n}\n\nexport function mat4LookAt(\n eye: Vec3,\n target: Vec3,\n up: Vec3,\n result = new Mat4()\n): Mat4 {\n const te = result.elements;\n\n const look = vec3Subtract(eye, target);\n\n const lookLength = vec3Length(look);\n if (lookLength === 0) {\n look.z = 1;\n } else {\n vec3MultiplyByScalar(look, 1 / lookLength, look);\n }\n\n const right = vec3Cross(up, look);\n\n const rightLength = vec3Length(right);\n if (rightLength === 0) {\n // up and z are parallel\n\n if (Math.abs(up.z) === 1) {\n up.x += 0.0001;\n } else {\n up.z += 0.0001;\n }\n\n vec3Normalize(up, up);\n vec3Cross(right, up, right);\n } else {\n vec3MultiplyByScalar(right, 1 / rightLength, right);\n }\n\n const up2 = vec3Cross(look, right);\n\n te[0] = right.x;\n te[4] = up2.x;\n te[8] = look.x;\n te[1] = right.y;\n te[5] = up2.y;\n te[9] = look.y;\n te[2] = right.z;\n te[6] = up2.z;\n te[10] = look.z;\n\n return result;\n}\n"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"Mat4.js","names":["c","a"],"sources":["../../../src/Values/Internal/Mat4.ts"],"sourcesContent":["import {\n EPSILON,\n equalsTolerance,\n parseSafeFloats,\n toSafeString\n} from '@kiberon-labs/behave-graph';\n\nimport type { Mat3 } from './Mat3.js';\nimport { eulerToMat3, quatToMat3 } from './Mat3.js';\nimport type { Vec2 } from './Vec2.js';\nimport {\n Vec3,\n vec3Cross,\n vec3Length,\n vec3MultiplyByScalar,\n vec3Normalize,\n vec3Subtract\n} from './Vec3.js';\nimport type { Vec4 } from './Vec4.js';\n\n// uses OpenGL matrix layout where each column is specified subsequently in order from left to right.\n// ( x, y, z, 1 ) x [ 0 4 8 12] = ( x', y', z', 1 )\n// [ 1 5 9 13]\n// [ 2 6 10 14]\n// [ 3 7 11 15]\n// where elements 3, 7, 11 would be translation in 3D, as they would multiplied\n// by the last virtual element of the 3D vector.\n\nconst NUM_ROWS = 4;\nconst NUM_COLUMNS = 4;\nconst NUM_ELEMENTS = NUM_ROWS * NUM_COLUMNS;\n\ntype Mat4Elements = [\n number,\n number,\n number,\n number,\n number,\n number,\n number,\n number,\n number,\n number,\n number,\n number,\n number,\n number,\n number,\n number\n];\nexport type Mat4JSON = Mat4Elements;\n\nexport class Mat4 {\n public elements: Mat4Elements;\n constructor(\n elements: Mat4Elements = [1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1]\n ) {\n if (elements.length !== NUM_ELEMENTS) {\n throw new Error(\n `elements must have length ${NUM_ELEMENTS}, got ${elements.length}`\n );\n }\n this.elements = elements;\n }\n\n clone(result = new Mat4()): Mat4 {\n return result.set(this.elements);\n }\n set(elements: Mat4Elements): this {\n if (elements.length !== NUM_ELEMENTS) {\n throw new Error(\n `elements must have length ${NUM_ELEMENTS}, got ${elements.length}`\n );\n }\n this.elements = [...elements];\n return this;\n }\n}\n\nexport function mat4SetColumn4(\n m: Mat4,\n columnIndex: bigint,\n column: Vec4,\n result = new Mat4()\n): Mat4 {\n const re = result.set(m.elements).elements;\n const base = Number(columnIndex) * NUM_ROWS;\n re[base + 0] = column.x;\n re[base + 1] = column.y;\n re[base + 2] = column.z;\n re[base + 3] = column.w;\n return result;\n}\n\nexport function mat4SetRow4(\n m: Mat4,\n rowIndex: bigint,\n row: Vec4,\n result = new Mat4()\n): Mat4 {\n const re = result.set(m.elements).elements;\n const base = Number(rowIndex);\n re[base] = row.x;\n re[base + NUM_COLUMNS * 1] = row.y;\n re[base + NUM_COLUMNS * 2] = row.z;\n re[base + NUM_COLUMNS * 3] = row.w;\n return result;\n}\n\nexport function column4ToMat4(\n a: Vec4,\n b: Vec4,\n c: Vec4,\n d: Vec4,\n result = new Mat4()\n): Mat4 {\n const re = result.elements;\n const columns = [a, b, c, d];\n for (let c = 0; c < columns.length; c++) {\n const base = c * NUM_ROWS;\n const column = columns[c]!;\n re[base + 0] = column.x;\n re[base + 1] = column.y;\n re[base + 2] = column.z;\n re[base + 3] = column.w;\n }\n return result;\n}\n\nexport function mat4Equals(\n a: Mat4,\n b: Mat4,\n tolerance: number = EPSILON\n): boolean {\n for (let i = 0; i < NUM_ELEMENTS; i++) {\n if (!equalsTolerance(a.elements[i]!, b.elements[i]!, tolerance))\n return false;\n }\n return true;\n}\n\nexport function mat4Add(a: Mat4, b: Mat4, result: Mat4 = new Mat4()): Mat4 {\n result.elements = a.elements.map(\n (a, i) => a + b.elements[i]!\n ) as Mat4Elements;\n return result;\n}\nexport function mat4Subtract(\n a: Mat4,\n b: Mat4,\n result: Mat4 = new Mat4()\n): Mat4 {\n result.elements = a.elements.map(\n (a, i) => a - b.elements[i]!\n ) as Mat4Elements;\n return result;\n}\n\nexport function mat4MultiplyByScalar(\n a: Mat4,\n b: number,\n result: Mat4 = new Mat4()\n): Mat4 {\n result.elements = a.elements.map((a) => a * b) as Mat4Elements;\n return result;\n}\n\nexport function mat4Negate(a: Mat4, result: Mat4 = new Mat4()): Mat4 {\n result.elements = a.elements.map((a) => -a) as Mat4Elements;\n return result;\n}\n\nexport function mat4Multiply(a: Mat4, b: Mat4, result = new Mat4()): Mat4 {\n const ae = a.elements;\n const be = b.elements;\n const te = result.elements;\n\n const a11 = ae[0],\n a12 = ae[4],\n a13 = ae[8],\n a14 = ae[12];\n const a21 = ae[1],\n a22 = ae[5],\n a23 = ae[9],\n a24 = ae[13];\n const a31 = ae[2],\n a32 = ae[6],\n a33 = ae[10],\n a34 = ae[14];\n const a41 = ae[3],\n a42 = ae[7],\n a43 = ae[11],\n a44 = ae[15];\n\n const b11 = be[0],\n b12 = be[4],\n b13 = be[8],\n b14 = be[12];\n const b21 = be[1],\n b22 = be[5],\n b23 = be[9],\n b24 = be[13];\n const b31 = be[2],\n b32 = be[6],\n b33 = be[10],\n b34 = be[14];\n const b41 = be[3],\n b42 = be[7],\n b43 = be[11],\n b44 = be[15];\n\n // TODO: Replace with set(...)\n te[0] = a11 * b11 + a12 * b21 + a13 * b31 + a14 * b41;\n te[4] = a11 * b12 + a12 * b22 + a13 * b32 + a14 * b42;\n te[8] = a11 * b13 + a12 * b23 + a13 * b33 + a14 * b43;\n te[12] = a11 * b14 + a12 * b24 + a13 * b34 + a14 * b44;\n\n te[1] = a21 * b11 + a22 * b21 + a23 * b31 + a24 * b41;\n te[5] = a21 * b12 + a22 * b22 + a23 * b32 + a24 * b42;\n te[9] = a21 * b13 + a22 * b23 + a23 * b33 + a24 * b43;\n te[13] = a21 * b14 + a22 * b24 + a23 * b34 + a24 * b44;\n\n te[2] = a31 * b11 + a32 * b21 + a33 * b31 + a34 * b41;\n te[6] = a31 * b12 + a32 * b22 + a33 * b32 + a34 * b42;\n te[10] = a31 * b13 + a32 * b23 + a33 * b33 + a34 * b43;\n te[14] = a31 * b14 + a32 * b24 + a33 * b34 + a34 * b44;\n\n te[3] = a41 * b11 + a42 * b21 + a43 * b31 + a44 * b41;\n te[7] = a41 * b12 + a42 * b22 + a43 * b32 + a44 * b42;\n te[11] = a41 * b13 + a42 * b23 + a43 * b33 + a44 * b43;\n te[15] = a41 * b14 + a42 * b24 + a43 * b34 + a44 * b44;\n\n return result;\n}\n\nexport function mat4Determinant(m: Mat4): number {\n // based on http://www.euclideanspace.com/maths/algebra/matrix/functions/inverse/fourD/index.htm\n const me = m.elements,\n n11 = me[0],\n n21 = me[1],\n n31 = me[2],\n n41 = me[3],\n n12 = me[4],\n n22 = me[5],\n n32 = me[6],\n n42 = me[7],\n n13 = me[8],\n n23 = me[9],\n n33 = me[10],\n n43 = me[11],\n n14 = me[12],\n n24 = me[13],\n n34 = me[14],\n n44 = me[15],\n t11 =\n n23 * n34 * n42 -\n n24 * n33 * n42 +\n n24 * n32 * n43 -\n n22 * n34 * n43 -\n n23 * n32 * n44 +\n n22 * n33 * n44,\n t12 =\n n14 * n33 * n42 -\n n13 * n34 * n42 -\n n14 * n32 * n43 +\n n12 * n34 * n43 +\n n13 * n32 * n44 -\n n12 * n33 * n44,\n t13 =\n n13 * n24 * n42 -\n n14 * n23 * n42 +\n n14 * n22 * n43 -\n n12 * n24 * n43 -\n n13 * n22 * n44 +\n n12 * n23 * n44,\n t14 =\n n14 * n23 * n32 -\n n13 * n24 * n32 -\n n14 * n22 * n33 +\n n12 * n24 * n33 +\n n13 * n22 * n34 -\n n12 * n23 * n34;\n\n return n11 * t11 + n21 * t12 + n31 * t13 + n41 * t14;\n}\nexport function mat4Adjoint(m: Mat4, result = new Mat4()): Mat4 {\n // from gl-matrix\n const a = m.elements;\n const out = result.elements;\n const a00 = a[0],\n a01 = a[1],\n a02 = a[2],\n a03 = a[3];\n const a10 = a[4],\n a11 = a[5],\n a12 = a[6],\n a13 = a[7];\n const a20 = a[8],\n a21 = a[9],\n a22 = a[10],\n a23 = a[11];\n const a30 = a[12],\n a31 = a[13],\n a32 = a[14],\n a33 = a[15];\n\n const b00 = a00 * a11 - a01 * a10;\n const b01 = a00 * a12 - a02 * a10;\n const b02 = a00 * a13 - a03 * a10;\n const b03 = a01 * a12 - a02 * a11;\n const b04 = a01 * a13 - a03 * a11;\n const b05 = a02 * a13 - a03 * a12;\n const b06 = a20 * a31 - a21 * a30;\n const b07 = a20 * a32 - a22 * a30;\n const b08 = a20 * a33 - a23 * a30;\n const b09 = a21 * a32 - a22 * a31;\n const b10 = a21 * a33 - a23 * a31;\n const b11 = a22 * a33 - a23 * a32;\n\n out[0] = a11 * b11 - a12 * b10 + a13 * b09;\n out[1] = a02 * b10 - a01 * b11 - a03 * b09;\n out[2] = a31 * b05 - a32 * b04 + a33 * b03;\n out[3] = a22 * b04 - a21 * b05 - a23 * b03;\n out[4] = a12 * b08 - a10 * b11 - a13 * b07;\n out[5] = a00 * b11 - a02 * b08 + a03 * b07;\n out[6] = a32 * b02 - a30 * b05 - a33 * b01;\n out[7] = a20 * b05 - a22 * b02 + a23 * b01;\n out[8] = a10 * b10 - a11 * b08 + a13 * b06;\n out[9] = a01 * b08 - a00 * b10 - a03 * b06;\n out[10] = a30 * b04 - a31 * b02 + a33 * b00;\n out[11] = a21 * b02 - a20 * b04 - a23 * b00;\n out[12] = a11 * b07 - a10 * b09 - a12 * b06;\n out[13] = a00 * b09 - a01 * b07 + a02 * b06;\n out[14] = a31 * b01 - a30 * b03 - a32 * b00;\n out[15] = a20 * b03 - a21 * b01 + a22 * b00;\n return result;\n}\n\nexport function mat4Transpose(m: Mat4, result = new Mat4()): Mat4 {\n const re = m.clone(result).elements;\n let tmp;\n\n // TODO: replace this with just reading from me and setting re, no need for a temporary\n tmp = re[1];\n re[1] = re[4];\n re[4] = tmp;\n tmp = re[2];\n re[2] = re[8];\n re[8] = tmp;\n tmp = re[6];\n re[6] = re[9];\n re[9] = tmp;\n\n tmp = re[3];\n re[3] = re[12];\n re[12] = tmp;\n tmp = re[7];\n re[7] = re[13];\n re[13] = tmp;\n tmp = re[11];\n re[11] = re[14];\n re[14] = tmp;\n\n return result;\n}\n\nexport function mat4Inverse(m: Mat4, result = new Mat4()): Mat4 {\n // based on http://www.euclideanspace.com/maths/algebra/matrix/functions/inverse/fourD/index.htm\n const me = m.elements,\n n11 = me[0],\n n21 = me[1],\n n31 = me[2],\n n41 = me[3],\n n12 = me[4],\n n22 = me[5],\n n32 = me[6],\n n42 = me[7],\n n13 = me[8],\n n23 = me[9],\n n33 = me[10],\n n43 = me[11],\n n14 = me[12],\n n24 = me[13],\n n34 = me[14],\n n44 = me[15],\n t11 =\n n23 * n34 * n42 -\n n24 * n33 * n42 +\n n24 * n32 * n43 -\n n22 * n34 * n43 -\n n23 * n32 * n44 +\n n22 * n33 * n44,\n t12 =\n n14 * n33 * n42 -\n n13 * n34 * n42 -\n n14 * n32 * n43 +\n n12 * n34 * n43 +\n n13 * n32 * n44 -\n n12 * n33 * n44,\n t13 =\n n13 * n24 * n42 -\n n14 * n23 * n42 +\n n14 * n22 * n43 -\n n12 * n24 * n43 -\n n13 * n22 * n44 +\n n12 * n23 * n44,\n t14 =\n n14 * n23 * n32 -\n n13 * n24 * n32 -\n n14 * n22 * n33 +\n n12 * n24 * n33 +\n n13 * n22 * n34 -\n n12 * n23 * n34;\n\n const det = n11 * t11 + n21 * t12 + n31 * t13 + n41 * t14;\n\n if (det === 0) {\n throw new Error('can not invert degenerate matrix');\n }\n\n const detInv = 1 / det;\n\n // TODO: replace with a set\n const re = result.elements;\n re[0] = t11 * detInv;\n re[1] =\n (n24 * n33 * n41 -\n n23 * n34 * n41 -\n n24 * n31 * n43 +\n n21 * n34 * n43 +\n n23 * n31 * n44 -\n n21 * n33 * n44) *\n detInv;\n re[2] =\n (n22 * n34 * n41 -\n n24 * n32 * n41 +\n n24 * n31 * n42 -\n n21 * n34 * n42 -\n n22 * n31 * n44 +\n n21 * n32 * n44) *\n detInv;\n re[3] =\n (n23 * n32 * n41 -\n n22 * n33 * n41 -\n n23 * n31 * n42 +\n n21 * n33 * n42 +\n n22 * n31 * n43 -\n n21 * n32 * n43) *\n detInv;\n\n re[4] = t12 * detInv;\n re[5] =\n (n13 * n34 * n41 -\n n14 * n33 * n41 +\n n14 * n31 * n43 -\n n11 * n34 * n43 -\n n13 * n31 * n44 +\n n11 * n33 * n44) *\n detInv;\n re[6] =\n (n14 * n32 * n41 -\n n12 * n34 * n41 -\n n14 * n31 * n42 +\n n11 * n34 * n42 +\n n12 * n31 * n44 -\n n11 * n32 * n44) *\n detInv;\n re[7] =\n (n12 * n33 * n41 -\n n13 * n32 * n41 +\n n13 * n31 * n42 -\n n11 * n33 * n42 -\n n12 * n31 * n43 +\n n11 * n32 * n43) *\n detInv;\n\n re[8] = t13 * detInv;\n re[9] =\n (n14 * n23 * n41 -\n n13 * n24 * n41 -\n n14 * n21 * n43 +\n n11 * n24 * n43 +\n n13 * n21 * n44 -\n n11 * n23 * n44) *\n detInv;\n re[10] =\n (n12 * n24 * n41 -\n n14 * n22 * n41 +\n n14 * n21 * n42 -\n n11 * n24 * n42 -\n n12 * n21 * n44 +\n n11 * n22 * n44) *\n detInv;\n re[11] =\n (n13 * n22 * n41 -\n n12 * n23 * n41 -\n n13 * n21 * n42 +\n n11 * n23 * n42 +\n n12 * n21 * n43 -\n n11 * n22 * n43) *\n detInv;\n\n re[12] = t14 * detInv;\n re[13] =\n (n13 * n24 * n31 -\n n14 * n23 * n31 +\n n14 * n21 * n33 -\n n11 * n24 * n33 -\n n13 * n21 * n34 +\n n11 * n23 * n34) *\n detInv;\n re[14] =\n (n14 * n22 * n31 -\n n12 * n24 * n31 -\n n14 * n21 * n32 +\n n11 * n24 * n32 +\n n12 * n21 * n34 -\n n11 * n22 * n34) *\n detInv;\n re[15] =\n (n12 * n23 * n31 -\n n13 * n22 * n31 +\n n13 * n21 * n32 -\n n11 * n23 * n32 -\n n12 * n21 * n33 +\n n11 * n22 * n33) *\n detInv;\n\n return result;\n}\n\nexport function mat4Mix(\n a: Mat4,\n b: Mat4,\n t: number,\n result = new Mat4()\n): Mat4 {\n const s = 1 - t;\n for (let i = 0; i < NUM_ELEMENTS; i++) {\n result.elements[i] = a.elements[i]! * s + b.elements[i]! * t;\n }\n return result;\n}\n\nexport function mat4FromArray(\n array: Float32Array | number[],\n offset = 0,\n result: Mat4 = new Mat4()\n): Mat4 {\n for (let i = 0; i < NUM_ELEMENTS; i++) {\n result.elements[i] = array[offset + i]!;\n }\n return result;\n}\n\nexport function mat4ToArray(\n a: Mat4,\n array: Float32Array | number[],\n offset = 0\n): void {\n for (let i = 0; i < NUM_ELEMENTS; i++) {\n array[offset + i] = a.elements[i]!;\n }\n}\n\nexport function mat4ToString(a: Mat4): string {\n return toSafeString(a.elements);\n}\n\nexport function mat4Parse(text: string, result = new Mat4()): Mat4 {\n return mat4FromArray(parseSafeFloats(text), 0, result);\n}\n\nexport function mat3ToMat4(a: Mat3, result = new Mat4()): Mat4 {\n const ae = a.elements;\n return result.set([\n ae[0],\n ae[1],\n ae[2],\n 0,\n ae[3],\n ae[4],\n ae[5],\n 0,\n ae[6],\n ae[7],\n ae[8],\n 0,\n 0,\n 0,\n 0,\n 1\n ]);\n}\n\nexport function eulerToMat4(e: Vec3, result = new Mat4()): Mat4 {\n return mat3ToMat4(eulerToMat3(e), result);\n}\n\nexport function quatToMat4(q: Vec4, result = new Mat4()): Mat4 {\n return mat3ToMat4(quatToMat3(q), result);\n}\n\nexport function scale3ToMat4(s: Vec3, result = new Mat4()): Mat4 {\n return result.set([s.x, 0, 0, 0, 0, s.y, 0, 0, 0, 0, s.z, 0, 0, 0, 0, 1]);\n}\n// from gl-matrix\nexport function mat4ToScale3(m: Mat4, result = new Vec3()): Vec3 {\n const mat = m.elements;\n const m11 = mat[0];\n const m12 = mat[1];\n const m13 = mat[2];\n const m21 = mat[4];\n const m22 = mat[5];\n const m23 = mat[6];\n const m31 = mat[8];\n const m32 = mat[9];\n const m33 = mat[10];\n\n return result.set(\n Math.sqrt(m11 * m11 + m12 * m12 + m13 * m13),\n Math.sqrt(m21 * m21 + m22 * m22 + m23 * m23),\n Math.sqrt(m31 * m31 + m32 * m32 + m33 * m33)\n );\n}\n\nexport function translation3ToMat4(t: Vec3, result = new Mat4()): Mat4 {\n return result.set([1, 0, 0, t.x, 0, 1, 0, t.y, 0, 0, 1, t.z, 0, 0, 0, 1]);\n}\nexport function mat4ToTranslation3(m: Mat4, result = new Vec3()): Vec3 {\n const me = m.elements;\n return result.set(me[3], me[7], me[11]);\n}\nexport function mat4Translate(m: Mat4, t: Vec3, result = new Mat4()): Mat4 {\n return mat4Multiply(m, translation3ToMat4(t), result);\n}\nexport function mat4Scale(m: Mat4, s: Vec3, result = new Mat4()): Mat4 {\n return mat4Multiply(m, scale3ToMat4(s), result);\n}\nexport function mat4RotateByQuat(m: Mat4, q: Vec4, result = new Mat4()): Mat4 {\n return mat4Multiply(m, quatToMat4(q), result);\n}\nexport function mat4RotateByEuler(m: Mat4, e: Vec3, result = new Mat4()): Mat4 {\n return mat4Multiply(m, eulerToMat4(e), result);\n}\n\nexport function mat4TransformPoint3(\n m: Mat4,\n v: Vec4,\n result = new Vec3()\n): Vec3 {\n const x = v.x,\n y = v.y,\n z = v.z;\n const e = m.elements;\n\n const w = 1 / (e[3] * x + e[7] * y + e[11] * z + e[15]);\n\n result.x = (e[0] * x + e[4] * y + e[8] * z + e[12]) * w;\n result.y = (e[1] * x + e[5] * y + e[9] * z + e[13]) * w;\n result.z = (e[2] * x + e[6] * y + e[10] * z + e[14]) * w;\n\n return result;\n}\n\nexport function mat4TransformNormal3(\n v: Vec3,\n m: Mat4,\n result = new Vec3()\n): Vec3 {\n const x = v.x,\n y = v.y,\n z = v.z;\n const e = m.elements;\n\n result.x = e[0] * x + e[4] * y + e[8] * z;\n result.y = e[1] * x + e[5] * y + e[9] * z;\n result.z = e[2] * x + e[6] * y + e[10] * z;\n\n return vec3Normalize(result, result);\n}\n\nexport function mat4Perspective(\n left: number,\n right: number,\n top: number,\n bottom: number,\n near: number,\n far: number,\n result = new Mat4()\n): Mat4 {\n const x = (2 * near) / (right - left);\n const y = (2 * near) / (top - bottom);\n\n const a = (right + left) / (right - left);\n const b = (top + bottom) / (top - bottom);\n const c = -(far + near) / (far - near);\n const d = (-2 * far * near) / (far - near);\n\n return result.set([x, 0, a, 0, 0, y, b, 0, 0, 0, c, d, 0, 0, -1, 0]);\n}\n\nexport function mat4PerspectiveFov(\n verticalFov: number,\n near: number,\n far: number,\n zoom: number,\n aspectRatio: number,\n result = new Mat4()\n): Mat4 {\n const height = (2 * near * Math.tan((verticalFov * Math.PI) / 180)) / zoom;\n const width = height * aspectRatio;\n\n // NOTE: OpenGL screen coordinates are -bottomt to +top, -left to +right.\n\n const right = width * 0.5;\n const left = right - width;\n\n const top = height * 0.5;\n const bottom = top - height;\n\n return mat4Perspective(left, right, top, bottom, near, far, result);\n}\n\n// TODO: Replace with a Box3?\nexport function mat4Orthogonal(\n left: number,\n right: number,\n top: number,\n bottom: number,\n near: number,\n far: number,\n result = new Mat4()\n): Mat4 {\n const w = 1 / (right - left);\n const h = 1 / (top - bottom);\n const p = 1 / (far - near);\n\n const x = (right + left) * w;\n const y = (top + bottom) * h;\n const z = (far + near) * p;\n\n return result.set([\n 2 * w,\n 0,\n 0,\n -x,\n 0,\n 2 * h,\n 0,\n -y,\n 0,\n 0,\n -2 * p,\n -z,\n 0,\n 0,\n 0,\n 1\n ]);\n}\n\nexport function mat4OrthogonalSimple(\n height: number,\n center: Vec2,\n near: number,\n far: number,\n zoom: number,\n aspectRatio = 1,\n result = new Mat4()\n): Mat4 {\n height /= zoom;\n const width = height * aspectRatio;\n\n const left = -width * 0.5 + center.x;\n const right = left + width;\n\n const top = -height * 0.5 + center.y;\n const bottom = top + height;\n\n return mat4Orthogonal(left, right, top, bottom, near, far, result);\n}\n\nexport function mat4LookAt(\n eye: Vec3,\n target: Vec3,\n up: Vec3,\n result = new Mat4()\n): Mat4 {\n const te = result.elements;\n\n const look = vec3Subtract(eye, target);\n\n const lookLength = vec3Length(look);\n if (lookLength === 0) {\n look.z = 1;\n } else {\n vec3MultiplyByScalar(look, 1 / lookLength, look);\n }\n\n const right = vec3Cross(up, look);\n\n const rightLength = vec3Length(right);\n if (rightLength === 0) {\n // up and z are parallel\n\n if (Math.abs(up.z) === 1) {\n up.x += 0.0001;\n } else {\n up.z += 0.0001;\n }\n\n vec3Normalize(up, up);\n vec3Cross(right, up, right);\n } else {\n vec3MultiplyByScalar(right, 1 / rightLength, right);\n }\n\n const up2 = vec3Cross(look, right);\n\n te[0] = right.x;\n te[4] = up2.x;\n te[8] = look.x;\n te[1] = right.y;\n te[5] = up2.y;\n te[9] = look.y;\n te[2] = right.z;\n te[6] = up2.z;\n te[10] = look.z;\n\n return result;\n}\n"],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Vec3.d.ts","names":[],"sources":["../../../src/Values/Internal/Vec3.ts"],"sourcesContent":[],"mappings":";;;;;
|
|
1
|
+
{"version":3,"file":"Vec3.d.ts","names":[],"sources":["../../../src/Values/Internal/Vec3.ts"],"sourcesContent":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Vec3.js","names":["p","q"],"sources":["../../../src/Values/Internal/Vec3.ts"],"sourcesContent":["import {\n clamp,\n EPSILON,\n equalsTolerance,\n parseSafeFloats,\n toSafeString\n} from '@kiberon-labs/behave-graph';\n\nimport { Mat3, mat4ToMat3, quatToMat3 } from './Mat3.js';\nimport { Mat4 } from './Mat4.js';\nimport { Vec4 } from './Vec4.js';\n\nexport type Vec3JSON = number[];\n\nexport class Vec3 {\n public x: number;\n public y: number;\n public z: number;\n constructor(x: number = 0, y: number = 0, z: number = 0) {\n this.x = x;\n this.y = y;\n this.z = z;\n }\n\n clone(result = new Vec3()): Vec3 {\n return result.set(this.x, this.y, this.z);\n }\n\n set(x: number, y: number, z: number): this {\n this.x = x;\n this.y = y;\n this.z = z;\n return this;\n }\n}\n\nexport function vec3Equals(\n a: Vec3,\n b: Vec3,\n tolerance: number = EPSILON\n): boolean {\n return (\n equalsTolerance(a.x, b.x, tolerance) &&\n equalsTolerance(a.y, b.y, tolerance) &&\n equalsTolerance(a.z, b.z, tolerance)\n );\n}\nexport function vec3Add(a: Vec3, b: Vec3, result = new Vec3()): Vec3 {\n return result.set(a.x + b.x, a.y + b.y, a.z + b.z);\n}\nexport function vec3Subtract(a: Vec3, b: Vec3, result = new Vec3()): Vec3 {\n return result.set(a.x - b.x, a.y - b.y, a.z - b.z);\n}\nexport function vec3MultiplyByScalar(\n a: Vec3,\n b: number,\n result = new Vec3()\n): Vec3 {\n return result.set(a.x * b, a.y * b, a.z * b);\n}\nexport function vec3Negate(a: Vec3, result = new Vec3()): Vec3 {\n return result.set(-a.x, -a.y, -a.z);\n}\nexport function vec3Length(a: Vec3): number {\n return Math.sqrt(vec3Dot(a, a));\n}\nexport function vec3Normalize(a: Vec3, result = new Vec3()): Vec3 {\n const invLength = 1 / vec3Length(a);\n return vec3MultiplyByScalar(a, invLength, result);\n}\nexport function vec3Dot(a: Vec3, b: Vec3): number {\n return a.x * b.x + a.y * b.y + a.z * b.z;\n}\nexport function vec3Cross(a: Vec3, b: Vec3, result = new Vec3()): Vec3 {\n const ax = a.x;\n const ay = a.y;\n const az = a.z;\n const bx = b.x;\n const by = b.y;\n const bz = b.z;\n\n return result.set(ay * bz - az * by, az * bx - ax * bz, ax * by - ay * bx);\n}\nexport function vec3Mix(\n a: Vec3,\n b: Vec3,\n t: number,\n result = new Vec3()\n): Vec3 {\n const s = 1 - t;\n return result.set(a.x * s + b.x * t, a.y * s + b.y * t, a.z * s + b.z * t);\n}\nexport function vec3FromArray(\n array: Float32Array | number[],\n offset = 0,\n result = new Vec3()\n): Vec3 {\n return result.set(array[offset + 0]!, array[offset + 1]!, array[offset + 2]!);\n}\nexport function vec3ToArray(\n a: Vec3,\n array: Float32Array | number[],\n offset = 0\n): void {\n array[offset + 0] = a.x;\n array[offset + 1] = a.y;\n array[offset + 2] = a.z;\n}\nexport function vec3ToString(a: Vec3): string {\n return toSafeString([a.x, a.y, a.z]);\n}\nexport function vec3Parse(text: string, result = new Vec3()): Vec3 {\n return vec3FromArray(parseSafeFloats(text), 0, result);\n}\n\nexport function hslToRGB(hsl: Vec3, result = new Vec3()): Vec3 {\n function hue2rgb(p: number, q: number, t: number): number {\n if (t < 0) {\n t += 1;\n }\n if (t > 1) {\n t -= 1;\n }\n if (t < 1 / 6) {\n return p + (q - p) * 6 * t;\n }\n if (t < 1 / 2) {\n return q;\n }\n if (t < 2 / 3) {\n return p + (q - p) * 6 * (2 / 3 - t);\n }\n\n return p;\n }\n\n // h,s,l ranges are in 0.0 - 1.0\n const h = ((hsl.x % 1) + 1) % 1; // euclidean modulo\n const s = Math.min(Math.max(hsl.y, 0), 1);\n const l = Math.min(Math.max(hsl.z, 0), 1);\n\n if (s === 0) {\n return result.set(1, 1, 1);\n }\n\n const p = l <= 0.5 ? l * (1 + s) : l + s - l * s;\n const q = 2 * l - p;\n\n return result.set(\n hue2rgb(q, p, h + 1 / 3),\n hue2rgb(q, p, h),\n hue2rgb(q, p, h - 1 / 3)\n );\n}\n\nexport function rgbToHSL(rgb: Vec3, result = new Vec3()): Vec3 {\n // h,s,l ranges are in 0.0 - 1.0\n const r = rgb.x,\n g = rgb.y,\n b = rgb.z;\n\n const max = Math.max(r, g, b);\n const min = Math.min(r, g, b);\n\n let hue = 0;\n let saturation = 0;\n const lightness = (min + max) / 2;\n\n if (min === max) {\n hue = 0;\n saturation = 0;\n } else {\n const delta = max - min;\n\n saturation =\n lightness <= 0.5 ? delta / (max + min) : delta / (2 - max - min);\n\n switch (max) {\n case r:\n hue = (g - b) / delta + (g < b ? 6 : 0);\n break;\n case g:\n hue = (b - r) / delta + 2;\n break;\n case b:\n hue = (r - g) / delta + 4;\n break;\n }\n\n hue /= 6;\n }\n\n return result.set(hue, saturation, lightness);\n}\n\nexport function hexToRGB(hex: number, result = new Vec3()): Vec3 {\n hex = Math.floor(hex);\n return result.set(\n ((hex >> 16) & 255) / 255,\n ((hex >> 8) & 255) / 255,\n (hex & 255) / 255\n );\n}\n\nexport function rgbToHex(rgb: Vec3): number {\n return ((rgb.x * 255) << 16) ^ ((rgb.y * 255) << 8) ^ ((rgb.z * 255) << 0);\n}\n\n// from three.js\nexport function mat3ToEuler(m: Mat3, result = new Vec3()): Vec3 {\n // assumes the upper 3x3 of m is a pure rotation matrix (i.e, unscaled)\n\n const te = m.elements;\n const m11 = te[0],\n m12 = te[3],\n m13 = te[6];\n const m21 = te[1],\n m22 = te[4],\n m23 = te[7];\n const m31 = te[2],\n m32 = te[5],\n m33 = te[8];\n\n result.y = Math.asin(clamp(m13, -1, 1));\n\n if (Math.abs(m13) < 0.9999999) {\n result.x = Math.atan2(-m23, m33);\n result.z = Math.atan2(-m12, m11);\n } else {\n result.x = Math.atan2(m32, m22);\n result.z = 0;\n }\n\n return result;\n}\n\n// from three.js\nexport function mat4ToEuler(m: Mat4, result = new Vec3()): Vec3 {\n return mat3ToEuler(mat4ToMat3(m), result);\n}\n\nexport function quatToEuler(q: Vec4, result = new Vec3()): Vec3 {\n return mat3ToEuler(quatToMat3(q), result);\n}\n"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"Vec3.js","names":["p","q"],"sources":["../../../src/Values/Internal/Vec3.ts"],"sourcesContent":["import {\n clamp,\n EPSILON,\n equalsTolerance,\n parseSafeFloats,\n toSafeString\n} from '@kiberon-labs/behave-graph';\n\nimport type { Mat3 } from './Mat3.js';\nimport { mat4ToMat3, quatToMat3 } from './Mat3.js';\nimport type { Mat4 } from './Mat4.js';\nimport type { Vec4 } from './Vec4.js';\n\nexport type Vec3JSON = [number, number, number];\n\nexport class Vec3 {\n public x: number;\n public y: number;\n public z: number;\n constructor(x: number = 0, y: number = 0, z: number = 0) {\n this.x = x;\n this.y = y;\n this.z = z;\n }\n\n clone(result = new Vec3()): Vec3 {\n return result.set(this.x, this.y, this.z);\n }\n\n set(x: number, y: number, z: number): this {\n this.x = x;\n this.y = y;\n this.z = z;\n return this;\n }\n}\n\nexport function vec3Equals(\n a: Vec3,\n b: Vec3,\n tolerance: number = EPSILON\n): boolean {\n return (\n equalsTolerance(a.x, b.x, tolerance) &&\n equalsTolerance(a.y, b.y, tolerance) &&\n equalsTolerance(a.z, b.z, tolerance)\n );\n}\nexport function vec3Add(a: Vec3, b: Vec3, result = new Vec3()): Vec3 {\n return result.set(a.x + b.x, a.y + b.y, a.z + b.z);\n}\nexport function vec3Subtract(a: Vec3, b: Vec3, result = new Vec3()): Vec3 {\n return result.set(a.x - b.x, a.y - b.y, a.z - b.z);\n}\nexport function vec3MultiplyByScalar(\n a: Vec3,\n b: number,\n result = new Vec3()\n): Vec3 {\n return result.set(a.x * b, a.y * b, a.z * b);\n}\nexport function vec3Negate(a: Vec3, result = new Vec3()): Vec3 {\n return result.set(-a.x, -a.y, -a.z);\n}\nexport function vec3Length(a: Vec3): number {\n return Math.sqrt(vec3Dot(a, a));\n}\nexport function vec3Normalize(a: Vec3, result = new Vec3()): Vec3 {\n const invLength = 1 / vec3Length(a);\n return vec3MultiplyByScalar(a, invLength, result);\n}\nexport function vec3Dot(a: Vec3, b: Vec3): number {\n return a.x * b.x + a.y * b.y + a.z * b.z;\n}\nexport function vec3Cross(a: Vec3, b: Vec3, result = new Vec3()): Vec3 {\n const ax = a.x;\n const ay = a.y;\n const az = a.z;\n const bx = b.x;\n const by = b.y;\n const bz = b.z;\n\n return result.set(ay * bz - az * by, az * bx - ax * bz, ax * by - ay * bx);\n}\nexport function vec3Mix(\n a: Vec3,\n b: Vec3,\n t: number,\n result = new Vec3()\n): Vec3 {\n const s = 1 - t;\n return result.set(a.x * s + b.x * t, a.y * s + b.y * t, a.z * s + b.z * t);\n}\nexport function vec3FromArray(\n array: Float32Array | number[],\n offset = 0,\n result = new Vec3()\n): Vec3 {\n return result.set(array[offset + 0]!, array[offset + 1]!, array[offset + 2]!);\n}\nexport function vec3ToArray(\n a: Vec3,\n array: Float32Array | number[],\n offset = 0\n): void {\n array[offset + 0] = a.x;\n array[offset + 1] = a.y;\n array[offset + 2] = a.z;\n}\nexport function vec3ToString(a: Vec3): string {\n return toSafeString([a.x, a.y, a.z]);\n}\nexport function vec3Parse(text: string, result = new Vec3()): Vec3 {\n return vec3FromArray(parseSafeFloats(text), 0, result);\n}\n\nexport function hslToRGB(hsl: Vec3, result = new Vec3()): Vec3 {\n function hue2rgb(p: number, q: number, t: number): number {\n if (t < 0) {\n t += 1;\n }\n if (t > 1) {\n t -= 1;\n }\n if (t < 1 / 6) {\n return p + (q - p) * 6 * t;\n }\n if (t < 1 / 2) {\n return q;\n }\n if (t < 2 / 3) {\n return p + (q - p) * 6 * (2 / 3 - t);\n }\n\n return p;\n }\n\n // h,s,l ranges are in 0.0 - 1.0\n const h = ((hsl.x % 1) + 1) % 1; // euclidean modulo\n const s = Math.min(Math.max(hsl.y, 0), 1);\n const l = Math.min(Math.max(hsl.z, 0), 1);\n\n if (s === 0) {\n return result.set(1, 1, 1);\n }\n\n const p = l <= 0.5 ? l * (1 + s) : l + s - l * s;\n const q = 2 * l - p;\n\n return result.set(\n hue2rgb(q, p, h + 1 / 3),\n hue2rgb(q, p, h),\n hue2rgb(q, p, h - 1 / 3)\n );\n}\n\nexport function rgbToHSL(rgb: Vec3, result = new Vec3()): Vec3 {\n // h,s,l ranges are in 0.0 - 1.0\n const r = rgb.x,\n g = rgb.y,\n b = rgb.z;\n\n const max = Math.max(r, g, b);\n const min = Math.min(r, g, b);\n\n let hue = 0;\n let saturation = 0;\n const lightness = (min + max) / 2;\n\n if (min === max) {\n hue = 0;\n saturation = 0;\n } else {\n const delta = max - min;\n\n saturation =\n lightness <= 0.5 ? delta / (max + min) : delta / (2 - max - min);\n\n switch (max) {\n case r:\n hue = (g - b) / delta + (g < b ? 6 : 0);\n break;\n case g:\n hue = (b - r) / delta + 2;\n break;\n case b:\n hue = (r - g) / delta + 4;\n break;\n }\n\n hue /= 6;\n }\n\n return result.set(hue, saturation, lightness);\n}\n\nexport function hexToRGB(hex: number, result = new Vec3()): Vec3 {\n hex = Math.floor(hex);\n return result.set(\n ((hex >> 16) & 255) / 255,\n ((hex >> 8) & 255) / 255,\n (hex & 255) / 255\n );\n}\n\nexport function rgbToHex(rgb: Vec3): number {\n return ((rgb.x * 255) << 16) ^ ((rgb.y * 255) << 8) ^ ((rgb.z * 255) << 0);\n}\n\n// from three.js\nexport function mat3ToEuler(m: Mat3, result = new Vec3()): Vec3 {\n // assumes the upper 3x3 of m is a pure rotation matrix (i.e, unscaled)\n\n const te = m.elements;\n const m11 = te[0],\n m12 = te[3],\n m13 = te[6];\n const m21 = te[1],\n m22 = te[4],\n m23 = te[7];\n const m31 = te[2],\n m32 = te[5],\n m33 = te[8];\n\n result.y = Math.asin(clamp(m13, -1, 1));\n\n if (Math.abs(m13) < 0.9999999) {\n result.x = Math.atan2(-m23, m33);\n result.z = Math.atan2(-m12, m11);\n } else {\n result.x = Math.atan2(m32, m22);\n result.z = 0;\n }\n\n return result;\n}\n\n// from three.js\nexport function mat4ToEuler(m: Mat4, result = new Vec3()): Vec3 {\n return mat3ToEuler(mat4ToMat3(m), result);\n}\n\nexport function quatToEuler(q: Vec4, result = new Vec3()): Vec3 {\n return mat3ToEuler(quatToMat3(q), result);\n}\n"],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Vec4.d.ts","names":[],"sources":["../../../src/Values/Internal/Vec4.ts"],"sourcesContent":[],"mappings":";;;;;
|
|
1
|
+
{"version":3,"file":"Vec4.d.ts","names":[],"sources":["../../../src/Values/Internal/Vec4.ts"],"sourcesContent":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Vec4.js","names":["s"],"sources":["../../../src/Values/Internal/Vec4.ts"],"sourcesContent":["import {\n EPSILON,\n equalsTolerance,\n parseSafeFloats,\n toSafeString\n} from '@kiberon-labs/behave-graph';\n\nimport { Mat3, mat4ToMat3 } from './Mat3.js';\nimport { Mat4 } from './Mat4.js';\nimport { Vec3 } from './Vec3.js';\n\nexport type Vec4JSON = number[];\n\nexport class Vec4 {\n public x: number;\n public y: number;\n public z: number;\n public w: number;\n constructor(x: number = 0, y: number = 0, z: number = 0, w: number = 0) {\n this.x = x;\n this.y = y;\n this.z = z;\n this.w = w;\n }\n clone(result = new Vec4()): Vec4 {\n return result.set(this.x, this.y, this.z, this.w);\n }\n set(x: number, y: number, z: number, w: number): this {\n this.x = x;\n this.y = y;\n this.z = z;\n this.w = w;\n return this;\n }\n}\nexport function vec4Equals(\n a: Vec4,\n b: Vec4,\n tolerance: number = EPSILON\n): boolean {\n return (\n equalsTolerance(a.x, b.x, tolerance) &&\n equalsTolerance(a.y, b.y, tolerance) &&\n equalsTolerance(a.z, b.z, tolerance) &&\n equalsTolerance(a.w, b.w, tolerance)\n );\n}\nexport function vec4Add(a: Vec4, b: Vec4, result = new Vec4()): Vec4 {\n return result.set(a.x + b.x, a.y + b.y, a.z + b.z, a.w + b.w);\n}\nexport function vec4Subtract(a: Vec4, b: Vec4, result = new Vec4()): Vec4 {\n return result.set(a.x - b.x, a.y - b.y, a.z - b.z, a.w - b.w);\n}\nexport function vec4MultiplyByScalar(\n a: Vec4,\n b: number,\n result = new Vec4()\n): Vec4 {\n return result.set(a.x * b, a.y * b, a.z * b, a.w * b);\n}\nexport function vec4Negate(a: Vec4, result = new Vec4()): Vec4 {\n return result.set(-a.x, -a.y, -a.z, -a.w);\n}\nexport function vec4Length(a: Vec4): number {\n return Math.sqrt(vec4Dot(a, a));\n}\nexport function vec4Normalize(a: Vec4, result = new Vec4()): Vec4 {\n const invLength = 1 / vec4Length(a);\n return vec4MultiplyByScalar(a, invLength, result);\n}\nexport function vec4Dot(a: Vec4, b: Vec4): number {\n return a.x * b.x + a.y * b.y + a.z * b.z + a.w * b.w;\n}\nexport function vec4Mix(\n a: Vec4,\n b: Vec4,\n t: number,\n result = new Vec4()\n): Vec4 {\n const s = 1 - t;\n return result.set(\n a.x * s + b.x * t,\n a.y * s + b.y * t,\n a.z * s + b.z * t,\n a.w * s + b.w * t\n );\n}\nexport function vec4FromArray(\n array: Float32Array | number[],\n offset = 0,\n result = new Vec4()\n): Vec4 {\n return result.set(\n array[offset + 0]!,\n array[offset + 1]!,\n array[offset + 2]!,\n array[offset + 3]!\n );\n}\nexport function vec4ToArray(\n a: Vec4,\n array: Float32Array | number[],\n offset = 0\n): void {\n array[offset + 0] = a.x;\n array[offset + 1] = a.y;\n array[offset + 2] = a.z;\n array[offset + 3] = a.w;\n}\nexport function vec4ToString(a: Vec4): string {\n return toSafeString([a.x, a.y, a.z, a.w]);\n}\nexport function vec4Parse(text: string, result = new Vec4()): Vec4 {\n return vec4FromArray(parseSafeFloats(text), 0, result);\n}\nexport function quatConjugate(a: Vec4, result = new Vec4()): Vec4 {\n return result.set(-a.x, -a.y, -a.z, a.w);\n}\nexport function quatMultiply(a: Vec4, b: Vec4, result = new Vec4()): Vec4 {\n // from http://www.euclideanspace.com/maths/algebra/realNormedAlgebra/quaternions/code/index.htm\n\n const qax = a.x;\n const qay = a.y;\n const qaz = a.z;\n const qaw = a.w;\n const qbx = b.x;\n const qby = b.y;\n const qbz = b.z;\n const qbw = b.w;\n\n return result.set(\n qax * qbw + qaw * qbx + qay * qbz - qaz * qby,\n qay * qbw + qaw * qby + qaz * qbx - qax * qbz,\n qaz * qbw + qaw * qbz + qax * qby - qay * qbx,\n qaw * qbw - qax * qbx - qay * qby - qaz * qbz\n );\n}\n\nexport function quatSlerp(\n a: Vec4,\n b: Vec4,\n t: number,\n result = new Vec4()\n): Vec4 {\n if (t <= 0) return a.clone(result);\n if (t >= 1) return b.clone(result);\n\n // http://www.euclideanspace.com/maths/algebra/realNormedAlgebra/quaternions/slerp/\n\n let cosHalfTheta = vec4Dot(a, b);\n\n if (cosHalfTheta < 0) {\n vec4Negate(b, result);\n\n cosHalfTheta = -cosHalfTheta;\n } else {\n b.clone(result);\n }\n\n if (cosHalfTheta >= 1) {\n return result;\n }\n\n const sqrSinHalfTheta = 1 - cosHalfTheta * cosHalfTheta;\n\n if (sqrSinHalfTheta <= Number.EPSILON) {\n vec4Mix(a, result, t);\n vec4Normalize(result, result);\n\n return result;\n }\n\n const sinHalfTheta = Math.sqrt(sqrSinHalfTheta);\n const halfTheta = Math.atan2(sinHalfTheta, cosHalfTheta);\n const ratioA = Math.sin((1 - t) * halfTheta) / sinHalfTheta;\n const ratioB = Math.sin(t * halfTheta) / sinHalfTheta;\n\n result.w = a.w * ratioA + result.w * ratioB;\n result.x = a.x * ratioA + result.x * ratioB;\n result.y = a.y * ratioA + result.y * ratioB;\n result.z = a.z * ratioA + result.z * ratioB;\n\n return result;\n}\n\n/**\n * Calculate the exponential of a unit quaternion.\n *\n * @param {quat} out the receiving quaternion\n * @param {ReadonlyQuat} a quat to calculate the exponential of\n * @returns {quat} out\n */\nexport function quatExp(a: Vec4, result = new Vec4()): Vec4 {\n const x = a.x,\n y = a.y,\n z = a.z,\n w = a.w;\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 return result.set(x * s, y * s, z * s, et * Math.cos(r));\n}\n\n// from gl-matrix\nexport function quatLn(a: Vec4, result = new Vec4()): Vec4 {\n const x = a.x,\n y = a.y,\n z = a.z,\n w = a.w;\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 return result.set(\n x * t,\n y * t,\n z * t,\n 0.5 * Math.log(x * x + y * y + z * z + w * w)\n );\n}\n\n// from gl-matrix\nexport function quatPow(a: Vec4, b: number, result = new Vec4()): Vec4 {\n const ln = quatLn(a);\n const lnScaled = vec4MultiplyByScalar(ln, b);\n quatExp(lnScaled, result);\n return result;\n}\n\nexport function eulerToQuat(euler: Vec3, result: Vec4 = new Vec4()): Vec4 {\n // eslint-disable-next-line max-len\n // http://www.mathworks.com/matlabcentral/fileexchange/20696-function-to-convert-between-dcm-euler-angles-quaternions-and-euler-vectors/content/SpinCalc.m\n\n const c1 = Math.cos(euler.x / 2);\n const c2 = Math.cos(euler.y / 2);\n const c3 = Math.cos(euler.z / 2);\n\n const s1 = Math.sin(euler.x / 2);\n const s2 = Math.sin(euler.y / 2);\n const s3 = Math.sin(euler.z / 2);\n\n // XYZ order only\n return result.set(\n s1 * c2 * c3 + c1 * s2 * s3,\n c1 * s2 * c3 - s1 * c2 * s3,\n c1 * c2 * s3 + s1 * s2 * c3,\n c1 * c2 * c3 - s1 * s2 * s3\n );\n}\n\nexport function angleAxisToQuat(\n angle: number,\n axis: Vec3,\n result = new Vec4()\n): Vec4 {\n // http://www.euclideanspace.com/maths/geometry/rotations/conversions/angleToQuaternion/index.htm\n\n // assumes axis is normalized\n\n const halfAngle = angle / 2;\n const s = Math.sin(halfAngle);\n\n return result.set(axis.x * s, axis.y * s, axis.z * s, Math.cos(halfAngle));\n}\n\n// from gl-matrix\nexport function quatToAngleAxis(\n q: Vec4,\n result = new Vec3()\n): [angle: number, axis: Vec3] {\n const rad = Math.acos(q.w) * 2;\n const s = Math.sin(rad / 2);\n if (s > EPSILON) {\n result.x = q.x / s;\n result.y = q.y / s;\n result.z = q.z / s;\n } else {\n // If s is zero, return any axis (no rotation - axis does not matter)\n result.x = 1;\n result.y = 0;\n result.z = 0;\n }\n return [rad, result];\n}\n\nexport function mat4ToQuat(m: Mat4, result = new Vec4()): Vec4 {\n return mat3ToQuat(mat4ToMat3(m), result);\n}\n\nexport function mat3ToQuat(m: Mat3, result = new Vec4()): Vec4 {\n // http://www.euclideanspace.com/maths/geometry/rotations/conversions/matrixToQuaternion/index.htm\n\n // assumes the upper 3x3 of m is a pure rotation matrix (i.e, unscaled)\n\n // TODO, allocate x, y, z, w and only set q.* at the end.\n\n const te = m.elements,\n m11 = te[0],\n m12 = te[3],\n m13 = te[6],\n m21 = te[1],\n m22 = te[4],\n m23 = te[7],\n m31 = te[2],\n m32 = te[5],\n m33 = te[8],\n trace = m11 + m22 + m33;\n\n if (trace > 0) {\n const s = 0.5 / Math.sqrt(trace + 1);\n\n return result.set(\n (m32 - m23) * s,\n (m13 - m31) * s,\n (m21 - m12) * s,\n 0.25 / s\n );\n }\n if (m11 > m22 && m11 > m33) {\n const s = 2 * Math.sqrt(1 + m11 - m22 - m33);\n\n return result.set(\n 0.25 * s,\n (m12 + m21) / s,\n (m13 + m31) / s,\n (m32 - m23) / s\n );\n }\n if (m22 > m33) {\n const s = 2 * Math.sqrt(1 + m22 - m11 - m33);\n\n return result.set(\n (m12 + m21) / s,\n 0.25 * s,\n (m23 + m32) / s,\n (m13 - m31) / s\n );\n }\n\n const s = 2 * Math.sqrt(1 + m33 - m11 - m22);\n\n return result.set(\n (m13 + m31) / s,\n (m23 + m32) / s,\n 0.25 * s,\n (m21 - m12) / s\n );\n}\n"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"Vec4.js","names":["s"],"sources":["../../../src/Values/Internal/Vec4.ts"],"sourcesContent":["import {\n EPSILON,\n equalsTolerance,\n parseSafeFloats,\n toSafeString\n} from '@kiberon-labs/behave-graph';\n\nimport type { Mat3 } from './Mat3.js';\nimport { mat4ToMat3 } from './Mat3.js';\nimport type { Mat4 } from './Mat4.js';\nimport { Vec3 } from './Vec3.js';\n\nexport type Vec4JSON = number[];\n\nexport class Vec4 {\n public x: number;\n public y: number;\n public z: number;\n public w: number;\n constructor(x: number = 0, y: number = 0, z: number = 0, w: number = 0) {\n this.x = x;\n this.y = y;\n this.z = z;\n this.w = w;\n }\n clone(result = new Vec4()): Vec4 {\n return result.set(this.x, this.y, this.z, this.w);\n }\n set(x: number, y: number, z: number, w: number): this {\n this.x = x;\n this.y = y;\n this.z = z;\n this.w = w;\n return this;\n }\n}\nexport function vec4Equals(\n a: Vec4,\n b: Vec4,\n tolerance: number = EPSILON\n): boolean {\n return (\n equalsTolerance(a.x, b.x, tolerance) &&\n equalsTolerance(a.y, b.y, tolerance) &&\n equalsTolerance(a.z, b.z, tolerance) &&\n equalsTolerance(a.w, b.w, tolerance)\n );\n}\nexport function vec4Add(a: Vec4, b: Vec4, result = new Vec4()): Vec4 {\n return result.set(a.x + b.x, a.y + b.y, a.z + b.z, a.w + b.w);\n}\nexport function vec4Subtract(a: Vec4, b: Vec4, result = new Vec4()): Vec4 {\n return result.set(a.x - b.x, a.y - b.y, a.z - b.z, a.w - b.w);\n}\nexport function vec4MultiplyByScalar(\n a: Vec4,\n b: number,\n result = new Vec4()\n): Vec4 {\n return result.set(a.x * b, a.y * b, a.z * b, a.w * b);\n}\nexport function vec4Negate(a: Vec4, result = new Vec4()): Vec4 {\n return result.set(-a.x, -a.y, -a.z, -a.w);\n}\nexport function vec4Length(a: Vec4): number {\n return Math.sqrt(vec4Dot(a, a));\n}\nexport function vec4Normalize(a: Vec4, result = new Vec4()): Vec4 {\n const invLength = 1 / vec4Length(a);\n return vec4MultiplyByScalar(a, invLength, result);\n}\nexport function vec4Dot(a: Vec4, b: Vec4): number {\n return a.x * b.x + a.y * b.y + a.z * b.z + a.w * b.w;\n}\nexport function vec4Mix(\n a: Vec4,\n b: Vec4,\n t: number,\n result = new Vec4()\n): Vec4 {\n const s = 1 - t;\n return result.set(\n a.x * s + b.x * t,\n a.y * s + b.y * t,\n a.z * s + b.z * t,\n a.w * s + b.w * t\n );\n}\nexport function vec4FromArray(\n array: Float32Array | number[],\n offset = 0,\n result = new Vec4()\n): Vec4 {\n return result.set(\n array[offset + 0]!,\n array[offset + 1]!,\n array[offset + 2]!,\n array[offset + 3]!\n );\n}\nexport function vec4ToArray(\n a: Vec4,\n array: Float32Array | number[],\n offset = 0\n): void {\n array[offset + 0] = a.x;\n array[offset + 1] = a.y;\n array[offset + 2] = a.z;\n array[offset + 3] = a.w;\n}\nexport function vec4ToString(a: Vec4): string {\n return toSafeString([a.x, a.y, a.z, a.w]);\n}\nexport function vec4Parse(text: string, result = new Vec4()): Vec4 {\n return vec4FromArray(parseSafeFloats(text), 0, result);\n}\nexport function quatConjugate(a: Vec4, result = new Vec4()): Vec4 {\n return result.set(-a.x, -a.y, -a.z, a.w);\n}\nexport function quatMultiply(a: Vec4, b: Vec4, result = new Vec4()): Vec4 {\n // from http://www.euclideanspace.com/maths/algebra/realNormedAlgebra/quaternions/code/index.htm\n\n const qax = a.x;\n const qay = a.y;\n const qaz = a.z;\n const qaw = a.w;\n const qbx = b.x;\n const qby = b.y;\n const qbz = b.z;\n const qbw = b.w;\n\n return result.set(\n qax * qbw + qaw * qbx + qay * qbz - qaz * qby,\n qay * qbw + qaw * qby + qaz * qbx - qax * qbz,\n qaz * qbw + qaw * qbz + qax * qby - qay * qbx,\n qaw * qbw - qax * qbx - qay * qby - qaz * qbz\n );\n}\n\nexport function quatSlerp(\n a: Vec4,\n b: Vec4,\n t: number,\n result = new Vec4()\n): Vec4 {\n if (t <= 0) return a.clone(result);\n if (t >= 1) return b.clone(result);\n\n // http://www.euclideanspace.com/maths/algebra/realNormedAlgebra/quaternions/slerp/\n\n let cosHalfTheta = vec4Dot(a, b);\n\n if (cosHalfTheta < 0) {\n vec4Negate(b, result);\n\n cosHalfTheta = -cosHalfTheta;\n } else {\n b.clone(result);\n }\n\n if (cosHalfTheta >= 1) {\n return result;\n }\n\n const sqrSinHalfTheta = 1 - cosHalfTheta * cosHalfTheta;\n\n if (sqrSinHalfTheta <= Number.EPSILON) {\n vec4Mix(a, result, t);\n vec4Normalize(result, result);\n\n return result;\n }\n\n const sinHalfTheta = Math.sqrt(sqrSinHalfTheta);\n const halfTheta = Math.atan2(sinHalfTheta, cosHalfTheta);\n const ratioA = Math.sin((1 - t) * halfTheta) / sinHalfTheta;\n const ratioB = Math.sin(t * halfTheta) / sinHalfTheta;\n\n result.w = a.w * ratioA + result.w * ratioB;\n result.x = a.x * ratioA + result.x * ratioB;\n result.y = a.y * ratioA + result.y * ratioB;\n result.z = a.z * ratioA + result.z * ratioB;\n\n return result;\n}\n\n/**\n * Calculate the exponential of a unit quaternion.\n *\n * @param {quat} out the receiving quaternion\n * @param {ReadonlyQuat} a quat to calculate the exponential of\n * @returns {quat} out\n */\nexport function quatExp(a: Vec4, result = new Vec4()): Vec4 {\n const x = a.x,\n y = a.y,\n z = a.z,\n w = a.w;\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 return result.set(x * s, y * s, z * s, et * Math.cos(r));\n}\n\n// from gl-matrix\nexport function quatLn(a: Vec4, result = new Vec4()): Vec4 {\n const x = a.x,\n y = a.y,\n z = a.z,\n w = a.w;\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 return result.set(\n x * t,\n y * t,\n z * t,\n 0.5 * Math.log(x * x + y * y + z * z + w * w)\n );\n}\n\n// from gl-matrix\nexport function quatPow(a: Vec4, b: number, result = new Vec4()): Vec4 {\n const ln = quatLn(a);\n const lnScaled = vec4MultiplyByScalar(ln, b);\n quatExp(lnScaled, result);\n return result;\n}\n\nexport function eulerToQuat(euler: Vec3, result: Vec4 = new Vec4()): Vec4 {\n // eslint-disable-next-line max-len\n // http://www.mathworks.com/matlabcentral/fileexchange/20696-function-to-convert-between-dcm-euler-angles-quaternions-and-euler-vectors/content/SpinCalc.m\n\n const c1 = Math.cos(euler.x / 2);\n const c2 = Math.cos(euler.y / 2);\n const c3 = Math.cos(euler.z / 2);\n\n const s1 = Math.sin(euler.x / 2);\n const s2 = Math.sin(euler.y / 2);\n const s3 = Math.sin(euler.z / 2);\n\n // XYZ order only\n return result.set(\n s1 * c2 * c3 + c1 * s2 * s3,\n c1 * s2 * c3 - s1 * c2 * s3,\n c1 * c2 * s3 + s1 * s2 * c3,\n c1 * c2 * c3 - s1 * s2 * s3\n );\n}\n\nexport function angleAxisToQuat(\n angle: number,\n axis: Vec3,\n result = new Vec4()\n): Vec4 {\n // http://www.euclideanspace.com/maths/geometry/rotations/conversions/angleToQuaternion/index.htm\n\n // assumes axis is normalized\n\n const halfAngle = angle / 2;\n const s = Math.sin(halfAngle);\n\n return result.set(axis.x * s, axis.y * s, axis.z * s, Math.cos(halfAngle));\n}\n\n// from gl-matrix\nexport function quatToAngleAxis(\n q: Vec4,\n result = new Vec3()\n): [angle: number, axis: Vec3] {\n const rad = Math.acos(q.w) * 2;\n const s = Math.sin(rad / 2);\n if (s > EPSILON) {\n result.x = q.x / s;\n result.y = q.y / s;\n result.z = q.z / s;\n } else {\n // If s is zero, return any axis (no rotation - axis does not matter)\n result.x = 1;\n result.y = 0;\n result.z = 0;\n }\n return [rad, result];\n}\n\nexport function mat4ToQuat(m: Mat4, result = new Vec4()): Vec4 {\n return mat3ToQuat(mat4ToMat3(m), result);\n}\n\nexport function mat3ToQuat(m: Mat3, result = new Vec4()): Vec4 {\n // http://www.euclideanspace.com/maths/geometry/rotations/conversions/matrixToQuaternion/index.htm\n\n // assumes the upper 3x3 of m is a pure rotation matrix (i.e, unscaled)\n\n // TODO, allocate x, y, z, w and only set q.* at the end.\n\n const te = m.elements,\n m11 = te[0],\n m12 = te[3],\n m13 = te[6],\n m21 = te[1],\n m22 = te[4],\n m23 = te[7],\n m31 = te[2],\n m32 = te[5],\n m33 = te[8],\n trace = m11 + m22 + m33;\n\n if (trace > 0) {\n const s = 0.5 / Math.sqrt(trace + 1);\n\n return result.set(\n (m32 - m23) * s,\n (m13 - m31) * s,\n (m21 - m12) * s,\n 0.25 / s\n );\n }\n if (m11 > m22 && m11 > m33) {\n const s = 2 * Math.sqrt(1 + m11 - m22 - m33);\n\n return result.set(\n 0.25 * s,\n (m12 + m21) / s,\n (m13 + m31) / s,\n (m32 - m23) / s\n );\n }\n if (m22 > m33) {\n const s = 2 * Math.sqrt(1 + m22 - m11 - m33);\n\n return result.set(\n (m12 + m21) / s,\n 0.25 * s,\n (m23 + m32) / s,\n (m13 - m31) / s\n );\n }\n\n const s = 2 * Math.sqrt(1 + m33 - m11 - m22);\n\n return result.set(\n (m13 + m31) / s,\n (m23 + m32) / s,\n 0.25 * s,\n (m21 - m12) / s\n );\n}\n"],"mappings":"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"}
|
|
@@ -1,5 +1,13 @@
|
|
|
1
1
|
//#region rolldown:runtime
|
|
2
|
+
var __create = Object.create;
|
|
2
3
|
var __defProp = Object.defineProperty;
|
|
4
|
+
var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
|
|
5
|
+
var __getOwnPropNames = Object.getOwnPropertyNames;
|
|
6
|
+
var __getProtoOf = Object.getPrototypeOf;
|
|
7
|
+
var __hasOwnProp = Object.prototype.hasOwnProperty;
|
|
8
|
+
var __commonJS = (cb, mod) => function() {
|
|
9
|
+
return mod || (0, cb[__getOwnPropNames(cb)[0]])((mod = { exports: {} }).exports, mod), mod.exports;
|
|
10
|
+
};
|
|
3
11
|
var __export = (all) => {
|
|
4
12
|
let target = {};
|
|
5
13
|
for (var name in all) __defProp(target, name, {
|
|
@@ -8,6 +16,20 @@ var __export = (all) => {
|
|
|
8
16
|
});
|
|
9
17
|
return target;
|
|
10
18
|
};
|
|
19
|
+
var __copyProps = (to, from, except, desc) => {
|
|
20
|
+
if (from && typeof from === "object" || typeof from === "function") for (var keys = __getOwnPropNames(from), i = 0, n = keys.length, key; i < n; i++) {
|
|
21
|
+
key = keys[i];
|
|
22
|
+
if (!__hasOwnProp.call(to, key) && key !== except) __defProp(to, key, {
|
|
23
|
+
get: ((k) => from[k]).bind(null, key),
|
|
24
|
+
enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable
|
|
25
|
+
});
|
|
26
|
+
}
|
|
27
|
+
return to;
|
|
28
|
+
};
|
|
29
|
+
var __toESM = (mod, isNodeMode, target) => (target = mod != null ? __create(__getProtoOf(mod)) : {}, __copyProps(isNodeMode || !mod || !mod.__esModule ? __defProp(target, "default", {
|
|
30
|
+
value: mod,
|
|
31
|
+
enumerable: true
|
|
32
|
+
}) : target, mod));
|
|
11
33
|
|
|
12
34
|
//#endregion
|
|
13
|
-
export { __export };
|
|
35
|
+
export { __commonJS, __export, __toESM };
|