@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,9 @@
|
|
|
1
|
+
import type { ArrayVector2D } from "./types.js";
|
|
2
|
+
/**
|
|
3
|
+
* Limits the maximum magnitude of a 2D vector.
|
|
4
|
+
* @param {ArrayVector2D} xy - Vector as `[x, y]`
|
|
5
|
+
* @param {number} min - Minimum magnitude
|
|
6
|
+
* @param {number} [m] - Optional current magnitude (default: `magnitude2D(xy)`)
|
|
7
|
+
* @returns {ArrayVector2D} The limited vector
|
|
8
|
+
*/
|
|
9
|
+
export declare const limitMin2D: (xy: ArrayVector2D, min: number, m?: number) => ArrayVector2D;
|
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
import { magnitude2D } from "./magnitude-2d.js";
|
|
2
|
+
/**
|
|
3
|
+
* Limits the maximum magnitude of a 2D vector.
|
|
4
|
+
* @param {ArrayVector2D} xy - Vector as `[x, y]`
|
|
5
|
+
* @param {number} min - Minimum magnitude
|
|
6
|
+
* @param {number} [m] - Optional current magnitude (default: `magnitude2D(xy)`)
|
|
7
|
+
* @returns {ArrayVector2D} The limited vector
|
|
8
|
+
*/
|
|
9
|
+
export const limitMin2D = (xy, min, m = magnitude2D(xy)) => m < min ? [(xy[0] / m) * min, (xy[1] / m) * min] : xy;
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
import type { ArrayVector2D } from "./types.js";
|
|
2
|
+
/**
|
|
3
|
+
* Calculates the 2D vector angle of a vector pointing at another.
|
|
4
|
+
* @param {ArrayVector2D} xy1 - First vector as `[x, y]`
|
|
5
|
+
* @param {ArrayVector2D} xy2 - Second vector as `[x, y]` (target to look at)
|
|
6
|
+
* @param {number} [m1] - Optional current magnitude of the first vector (default: magnitude2D(xy1))
|
|
7
|
+
* @param {number} [m2] - Optional current magnitude of the second vector (default: magnitude2D(xy2))
|
|
8
|
+
* @returns {ArrayVector2D} Vector pointing at the target with the magnitude of xy1
|
|
9
|
+
*/
|
|
10
|
+
export declare const lookAt2D: (xy1: ArrayVector2D, xy2: ArrayVector2D, m1?: number, m2?: number) => ArrayVector2D;
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
import { magnitude2D } from "./magnitude-2d.js";
|
|
2
|
+
/**
|
|
3
|
+
* Calculates the 2D vector angle of a vector pointing at another.
|
|
4
|
+
* @param {ArrayVector2D} xy1 - First vector as `[x, y]`
|
|
5
|
+
* @param {ArrayVector2D} xy2 - Second vector as `[x, y]` (target to look at)
|
|
6
|
+
* @param {number} [m1] - Optional current magnitude of the first vector (default: magnitude2D(xy1))
|
|
7
|
+
* @param {number} [m2] - Optional current magnitude of the second vector (default: magnitude2D(xy2))
|
|
8
|
+
* @returns {ArrayVector2D} Vector pointing at the target with the magnitude of xy1
|
|
9
|
+
*/
|
|
10
|
+
export const lookAt2D = (xy1, xy2, m1 = magnitude2D(xy1), m2 = magnitude2D(xy2)) => [(xy2[0] / m2) * m1, (xy2[1] / m2) * m1];
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
import type { ArrayVector2D } from "./types.js";
|
|
2
|
+
/**
|
|
3
|
+
* Calculates the magnitude of a 2D vector.
|
|
4
|
+
* @param {ArrayVector2D} xy - Vector as `[x, y]`
|
|
5
|
+
* @returns {number} Magnitude of the vector
|
|
6
|
+
*/
|
|
7
|
+
export declare const magnitude2D: (xy: ArrayVector2D) => number;
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
import type { ArrayVector2D } from "./types.js";
|
|
2
|
+
/**
|
|
3
|
+
* Calculate the squared magnitude of a 2D vector.
|
|
4
|
+
* @param {ArrayVector2D} xy - Vector as `[x, y]`
|
|
5
|
+
* @returns {number} Squared magnitude
|
|
6
|
+
*/
|
|
7
|
+
export declare const magnitudeSq2D: (xy: ArrayVector2D) => number;
|
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
import type { ArrayVector2D } from "./types.js";
|
|
2
|
+
/**
|
|
3
|
+
* Multiplies one 2D vector with another component-wise.
|
|
4
|
+
* @param {ArrayVector2D} xy1 - First vector as `[x, y]`
|
|
5
|
+
* @param {ArrayVector2D} xy2 - Second vector as `[x, y]`
|
|
6
|
+
* @returns {ArrayVector2D} The multiplied vector
|
|
7
|
+
*/
|
|
8
|
+
export declare const multiply2D: (xy1: ArrayVector2D, xy2: ArrayVector2D) => ArrayVector2D;
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Multiplies one 2D vector with another component-wise.
|
|
3
|
+
* @param {ArrayVector2D} xy1 - First vector as `[x, y]`
|
|
4
|
+
* @param {ArrayVector2D} xy2 - Second vector as `[x, y]`
|
|
5
|
+
* @returns {ArrayVector2D} The multiplied vector
|
|
6
|
+
*/
|
|
7
|
+
export const multiply2D = (xy1, xy2) => [xy1[0] * xy2[0], xy1[1] * xy2[1]];
|
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
import type { ArrayVector2D } from "./types.js";
|
|
2
|
+
/**
|
|
3
|
+
* Normalize a 2D vector.
|
|
4
|
+
* @param {ArrayVector2D} xy - Vector as `[x, y]`
|
|
5
|
+
* @param {number} [m] - Optional current magnitude (default: `magnitude2D(xy)`)
|
|
6
|
+
* @returns {ArrayVector2D} The normalized vector
|
|
7
|
+
*/
|
|
8
|
+
export declare const normalize2D: (xy: ArrayVector2D, m?: number) => ArrayVector2D;
|
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
import { magnitude2D } from "./magnitude-2d.js";
|
|
2
|
+
/**
|
|
3
|
+
* Normalize a 2D vector.
|
|
4
|
+
* @param {ArrayVector2D} xy - Vector as `[x, y]`
|
|
5
|
+
* @param {number} [m] - Optional current magnitude (default: `magnitude2D(xy)`)
|
|
6
|
+
* @returns {ArrayVector2D} The normalized vector
|
|
7
|
+
*/
|
|
8
|
+
export const normalize2D = (xy, m = magnitude2D(xy)) => m === 0 ? [0, 0] : [xy[0] / m, xy[1] / m];
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
import type { ArrayVector2D } from "./types.js";
|
|
2
|
+
/**
|
|
3
|
+
* Projects one 2D vector onto another.
|
|
4
|
+
* @param {ArrayVector2D} xy1 - Vector to project
|
|
5
|
+
* @param {ArrayVector2D} xy2 - Vector to project onto
|
|
6
|
+
* @param {number} [m1] - Optional magnitude of the first vector (default: `magnitude2D(xy1)`)
|
|
7
|
+
* @param {number} [m2] - Optional magnitude of the second vector (default: `magnitude2D(xy2)`)
|
|
8
|
+
* @returns {ArrayVector2D} The projected vector
|
|
9
|
+
*/
|
|
10
|
+
export declare const project2D: (xy1: ArrayVector2D, xy2: ArrayVector2D, m1?: number, m2?: number) => ArrayVector2D;
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
import { magnitude2D } from "./magnitude-2d.js";
|
|
2
|
+
/**
|
|
3
|
+
* Projects one 2D vector onto another.
|
|
4
|
+
* @param {ArrayVector2D} xy1 - Vector to project
|
|
5
|
+
* @param {ArrayVector2D} xy2 - Vector to project onto
|
|
6
|
+
* @param {number} [m1] - Optional magnitude of the first vector (default: `magnitude2D(xy1)`)
|
|
7
|
+
* @param {number} [m2] - Optional magnitude of the second vector (default: `magnitude2D(xy2)`)
|
|
8
|
+
* @returns {ArrayVector2D} The projected vector
|
|
9
|
+
*/
|
|
10
|
+
export const project2D = (xy1, xy2, m1 = magnitude2D(xy1), m2 = magnitude2D(xy2)) => {
|
|
11
|
+
const f = m1 * Math.cos(Math.atan2(xy1[0] * xy2[1] - xy1[1] * xy2[0], xy1[0] * xy2[0] + xy1[1] * xy2[1]));
|
|
12
|
+
return [(xy2[0] / m2) * f, (xy2[1] / m2) * f];
|
|
13
|
+
};
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
import type { ArrayVector2D } from "./types.js";
|
|
2
|
+
/**
|
|
3
|
+
* Creates a random unit 2D vector.
|
|
4
|
+
* @param {() => void} random - A function that returns a random number between 0 and 1 (default: `Math.random`)
|
|
5
|
+
* @returns {ArrayVector2D} Random unit vector
|
|
6
|
+
*/
|
|
7
|
+
export declare const random2D: (random?: () => number) => ArrayVector2D;
|
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Creates a random unit 2D vector.
|
|
3
|
+
* @param {() => void} random - A function that returns a random number between 0 and 1 (default: `Math.random`)
|
|
4
|
+
* @returns {ArrayVector2D} Random unit vector
|
|
5
|
+
*/
|
|
6
|
+
export const random2D = (random = Math.random) => {
|
|
7
|
+
const phi = random() * Math.PI * 2;
|
|
8
|
+
return [Math.cos(phi), Math.sin(phi)];
|
|
9
|
+
};
|
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
import type { ArrayVector2D } from "./types.js";
|
|
2
|
+
/**
|
|
3
|
+
* Reflects the vector across a normal vector.
|
|
4
|
+
* The normal vector should be normalized (unit length).
|
|
5
|
+
* @param {ArrayVector2D} xy - Vector as `[x, y]` to reflect
|
|
6
|
+
* @param {ArrayVector2D} normal - Normal vector to reflect across (must be normalized)
|
|
7
|
+
* @returns {ArrayVector2D} The reflected vector
|
|
8
|
+
*/
|
|
9
|
+
export declare const reflect2D: (xy: ArrayVector2D, normal: ArrayVector2D) => ArrayVector2D;
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
import { dot2D } from "./dot-2d.js";
|
|
2
|
+
/**
|
|
3
|
+
* Reflects the vector across a normal vector.
|
|
4
|
+
* The normal vector should be normalized (unit length).
|
|
5
|
+
* @param {ArrayVector2D} xy - Vector as `[x, y]` to reflect
|
|
6
|
+
* @param {ArrayVector2D} normal - Normal vector to reflect across (must be normalized)
|
|
7
|
+
* @returns {ArrayVector2D} The reflected vector
|
|
8
|
+
*/
|
|
9
|
+
export const reflect2D = (xy, normal) => {
|
|
10
|
+
const dot = dot2D(xy, normal);
|
|
11
|
+
return [xy[0] - 2 * dot * normal[0], xy[1] - 2 * dot * normal[1]];
|
|
12
|
+
};
|
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
import type { ArrayVector2D } from "./types.js";
|
|
2
|
+
/**
|
|
3
|
+
* Rotates a 2D point around an arbitrary axis point
|
|
4
|
+
* @param {ArrayVector2D} xy - Point to rotate
|
|
5
|
+
* @param {number} phi - Rotation angle in radians
|
|
6
|
+
* @param {ArrayVector2D} axis - Rotation axis point (default: `[0, 0]`)
|
|
7
|
+
* @returns {ArrayVector2D} The rotated vector
|
|
8
|
+
*/
|
|
9
|
+
export declare const rotate2D: (xy: ArrayVector2D, phi: number, axis?: ArrayVector2D) => ArrayVector2D;
|
|
@@ -0,0 +1,23 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Rotates a 2D point around an arbitrary axis point
|
|
3
|
+
* @param {ArrayVector2D} xy - Point to rotate
|
|
4
|
+
* @param {number} phi - Rotation angle in radians
|
|
5
|
+
* @param {ArrayVector2D} axis - Rotation axis point (default: `[0, 0]`)
|
|
6
|
+
* @returns {ArrayVector2D} The rotated vector
|
|
7
|
+
*/
|
|
8
|
+
export const rotate2D = (xy, phi, axis = [0, 0]) => {
|
|
9
|
+
const cos = Math.cos(phi);
|
|
10
|
+
const sin = Math.sin(phi);
|
|
11
|
+
// No need to translate if axis is [0, 0]
|
|
12
|
+
if (axis[0] === 0 && axis[1] === 0) {
|
|
13
|
+
return [xy[0] * cos - xy[1] * sin, xy[0] * sin + xy[1] * cos];
|
|
14
|
+
}
|
|
15
|
+
// Translate point to origin (relative to axis)
|
|
16
|
+
const translatedX = xy[0] - axis[0];
|
|
17
|
+
const translatedY = xy[1] - axis[1];
|
|
18
|
+
// Rotate around origin
|
|
19
|
+
const rotatedX = translatedX * cos - translatedY * sin;
|
|
20
|
+
const rotatedY = translatedX * sin + translatedY * cos;
|
|
21
|
+
// Translate back
|
|
22
|
+
return [rotatedX + axis[0], rotatedY + axis[1]];
|
|
23
|
+
};
|
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
import type { ArrayVector2D } from "./types.js";
|
|
2
|
+
/**
|
|
3
|
+
* Sets the magnitude (length) of a 2D vector, maintaining its direction.
|
|
4
|
+
* @param {ArrayVector2D} xy - Vector as `[x, y]`
|
|
5
|
+
* @param {number} newMag - New magnitude
|
|
6
|
+
* @param {number} [m] - Optional current magnitude (default: `magnitude2D(xy)`)
|
|
7
|
+
* @returns {ArrayVector2D} The adjusted vector
|
|
8
|
+
*/
|
|
9
|
+
export declare const setMagnitude2D: (xy: ArrayVector2D, newMag: number, m?: number) => ArrayVector2D;
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
import { magnitude2D } from "./magnitude-2d.js";
|
|
2
|
+
/**
|
|
3
|
+
* Sets the magnitude (length) of a 2D vector, maintaining its direction.
|
|
4
|
+
* @param {ArrayVector2D} xy - Vector as `[x, y]`
|
|
5
|
+
* @param {number} newMag - New magnitude
|
|
6
|
+
* @param {number} [m] - Optional current magnitude (default: `magnitude2D(xy)`)
|
|
7
|
+
* @returns {ArrayVector2D} The adjusted vector
|
|
8
|
+
*/
|
|
9
|
+
export const setMagnitude2D = (xy, newMag, m = magnitude2D(xy)) => [
|
|
10
|
+
(xy[0] / m) * newMag,
|
|
11
|
+
(xy[1] / m) * newMag,
|
|
12
|
+
];
|
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
import type { ArrayVector2D } from "./types.js";
|
|
2
|
+
/**
|
|
3
|
+
* Subtracts a 2D vector from another.
|
|
4
|
+
* @param {ArrayVector2D} xy1 - First vector as `[x, y]`
|
|
5
|
+
* @param {ArrayVector2D} xy2 - Second vector as `[x, y]`
|
|
6
|
+
* @returns {ArrayVector2D} The difference between vectors
|
|
7
|
+
*/
|
|
8
|
+
export declare const subtract2D: (xy1: ArrayVector2D, xy2: ArrayVector2D) => ArrayVector2D;
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Subtracts a 2D vector from another.
|
|
3
|
+
* @param {ArrayVector2D} xy1 - First vector as `[x, y]`
|
|
4
|
+
* @param {ArrayVector2D} xy2 - Second vector as `[x, y]`
|
|
5
|
+
* @returns {ArrayVector2D} The difference between vectors
|
|
6
|
+
*/
|
|
7
|
+
export const subtract2D = (xy1, xy2) => [xy1[0] - xy2[0], xy1[1] - xy2[1]];
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export {};
|
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
import type { ArrayVector3D } from "./types";
|
|
2
|
+
/**
|
|
3
|
+
* Adds two 3D vectors.
|
|
4
|
+
* @param {ArrayVector3D} xyz1 - First vector as `[x, y, z]` as [x, y, z]
|
|
5
|
+
* @param {ArrayVector3D} xyz2 - Second vector as `[x, y, z]` as [x, y, z]
|
|
6
|
+
* @returns {ArrayVector3D} The sum of the vectors
|
|
7
|
+
*/
|
|
8
|
+
export declare const add3D: (xyz1: ArrayVector3D, xyz2: ArrayVector3D) => ArrayVector3D;
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Adds two 3D vectors.
|
|
3
|
+
* @param {ArrayVector3D} xyz1 - First vector as `[x, y, z]` as [x, y, z]
|
|
4
|
+
* @param {ArrayVector3D} xyz2 - Second vector as `[x, y, z]` as [x, y, z]
|
|
5
|
+
* @returns {ArrayVector3D} The sum of the vectors
|
|
6
|
+
*/
|
|
7
|
+
export const add3D = (xyz1, xyz2) => [
|
|
8
|
+
xyz1[0] + xyz2[0],
|
|
9
|
+
xyz1[1] + xyz2[1],
|
|
10
|
+
xyz1[2] + xyz2[2],
|
|
11
|
+
];
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
import type { ArrayVector3D } from "./types";
|
|
2
|
+
/**
|
|
3
|
+
* Calculates the angle between two 3D vectors.
|
|
4
|
+
* @param {ArrayVector3D} xyz1 - First vector as `[x, y, z]`
|
|
5
|
+
* @param {ArrayVector3D} xyz2 - Second vector as `[x, y, z]`
|
|
6
|
+
* @param {number} [m1] - Optional first vector magnitude (default: `magnitude3D(xyz1)`)
|
|
7
|
+
* @param {number} [m2] - Optional second vector magnitude (default: `magnitude3D(xyz2)`)
|
|
8
|
+
* @returns {number} Angle between the vectors in radians
|
|
9
|
+
*/
|
|
10
|
+
export declare const angleBetween3D: (xyz1: ArrayVector3D, xyz2: ArrayVector3D, m1?: number, m2?: number) => number;
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
import { magnitude3D } from "./magnitude-3d";
|
|
2
|
+
/**
|
|
3
|
+
* Calculates the angle between two 3D vectors.
|
|
4
|
+
* @param {ArrayVector3D} xyz1 - First vector as `[x, y, z]`
|
|
5
|
+
* @param {ArrayVector3D} xyz2 - Second vector as `[x, y, z]`
|
|
6
|
+
* @param {number} [m1] - Optional first vector magnitude (default: `magnitude3D(xyz1)`)
|
|
7
|
+
* @param {number} [m2] - Optional second vector magnitude (default: `magnitude3D(xyz2)`)
|
|
8
|
+
* @returns {number} Angle between the vectors in radians
|
|
9
|
+
*/
|
|
10
|
+
export const angleBetween3D = (xyz1, xyz2, m1 = magnitude3D(xyz1), m2 = magnitude3D(xyz2)) => Math.acos((xyz1[0] * xyz2[0] + xyz1[1] * xyz2[1] + xyz1[2] * xyz2[2]) / (m1 * m2));
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
import type { ArrayVector3D } from "./types";
|
|
2
|
+
/**
|
|
3
|
+
* Gets the angle between a 3D vector and the positive x-axis in radians.
|
|
4
|
+
* @param {ArrayVector3D} xyz - Vector as `[x, y, z]`
|
|
5
|
+
* @returns {number} Angle in radians, always in the range [0, 2π)
|
|
6
|
+
*/
|
|
7
|
+
export declare const angleX3D: (xyz: ArrayVector3D) => number;
|
|
@@ -0,0 +1,6 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Gets the angle between a 3D vector and the positive x-axis in radians.
|
|
3
|
+
* @param {ArrayVector3D} xyz - Vector as `[x, y, z]`
|
|
4
|
+
* @returns {number} Angle in radians, always in the range [0, 2π)
|
|
5
|
+
*/
|
|
6
|
+
export const angleX3D = (xyz) => Math.atan2(Math.sqrt(xyz[1] ** 2 + xyz[2] ** 2), xyz[0]);
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
import type { ArrayVector3D } from "./types";
|
|
2
|
+
/**
|
|
3
|
+
* Gets the angle between a 3D vector and the positive y-axis in radians.
|
|
4
|
+
* @param {ArrayVector3D} xyz - Vector as `[x, y, z]`
|
|
5
|
+
* @returns {number} Angle in radians, always in the range [0, 2π)
|
|
6
|
+
*/
|
|
7
|
+
export declare const angleY3D: (xyz: ArrayVector3D) => number;
|
|
@@ -0,0 +1,6 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Gets the angle between a 3D vector and the positive y-axis in radians.
|
|
3
|
+
* @param {ArrayVector3D} xyz - Vector as `[x, y, z]`
|
|
4
|
+
* @returns {number} Angle in radians, always in the range [0, 2π)
|
|
5
|
+
*/
|
|
6
|
+
export const angleY3D = (xyz) => Math.atan2(Math.sqrt(xyz[2] ** 2 + xyz[0] ** 2), xyz[1]);
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
import type { ArrayVector3D } from "./types";
|
|
2
|
+
/**
|
|
3
|
+
* Gets the angle between a 3D vector and the positive z-axis in radians.
|
|
4
|
+
* @param {ArrayVector3D} xyz - Vector as `[x, y, z]`
|
|
5
|
+
* @returns {number} Angle in radians, always in the range [0, 2π)
|
|
6
|
+
*/
|
|
7
|
+
export declare const angleZ3D: (xyz: ArrayVector3D) => number;
|
|
@@ -0,0 +1,6 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Gets the angle between a 3D vector and the positive z-axis in radians.
|
|
3
|
+
* @param {ArrayVector3D} xyz - Vector as `[x, y, z]`
|
|
4
|
+
* @returns {number} Angle in radians, always in the range [0, 2π)
|
|
5
|
+
*/
|
|
6
|
+
export const angleZ3D = (xyz) => Math.atan2(Math.sqrt(xyz[0] ** 2 + xyz[1] ** 2), xyz[2]);
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
import type { ArrayVector3D } from "./types";
|
|
2
|
+
/**
|
|
3
|
+
* Clamps the magnitude of a vector between min and max.
|
|
4
|
+
* @param {ArrayVector3D} xyz - Vector as `[x, y, z]`
|
|
5
|
+
* @param {number} min - Minimum magnitude
|
|
6
|
+
* @param {number} max - Maximum magnitude
|
|
7
|
+
* @param {number} [m] - Optional current magnitude (default: `magnitude3D(xyz)`)
|
|
8
|
+
* @returns {ArrayVector3D} The clamped vector
|
|
9
|
+
*/
|
|
10
|
+
export declare const clamp3D: (xyz: ArrayVector3D, min: number, max: number, m?: number) => ArrayVector3D;
|
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
import { magnitude3D } from "./magnitude-3d";
|
|
2
|
+
/**
|
|
3
|
+
* Clamps the magnitude of a vector between min and max.
|
|
4
|
+
* @param {ArrayVector3D} xyz - Vector as `[x, y, z]`
|
|
5
|
+
* @param {number} min - Minimum magnitude
|
|
6
|
+
* @param {number} max - Maximum magnitude
|
|
7
|
+
* @param {number} [m] - Optional current magnitude (default: `magnitude3D(xyz)`)
|
|
8
|
+
* @returns {ArrayVector3D} The clamped vector
|
|
9
|
+
*/
|
|
10
|
+
export const clamp3D = (xyz, min, max, m = magnitude3D(xyz)) => m > max
|
|
11
|
+
? [(xyz[0] / m) * max, (xyz[1] / m) * max, (xyz[2] / m) * max]
|
|
12
|
+
: m < min
|
|
13
|
+
? [(xyz[0] / m) * min, (xyz[1] / m) * min, (xyz[2] / m) * min]
|
|
14
|
+
: xyz;
|
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
import type { ArrayVector3D } from "./types.js";
|
|
2
|
+
/**
|
|
3
|
+
* Calculates the cross product of two 3D vectors.
|
|
4
|
+
* @param {ArrayVector3D} xyz1 - First vector as `[x, y, z]`
|
|
5
|
+
* @param {ArrayVector3D} xyz2 - Second vector as `[x, y, z]`
|
|
6
|
+
* @returns {ArrayVector3D} The cross product
|
|
7
|
+
*/
|
|
8
|
+
export declare const cross3D: (xyz1: ArrayVector3D, xyz2: ArrayVector3D) => ArrayVector3D;
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Calculates the cross product of two 3D vectors.
|
|
3
|
+
* @param {ArrayVector3D} xyz1 - First vector as `[x, y, z]`
|
|
4
|
+
* @param {ArrayVector3D} xyz2 - Second vector as `[x, y, z]`
|
|
5
|
+
* @returns {ArrayVector3D} The cross product
|
|
6
|
+
*/
|
|
7
|
+
export const cross3D = (xyz1, xyz2) => [
|
|
8
|
+
xyz1[1] * xyz2[2] - xyz1[2] * xyz2[1],
|
|
9
|
+
xyz1[2] * xyz2[0] - xyz1[0] * xyz2[2],
|
|
10
|
+
xyz1[0] * xyz2[1] - xyz1[1] * xyz2[0],
|
|
11
|
+
];
|
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
import type { ArrayVector3D } from "./types";
|
|
2
|
+
/**
|
|
3
|
+
* Calculates the Euclidean distance between two 3D vectors.
|
|
4
|
+
* @param {ArrayVector3D} xyz1 - First vector as `[x, y, z]`
|
|
5
|
+
* @param {ArrayVector3D} xyz2 - Second vector as `[x, y, z]`
|
|
6
|
+
* @returns {number} Euclidian distance
|
|
7
|
+
*/
|
|
8
|
+
export declare const distance3D: (xyz1: ArrayVector3D, xyz2: ArrayVector3D) => number;
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Calculates the Euclidean distance between two 3D vectors.
|
|
3
|
+
* @param {ArrayVector3D} xyz1 - First vector as `[x, y, z]`
|
|
4
|
+
* @param {ArrayVector3D} xyz2 - Second vector as `[x, y, z]`
|
|
5
|
+
* @returns {number} Euclidian distance
|
|
6
|
+
*/
|
|
7
|
+
export const distance3D = (xyz1, xyz2) => Math.sqrt((xyz1[0] - xyz2[0]) ** 2 + (xyz1[1] - xyz2[1]) ** 2 + (xyz1[2] - xyz2[2]) ** 2);
|
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
import type { ArrayVector3D } from "./types";
|
|
2
|
+
/**
|
|
3
|
+
* Calculates the Chebyshev distance between two 3D vectors.
|
|
4
|
+
* @param {ArrayVector3D} xyz1 - First vector as `[x, y, z]` as
|
|
5
|
+
* @param {ArrayVector3D} xyz2 - Second vector as `[x, y, z]` as
|
|
6
|
+
* @returns {number} Chebyshev distance
|
|
7
|
+
*/
|
|
8
|
+
export declare const distanceChebyshev3D: (xyz1: ArrayVector3D, xyz2: ArrayVector3D) => number;
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Calculates the Chebyshev distance between two 3D vectors.
|
|
3
|
+
* @param {ArrayVector3D} xyz1 - First vector as `[x, y, z]` as
|
|
4
|
+
* @param {ArrayVector3D} xyz2 - Second vector as `[x, y, z]` as
|
|
5
|
+
* @returns {number} Chebyshev distance
|
|
6
|
+
*/
|
|
7
|
+
export const distanceChebyshev3D = (xyz1, xyz2) => {
|
|
8
|
+
const absX = Math.abs(xyz1[0] - xyz2[0]);
|
|
9
|
+
const absY = Math.abs(xyz1[1] - xyz2[1]);
|
|
10
|
+
const absZ = Math.abs(xyz1[2] - xyz2[2]);
|
|
11
|
+
return absX >= absY && absX >= absZ ? absX : absY >= absZ ? absY : absZ;
|
|
12
|
+
};
|
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
import type { ArrayVector3D } from "./types";
|
|
2
|
+
/**
|
|
3
|
+
* Calculates the Manhattan distance between two 3D vectors.
|
|
4
|
+
* @param {ArrayVector3D} xyz1 - First vector as `[x, y, z]`
|
|
5
|
+
* @param {ArrayVector3D} xyz2 - Second vector as `[x, y, z]`
|
|
6
|
+
* @returns {number} Manhattan distance
|
|
7
|
+
*/
|
|
8
|
+
export declare const distanceManhattan3D: (xyz1: ArrayVector3D, xyz2: ArrayVector3D) => number;
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Calculates the Manhattan distance between two 3D vectors.
|
|
3
|
+
* @param {ArrayVector3D} xyz1 - First vector as `[x, y, z]`
|
|
4
|
+
* @param {ArrayVector3D} xyz2 - Second vector as `[x, y, z]`
|
|
5
|
+
* @returns {number} Manhattan distance
|
|
6
|
+
*/
|
|
7
|
+
export const distanceManhattan3D = (xyz1, xyz2) => Math.abs(xyz1[0] - xyz2[0]) + Math.abs(xyz1[1] - xyz2[1]) + Math.abs(xyz1[2] - xyz2[2]);
|
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
import type { ArrayVector3D } from "./types";
|
|
2
|
+
/**
|
|
3
|
+
* Calculates the Minkowski distance between two 3D vectors.
|
|
4
|
+
* @param {ArrayVector3D} xyz1 - First vector as `[x, y, z]`
|
|
5
|
+
* @param {ArrayVector3D} xyz2 - Second vector as `[x, y, z]`
|
|
6
|
+
* @param {number} p - Order of the Minkowski distance
|
|
7
|
+
* @returns {number} Minkowski distance
|
|
8
|
+
*/
|
|
9
|
+
export declare const distanceMinkowski3D: (xyz1: ArrayVector3D, xyz2: ArrayVector3D, p: number) => number;
|
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Calculates the Minkowski distance between two 3D vectors.
|
|
3
|
+
* @param {ArrayVector3D} xyz1 - First vector as `[x, y, z]`
|
|
4
|
+
* @param {ArrayVector3D} xyz2 - Second vector as `[x, y, z]`
|
|
5
|
+
* @param {number} p - Order of the Minkowski distance
|
|
6
|
+
* @returns {number} Minkowski distance
|
|
7
|
+
*/
|
|
8
|
+
export const distanceMinkowski3D = (xyz1, xyz2, p) => (Math.abs(xyz1[0] - xyz2[0]) ** p + Math.abs(xyz1[1] - xyz2[1]) ** p + Math.abs(xyz1[2] - xyz2[2]) ** p) ** (1 / p);
|
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
import type { ArrayVector3D } from "./types";
|
|
2
|
+
/**
|
|
3
|
+
* Calculates the squared Euclidean distance between two 3D vectors.
|
|
4
|
+
* @param {ArrayVector3D} xyz1 - First vector as `[x, y, z]`
|
|
5
|
+
* @param {ArrayVector3D} xyz2 - Second vector as `[x, y, z]`
|
|
6
|
+
* @returns {number} Squared Euclidian distance
|
|
7
|
+
*/
|
|
8
|
+
export declare const distanceSq3D: (xyz1: ArrayVector3D, xyz2: ArrayVector3D) => number;
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Calculates the squared Euclidean distance between two 3D vectors.
|
|
3
|
+
* @param {ArrayVector3D} xyz1 - First vector as `[x, y, z]`
|
|
4
|
+
* @param {ArrayVector3D} xyz2 - Second vector as `[x, y, z]`
|
|
5
|
+
* @returns {number} Squared Euclidian distance
|
|
6
|
+
*/
|
|
7
|
+
export const distanceSq3D = (xyz1, xyz2) => (xyz1[0] - xyz2[0]) ** 2 + (xyz1[1] - xyz2[1]) ** 2 + (xyz1[2] - xyz2[2]) ** 2;
|
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
import type { ArrayVector3D } from "./types.js";
|
|
2
|
+
/**
|
|
3
|
+
* Divides one 3D vector with another.
|
|
4
|
+
* @param {ArrayVector3D} xyz1 - First vector as `[x, y, z]`
|
|
5
|
+
* @param {ArrayVector3D} xyz2 - Second vector as `[x, y, z]`
|
|
6
|
+
* @returns {ArrayVector3D} The divided vector
|
|
7
|
+
*/
|
|
8
|
+
export declare const divide3D: (xyz1: ArrayVector3D, xyz2: ArrayVector3D) => ArrayVector3D;
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Divides one 3D vector with another.
|
|
3
|
+
* @param {ArrayVector3D} xyz1 - First vector as `[x, y, z]`
|
|
4
|
+
* @param {ArrayVector3D} xyz2 - Second vector as `[x, y, z]`
|
|
5
|
+
* @returns {ArrayVector3D} The divided vector
|
|
6
|
+
*/
|
|
7
|
+
export const divide3D = (xyz1, xyz2) => [
|
|
8
|
+
xyz2[0] === 0 ? Number.POSITIVE_INFINITY : xyz1[0] / xyz2[0],
|
|
9
|
+
xyz2[1] === 0 ? Number.POSITIVE_INFINITY : xyz1[1] / xyz2[1],
|
|
10
|
+
xyz2[2] === 0 ? Number.POSITIVE_INFINITY : xyz1[2] / xyz2[2],
|
|
11
|
+
];
|
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
import type { ArrayVector3D } from "./types";
|
|
2
|
+
/**
|
|
3
|
+
* Calculates the dot product of two 3D vectors.
|
|
4
|
+
* @param {ArrayVector3D} xyz1 - First vector as `[x, y, z]`
|
|
5
|
+
* @param {ArrayVector3D} xyz2 - Second vector as `[x, y, z]`
|
|
6
|
+
* @returns {number} Dot product
|
|
7
|
+
*/
|
|
8
|
+
export declare const dot3D: (xyz1: ArrayVector3D, xyz2: ArrayVector3D) => number;
|