@fimbul-works/vec 1.0.3 → 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/README.md +208 -85
- package/dist/cjs/2d/add-2d.d.ts +8 -0
- package/dist/cjs/2d/add-2d.js +11 -0
- package/dist/cjs/2d/angle-between-2d.d.ts +8 -0
- package/dist/cjs/2d/angle-between-2d.js +11 -0
- package/dist/cjs/2d/angle-x-2d.d.ts +7 -0
- package/dist/cjs/2d/angle-x-2d.js +10 -0
- package/dist/cjs/2d/angle-y-2d.d.ts +7 -0
- package/dist/cjs/2d/angle-y-2d.js +10 -0
- package/dist/cjs/2d/clamp-2d.d.ts +10 -0
- package/dist/cjs/2d/clamp-2d.js +14 -0
- package/dist/cjs/2d/clone-2d.d.ts +7 -0
- package/dist/cjs/2d/clone-2d.js +10 -0
- package/dist/cjs/2d/cross-2d.d.ts +8 -0
- package/dist/cjs/2d/cross-2d.js +11 -0
- package/dist/cjs/2d/distance-2d.d.ts +8 -0
- package/dist/cjs/2d/distance-2d.js +11 -0
- package/dist/cjs/2d/distance-chebyshev-2d.d.ts +8 -0
- package/dist/cjs/2d/distance-chebyshev-2d.js +15 -0
- package/dist/cjs/2d/distance-manhattan-2d.d.ts +8 -0
- package/dist/cjs/2d/distance-manhattan-2d.js +11 -0
- package/dist/cjs/2d/distance-minkowski-2d.d.ts +9 -0
- package/dist/cjs/2d/distance-minkowski-2d.js +12 -0
- package/dist/cjs/2d/distance-sq-2d.d.ts +8 -0
- package/dist/cjs/2d/distance-sq-2d.js +11 -0
- package/dist/cjs/2d/divide-2d.d.ts +8 -0
- package/dist/cjs/2d/divide-2d.js +14 -0
- package/dist/cjs/2d/dot-2d.d.ts +8 -0
- package/dist/cjs/2d/dot-2d.js +11 -0
- package/dist/cjs/2d/from-angle-x-2d.d.ts +8 -0
- package/dist/cjs/2d/from-angle-x-2d.js +14 -0
- package/dist/cjs/2d/from-angle-y-2d.d.ts +8 -0
- package/dist/cjs/2d/from-angle-y-2d.js +14 -0
- package/dist/cjs/2d/from-object-2d.d.ts +10 -0
- package/dist/cjs/2d/from-object-2d.js +10 -0
- package/dist/cjs/2d/from-polar-coords-2d.d.ts +8 -0
- package/dist/cjs/2d/from-polar-coords-2d.js +11 -0
- package/dist/cjs/2d/immutable-2d.d.ts +7 -0
- package/dist/cjs/2d/immutable-2d.js +10 -0
- package/dist/cjs/2d/index.d.ts +47 -0
- package/dist/cjs/2d/index.js +63 -0
- package/dist/cjs/2d/is-equal-2d.d.ts +8 -0
- package/dist/cjs/2d/is-equal-2d.js +11 -0
- package/dist/cjs/2d/is-equal-approx-2d.d.ts +9 -0
- package/dist/cjs/2d/is-equal-approx-2d.js +12 -0
- package/dist/cjs/2d/is-infinite-2d.d.ts +7 -0
- package/dist/cjs/2d/is-infinite-2d.js +13 -0
- package/dist/cjs/2d/is-nan-2d.d.ts +7 -0
- package/dist/cjs/2d/is-nan-2d.js +10 -0
- package/dist/cjs/2d/is-opposite-2d.d.ts +8 -0
- package/dist/cjs/2d/is-opposite-2d.js +11 -0
- package/dist/cjs/2d/is-zero-2d.d.ts +7 -0
- package/dist/cjs/2d/is-zero-2d.js +10 -0
- package/dist/cjs/2d/lerp-2d.d.ts +9 -0
- package/dist/cjs/2d/lerp-2d.js +15 -0
- package/dist/cjs/2d/limit-max-2d.d.ts +9 -0
- package/dist/cjs/2d/limit-max-2d.js +13 -0
- package/dist/cjs/2d/limit-min-2d.d.ts +9 -0
- package/dist/cjs/2d/limit-min-2d.js +13 -0
- package/dist/cjs/2d/look-at-2d.d.ts +10 -0
- package/dist/cjs/2d/look-at-2d.js +14 -0
- package/dist/cjs/2d/magnitude-2d.d.ts +7 -0
- package/dist/cjs/2d/magnitude-2d.js +10 -0
- package/dist/cjs/2d/magnitude-sq-2d.d.ts +7 -0
- package/dist/cjs/2d/magnitude-sq-2d.js +10 -0
- package/dist/cjs/2d/multiply-2d.d.ts +8 -0
- package/dist/cjs/2d/multiply-2d.js +11 -0
- package/dist/cjs/2d/negate-2d.d.ts +7 -0
- package/dist/cjs/2d/negate-2d.js +10 -0
- package/dist/cjs/2d/normalize-2d.d.ts +8 -0
- package/dist/cjs/2d/normalize-2d.js +12 -0
- package/dist/cjs/2d/one-2d.d.ts +6 -0
- package/dist/cjs/2d/one-2d.js +9 -0
- package/dist/cjs/2d/project-2d.d.ts +10 -0
- package/dist/cjs/2d/project-2d.js +17 -0
- package/dist/cjs/2d/random-2d.d.ts +7 -0
- package/dist/cjs/2d/random-2d.js +13 -0
- package/dist/cjs/2d/reflect-2d.d.ts +9 -0
- package/dist/cjs/2d/reflect-2d.js +16 -0
- package/dist/cjs/2d/rotate-2d.d.ts +9 -0
- package/dist/cjs/2d/rotate-2d.js +27 -0
- package/dist/cjs/2d/set-magnitude-2d.d.ts +9 -0
- package/dist/cjs/2d/set-magnitude-2d.js +16 -0
- package/dist/cjs/2d/subtract-2d.d.ts +8 -0
- package/dist/cjs/2d/subtract-2d.js +11 -0
- package/dist/cjs/2d/types.d.ts +4 -0
- package/dist/cjs/2d/types.js +2 -0
- package/dist/cjs/2d/zero-2d.d.ts +6 -0
- package/dist/cjs/2d/zero-2d.js +9 -0
- package/dist/cjs/3d/add-3d.d.ts +8 -0
- package/dist/cjs/3d/add-3d.js +15 -0
- package/dist/cjs/3d/angle-between-3d.d.ts +10 -0
- package/dist/cjs/3d/angle-between-3d.js +14 -0
- package/dist/cjs/3d/angle-x-3d.d.ts +7 -0
- package/dist/cjs/3d/angle-x-3d.js +10 -0
- package/dist/cjs/3d/angle-y-3d.d.ts +7 -0
- package/dist/cjs/3d/angle-y-3d.js +10 -0
- package/dist/cjs/3d/angle-z-3d.d.ts +7 -0
- package/dist/cjs/3d/angle-z-3d.js +10 -0
- package/dist/cjs/3d/clamp-3d.d.ts +10 -0
- package/dist/cjs/3d/clamp-3d.js +18 -0
- package/dist/cjs/3d/clone-3d.d.ts +7 -0
- package/dist/cjs/3d/clone-3d.js +10 -0
- package/dist/cjs/3d/cross-3d.d.ts +8 -0
- package/dist/cjs/3d/cross-3d.js +15 -0
- package/dist/cjs/3d/distance-3d.d.ts +8 -0
- package/dist/cjs/3d/distance-3d.js +11 -0
- package/dist/cjs/3d/distance-chebyshev-3d.d.ts +8 -0
- package/dist/cjs/3d/distance-chebyshev-3d.js +16 -0
- package/dist/cjs/3d/distance-manhattan-3d.d.ts +8 -0
- package/dist/cjs/3d/distance-manhattan-3d.js +11 -0
- package/dist/cjs/3d/distance-minkowski-3d.d.ts +9 -0
- package/dist/cjs/3d/distance-minkowski-3d.js +12 -0
- package/dist/cjs/3d/distance-sq-3d.d.ts +8 -0
- package/dist/cjs/3d/distance-sq-3d.js +11 -0
- package/dist/cjs/3d/divide-3d.d.ts +8 -0
- package/dist/cjs/3d/divide-3d.js +15 -0
- package/dist/cjs/3d/dot-3d.d.ts +8 -0
- package/dist/cjs/3d/dot-3d.js +11 -0
- package/dist/cjs/3d/from-cylindrical-coords-3d.d.ts +9 -0
- package/dist/cjs/3d/from-cylindrical-coords-3d.js +16 -0
- package/dist/cjs/3d/from-object-3d.d.ts +11 -0
- package/dist/cjs/3d/from-object-3d.js +10 -0
- package/dist/cjs/3d/from-spherical-coords-3d.d.ts +9 -0
- package/dist/cjs/3d/from-spherical-coords-3d.js +16 -0
- package/dist/cjs/3d/immutable-3d.d.ts +7 -0
- package/dist/cjs/3d/immutable-3d.js +10 -0
- package/dist/cjs/3d/index.d.ts +49 -0
- package/dist/cjs/3d/index.js +65 -0
- package/dist/cjs/3d/is-equal-3d.d.ts +8 -0
- package/dist/cjs/3d/is-equal-3d.js +11 -0
- package/dist/cjs/3d/is-equal-approx-3d.d.ts +9 -0
- package/dist/cjs/3d/is-equal-approx-3d.js +14 -0
- package/dist/cjs/3d/is-infinite-3d.d.ts +7 -0
- package/dist/cjs/3d/is-infinite-3d.js +15 -0
- package/dist/cjs/3d/is-nan-3d.d.ts +7 -0
- package/dist/cjs/3d/is-nan-3d.js +10 -0
- package/dist/cjs/3d/is-opposite-3d.d.ts +8 -0
- package/dist/cjs/3d/is-opposite-3d.js +11 -0
- package/dist/cjs/3d/is-zero-3d.d.ts +7 -0
- package/dist/cjs/3d/is-zero-3d.js +10 -0
- package/dist/cjs/3d/lerp-3d.d.ts +9 -0
- package/dist/cjs/3d/lerp-3d.js +16 -0
- package/dist/cjs/3d/limit-max-3d.d.ts +9 -0
- package/dist/cjs/3d/limit-max-3d.js +13 -0
- package/dist/cjs/3d/limit-min-3d.d.ts +9 -0
- package/dist/cjs/3d/limit-min-3d.js +13 -0
- package/dist/cjs/3d/look-at-3d.d.ts +10 -0
- package/dist/cjs/3d/look-at-3d.js +14 -0
- package/dist/cjs/3d/magnitude-3d.d.ts +7 -0
- package/dist/cjs/3d/magnitude-3d.js +10 -0
- package/dist/cjs/3d/magnitude-sq-3d.d.ts +7 -0
- package/dist/cjs/3d/magnitude-sq-3d.js +10 -0
- package/dist/cjs/3d/multiply-3d.d.ts +8 -0
- package/dist/cjs/3d/multiply-3d.js +15 -0
- package/dist/cjs/3d/negate-3d.d.ts +7 -0
- package/dist/cjs/3d/negate-3d.js +10 -0
- package/dist/cjs/3d/normalize-3d.d.ts +8 -0
- package/dist/cjs/3d/normalize-3d.js +12 -0
- package/dist/cjs/3d/one-3d.d.ts +6 -0
- package/dist/cjs/3d/one-3d.js +9 -0
- package/dist/cjs/3d/project-3d.d.ts +10 -0
- package/dist/cjs/3d/project-3d.js +17 -0
- package/dist/cjs/3d/random-3d.d.ts +7 -0
- package/dist/cjs/3d/random-3d.js +11 -0
- package/dist/cjs/3d/reflect-3d.d.ts +9 -0
- package/dist/cjs/3d/reflect-3d.js +16 -0
- package/dist/cjs/3d/rotate-x-3d.d.ts +9 -0
- package/dist/cjs/3d/rotate-x-3d.js +26 -0
- package/dist/cjs/3d/rotate-y-3d.d.ts +9 -0
- package/dist/cjs/3d/rotate-y-3d.js +26 -0
- package/dist/cjs/3d/rotate-z-3d.d.ts +9 -0
- package/dist/cjs/3d/rotate-z-3d.js +26 -0
- package/dist/cjs/3d/set-magnitude-3d.d.ts +9 -0
- package/dist/cjs/3d/set-magnitude-3d.js +13 -0
- package/dist/cjs/3d/subtract-3d.d.ts +8 -0
- package/dist/cjs/3d/subtract-3d.js +15 -0
- package/dist/cjs/3d/types.d.ts +4 -0
- package/dist/cjs/3d/types.js +2 -0
- package/dist/cjs/3d/zero-3d.d.ts +6 -0
- package/dist/cjs/3d/zero-3d.js +9 -0
- package/dist/cjs/4d/add-4d.d.ts +8 -0
- package/dist/cjs/4d/add-4d.js +16 -0
- package/dist/cjs/4d/angle-between-4d.d.ts +10 -0
- package/dist/cjs/4d/angle-between-4d.js +15 -0
- package/dist/cjs/4d/angle-w-4d.d.ts +7 -0
- package/dist/cjs/4d/angle-w-4d.js +10 -0
- package/dist/cjs/4d/angle-x-4d.d.ts +7 -0
- package/dist/cjs/4d/angle-x-4d.js +10 -0
- package/dist/cjs/4d/angle-y-4d.d.ts +7 -0
- package/dist/cjs/4d/angle-y-4d.js +10 -0
- package/dist/cjs/4d/angle-z-4d.d.ts +7 -0
- package/dist/cjs/4d/angle-z-4d.js +10 -0
- package/dist/cjs/4d/clamp-4d.d.ts +10 -0
- package/dist/cjs/4d/clamp-4d.js +18 -0
- package/dist/cjs/4d/clone-4d.d.ts +7 -0
- package/dist/cjs/4d/clone-4d.js +10 -0
- package/dist/cjs/4d/distance-4d.d.ts +8 -0
- package/dist/cjs/4d/distance-4d.js +11 -0
- package/dist/cjs/4d/distance-chebyshev-4d.d.ts +8 -0
- package/dist/cjs/4d/distance-chebyshev-4d.js +23 -0
- package/dist/cjs/4d/distance-manhattan-4d.d.ts +8 -0
- package/dist/cjs/4d/distance-manhattan-4d.js +14 -0
- package/dist/cjs/4d/distance-minkowski-4d.d.ts +9 -0
- package/dist/cjs/4d/distance-minkowski-4d.js +16 -0
- package/dist/cjs/4d/distance-sq-4d.d.ts +9 -0
- package/dist/cjs/4d/distance-sq-4d.js +12 -0
- package/dist/cjs/4d/divide-4d.d.ts +8 -0
- package/dist/cjs/4d/divide-4d.js +16 -0
- package/dist/cjs/4d/dot-4d.d.ts +8 -0
- package/dist/cjs/4d/dot-4d.js +11 -0
- package/dist/cjs/4d/from-object-4d.d.ts +12 -0
- package/dist/cjs/4d/from-object-4d.js +15 -0
- package/dist/cjs/4d/immutable-4d.d.ts +7 -0
- package/dist/cjs/4d/immutable-4d.js +10 -0
- package/dist/cjs/4d/index.d.ts +44 -0
- package/dist/cjs/4d/index.js +60 -0
- package/dist/cjs/4d/is-equal-4d.d.ts +8 -0
- package/dist/cjs/4d/is-equal-4d.js +11 -0
- package/dist/cjs/4d/is-equal-approx-4d.d.ts +9 -0
- package/dist/cjs/4d/is-equal-approx-4d.js +15 -0
- package/dist/cjs/4d/is-infinite-4d.d.ts +7 -0
- package/dist/cjs/4d/is-infinite-4d.js +17 -0
- package/dist/cjs/4d/is-nan-4d.d.ts +7 -0
- package/dist/cjs/4d/is-nan-4d.js +10 -0
- package/dist/cjs/4d/is-opposite-4d.d.ts +8 -0
- package/dist/cjs/4d/is-opposite-4d.js +11 -0
- package/dist/cjs/4d/is-zero-4d.d.ts +7 -0
- package/dist/cjs/4d/is-zero-4d.js +10 -0
- package/dist/cjs/4d/lerp-4d.d.ts +9 -0
- package/dist/cjs/4d/lerp-4d.js +17 -0
- package/dist/cjs/4d/limit-max-4d.d.ts +9 -0
- package/dist/cjs/4d/limit-max-4d.js +13 -0
- package/dist/cjs/4d/limit-min-4d.d.ts +9 -0
- package/dist/cjs/4d/limit-min-4d.js +13 -0
- package/dist/cjs/4d/look-at-4d.d.ts +10 -0
- package/dist/cjs/4d/look-at-4d.js +14 -0
- package/dist/cjs/4d/magnitude-4d.d.ts +7 -0
- package/dist/cjs/4d/magnitude-4d.js +10 -0
- package/dist/cjs/4d/magnitude-sq-4d.d.ts +8 -0
- package/dist/cjs/4d/magnitude-sq-4d.js +11 -0
- package/dist/cjs/4d/multiply-4d.d.ts +8 -0
- package/dist/cjs/4d/multiply-4d.js +16 -0
- package/dist/cjs/4d/negate-4d.d.ts +7 -0
- package/dist/cjs/4d/negate-4d.js +10 -0
- package/dist/cjs/4d/normalize-4d.d.ts +8 -0
- package/dist/cjs/4d/normalize-4d.js +17 -0
- package/dist/cjs/4d/one-4d.d.ts +6 -0
- package/dist/cjs/4d/one-4d.js +9 -0
- package/dist/cjs/4d/project-4d.d.ts +10 -0
- package/dist/cjs/4d/project-4d.js +18 -0
- package/dist/cjs/4d/random-4d.d.ts +7 -0
- package/dist/cjs/4d/random-4d.js +21 -0
- package/dist/cjs/4d/reflect-4d.d.ts +9 -0
- package/dist/cjs/4d/reflect-4d.js +21 -0
- package/dist/cjs/4d/set-magnitude-4d.d.ts +9 -0
- package/dist/cjs/4d/set-magnitude-4d.js +18 -0
- package/dist/cjs/4d/subtract-4d.d.ts +8 -0
- package/dist/cjs/4d/subtract-4d.js +16 -0
- package/dist/cjs/4d/types.d.ts +4 -0
- package/dist/cjs/4d/types.js +2 -0
- package/dist/cjs/4d/zero-4d.d.ts +6 -0
- package/dist/cjs/4d/zero-4d.js +9 -0
- package/dist/cjs/index.d.ts +7 -0
- package/dist/cjs/index.js +23 -0
- package/dist/cjs/package.json +1 -0
- package/dist/cjs/slerp.d.ts +21 -0
- package/dist/cjs/slerp.js +28 -0
- package/dist/{vec2.d.ts → cjs/vec2.d.ts} +10 -4
- package/dist/cjs/vec2.js +889 -0
- package/dist/{vec3.d.ts → cjs/vec3.d.ts} +159 -100
- package/dist/cjs/vec3.js +1045 -0
- package/dist/cjs/vec4.d.ts +602 -0
- package/dist/cjs/vec4.js +1101 -0
- package/dist/esm/2d/add-2d.d.ts +8 -0
- package/dist/esm/2d/add-2d.js +7 -0
- package/dist/esm/2d/angle-between-2d.d.ts +8 -0
- package/dist/esm/2d/angle-between-2d.js +7 -0
- package/dist/esm/2d/angle-x-2d.d.ts +7 -0
- package/dist/esm/2d/angle-x-2d.js +6 -0
- package/dist/esm/2d/angle-y-2d.d.ts +7 -0
- package/dist/esm/2d/angle-y-2d.js +6 -0
- package/dist/esm/2d/clamp-2d.d.ts +10 -0
- package/dist/esm/2d/clamp-2d.js +10 -0
- package/dist/esm/2d/clone-2d.d.ts +7 -0
- package/dist/esm/2d/clone-2d.js +6 -0
- package/dist/esm/2d/cross-2d.d.ts +8 -0
- package/dist/esm/2d/cross-2d.js +7 -0
- package/dist/esm/2d/distance-2d.d.ts +8 -0
- package/dist/esm/2d/distance-2d.js +7 -0
- package/dist/esm/2d/distance-chebyshev-2d.d.ts +8 -0
- package/dist/esm/2d/distance-chebyshev-2d.js +11 -0
- package/dist/esm/2d/distance-manhattan-2d.d.ts +8 -0
- package/dist/esm/2d/distance-manhattan-2d.js +7 -0
- package/dist/esm/2d/distance-minkowski-2d.d.ts +9 -0
- package/dist/esm/2d/distance-minkowski-2d.js +8 -0
- package/dist/esm/2d/distance-sq-2d.d.ts +8 -0
- package/dist/esm/2d/distance-sq-2d.js +7 -0
- package/dist/esm/2d/divide-2d.d.ts +8 -0
- package/dist/esm/2d/divide-2d.js +10 -0
- package/dist/esm/2d/dot-2d.d.ts +8 -0
- package/dist/esm/2d/dot-2d.js +7 -0
- package/dist/esm/2d/from-angle-x-2d.d.ts +8 -0
- package/dist/esm/2d/from-angle-x-2d.js +10 -0
- package/dist/esm/2d/from-angle-y-2d.d.ts +8 -0
- package/dist/esm/2d/from-angle-y-2d.js +10 -0
- package/dist/esm/2d/from-object-2d.d.ts +10 -0
- package/dist/esm/2d/from-object-2d.js +6 -0
- package/dist/esm/2d/from-polar-coords-2d.d.ts +8 -0
- package/dist/esm/2d/from-polar-coords-2d.js +7 -0
- package/dist/esm/2d/immutable-2d.d.ts +7 -0
- package/dist/esm/2d/immutable-2d.js +6 -0
- package/dist/esm/2d/index.d.ts +47 -0
- package/dist/esm/2d/index.js +47 -0
- package/dist/esm/2d/is-equal-2d.d.ts +8 -0
- package/dist/esm/2d/is-equal-2d.js +7 -0
- package/dist/esm/2d/is-equal-approx-2d.d.ts +9 -0
- package/dist/esm/2d/is-equal-approx-2d.js +8 -0
- package/dist/esm/2d/is-infinite-2d.d.ts +7 -0
- package/dist/esm/2d/is-infinite-2d.js +9 -0
- package/dist/esm/2d/is-nan-2d.d.ts +7 -0
- package/dist/esm/2d/is-nan-2d.js +6 -0
- package/dist/esm/2d/is-opposite-2d.d.ts +8 -0
- package/dist/esm/2d/is-opposite-2d.js +7 -0
- package/dist/esm/2d/is-zero-2d.d.ts +7 -0
- package/dist/esm/2d/is-zero-2d.js +6 -0
- package/dist/esm/2d/lerp-2d.d.ts +9 -0
- package/dist/esm/2d/lerp-2d.js +11 -0
- package/dist/esm/2d/limit-max-2d.d.ts +9 -0
- package/dist/esm/2d/limit-max-2d.js +9 -0
- package/dist/esm/2d/limit-min-2d.d.ts +9 -0
- package/dist/esm/2d/limit-min-2d.js +9 -0
- package/dist/esm/2d/look-at-2d.d.ts +10 -0
- package/dist/esm/2d/look-at-2d.js +10 -0
- package/dist/esm/2d/magnitude-2d.d.ts +7 -0
- package/dist/esm/2d/magnitude-2d.js +6 -0
- package/dist/esm/2d/magnitude-sq-2d.d.ts +7 -0
- package/dist/esm/2d/magnitude-sq-2d.js +6 -0
- package/dist/esm/2d/multiply-2d.d.ts +8 -0
- package/dist/esm/2d/multiply-2d.js +7 -0
- package/dist/esm/2d/negate-2d.d.ts +7 -0
- package/dist/esm/2d/negate-2d.js +6 -0
- package/dist/esm/2d/normalize-2d.d.ts +8 -0
- package/dist/esm/2d/normalize-2d.js +8 -0
- package/dist/esm/2d/one-2d.d.ts +6 -0
- package/dist/esm/2d/one-2d.js +5 -0
- package/dist/esm/2d/project-2d.d.ts +10 -0
- package/dist/esm/2d/project-2d.js +13 -0
- package/dist/esm/2d/random-2d.d.ts +7 -0
- package/dist/esm/2d/random-2d.js +9 -0
- package/dist/esm/2d/reflect-2d.d.ts +9 -0
- package/dist/esm/2d/reflect-2d.js +12 -0
- package/dist/esm/2d/rotate-2d.d.ts +9 -0
- package/dist/esm/2d/rotate-2d.js +23 -0
- package/dist/esm/2d/set-magnitude-2d.d.ts +9 -0
- package/dist/esm/2d/set-magnitude-2d.js +12 -0
- package/dist/esm/2d/subtract-2d.d.ts +8 -0
- package/dist/esm/2d/subtract-2d.js +7 -0
- package/dist/esm/2d/types.d.ts +4 -0
- package/dist/esm/2d/types.js +1 -0
- package/dist/esm/2d/zero-2d.d.ts +6 -0
- package/dist/esm/2d/zero-2d.js +5 -0
- package/dist/esm/3d/add-3d.d.ts +8 -0
- package/dist/esm/3d/add-3d.js +11 -0
- package/dist/esm/3d/angle-between-3d.d.ts +10 -0
- package/dist/esm/3d/angle-between-3d.js +10 -0
- package/dist/esm/3d/angle-x-3d.d.ts +7 -0
- package/dist/esm/3d/angle-x-3d.js +6 -0
- package/dist/esm/3d/angle-y-3d.d.ts +7 -0
- package/dist/esm/3d/angle-y-3d.js +6 -0
- package/dist/esm/3d/angle-z-3d.d.ts +7 -0
- package/dist/esm/3d/angle-z-3d.js +6 -0
- package/dist/esm/3d/clamp-3d.d.ts +10 -0
- package/dist/esm/3d/clamp-3d.js +14 -0
- package/dist/esm/3d/clone-3d.d.ts +7 -0
- package/dist/esm/3d/clone-3d.js +6 -0
- package/dist/esm/3d/cross-3d.d.ts +8 -0
- package/dist/esm/3d/cross-3d.js +11 -0
- package/dist/esm/3d/distance-3d.d.ts +8 -0
- package/dist/esm/3d/distance-3d.js +7 -0
- package/dist/esm/3d/distance-chebyshev-3d.d.ts +8 -0
- package/dist/esm/3d/distance-chebyshev-3d.js +12 -0
- package/dist/esm/3d/distance-manhattan-3d.d.ts +8 -0
- package/dist/esm/3d/distance-manhattan-3d.js +7 -0
- package/dist/esm/3d/distance-minkowski-3d.d.ts +9 -0
- package/dist/esm/3d/distance-minkowski-3d.js +8 -0
- package/dist/esm/3d/distance-sq-3d.d.ts +8 -0
- package/dist/esm/3d/distance-sq-3d.js +7 -0
- package/dist/esm/3d/divide-3d.d.ts +8 -0
- package/dist/esm/3d/divide-3d.js +11 -0
- package/dist/esm/3d/dot-3d.d.ts +8 -0
- package/dist/esm/3d/dot-3d.js +7 -0
- package/dist/esm/3d/from-cylindrical-coords-3d.d.ts +9 -0
- package/dist/esm/3d/from-cylindrical-coords-3d.js +12 -0
- package/dist/esm/3d/from-object-3d.d.ts +11 -0
- package/dist/esm/3d/from-object-3d.js +6 -0
- package/dist/esm/3d/from-spherical-coords-3d.d.ts +9 -0
- package/dist/esm/3d/from-spherical-coords-3d.js +12 -0
- package/dist/esm/3d/immutable-3d.d.ts +7 -0
- package/dist/esm/3d/immutable-3d.js +6 -0
- package/dist/esm/3d/index.d.ts +49 -0
- package/dist/esm/3d/index.js +49 -0
- package/dist/esm/3d/is-equal-3d.d.ts +8 -0
- package/dist/esm/3d/is-equal-3d.js +7 -0
- package/dist/esm/3d/is-equal-approx-3d.d.ts +9 -0
- package/dist/esm/3d/is-equal-approx-3d.js +10 -0
- package/dist/esm/3d/is-infinite-3d.d.ts +7 -0
- package/dist/esm/3d/is-infinite-3d.js +11 -0
- package/dist/esm/3d/is-nan-3d.d.ts +7 -0
- package/dist/esm/3d/is-nan-3d.js +6 -0
- package/dist/esm/3d/is-opposite-3d.d.ts +8 -0
- package/dist/esm/3d/is-opposite-3d.js +7 -0
- package/dist/esm/3d/is-zero-3d.d.ts +7 -0
- package/dist/esm/3d/is-zero-3d.js +6 -0
- package/dist/esm/3d/lerp-3d.d.ts +9 -0
- package/dist/esm/3d/lerp-3d.js +12 -0
- package/dist/esm/3d/limit-max-3d.d.ts +9 -0
- package/dist/esm/3d/limit-max-3d.js +9 -0
- package/dist/esm/3d/limit-min-3d.d.ts +9 -0
- package/dist/esm/3d/limit-min-3d.js +9 -0
- package/dist/esm/3d/look-at-3d.d.ts +10 -0
- package/dist/esm/3d/look-at-3d.js +10 -0
- package/dist/esm/3d/magnitude-3d.d.ts +7 -0
- package/dist/esm/3d/magnitude-3d.js +6 -0
- package/dist/esm/3d/magnitude-sq-3d.d.ts +7 -0
- package/dist/esm/3d/magnitude-sq-3d.js +6 -0
- package/dist/esm/3d/multiply-3d.d.ts +8 -0
- package/dist/esm/3d/multiply-3d.js +11 -0
- package/dist/esm/3d/negate-3d.d.ts +7 -0
- package/dist/esm/3d/negate-3d.js +6 -0
- package/dist/esm/3d/normalize-3d.d.ts +8 -0
- package/dist/esm/3d/normalize-3d.js +8 -0
- package/dist/esm/3d/one-3d.d.ts +6 -0
- package/dist/esm/3d/one-3d.js +5 -0
- package/dist/esm/3d/project-3d.d.ts +10 -0
- package/dist/esm/3d/project-3d.js +13 -0
- package/dist/esm/3d/random-3d.d.ts +7 -0
- package/dist/esm/3d/random-3d.js +7 -0
- package/dist/esm/3d/reflect-3d.d.ts +9 -0
- package/dist/esm/3d/reflect-3d.js +12 -0
- package/dist/esm/3d/rotate-x-3d.d.ts +9 -0
- package/dist/esm/3d/rotate-x-3d.js +22 -0
- package/dist/esm/3d/rotate-y-3d.d.ts +9 -0
- package/dist/esm/3d/rotate-y-3d.js +22 -0
- package/dist/esm/3d/rotate-z-3d.d.ts +9 -0
- package/dist/esm/3d/rotate-z-3d.js +22 -0
- package/dist/esm/3d/set-magnitude-3d.d.ts +9 -0
- package/dist/esm/3d/set-magnitude-3d.js +9 -0
- package/dist/esm/3d/subtract-3d.d.ts +8 -0
- package/dist/esm/3d/subtract-3d.js +11 -0
- package/dist/esm/3d/types.d.ts +4 -0
- package/dist/esm/3d/types.js +1 -0
- package/dist/esm/3d/zero-3d.d.ts +6 -0
- package/dist/esm/3d/zero-3d.js +5 -0
- package/dist/esm/4d/add-4d.d.ts +8 -0
- package/dist/esm/4d/add-4d.js +12 -0
- package/dist/esm/4d/angle-between-4d.d.ts +10 -0
- package/dist/esm/4d/angle-between-4d.js +11 -0
- package/dist/esm/4d/angle-w-4d.d.ts +7 -0
- package/dist/esm/4d/angle-w-4d.js +6 -0
- package/dist/esm/4d/angle-x-4d.d.ts +7 -0
- package/dist/esm/4d/angle-x-4d.js +6 -0
- package/dist/esm/4d/angle-y-4d.d.ts +7 -0
- package/dist/esm/4d/angle-y-4d.js +6 -0
- package/dist/esm/4d/angle-z-4d.d.ts +7 -0
- package/dist/esm/4d/angle-z-4d.js +6 -0
- package/dist/esm/4d/clamp-4d.d.ts +10 -0
- package/dist/esm/4d/clamp-4d.js +14 -0
- package/dist/esm/4d/clone-4d.d.ts +7 -0
- package/dist/esm/4d/clone-4d.js +6 -0
- package/dist/esm/4d/distance-4d.d.ts +8 -0
- package/dist/esm/4d/distance-4d.js +7 -0
- package/dist/esm/4d/distance-chebyshev-4d.d.ts +8 -0
- package/dist/esm/4d/distance-chebyshev-4d.js +19 -0
- package/dist/esm/4d/distance-manhattan-4d.d.ts +8 -0
- package/dist/esm/4d/distance-manhattan-4d.js +10 -0
- package/dist/esm/4d/distance-minkowski-4d.d.ts +9 -0
- package/dist/esm/4d/distance-minkowski-4d.js +12 -0
- package/dist/esm/4d/distance-sq-4d.d.ts +9 -0
- package/dist/esm/4d/distance-sq-4d.js +8 -0
- package/dist/esm/4d/divide-4d.d.ts +8 -0
- package/dist/esm/4d/divide-4d.js +12 -0
- package/dist/esm/4d/dot-4d.d.ts +8 -0
- package/dist/esm/4d/dot-4d.js +7 -0
- package/dist/esm/4d/from-object-4d.d.ts +12 -0
- package/dist/esm/4d/from-object-4d.js +11 -0
- package/dist/esm/4d/immutable-4d.d.ts +7 -0
- package/dist/esm/4d/immutable-4d.js +6 -0
- package/dist/esm/4d/index.d.ts +44 -0
- package/dist/esm/4d/index.js +44 -0
- package/dist/esm/4d/is-equal-4d.d.ts +8 -0
- package/dist/esm/4d/is-equal-4d.js +7 -0
- package/dist/esm/4d/is-equal-approx-4d.d.ts +9 -0
- package/dist/esm/4d/is-equal-approx-4d.js +11 -0
- package/dist/esm/4d/is-infinite-4d.d.ts +7 -0
- package/dist/esm/4d/is-infinite-4d.js +13 -0
- package/dist/esm/4d/is-nan-4d.d.ts +7 -0
- package/dist/esm/4d/is-nan-4d.js +6 -0
- package/dist/esm/4d/is-opposite-4d.d.ts +8 -0
- package/dist/esm/4d/is-opposite-4d.js +7 -0
- package/dist/esm/4d/is-zero-4d.d.ts +7 -0
- package/dist/esm/4d/is-zero-4d.js +6 -0
- package/dist/esm/4d/lerp-4d.d.ts +9 -0
- package/dist/esm/4d/lerp-4d.js +13 -0
- package/dist/esm/4d/limit-max-4d.d.ts +9 -0
- package/dist/esm/4d/limit-max-4d.js +9 -0
- package/dist/esm/4d/limit-min-4d.d.ts +9 -0
- package/dist/esm/4d/limit-min-4d.js +9 -0
- package/dist/esm/4d/look-at-4d.d.ts +10 -0
- package/dist/esm/4d/look-at-4d.js +10 -0
- package/dist/esm/4d/magnitude-4d.d.ts +7 -0
- package/dist/esm/4d/magnitude-4d.js +6 -0
- package/dist/esm/4d/magnitude-sq-4d.d.ts +8 -0
- package/dist/esm/4d/magnitude-sq-4d.js +7 -0
- package/dist/esm/4d/multiply-4d.d.ts +8 -0
- package/dist/esm/4d/multiply-4d.js +12 -0
- package/dist/esm/4d/negate-4d.d.ts +7 -0
- package/dist/esm/4d/negate-4d.js +6 -0
- package/dist/esm/4d/normalize-4d.d.ts +8 -0
- package/dist/esm/4d/normalize-4d.js +13 -0
- package/dist/esm/4d/one-4d.d.ts +6 -0
- package/dist/esm/4d/one-4d.js +5 -0
- package/dist/esm/4d/project-4d.d.ts +10 -0
- package/dist/esm/4d/project-4d.js +14 -0
- package/dist/esm/4d/random-4d.d.ts +7 -0
- package/dist/esm/4d/random-4d.js +17 -0
- package/dist/esm/4d/reflect-4d.d.ts +9 -0
- package/dist/esm/4d/reflect-4d.js +17 -0
- package/dist/esm/4d/set-magnitude-4d.d.ts +9 -0
- package/dist/esm/4d/set-magnitude-4d.js +14 -0
- package/dist/esm/4d/subtract-4d.d.ts +8 -0
- package/dist/esm/4d/subtract-4d.js +12 -0
- package/dist/esm/4d/types.d.ts +4 -0
- package/dist/esm/4d/types.js +1 -0
- package/dist/esm/4d/zero-4d.d.ts +6 -0
- package/dist/esm/4d/zero-4d.js +5 -0
- package/dist/esm/index.d.ts +7 -0
- package/dist/esm/index.js +7 -0
- package/dist/esm/slerp.d.ts +21 -0
- package/dist/esm/slerp.js +23 -0
- package/dist/{vec4.d.ts → esm/vec2.d.ts} +165 -157
- package/dist/{vec2.js → esm/vec2.js} +14 -6
- package/dist/esm/vec3.d.ts +614 -0
- package/dist/{vec3.js → esm/vec3.js} +190 -123
- package/dist/esm/vec4.d.ts +602 -0
- package/dist/{vec4.js → esm/vec4.js} +211 -130
- package/docs/ArrayVector2D.md +1090 -0
- package/docs/ArrayVector3D.md +1162 -0
- package/docs/ArrayVector4D.md +1019 -0
- package/docs/README.md +13 -0
- package/docs/Slerp.md +64 -0
- package/docs/Vec2.md +1827 -0
- package/docs/Vec3.md +2084 -0
- package/docs/Vec4.md +2031 -0
- package/package.json +95 -70
- package/VEC2.md +0 -147
- package/VEC3.md +0 -159
- package/VEC4.md +0 -146
- package/dist/index.d.ts +0 -3
- package/dist/index.js +0 -3
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Checks if a 4D vector has infinite components.
|
|
3
|
+
* @param {ArrayVector4D} xyzw - Vector as `[x, y, z, w]`
|
|
4
|
+
* @returns {boolean} `true` if vector has infinite components, `false` otherwise
|
|
5
|
+
*/
|
|
6
|
+
export const isInfinite4D = (xyzw) => xyzw[0] === Number.POSITIVE_INFINITY ||
|
|
7
|
+
xyzw[0] === Number.NEGATIVE_INFINITY ||
|
|
8
|
+
xyzw[1] === Number.POSITIVE_INFINITY ||
|
|
9
|
+
xyzw[1] === Number.NEGATIVE_INFINITY ||
|
|
10
|
+
xyzw[2] === Number.POSITIVE_INFINITY ||
|
|
11
|
+
xyzw[2] === Number.NEGATIVE_INFINITY ||
|
|
12
|
+
xyzw[3] === Number.POSITIVE_INFINITY ||
|
|
13
|
+
xyzw[3] === Number.NEGATIVE_INFINITY;
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
import type { ArrayVector4D } from "./types.js";
|
|
2
|
+
/**
|
|
3
|
+
* Checks if a 4D vector has NaN components.
|
|
4
|
+
* @param {ArrayVector4D} xyzw - Vector as `[x, y, z, w]`
|
|
5
|
+
* @returns {boolean} `true` if vector has `NaN` components, `false` otherwise
|
|
6
|
+
*/
|
|
7
|
+
export declare const isNan4D: (xyzw: ArrayVector4D) => boolean;
|
|
@@ -0,0 +1,6 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Checks if a 4D vector has NaN components.
|
|
3
|
+
* @param {ArrayVector4D} xyzw - Vector as `[x, y, z, w]`
|
|
4
|
+
* @returns {boolean} `true` if vector has `NaN` components, `false` otherwise
|
|
5
|
+
*/
|
|
6
|
+
export const isNan4D = (xyzw) => Number.isNaN(xyzw[0]) || Number.isNaN(xyzw[1]) || Number.isNaN(xyzw[2]) || Number.isNaN(xyzw[3]);
|
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
import type { ArrayVector4D } from "./types.js";
|
|
2
|
+
/**
|
|
3
|
+
* Checks if two 4D vectors are opposite.
|
|
4
|
+
* @param {ArrayVector4D} xyzw1 - First vector as `[x, y, z, w]`
|
|
5
|
+
* @param {ArrayVector4D} xyzw2 - Second vector as `[x, y, z, w]`
|
|
6
|
+
* @returns {boolean} `true` if vectors are opposite
|
|
7
|
+
*/
|
|
8
|
+
export declare const isOpposite4D: (xyzw1: ArrayVector4D, xyzw2: ArrayVector4D) => boolean;
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Checks if two 4D vectors are opposite.
|
|
3
|
+
* @param {ArrayVector4D} xyzw1 - First vector as `[x, y, z, w]`
|
|
4
|
+
* @param {ArrayVector4D} xyzw2 - Second vector as `[x, y, z, w]`
|
|
5
|
+
* @returns {boolean} `true` if vectors are opposite
|
|
6
|
+
*/
|
|
7
|
+
export const isOpposite4D = (xyzw1, xyzw2) => xyzw1[0] === -xyzw2[0] && xyzw1[1] === -xyzw2[1] && xyzw1[2] === -xyzw2[2] && xyzw1[3] === -xyzw2[3];
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
import type { ArrayVector4D } from "./types.js";
|
|
2
|
+
/**
|
|
3
|
+
* Checks if a 4D vector is zero.
|
|
4
|
+
* @param {ArrayVector4D} xyzw - Vector as `[x, y, z, w]`
|
|
5
|
+
* @returns {boolean} `true` if vector is zero, `false` otherwise
|
|
6
|
+
*/
|
|
7
|
+
export declare const isZero4D: (xyzw: ArrayVector4D) => boolean;
|
|
@@ -0,0 +1,6 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Checks if a 4D vector is zero.
|
|
3
|
+
* @param {ArrayVector4D} xyzw - Vector as `[x, y, z, w]`
|
|
4
|
+
* @returns {boolean} `true` if vector is zero, `false` otherwise
|
|
5
|
+
*/
|
|
6
|
+
export const isZero4D = (xyzw) => xyzw[0] === 0 && xyzw[1] === 0 && xyzw[2] === 0 && xyzw[3] === 0;
|
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
import type { ArrayVector4D } from "./types.js";
|
|
2
|
+
/**
|
|
3
|
+
* Performs linear interpolation between two 4D vectors.
|
|
4
|
+
* @param {ArrayVector4D} xyzw1 - First vector as `[x, y, z, w]`
|
|
5
|
+
* @param {ArrayVector4D} xyzw2 - Second vector as `[x, y, z, w]`
|
|
6
|
+
* @param {number} t - Interpolation parameter
|
|
7
|
+
* @returns {ArrayVector4D} The interpolated vector
|
|
8
|
+
*/
|
|
9
|
+
export declare const lerp4D: (xyzw1: ArrayVector4D, xyzw2: ArrayVector4D, t: number) => ArrayVector4D;
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Performs linear interpolation between two 4D vectors.
|
|
3
|
+
* @param {ArrayVector4D} xyzw1 - First vector as `[x, y, z, w]`
|
|
4
|
+
* @param {ArrayVector4D} xyzw2 - Second vector as `[x, y, z, w]`
|
|
5
|
+
* @param {number} t - Interpolation parameter
|
|
6
|
+
* @returns {ArrayVector4D} The interpolated vector
|
|
7
|
+
*/
|
|
8
|
+
export const lerp4D = (xyzw1, xyzw2, t) => [
|
|
9
|
+
xyzw1[0] + (xyzw2[0] - xyzw1[0]) * t,
|
|
10
|
+
xyzw1[1] + (xyzw2[1] - xyzw1[1]) * t,
|
|
11
|
+
xyzw1[2] + (xyzw2[2] - xyzw1[2]) * t,
|
|
12
|
+
xyzw1[3] + (xyzw2[3] - xyzw1[3]) * t,
|
|
13
|
+
];
|
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
import type { ArrayVector4D } from "./types.js";
|
|
2
|
+
/**
|
|
3
|
+
* Limits the maximum magnitude of a 4D vector.
|
|
4
|
+
* @param {ArrayVector4D} xyzw - Vector as `[x, y, z, w]`
|
|
5
|
+
* @param {number} max - Maximum magnitude
|
|
6
|
+
* @param {number} [m] - Optional current magnitude (default: `magnitude4D(xyzw)`)
|
|
7
|
+
* @returns {ArrayVector4D} Vector with limited magnitude
|
|
8
|
+
*/
|
|
9
|
+
export declare const limitMax4D: (xyzw: ArrayVector4D, max: number, m?: number) => ArrayVector4D;
|
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
import { magnitude4D } from "./magnitude-4d.js";
|
|
2
|
+
/**
|
|
3
|
+
* Limits the maximum magnitude of a 4D vector.
|
|
4
|
+
* @param {ArrayVector4D} xyzw - Vector as `[x, y, z, w]`
|
|
5
|
+
* @param {number} max - Maximum magnitude
|
|
6
|
+
* @param {number} [m] - Optional current magnitude (default: `magnitude4D(xyzw)`)
|
|
7
|
+
* @returns {ArrayVector4D} Vector with limited magnitude
|
|
8
|
+
*/
|
|
9
|
+
export const limitMax4D = (xyzw, max, m = magnitude4D(xyzw)) => m > max ? [(xyzw[0] / m) * max, (xyzw[1] / m) * max, (xyzw[2] / m) * max, (xyzw[3] / m) * max] : xyzw;
|
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
import type { ArrayVector4D } from "./types.js";
|
|
2
|
+
/**
|
|
3
|
+
* Limits the minimum magnitude of a 4D vector.
|
|
4
|
+
* @param {ArrayVector4D} xyzw - Vector as `[x, y, z, w]`
|
|
5
|
+
* @param {number} min - Minimum magnitude
|
|
6
|
+
* @param {number} [m] - Optional current magnitude (default: `magnitude4D(xyzw)`)
|
|
7
|
+
* @returns {ArrayVector4D} Vector with limited magnitude
|
|
8
|
+
*/
|
|
9
|
+
export declare const limitMin4D: (xyzw: ArrayVector4D, min: number, m?: number) => ArrayVector4D;
|
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
import { magnitude4D } from "./magnitude-4d.js";
|
|
2
|
+
/**
|
|
3
|
+
* Limits the minimum magnitude of a 4D vector.
|
|
4
|
+
* @param {ArrayVector4D} xyzw - Vector as `[x, y, z, w]`
|
|
5
|
+
* @param {number} min - Minimum magnitude
|
|
6
|
+
* @param {number} [m] - Optional current magnitude (default: `magnitude4D(xyzw)`)
|
|
7
|
+
* @returns {ArrayVector4D} Vector with limited magnitude
|
|
8
|
+
*/
|
|
9
|
+
export const limitMin4D = (xyzw, min, m = magnitude4D(xyzw)) => m < min ? [(xyzw[0] / m) * min, (xyzw[1] / m) * min, (xyzw[2] / m) * min, (xyzw[3] / m) * min] : xyzw;
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
import type { ArrayVector4D } from "./types.js";
|
|
2
|
+
/**
|
|
3
|
+
* Makes a 4D vector point towards another vector.
|
|
4
|
+
* @param {ArrayVector4D} xyzw1 - First vector as `[x, y, z, w]`
|
|
5
|
+
* @param {ArrayVector4D} xyzw2 - Second vector as `[x, y, z, w]` (target to look at)
|
|
6
|
+
* @param {number} [m1] - Optional current magnitude of the first vector (default: `magnitude4D(xyzw1)`)
|
|
7
|
+
* @param {number} [m2] - Optional current magnitude of the second vector (default: `magnitude4D(xyzw2)`)
|
|
8
|
+
* @returns {number} Vector pointing at the target with the magnitude of xyzw1
|
|
9
|
+
*/
|
|
10
|
+
export declare const lookAt4D: (xyzw1: ArrayVector4D, xyzw2: ArrayVector4D, m1?: number, m2?: number) => ArrayVector4D;
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
import { magnitude4D } from "./magnitude-4d.js";
|
|
2
|
+
/**
|
|
3
|
+
* Makes a 4D vector point towards another vector.
|
|
4
|
+
* @param {ArrayVector4D} xyzw1 - First vector as `[x, y, z, w]`
|
|
5
|
+
* @param {ArrayVector4D} xyzw2 - Second vector as `[x, y, z, w]` (target to look at)
|
|
6
|
+
* @param {number} [m1] - Optional current magnitude of the first vector (default: `magnitude4D(xyzw1)`)
|
|
7
|
+
* @param {number} [m2] - Optional current magnitude of the second vector (default: `magnitude4D(xyzw2)`)
|
|
8
|
+
* @returns {number} Vector pointing at the target with the magnitude of xyzw1
|
|
9
|
+
*/
|
|
10
|
+
export const lookAt4D = (xyzw1, xyzw2, m1 = magnitude4D(xyzw1), m2 = magnitude4D(xyzw2)) => [(xyzw2[0] / m2) * m1, (xyzw2[1] / m2) * m1, (xyzw2[2] / m2) * m1, (xyzw2[3] / m2) * m1];
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
import type { ArrayVector4D } from "./types.js";
|
|
2
|
+
/**
|
|
3
|
+
* Calculates the magnitude (length) of a 4D vector.
|
|
4
|
+
* @param {ArrayVector4D} xyzw - Vector as `[x, y, z, w]`
|
|
5
|
+
* @returns {number} The magnitude
|
|
6
|
+
*/
|
|
7
|
+
export declare const magnitude4D: (xyzw: ArrayVector4D) => number;
|
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
import type { ArrayVector4D } from "./types.js";
|
|
2
|
+
/**
|
|
3
|
+
* Calculates the squared magnitude of a 4D vector.
|
|
4
|
+
* Faster than magnitude for comparisons.
|
|
5
|
+
* @param {ArrayVector4D} xyzw - Vector as `[x, y, z, w]`
|
|
6
|
+
* @returns {number} The squared magnitude
|
|
7
|
+
*/
|
|
8
|
+
export declare const magnitudeSq4D: (xyzw: ArrayVector4D) => number;
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Calculates the squared magnitude of a 4D vector.
|
|
3
|
+
* Faster than magnitude for comparisons.
|
|
4
|
+
* @param {ArrayVector4D} xyzw - Vector as `[x, y, z, w]`
|
|
5
|
+
* @returns {number} The squared magnitude
|
|
6
|
+
*/
|
|
7
|
+
export const magnitudeSq4D = (xyzw) => xyzw[0] ** 2 + xyzw[1] ** 2 + xyzw[2] ** 2 + xyzw[3] ** 2;
|
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
import type { ArrayVector4D } from "./types.js";
|
|
2
|
+
/**
|
|
3
|
+
* Multiplies two 4D vectors component-wise.
|
|
4
|
+
* @param {ArrayVector4D} xyzw1 - First vector as `[x, y, z, w]`
|
|
5
|
+
* @param {ArrayVector4D} xyzw2 - Second vector as `[x, y, z, w]`
|
|
6
|
+
* @returns {ArrayVector4D} The multiplied vector
|
|
7
|
+
*/
|
|
8
|
+
export declare const multiply4D: (xyzw1: ArrayVector4D, xyzw2: ArrayVector4D) => ArrayVector4D;
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Multiplies two 4D vectors component-wise.
|
|
3
|
+
* @param {ArrayVector4D} xyzw1 - First vector as `[x, y, z, w]`
|
|
4
|
+
* @param {ArrayVector4D} xyzw2 - Second vector as `[x, y, z, w]`
|
|
5
|
+
* @returns {ArrayVector4D} The multiplied vector
|
|
6
|
+
*/
|
|
7
|
+
export const multiply4D = (xyzw1, xyzw2) => [
|
|
8
|
+
xyzw1[0] * xyzw2[0],
|
|
9
|
+
xyzw1[1] * xyzw2[1],
|
|
10
|
+
xyzw1[2] * xyzw2[2],
|
|
11
|
+
xyzw1[3] * xyzw2[3],
|
|
12
|
+
];
|
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
import type { ArrayVector4D } from "./types.js";
|
|
2
|
+
/**
|
|
3
|
+
* Normalizes a 4D vector to unit length.
|
|
4
|
+
* @param {ArrayVector4D} xyzw - Vector as `[x, y, z, w]`
|
|
5
|
+
* @param {number} [m] - Optional current magnitude (default: `magnitude4D(xyzw)`)
|
|
6
|
+
* @returns {ArrayVector4D} The normalized vector
|
|
7
|
+
*/
|
|
8
|
+
export declare const normalize4D: (xyzw: ArrayVector4D, m?: number) => ArrayVector4D;
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
import { magnitude4D } from "./magnitude-4d.js";
|
|
2
|
+
/**
|
|
3
|
+
* Normalizes a 4D vector to unit length.
|
|
4
|
+
* @param {ArrayVector4D} xyzw - Vector as `[x, y, z, w]`
|
|
5
|
+
* @param {number} [m] - Optional current magnitude (default: `magnitude4D(xyzw)`)
|
|
6
|
+
* @returns {ArrayVector4D} The normalized vector
|
|
7
|
+
*/
|
|
8
|
+
export const normalize4D = (xyzw, m = magnitude4D(xyzw)) => [
|
|
9
|
+
xyzw[0] / m,
|
|
10
|
+
xyzw[1] / m,
|
|
11
|
+
xyzw[2] / m,
|
|
12
|
+
xyzw[3] / m,
|
|
13
|
+
];
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
import type { ArrayVector4D } from "./types.js";
|
|
2
|
+
/**
|
|
3
|
+
* Projects one 4D vector onto another.
|
|
4
|
+
* @param {ArrayVector4D} xyzw1 - First vector as `[x, y, z, w]`
|
|
5
|
+
* @param {ArrayVector4D} xyzw2 - Second vector as `[x, y, z, w]` to project onto
|
|
6
|
+
* @param {number} [m1] - Optional current magnitude (default: `magnitude4D(xyzw1)`)
|
|
7
|
+
* @param {number} [m2] - Optional current magnitude (default: `magnitude4D(xyzw2)`)
|
|
8
|
+
* @returns {ArrayVector4D} The projected vector
|
|
9
|
+
*/
|
|
10
|
+
export declare const project4D: (xyzw1: ArrayVector4D, xyzw2: ArrayVector4D, m1?: number, m2?: number) => ArrayVector4D;
|
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
import { dot4D } from "./dot-4d.js";
|
|
2
|
+
import { magnitude4D } from "./magnitude-4d.js";
|
|
3
|
+
/**
|
|
4
|
+
* Projects one 4D vector onto another.
|
|
5
|
+
* @param {ArrayVector4D} xyzw1 - First vector as `[x, y, z, w]`
|
|
6
|
+
* @param {ArrayVector4D} xyzw2 - Second vector as `[x, y, z, w]` to project onto
|
|
7
|
+
* @param {number} [m1] - Optional current magnitude (default: `magnitude4D(xyzw1)`)
|
|
8
|
+
* @param {number} [m2] - Optional current magnitude (default: `magnitude4D(xyzw2)`)
|
|
9
|
+
* @returns {ArrayVector4D} The projected vector
|
|
10
|
+
*/
|
|
11
|
+
export const project4D = (xyzw1, xyzw2, m1 = magnitude4D(xyzw1), m2 = magnitude4D(xyzw2)) => {
|
|
12
|
+
const f = m1 * Math.cos(Math.acos(dot4D(xyzw1, xyzw2) / (m1 * m2)));
|
|
13
|
+
return [(xyzw2[0] / m2) * f, (xyzw2[1] / m2) * f, (xyzw2[2] / m2) * f, (xyzw2[3] / m2) * f];
|
|
14
|
+
};
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
import type { ArrayVector4D } from "./types.js";
|
|
2
|
+
/**
|
|
3
|
+
* Creates a random unit 4D vector.
|
|
4
|
+
* @param {() => number} random - A function that returns a random number between 0 and 1 (default: `Math.random`)
|
|
5
|
+
* @returns {ArrayVector4D} A random unit vector
|
|
6
|
+
*/
|
|
7
|
+
export declare const random4D: (random?: () => number) => ArrayVector4D;
|
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
const { sqrt, log, sin, cos, PI } = Math;
|
|
2
|
+
/**
|
|
3
|
+
* Creates a random unit 4D vector.
|
|
4
|
+
* @param {() => number} random - A function that returns a random number between 0 and 1 (default: `Math.random`)
|
|
5
|
+
* @returns {ArrayVector4D} A random unit vector
|
|
6
|
+
*/
|
|
7
|
+
export const random4D = (random = Math.random) => {
|
|
8
|
+
// 1. Generate four numbers from a Normal Distribution (Box-Muller transform)
|
|
9
|
+
const x = sqrt(-2 * log(random())) * cos(2 * PI * random());
|
|
10
|
+
const y = sqrt(-2 * log(random())) * sin(2 * PI * random());
|
|
11
|
+
const z = sqrt(-2 * log(random())) * cos(2 * PI * random());
|
|
12
|
+
const w = sqrt(-2 * log(random())) * sin(2 * PI * random());
|
|
13
|
+
// 2. Calculate the current length
|
|
14
|
+
const length = sqrt(x * x + y * y + z * z + w * w);
|
|
15
|
+
// 3. Divide by length to make it a unit vector
|
|
16
|
+
return [x / length, y / length, z / length, w / length];
|
|
17
|
+
};
|
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
import type { ArrayVector4D } from "./types.js";
|
|
2
|
+
/**
|
|
3
|
+
* Reflects a 4D vector across a normal vector.
|
|
4
|
+
* The normal vector should be normalized (unit length).
|
|
5
|
+
* @param {ArrayVector4D} xyzw - Vector as `[x, y, z, w]`
|
|
6
|
+
* @param {ArrayVector4D} normal - Normal vector (must be normalized)
|
|
7
|
+
* @returns {ArrayVector4D} The reflected vector
|
|
8
|
+
*/
|
|
9
|
+
export declare const reflect4D: (xyzw: ArrayVector4D, normal: ArrayVector4D) => ArrayVector4D;
|
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
import { dot4D } from "./dot-4d.js";
|
|
2
|
+
/**
|
|
3
|
+
* Reflects a 4D vector across a normal vector.
|
|
4
|
+
* The normal vector should be normalized (unit length).
|
|
5
|
+
* @param {ArrayVector4D} xyzw - Vector as `[x, y, z, w]`
|
|
6
|
+
* @param {ArrayVector4D} normal - Normal vector (must be normalized)
|
|
7
|
+
* @returns {ArrayVector4D} The reflected vector
|
|
8
|
+
*/
|
|
9
|
+
export const reflect4D = (xyzw, normal) => {
|
|
10
|
+
const dot = dot4D(xyzw, normal);
|
|
11
|
+
return [
|
|
12
|
+
xyzw[0] - 2 * dot * normal[0],
|
|
13
|
+
xyzw[1] - 2 * dot * normal[1],
|
|
14
|
+
xyzw[2] - 2 * dot * normal[2],
|
|
15
|
+
xyzw[3] - 2 * dot * normal[3],
|
|
16
|
+
];
|
|
17
|
+
};
|
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
import type { ArrayVector4D } from "./types.js";
|
|
2
|
+
/**
|
|
3
|
+
* Sets the magnitude of a 4D vector while maintaining its direction.
|
|
4
|
+
* @param {ArrayVector4D} xyzw - Vector as `[x, y, z, w]`
|
|
5
|
+
* @param {number} newMag - The new magnitude
|
|
6
|
+
* @param {number} [m] - Optional current magnitude (default: `magnitude4D(xyzw)`)
|
|
7
|
+
* @returns {ArrayVector4D} Vector with the new magnitude
|
|
8
|
+
*/
|
|
9
|
+
export declare const setMagnitude4D: (xyzw: ArrayVector4D, newMag: number, m?: number) => ArrayVector4D;
|
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
import { magnitude4D } from "./magnitude-4d.js";
|
|
2
|
+
/**
|
|
3
|
+
* Sets the magnitude of a 4D vector while maintaining its direction.
|
|
4
|
+
* @param {ArrayVector4D} xyzw - Vector as `[x, y, z, w]`
|
|
5
|
+
* @param {number} newMag - The new magnitude
|
|
6
|
+
* @param {number} [m] - Optional current magnitude (default: `magnitude4D(xyzw)`)
|
|
7
|
+
* @returns {ArrayVector4D} Vector with the new magnitude
|
|
8
|
+
*/
|
|
9
|
+
export const setMagnitude4D = (xyzw, newMag, m = magnitude4D(xyzw)) => [
|
|
10
|
+
(xyzw[0] / m) * newMag,
|
|
11
|
+
(xyzw[1] / m) * newMag,
|
|
12
|
+
(xyzw[2] / m) * newMag,
|
|
13
|
+
(xyzw[3] / m) * newMag,
|
|
14
|
+
];
|
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
import type { ArrayVector4D } from "./types.js";
|
|
2
|
+
/**
|
|
3
|
+
* Subtracts two 4D vectors.
|
|
4
|
+
* @param {ArrayVector4D} xyzw1 - First vector as `[x, y, z, w]`
|
|
5
|
+
* @param {ArrayVector4D} xyzw2 - Second vector as `[x, y, z, w]`
|
|
6
|
+
* @returns {ArrayVector4D} The difference of the vectors
|
|
7
|
+
*/
|
|
8
|
+
export declare const subtract4D: (xyzw1: ArrayVector4D, xyzw2: ArrayVector4D) => ArrayVector4D;
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Subtracts two 4D vectors.
|
|
3
|
+
* @param {ArrayVector4D} xyzw1 - First vector as `[x, y, z, w]`
|
|
4
|
+
* @param {ArrayVector4D} xyzw2 - Second vector as `[x, y, z, w]`
|
|
5
|
+
* @returns {ArrayVector4D} The difference of the vectors
|
|
6
|
+
*/
|
|
7
|
+
export const subtract4D = (xyzw1, xyzw2) => [
|
|
8
|
+
xyzw1[0] - xyzw2[0],
|
|
9
|
+
xyzw1[1] - xyzw2[1],
|
|
10
|
+
xyzw1[2] - xyzw2[2],
|
|
11
|
+
xyzw1[3] - xyzw2[3],
|
|
12
|
+
];
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export {};
|
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Documentation for spherical linear interpolation functions.
|
|
3
|
+
* @module Slerp
|
|
4
|
+
*/
|
|
5
|
+
/**
|
|
6
|
+
* Spherical linear interpolation for angles (in radians).
|
|
7
|
+
* Handles wrapping around 2π correctly.
|
|
8
|
+
* @param {number} from - Start angle in radians
|
|
9
|
+
* @param {number} to - End angle in radians
|
|
10
|
+
* @param {number} t - Interpolation factor (0-1)
|
|
11
|
+
* @returns {number} Interpolated angle
|
|
12
|
+
*/
|
|
13
|
+
export declare const slerp: (from: number, to: number, t: number) => number;
|
|
14
|
+
/**
|
|
15
|
+
* Spherical linear interpolation for angles (in degrees).
|
|
16
|
+
* @param {number} from - Start angle in degrees
|
|
17
|
+
* @param {number} to - End angle in degrees
|
|
18
|
+
* @param {number} t - Interpolation factor (0-1)
|
|
19
|
+
* @returns {number} Interpolated angle
|
|
20
|
+
*/
|
|
21
|
+
export declare const slerpDegrees: (from: number, to: number, t: number) => number;
|
|
@@ -0,0 +1,23 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Documentation for spherical linear interpolation functions.
|
|
3
|
+
* @module Slerp
|
|
4
|
+
*/
|
|
5
|
+
const PI2 = 2 * Math.PI;
|
|
6
|
+
const PI3 = 3 * Math.PI;
|
|
7
|
+
/**
|
|
8
|
+
* Spherical linear interpolation for angles (in radians).
|
|
9
|
+
* Handles wrapping around 2π correctly.
|
|
10
|
+
* @param {number} from - Start angle in radians
|
|
11
|
+
* @param {number} to - End angle in radians
|
|
12
|
+
* @param {number} t - Interpolation factor (0-1)
|
|
13
|
+
* @returns {number} Interpolated angle
|
|
14
|
+
*/
|
|
15
|
+
export const slerp = (from, to, t) => from + (((((to - from) % PI2) + PI3) % PI2) - Math.PI) * t;
|
|
16
|
+
/**
|
|
17
|
+
* Spherical linear interpolation for angles (in degrees).
|
|
18
|
+
* @param {number} from - Start angle in degrees
|
|
19
|
+
* @param {number} to - End angle in degrees
|
|
20
|
+
* @param {number} t - Interpolation factor (0-1)
|
|
21
|
+
* @returns {number} Interpolated angle
|
|
22
|
+
*/
|
|
23
|
+
export const slerpDegrees = (from, to, t) => from + (((((to - from) % 360) + 540) % 360) - 180) * t;
|