@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,60 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
|
|
3
|
+
if (k2 === undefined) k2 = k;
|
|
4
|
+
var desc = Object.getOwnPropertyDescriptor(m, k);
|
|
5
|
+
if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
|
|
6
|
+
desc = { enumerable: true, get: function() { return m[k]; } };
|
|
7
|
+
}
|
|
8
|
+
Object.defineProperty(o, k2, desc);
|
|
9
|
+
}) : (function(o, m, k, k2) {
|
|
10
|
+
if (k2 === undefined) k2 = k;
|
|
11
|
+
o[k2] = m[k];
|
|
12
|
+
}));
|
|
13
|
+
var __exportStar = (this && this.__exportStar) || function(m, exports) {
|
|
14
|
+
for (var p in m) if (p !== "default" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);
|
|
15
|
+
};
|
|
16
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
17
|
+
/**
|
|
18
|
+
* Documentation for functional 4D Vector array operations.
|
|
19
|
+
* @module ArrayVector4D
|
|
20
|
+
*/
|
|
21
|
+
__exportStar(require("./add-4d.js"), exports);
|
|
22
|
+
__exportStar(require("./angle-between-4d.js"), exports);
|
|
23
|
+
__exportStar(require("./angle-w-4d.js"), exports);
|
|
24
|
+
__exportStar(require("./angle-x-4d.js"), exports);
|
|
25
|
+
__exportStar(require("./angle-y-4d.js"), exports);
|
|
26
|
+
__exportStar(require("./angle-z-4d.js"), exports);
|
|
27
|
+
__exportStar(require("./clamp-4d.js"), exports);
|
|
28
|
+
__exportStar(require("./clone-4d.js"), exports);
|
|
29
|
+
__exportStar(require("./distance-4d.js"), exports);
|
|
30
|
+
__exportStar(require("./distance-chebyshev-4d.js"), exports);
|
|
31
|
+
__exportStar(require("./distance-manhattan-4d.js"), exports);
|
|
32
|
+
__exportStar(require("./distance-minkowski-4d.js"), exports);
|
|
33
|
+
__exportStar(require("./distance-sq-4d.js"), exports);
|
|
34
|
+
__exportStar(require("./divide-4d.js"), exports);
|
|
35
|
+
__exportStar(require("./dot-4d.js"), exports);
|
|
36
|
+
__exportStar(require("./from-object-4d.js"), exports);
|
|
37
|
+
__exportStar(require("./immutable-4d.js"), exports);
|
|
38
|
+
__exportStar(require("./is-equal-4d.js"), exports);
|
|
39
|
+
__exportStar(require("./is-equal-approx-4d.js"), exports);
|
|
40
|
+
__exportStar(require("./is-infinite-4d.js"), exports);
|
|
41
|
+
__exportStar(require("./is-nan-4d.js"), exports);
|
|
42
|
+
__exportStar(require("./is-opposite-4d.js"), exports);
|
|
43
|
+
__exportStar(require("./is-zero-4d.js"), exports);
|
|
44
|
+
__exportStar(require("./lerp-4d.js"), exports);
|
|
45
|
+
__exportStar(require("./limit-max-4d.js"), exports);
|
|
46
|
+
__exportStar(require("./limit-min-4d.js"), exports);
|
|
47
|
+
__exportStar(require("./look-at-4d.js"), exports);
|
|
48
|
+
__exportStar(require("./magnitude-4d.js"), exports);
|
|
49
|
+
__exportStar(require("./magnitude-sq-4d.js"), exports);
|
|
50
|
+
__exportStar(require("./multiply-4d.js"), exports);
|
|
51
|
+
__exportStar(require("./negate-4d.js"), exports);
|
|
52
|
+
__exportStar(require("./normalize-4d.js"), exports);
|
|
53
|
+
__exportStar(require("./one-4d.js"), exports);
|
|
54
|
+
__exportStar(require("./project-4d.js"), exports);
|
|
55
|
+
__exportStar(require("./random-4d.js"), exports);
|
|
56
|
+
__exportStar(require("./reflect-4d.js"), exports);
|
|
57
|
+
__exportStar(require("./set-magnitude-4d.js"), exports);
|
|
58
|
+
__exportStar(require("./subtract-4d.js"), exports);
|
|
59
|
+
__exportStar(require("./types.js"), exports);
|
|
60
|
+
__exportStar(require("./zero-4d.js"), exports);
|
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
import type { ArrayVector4D } from "./types.js";
|
|
2
|
+
/**
|
|
3
|
+
* Checks if two 4D vectors are exactly equal.
|
|
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 equal, `false` otherwse
|
|
7
|
+
*/
|
|
8
|
+
export declare const isEqual4D: (xyzw1: ArrayVector4D, xyzw2: ArrayVector4D) => boolean;
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.isEqual4D = void 0;
|
|
4
|
+
/**
|
|
5
|
+
* Checks if two 4D vectors are exactly equal.
|
|
6
|
+
* @param {ArrayVector4D} xyzw1 - First vector as `[x, y, z, w]`
|
|
7
|
+
* @param {ArrayVector4D} xyzw2 - Second vector as `[x, y, z, w]`
|
|
8
|
+
* @returns {boolean} `true` if vectors are equal, `false` otherwse
|
|
9
|
+
*/
|
|
10
|
+
const isEqual4D = (xyzw1, xyzw2) => xyzw1[0] === xyzw2[0] && xyzw1[1] === xyzw2[1] && xyzw1[2] === xyzw2[2] && xyzw1[3] === xyzw2[3];
|
|
11
|
+
exports.isEqual4D = isEqual4D;
|
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
import type { ArrayVector4D } from "./types.js";
|
|
2
|
+
/**
|
|
3
|
+
* Checks if two 4D vectors are approximately equal within epsilon.
|
|
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} epsilon - Maximum difference (default: `Number.EPSILON`)
|
|
7
|
+
* @returns {boolean} `true` if vectors are approximately equal, `false` otherwise
|
|
8
|
+
*/
|
|
9
|
+
export declare const isEqualApprox4D: (xyzw1: ArrayVector4D, xyzw2: ArrayVector4D, epsilon?: number) => boolean;
|
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.isEqualApprox4D = void 0;
|
|
4
|
+
/**
|
|
5
|
+
* Checks if two 4D vectors are approximately equal within epsilon.
|
|
6
|
+
* @param {ArrayVector4D} xyzw1 - First vector as `[x, y, z, w]`
|
|
7
|
+
* @param {ArrayVector4D} xyzw2 - Second vector as `[x, y, z, w]`
|
|
8
|
+
* @param {number} epsilon - Maximum difference (default: `Number.EPSILON`)
|
|
9
|
+
* @returns {boolean} `true` if vectors are approximately equal, `false` otherwise
|
|
10
|
+
*/
|
|
11
|
+
const isEqualApprox4D = (xyzw1, xyzw2, epsilon = Number.EPSILON) => Math.abs(xyzw1[0] - xyzw2[0]) <= epsilon &&
|
|
12
|
+
Math.abs(xyzw1[1] - xyzw2[1]) <= epsilon &&
|
|
13
|
+
Math.abs(xyzw1[2] - xyzw2[2]) <= epsilon &&
|
|
14
|
+
Math.abs(xyzw1[3] - xyzw2[3]) <= epsilon;
|
|
15
|
+
exports.isEqualApprox4D = isEqualApprox4D;
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
import type { ArrayVector4D } from "./types.js";
|
|
2
|
+
/**
|
|
3
|
+
* Checks if a 4D vector has infinite components.
|
|
4
|
+
* @param {ArrayVector4D} xyzw - Vector as `[x, y, z, w]`
|
|
5
|
+
* @returns {boolean} `true` if vector has infinite components, `false` otherwise
|
|
6
|
+
*/
|
|
7
|
+
export declare const isInfinite4D: (xyzw: ArrayVector4D) => boolean;
|
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.isInfinite4D = void 0;
|
|
4
|
+
/**
|
|
5
|
+
* Checks if a 4D vector has infinite components.
|
|
6
|
+
* @param {ArrayVector4D} xyzw - Vector as `[x, y, z, w]`
|
|
7
|
+
* @returns {boolean} `true` if vector has infinite components, `false` otherwise
|
|
8
|
+
*/
|
|
9
|
+
const isInfinite4D = (xyzw) => xyzw[0] === Number.POSITIVE_INFINITY ||
|
|
10
|
+
xyzw[0] === Number.NEGATIVE_INFINITY ||
|
|
11
|
+
xyzw[1] === Number.POSITIVE_INFINITY ||
|
|
12
|
+
xyzw[1] === Number.NEGATIVE_INFINITY ||
|
|
13
|
+
xyzw[2] === Number.POSITIVE_INFINITY ||
|
|
14
|
+
xyzw[2] === Number.NEGATIVE_INFINITY ||
|
|
15
|
+
xyzw[3] === Number.POSITIVE_INFINITY ||
|
|
16
|
+
xyzw[3] === Number.NEGATIVE_INFINITY;
|
|
17
|
+
exports.isInfinite4D = isInfinite4D;
|
|
@@ -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,10 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.isNan4D = void 0;
|
|
4
|
+
/**
|
|
5
|
+
* Checks if a 4D vector has NaN components.
|
|
6
|
+
* @param {ArrayVector4D} xyzw - Vector as `[x, y, z, w]`
|
|
7
|
+
* @returns {boolean} `true` if vector has `NaN` components, `false` otherwise
|
|
8
|
+
*/
|
|
9
|
+
const isNan4D = (xyzw) => Number.isNaN(xyzw[0]) || Number.isNaN(xyzw[1]) || Number.isNaN(xyzw[2]) || Number.isNaN(xyzw[3]);
|
|
10
|
+
exports.isNan4D = isNan4D;
|
|
@@ -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,11 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.isOpposite4D = void 0;
|
|
4
|
+
/**
|
|
5
|
+
* Checks if two 4D vectors are opposite.
|
|
6
|
+
* @param {ArrayVector4D} xyzw1 - First vector as `[x, y, z, w]`
|
|
7
|
+
* @param {ArrayVector4D} xyzw2 - Second vector as `[x, y, z, w]`
|
|
8
|
+
* @returns {boolean} `true` if vectors are opposite
|
|
9
|
+
*/
|
|
10
|
+
const isOpposite4D = (xyzw1, xyzw2) => xyzw1[0] === -xyzw2[0] && xyzw1[1] === -xyzw2[1] && xyzw1[2] === -xyzw2[2] && xyzw1[3] === -xyzw2[3];
|
|
11
|
+
exports.isOpposite4D = isOpposite4D;
|
|
@@ -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,10 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.isZero4D = void 0;
|
|
4
|
+
/**
|
|
5
|
+
* Checks if a 4D vector is zero.
|
|
6
|
+
* @param {ArrayVector4D} xyzw - Vector as `[x, y, z, w]`
|
|
7
|
+
* @returns {boolean} `true` if vector is zero, `false` otherwise
|
|
8
|
+
*/
|
|
9
|
+
const isZero4D = (xyzw) => xyzw[0] === 0 && xyzw[1] === 0 && xyzw[2] === 0 && xyzw[3] === 0;
|
|
10
|
+
exports.isZero4D = isZero4D;
|
|
@@ -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,17 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.lerp4D = void 0;
|
|
4
|
+
/**
|
|
5
|
+
* Performs linear interpolation between two 4D vectors.
|
|
6
|
+
* @param {ArrayVector4D} xyzw1 - First vector as `[x, y, z, w]`
|
|
7
|
+
* @param {ArrayVector4D} xyzw2 - Second vector as `[x, y, z, w]`
|
|
8
|
+
* @param {number} t - Interpolation parameter
|
|
9
|
+
* @returns {ArrayVector4D} The interpolated vector
|
|
10
|
+
*/
|
|
11
|
+
const lerp4D = (xyzw1, xyzw2, t) => [
|
|
12
|
+
xyzw1[0] + (xyzw2[0] - xyzw1[0]) * t,
|
|
13
|
+
xyzw1[1] + (xyzw2[1] - xyzw1[1]) * t,
|
|
14
|
+
xyzw1[2] + (xyzw2[2] - xyzw1[2]) * t,
|
|
15
|
+
xyzw1[3] + (xyzw2[3] - xyzw1[3]) * t,
|
|
16
|
+
];
|
|
17
|
+
exports.lerp4D = lerp4D;
|
|
@@ -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,13 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.limitMax4D = void 0;
|
|
4
|
+
const magnitude_4d_js_1 = require("./magnitude-4d.js");
|
|
5
|
+
/**
|
|
6
|
+
* Limits the maximum magnitude of a 4D vector.
|
|
7
|
+
* @param {ArrayVector4D} xyzw - Vector as `[x, y, z, w]`
|
|
8
|
+
* @param {number} max - Maximum magnitude
|
|
9
|
+
* @param {number} [m] - Optional current magnitude (default: `magnitude4D(xyzw)`)
|
|
10
|
+
* @returns {ArrayVector4D} Vector with limited magnitude
|
|
11
|
+
*/
|
|
12
|
+
const limitMax4D = (xyzw, max, m = (0, magnitude_4d_js_1.magnitude4D)(xyzw)) => m > max ? [(xyzw[0] / m) * max, (xyzw[1] / m) * max, (xyzw[2] / m) * max, (xyzw[3] / m) * max] : xyzw;
|
|
13
|
+
exports.limitMax4D = limitMax4D;
|
|
@@ -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,13 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.limitMin4D = void 0;
|
|
4
|
+
const magnitude_4d_js_1 = require("./magnitude-4d.js");
|
|
5
|
+
/**
|
|
6
|
+
* Limits the minimum magnitude of a 4D vector.
|
|
7
|
+
* @param {ArrayVector4D} xyzw - Vector as `[x, y, z, w]`
|
|
8
|
+
* @param {number} min - Minimum magnitude
|
|
9
|
+
* @param {number} [m] - Optional current magnitude (default: `magnitude4D(xyzw)`)
|
|
10
|
+
* @returns {ArrayVector4D} Vector with limited magnitude
|
|
11
|
+
*/
|
|
12
|
+
const limitMin4D = (xyzw, min, m = (0, magnitude_4d_js_1.magnitude4D)(xyzw)) => m < min ? [(xyzw[0] / m) * min, (xyzw[1] / m) * min, (xyzw[2] / m) * min, (xyzw[3] / m) * min] : xyzw;
|
|
13
|
+
exports.limitMin4D = limitMin4D;
|
|
@@ -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,14 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.lookAt4D = void 0;
|
|
4
|
+
const magnitude_4d_js_1 = require("./magnitude-4d.js");
|
|
5
|
+
/**
|
|
6
|
+
* Makes a 4D vector point towards another vector.
|
|
7
|
+
* @param {ArrayVector4D} xyzw1 - First vector as `[x, y, z, w]`
|
|
8
|
+
* @param {ArrayVector4D} xyzw2 - Second vector as `[x, y, z, w]` (target to look at)
|
|
9
|
+
* @param {number} [m1] - Optional current magnitude of the first vector (default: `magnitude4D(xyzw1)`)
|
|
10
|
+
* @param {number} [m2] - Optional current magnitude of the second vector (default: `magnitude4D(xyzw2)`)
|
|
11
|
+
* @returns {number} Vector pointing at the target with the magnitude of xyzw1
|
|
12
|
+
*/
|
|
13
|
+
const lookAt4D = (xyzw1, xyzw2, m1 = (0, magnitude_4d_js_1.magnitude4D)(xyzw1), m2 = (0, magnitude_4d_js_1.magnitude4D)(xyzw2)) => [(xyzw2[0] / m2) * m1, (xyzw2[1] / m2) * m1, (xyzw2[2] / m2) * m1, (xyzw2[3] / m2) * m1];
|
|
14
|
+
exports.lookAt4D = lookAt4D;
|
|
@@ -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,10 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.magnitude4D = void 0;
|
|
4
|
+
/**
|
|
5
|
+
* Calculates the magnitude (length) of a 4D vector.
|
|
6
|
+
* @param {ArrayVector4D} xyzw - Vector as `[x, y, z, w]`
|
|
7
|
+
* @returns {number} The magnitude
|
|
8
|
+
*/
|
|
9
|
+
const magnitude4D = (xyzw) => Math.sqrt(xyzw[0] ** 2 + xyzw[1] ** 2 + xyzw[2] ** 2 + xyzw[3] ** 2);
|
|
10
|
+
exports.magnitude4D = magnitude4D;
|
|
@@ -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,11 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.magnitudeSq4D = void 0;
|
|
4
|
+
/**
|
|
5
|
+
* Calculates the squared magnitude of a 4D vector.
|
|
6
|
+
* Faster than magnitude for comparisons.
|
|
7
|
+
* @param {ArrayVector4D} xyzw - Vector as `[x, y, z, w]`
|
|
8
|
+
* @returns {number} The squared magnitude
|
|
9
|
+
*/
|
|
10
|
+
const magnitudeSq4D = (xyzw) => xyzw[0] ** 2 + xyzw[1] ** 2 + xyzw[2] ** 2 + xyzw[3] ** 2;
|
|
11
|
+
exports.magnitudeSq4D = magnitudeSq4D;
|
|
@@ -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,16 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.multiply4D = void 0;
|
|
4
|
+
/**
|
|
5
|
+
* Multiplies two 4D vectors component-wise.
|
|
6
|
+
* @param {ArrayVector4D} xyzw1 - First vector as `[x, y, z, w]`
|
|
7
|
+
* @param {ArrayVector4D} xyzw2 - Second vector as `[x, y, z, w]`
|
|
8
|
+
* @returns {ArrayVector4D} The multiplied vector
|
|
9
|
+
*/
|
|
10
|
+
const multiply4D = (xyzw1, xyzw2) => [
|
|
11
|
+
xyzw1[0] * xyzw2[0],
|
|
12
|
+
xyzw1[1] * xyzw2[1],
|
|
13
|
+
xyzw1[2] * xyzw2[2],
|
|
14
|
+
xyzw1[3] * xyzw2[3],
|
|
15
|
+
];
|
|
16
|
+
exports.multiply4D = multiply4D;
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.negate4D = void 0;
|
|
4
|
+
/**
|
|
5
|
+
* Negates a 4D vector.
|
|
6
|
+
* @param {ArrayVector4D} xyzw - Vector as `[x, y, z, w]`
|
|
7
|
+
* @returns {ArrayVector4D} The negated vector
|
|
8
|
+
*/
|
|
9
|
+
const negate4D = (xyzw) => [-xyzw[0], -xyzw[1], -xyzw[2], -xyzw[3]];
|
|
10
|
+
exports.negate4D = negate4D;
|
|
@@ -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,17 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.normalize4D = void 0;
|
|
4
|
+
const magnitude_4d_js_1 = require("./magnitude-4d.js");
|
|
5
|
+
/**
|
|
6
|
+
* Normalizes a 4D vector to unit length.
|
|
7
|
+
* @param {ArrayVector4D} xyzw - Vector as `[x, y, z, w]`
|
|
8
|
+
* @param {number} [m] - Optional current magnitude (default: `magnitude4D(xyzw)`)
|
|
9
|
+
* @returns {ArrayVector4D} The normalized vector
|
|
10
|
+
*/
|
|
11
|
+
const normalize4D = (xyzw, m = (0, magnitude_4d_js_1.magnitude4D)(xyzw)) => [
|
|
12
|
+
xyzw[0] / m,
|
|
13
|
+
xyzw[1] / m,
|
|
14
|
+
xyzw[2] / m,
|
|
15
|
+
xyzw[3] / m,
|
|
16
|
+
];
|
|
17
|
+
exports.normalize4D = normalize4D;
|
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.one4D = void 0;
|
|
4
|
+
/**
|
|
5
|
+
* Creates a 4D vector with all components set to 1.
|
|
6
|
+
* @returns {ArrayVector4D} A vector `[1, 1, 1, 1]`
|
|
7
|
+
*/
|
|
8
|
+
const one4D = () => [1, 1, 1, 1];
|
|
9
|
+
exports.one4D = one4D;
|
|
@@ -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,18 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.project4D = void 0;
|
|
4
|
+
const dot_4d_js_1 = require("./dot-4d.js");
|
|
5
|
+
const magnitude_4d_js_1 = require("./magnitude-4d.js");
|
|
6
|
+
/**
|
|
7
|
+
* Projects one 4D vector onto another.
|
|
8
|
+
* @param {ArrayVector4D} xyzw1 - First vector as `[x, y, z, w]`
|
|
9
|
+
* @param {ArrayVector4D} xyzw2 - Second vector as `[x, y, z, w]` to project onto
|
|
10
|
+
* @param {number} [m1] - Optional current magnitude (default: `magnitude4D(xyzw1)`)
|
|
11
|
+
* @param {number} [m2] - Optional current magnitude (default: `magnitude4D(xyzw2)`)
|
|
12
|
+
* @returns {ArrayVector4D} The projected vector
|
|
13
|
+
*/
|
|
14
|
+
const project4D = (xyzw1, xyzw2, m1 = (0, magnitude_4d_js_1.magnitude4D)(xyzw1), m2 = (0, magnitude_4d_js_1.magnitude4D)(xyzw2)) => {
|
|
15
|
+
const f = m1 * Math.cos(Math.acos((0, dot_4d_js_1.dot4D)(xyzw1, xyzw2) / (m1 * m2)));
|
|
16
|
+
return [(xyzw2[0] / m2) * f, (xyzw2[1] / m2) * f, (xyzw2[2] / m2) * f, (xyzw2[3] / m2) * f];
|
|
17
|
+
};
|
|
18
|
+
exports.project4D = project4D;
|
|
@@ -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,21 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.random4D = void 0;
|
|
4
|
+
const { sqrt, log, sin, cos, PI } = Math;
|
|
5
|
+
/**
|
|
6
|
+
* Creates a random unit 4D vector.
|
|
7
|
+
* @param {() => number} random - A function that returns a random number between 0 and 1 (default: `Math.random`)
|
|
8
|
+
* @returns {ArrayVector4D} A random unit vector
|
|
9
|
+
*/
|
|
10
|
+
const random4D = (random = Math.random) => {
|
|
11
|
+
// 1. Generate four numbers from a Normal Distribution (Box-Muller transform)
|
|
12
|
+
const x = sqrt(-2 * log(random())) * cos(2 * PI * random());
|
|
13
|
+
const y = sqrt(-2 * log(random())) * sin(2 * PI * random());
|
|
14
|
+
const z = sqrt(-2 * log(random())) * cos(2 * PI * random());
|
|
15
|
+
const w = sqrt(-2 * log(random())) * sin(2 * PI * random());
|
|
16
|
+
// 2. Calculate the current length
|
|
17
|
+
const length = sqrt(x * x + y * y + z * z + w * w);
|
|
18
|
+
// 3. Divide by length to make it a unit vector
|
|
19
|
+
return [x / length, y / length, z / length, w / length];
|
|
20
|
+
};
|
|
21
|
+
exports.random4D = random4D;
|
|
@@ -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,21 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.reflect4D = void 0;
|
|
4
|
+
const dot_4d_js_1 = require("./dot-4d.js");
|
|
5
|
+
/**
|
|
6
|
+
* Reflects a 4D vector across a normal vector.
|
|
7
|
+
* The normal vector should be normalized (unit length).
|
|
8
|
+
* @param {ArrayVector4D} xyzw - Vector as `[x, y, z, w]`
|
|
9
|
+
* @param {ArrayVector4D} normal - Normal vector (must be normalized)
|
|
10
|
+
* @returns {ArrayVector4D} The reflected vector
|
|
11
|
+
*/
|
|
12
|
+
const reflect4D = (xyzw, normal) => {
|
|
13
|
+
const dot = (0, dot_4d_js_1.dot4D)(xyzw, normal);
|
|
14
|
+
return [
|
|
15
|
+
xyzw[0] - 2 * dot * normal[0],
|
|
16
|
+
xyzw[1] - 2 * dot * normal[1],
|
|
17
|
+
xyzw[2] - 2 * dot * normal[2],
|
|
18
|
+
xyzw[3] - 2 * dot * normal[3],
|
|
19
|
+
];
|
|
20
|
+
};
|
|
21
|
+
exports.reflect4D = reflect4D;
|
|
@@ -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,18 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.setMagnitude4D = void 0;
|
|
4
|
+
const magnitude_4d_js_1 = require("./magnitude-4d.js");
|
|
5
|
+
/**
|
|
6
|
+
* Sets the magnitude of a 4D vector while maintaining its direction.
|
|
7
|
+
* @param {ArrayVector4D} xyzw - Vector as `[x, y, z, w]`
|
|
8
|
+
* @param {number} newMag - The new magnitude
|
|
9
|
+
* @param {number} [m] - Optional current magnitude (default: `magnitude4D(xyzw)`)
|
|
10
|
+
* @returns {ArrayVector4D} Vector with the new magnitude
|
|
11
|
+
*/
|
|
12
|
+
const setMagnitude4D = (xyzw, newMag, m = (0, magnitude_4d_js_1.magnitude4D)(xyzw)) => [
|
|
13
|
+
(xyzw[0] / m) * newMag,
|
|
14
|
+
(xyzw[1] / m) * newMag,
|
|
15
|
+
(xyzw[2] / m) * newMag,
|
|
16
|
+
(xyzw[3] / m) * newMag,
|
|
17
|
+
];
|
|
18
|
+
exports.setMagnitude4D = setMagnitude4D;
|
|
@@ -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,16 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.subtract4D = void 0;
|
|
4
|
+
/**
|
|
5
|
+
* Subtracts two 4D vectors.
|
|
6
|
+
* @param {ArrayVector4D} xyzw1 - First vector as `[x, y, z, w]`
|
|
7
|
+
* @param {ArrayVector4D} xyzw2 - Second vector as `[x, y, z, w]`
|
|
8
|
+
* @returns {ArrayVector4D} The difference of the vectors
|
|
9
|
+
*/
|
|
10
|
+
const subtract4D = (xyzw1, xyzw2) => [
|
|
11
|
+
xyzw1[0] - xyzw2[0],
|
|
12
|
+
xyzw1[1] - xyzw2[1],
|
|
13
|
+
xyzw1[2] - xyzw2[2],
|
|
14
|
+
xyzw1[3] - xyzw2[3],
|
|
15
|
+
];
|
|
16
|
+
exports.subtract4D = subtract4D;
|
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.zero4D = void 0;
|
|
4
|
+
/**
|
|
5
|
+
* Creates a zero 4D vector.
|
|
6
|
+
* @returns {ArrayVector4D} A zero vector `[0, 0, 0, 0]`
|
|
7
|
+
*/
|
|
8
|
+
const zero4D = () => [0, 0, 0, 0];
|
|
9
|
+
exports.zero4D = zero4D;
|