@fimbul-works/vec 1.1.0 → 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 -95
- 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 +4 -0
- package/dist/cjs/index.js +4 -0
- package/dist/cjs/package.json +1 -1
- package/dist/cjs/slerp.d.ts +21 -0
- package/dist/cjs/slerp.js +28 -0
- package/dist/cjs/vec2.d.ts +10 -4
- package/dist/cjs/vec2.js +13 -6
- package/dist/cjs/vec3.d.ts +121 -106
- package/dist/cjs/vec3.js +127 -129
- package/dist/cjs/vec4.d.ts +118 -100
- package/dist/cjs/vec4.js +134 -134
- 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 +4 -0
- package/dist/esm/index.js +4 -0
- package/dist/esm/slerp.d.ts +21 -0
- package/dist/esm/slerp.js +23 -0
- package/dist/esm/vec2.d.ts +10 -4
- package/dist/esm/vec2.js +13 -6
- package/dist/esm/vec3.d.ts +121 -106
- package/dist/esm/vec3.js +127 -129
- package/dist/esm/vec4.d.ts +118 -100
- package/dist/esm/vec4.js +134 -134
- 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 +30 -9
- package/VEC2.md +0 -147
- package/VEC3.md +0 -172
- package/VEC4.md +0 -161
|
@@ -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 {};
|
package/dist/esm/index.d.ts
CHANGED
package/dist/esm/index.js
CHANGED
|
@@ -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;
|
package/dist/esm/vec2.d.ts
CHANGED
|
@@ -1,3 +1,7 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Documentation for 2D Vector class.
|
|
3
|
+
* @module Vec2
|
|
4
|
+
*/
|
|
1
5
|
/**
|
|
2
6
|
* Represents a 2D vector with various operations.
|
|
3
7
|
*/
|
|
@@ -5,8 +9,8 @@ export declare class Vec2 {
|
|
|
5
9
|
#private;
|
|
6
10
|
/**
|
|
7
11
|
* Creates a new Vec2 instance.
|
|
8
|
-
* @param x - The x-coordinate of the vector.
|
|
9
|
-
* @param y - The y-coordinate of the vector.
|
|
12
|
+
* @param {number} x - The x-coordinate of the vector.
|
|
13
|
+
* @param {number} y - The y-coordinate of the vector.
|
|
10
14
|
*/
|
|
11
15
|
constructor(x?: number, y?: number);
|
|
12
16
|
/**
|
|
@@ -218,12 +222,14 @@ export declare class Vec2 {
|
|
|
218
222
|
static one(): Vec2;
|
|
219
223
|
/**
|
|
220
224
|
* Creates a Vec2 from an array.
|
|
221
|
-
* @
|
|
225
|
+
* @param {[number, number] | number[]} arr - An array containing the x and y coordinates.
|
|
226
|
+
* @returns {Vec2} A new Vec2 instance.
|
|
222
227
|
*/
|
|
223
228
|
static fromArray(arr: [number, number] | number[]): Vec2;
|
|
224
229
|
/**
|
|
225
230
|
* Creates a Vec2 from an object with x and y properties.
|
|
226
|
-
* @
|
|
231
|
+
* @param {{ x: number; y: number }} obj - An object with x and y properties.
|
|
232
|
+
* @returns {Vec2} A new Vec2 instance.
|
|
227
233
|
*/
|
|
228
234
|
static fromObject(obj: {
|
|
229
235
|
x: number;
|
package/dist/esm/vec2.js
CHANGED
|
@@ -1,3 +1,7 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Documentation for 2D Vector class.
|
|
3
|
+
* @module Vec2
|
|
4
|
+
*/
|
|
1
5
|
const { PI, sin, cos, atan2, sqrt, abs } = Math;
|
|
2
6
|
const PI2 = PI * 2;
|
|
3
7
|
/**
|
|
@@ -10,8 +14,9 @@ export class Vec2 {
|
|
|
10
14
|
/**
|
|
11
15
|
* Computes and updates the magnitude of the vector.
|
|
12
16
|
* @private
|
|
13
|
-
* @param x - The x-component of the vector.
|
|
14
|
-
* @param y - The y-component of the vector.
|
|
17
|
+
* @param {number} x - The x-component of the vector.
|
|
18
|
+
* @param {number} y - The y-component of the vector.
|
|
19
|
+
* @returns {void}
|
|
15
20
|
*/
|
|
16
21
|
#computeMagnitude(x = this.#xy[0], y = this.#xy[1]) {
|
|
17
22
|
if (x !== this.#prevXY[0] || y !== this.#prevXY[1]) {
|
|
@@ -22,8 +27,8 @@ export class Vec2 {
|
|
|
22
27
|
}
|
|
23
28
|
/**
|
|
24
29
|
* Creates a new Vec2 instance.
|
|
25
|
-
* @param x - The x-coordinate of the vector.
|
|
26
|
-
* @param y - The y-coordinate of the vector.
|
|
30
|
+
* @param {number} x - The x-coordinate of the vector.
|
|
31
|
+
* @param {number} y - The y-coordinate of the vector.
|
|
27
32
|
*/
|
|
28
33
|
constructor(x = 0, y = x) {
|
|
29
34
|
this.#xy[0] = x;
|
|
@@ -358,14 +363,16 @@ export class Vec2 {
|
|
|
358
363
|
}
|
|
359
364
|
/**
|
|
360
365
|
* Creates a Vec2 from an array.
|
|
361
|
-
* @
|
|
366
|
+
* @param {[number, number] | number[]} arr - An array containing the x and y coordinates.
|
|
367
|
+
* @returns {Vec2} A new Vec2 instance.
|
|
362
368
|
*/
|
|
363
369
|
static fromArray(arr) {
|
|
364
370
|
return new Vec2(arr[0] ?? 0, arr[1] ?? 0);
|
|
365
371
|
}
|
|
366
372
|
/**
|
|
367
373
|
* Creates a Vec2 from an object with x and y properties.
|
|
368
|
-
* @
|
|
374
|
+
* @param {{ x: number; y: number }} obj - An object with x and y properties.
|
|
375
|
+
* @returns {Vec2} A new Vec2 instance.
|
|
369
376
|
*/
|
|
370
377
|
static fromObject(obj) {
|
|
371
378
|
return new Vec2(obj.x, obj.y);
|