@fimbul-works/vec 1.1.0 → 2.0.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +208 -95
- package/dist/cjs/2d/add-2d.d.ts +8 -0
- package/dist/cjs/2d/add-2d.js +11 -0
- package/dist/cjs/2d/angle-between-2d.d.ts +8 -0
- package/dist/cjs/2d/angle-between-2d.js +11 -0
- package/dist/cjs/2d/angle-x-2d.d.ts +7 -0
- package/dist/cjs/2d/angle-x-2d.js +10 -0
- package/dist/cjs/2d/angle-y-2d.d.ts +7 -0
- package/dist/cjs/2d/angle-y-2d.js +10 -0
- package/dist/cjs/2d/clamp-2d.d.ts +10 -0
- package/dist/cjs/2d/clamp-2d.js +14 -0
- package/dist/cjs/2d/clone-2d.d.ts +7 -0
- package/dist/cjs/2d/clone-2d.js +10 -0
- package/dist/cjs/2d/cross-2d.d.ts +8 -0
- package/dist/cjs/2d/cross-2d.js +11 -0
- package/dist/cjs/2d/distance-2d.d.ts +8 -0
- package/dist/cjs/2d/distance-2d.js +11 -0
- package/dist/cjs/2d/distance-chebyshev-2d.d.ts +8 -0
- package/dist/cjs/2d/distance-chebyshev-2d.js +15 -0
- package/dist/cjs/2d/distance-manhattan-2d.d.ts +8 -0
- package/dist/cjs/2d/distance-manhattan-2d.js +11 -0
- package/dist/cjs/2d/distance-minkowski-2d.d.ts +9 -0
- package/dist/cjs/2d/distance-minkowski-2d.js +12 -0
- package/dist/cjs/2d/distance-sq-2d.d.ts +8 -0
- package/dist/cjs/2d/distance-sq-2d.js +11 -0
- package/dist/cjs/2d/divide-2d.d.ts +8 -0
- package/dist/cjs/2d/divide-2d.js +14 -0
- package/dist/cjs/2d/dot-2d.d.ts +8 -0
- package/dist/cjs/2d/dot-2d.js +11 -0
- package/dist/cjs/2d/from-angle-x-2d.d.ts +8 -0
- package/dist/cjs/2d/from-angle-x-2d.js +14 -0
- package/dist/cjs/2d/from-angle-y-2d.d.ts +8 -0
- package/dist/cjs/2d/from-angle-y-2d.js +14 -0
- package/dist/cjs/2d/from-object-2d.d.ts +10 -0
- package/dist/cjs/2d/from-object-2d.js +10 -0
- package/dist/cjs/2d/from-polar-coords-2d.d.ts +8 -0
- package/dist/cjs/2d/from-polar-coords-2d.js +11 -0
- package/dist/cjs/2d/immutable-2d.d.ts +7 -0
- package/dist/cjs/2d/immutable-2d.js +10 -0
- package/dist/cjs/2d/index.d.ts +47 -0
- package/dist/cjs/2d/index.js +63 -0
- package/dist/cjs/2d/is-equal-2d.d.ts +8 -0
- package/dist/cjs/2d/is-equal-2d.js +11 -0
- package/dist/cjs/2d/is-equal-approx-2d.d.ts +9 -0
- package/dist/cjs/2d/is-equal-approx-2d.js +12 -0
- package/dist/cjs/2d/is-infinite-2d.d.ts +7 -0
- package/dist/cjs/2d/is-infinite-2d.js +13 -0
- package/dist/cjs/2d/is-nan-2d.d.ts +7 -0
- package/dist/cjs/2d/is-nan-2d.js +10 -0
- package/dist/cjs/2d/is-opposite-2d.d.ts +8 -0
- package/dist/cjs/2d/is-opposite-2d.js +11 -0
- package/dist/cjs/2d/is-zero-2d.d.ts +7 -0
- package/dist/cjs/2d/is-zero-2d.js +10 -0
- package/dist/cjs/2d/lerp-2d.d.ts +9 -0
- package/dist/cjs/2d/lerp-2d.js +15 -0
- package/dist/cjs/2d/limit-max-2d.d.ts +9 -0
- package/dist/cjs/2d/limit-max-2d.js +13 -0
- package/dist/cjs/2d/limit-min-2d.d.ts +9 -0
- package/dist/cjs/2d/limit-min-2d.js +13 -0
- package/dist/cjs/2d/look-at-2d.d.ts +10 -0
- package/dist/cjs/2d/look-at-2d.js +14 -0
- package/dist/cjs/2d/magnitude-2d.d.ts +7 -0
- package/dist/cjs/2d/magnitude-2d.js +10 -0
- package/dist/cjs/2d/magnitude-sq-2d.d.ts +7 -0
- package/dist/cjs/2d/magnitude-sq-2d.js +10 -0
- package/dist/cjs/2d/multiply-2d.d.ts +8 -0
- package/dist/cjs/2d/multiply-2d.js +11 -0
- package/dist/cjs/2d/negate-2d.d.ts +7 -0
- package/dist/cjs/2d/negate-2d.js +10 -0
- package/dist/cjs/2d/normalize-2d.d.ts +8 -0
- package/dist/cjs/2d/normalize-2d.js +12 -0
- package/dist/cjs/2d/one-2d.d.ts +6 -0
- package/dist/cjs/2d/one-2d.js +9 -0
- package/dist/cjs/2d/project-2d.d.ts +10 -0
- package/dist/cjs/2d/project-2d.js +17 -0
- package/dist/cjs/2d/random-2d.d.ts +7 -0
- package/dist/cjs/2d/random-2d.js +13 -0
- package/dist/cjs/2d/reflect-2d.d.ts +9 -0
- package/dist/cjs/2d/reflect-2d.js +16 -0
- package/dist/cjs/2d/rotate-2d.d.ts +9 -0
- package/dist/cjs/2d/rotate-2d.js +27 -0
- package/dist/cjs/2d/set-magnitude-2d.d.ts +9 -0
- package/dist/cjs/2d/set-magnitude-2d.js +16 -0
- package/dist/cjs/2d/subtract-2d.d.ts +8 -0
- package/dist/cjs/2d/subtract-2d.js +11 -0
- package/dist/cjs/2d/types.d.ts +4 -0
- package/dist/cjs/2d/types.js +2 -0
- package/dist/cjs/2d/zero-2d.d.ts +6 -0
- package/dist/cjs/2d/zero-2d.js +9 -0
- package/dist/cjs/3d/add-3d.d.ts +8 -0
- package/dist/cjs/3d/add-3d.js +15 -0
- package/dist/cjs/3d/angle-between-3d.d.ts +10 -0
- package/dist/cjs/3d/angle-between-3d.js +14 -0
- package/dist/cjs/3d/angle-x-3d.d.ts +7 -0
- package/dist/cjs/3d/angle-x-3d.js +10 -0
- package/dist/cjs/3d/angle-y-3d.d.ts +7 -0
- package/dist/cjs/3d/angle-y-3d.js +10 -0
- package/dist/cjs/3d/angle-z-3d.d.ts +7 -0
- package/dist/cjs/3d/angle-z-3d.js +10 -0
- package/dist/cjs/3d/clamp-3d.d.ts +10 -0
- package/dist/cjs/3d/clamp-3d.js +18 -0
- package/dist/cjs/3d/clone-3d.d.ts +7 -0
- package/dist/cjs/3d/clone-3d.js +10 -0
- package/dist/cjs/3d/cross-3d.d.ts +8 -0
- package/dist/cjs/3d/cross-3d.js +15 -0
- package/dist/cjs/3d/distance-3d.d.ts +8 -0
- package/dist/cjs/3d/distance-3d.js +11 -0
- package/dist/cjs/3d/distance-chebyshev-3d.d.ts +8 -0
- package/dist/cjs/3d/distance-chebyshev-3d.js +16 -0
- package/dist/cjs/3d/distance-manhattan-3d.d.ts +8 -0
- package/dist/cjs/3d/distance-manhattan-3d.js +11 -0
- package/dist/cjs/3d/distance-minkowski-3d.d.ts +9 -0
- package/dist/cjs/3d/distance-minkowski-3d.js +12 -0
- package/dist/cjs/3d/distance-sq-3d.d.ts +8 -0
- package/dist/cjs/3d/distance-sq-3d.js +11 -0
- package/dist/cjs/3d/divide-3d.d.ts +8 -0
- package/dist/cjs/3d/divide-3d.js +15 -0
- package/dist/cjs/3d/dot-3d.d.ts +8 -0
- package/dist/cjs/3d/dot-3d.js +11 -0
- package/dist/cjs/3d/from-cylindrical-coords-3d.d.ts +9 -0
- package/dist/cjs/3d/from-cylindrical-coords-3d.js +16 -0
- package/dist/cjs/3d/from-object-3d.d.ts +11 -0
- package/dist/cjs/3d/from-object-3d.js +10 -0
- package/dist/cjs/3d/from-spherical-coords-3d.d.ts +9 -0
- package/dist/cjs/3d/from-spherical-coords-3d.js +16 -0
- package/dist/cjs/3d/immutable-3d.d.ts +7 -0
- package/dist/cjs/3d/immutable-3d.js +10 -0
- package/dist/cjs/3d/index.d.ts +49 -0
- package/dist/cjs/3d/index.js +65 -0
- package/dist/cjs/3d/is-equal-3d.d.ts +8 -0
- package/dist/cjs/3d/is-equal-3d.js +11 -0
- package/dist/cjs/3d/is-equal-approx-3d.d.ts +9 -0
- package/dist/cjs/3d/is-equal-approx-3d.js +14 -0
- package/dist/cjs/3d/is-infinite-3d.d.ts +7 -0
- package/dist/cjs/3d/is-infinite-3d.js +15 -0
- package/dist/cjs/3d/is-nan-3d.d.ts +7 -0
- package/dist/cjs/3d/is-nan-3d.js +10 -0
- package/dist/cjs/3d/is-opposite-3d.d.ts +8 -0
- package/dist/cjs/3d/is-opposite-3d.js +11 -0
- package/dist/cjs/3d/is-zero-3d.d.ts +7 -0
- package/dist/cjs/3d/is-zero-3d.js +10 -0
- package/dist/cjs/3d/lerp-3d.d.ts +9 -0
- package/dist/cjs/3d/lerp-3d.js +16 -0
- package/dist/cjs/3d/limit-max-3d.d.ts +9 -0
- package/dist/cjs/3d/limit-max-3d.js +13 -0
- package/dist/cjs/3d/limit-min-3d.d.ts +9 -0
- package/dist/cjs/3d/limit-min-3d.js +13 -0
- package/dist/cjs/3d/look-at-3d.d.ts +10 -0
- package/dist/cjs/3d/look-at-3d.js +14 -0
- package/dist/cjs/3d/magnitude-3d.d.ts +7 -0
- package/dist/cjs/3d/magnitude-3d.js +10 -0
- package/dist/cjs/3d/magnitude-sq-3d.d.ts +7 -0
- package/dist/cjs/3d/magnitude-sq-3d.js +10 -0
- package/dist/cjs/3d/multiply-3d.d.ts +8 -0
- package/dist/cjs/3d/multiply-3d.js +15 -0
- package/dist/cjs/3d/negate-3d.d.ts +7 -0
- package/dist/cjs/3d/negate-3d.js +10 -0
- package/dist/cjs/3d/normalize-3d.d.ts +8 -0
- package/dist/cjs/3d/normalize-3d.js +12 -0
- package/dist/cjs/3d/one-3d.d.ts +6 -0
- package/dist/cjs/3d/one-3d.js +9 -0
- package/dist/cjs/3d/project-3d.d.ts +10 -0
- package/dist/cjs/3d/project-3d.js +17 -0
- package/dist/cjs/3d/random-3d.d.ts +7 -0
- package/dist/cjs/3d/random-3d.js +11 -0
- package/dist/cjs/3d/reflect-3d.d.ts +9 -0
- package/dist/cjs/3d/reflect-3d.js +16 -0
- package/dist/cjs/3d/rotate-x-3d.d.ts +9 -0
- package/dist/cjs/3d/rotate-x-3d.js +26 -0
- package/dist/cjs/3d/rotate-y-3d.d.ts +9 -0
- package/dist/cjs/3d/rotate-y-3d.js +26 -0
- package/dist/cjs/3d/rotate-z-3d.d.ts +9 -0
- package/dist/cjs/3d/rotate-z-3d.js +26 -0
- package/dist/cjs/3d/set-magnitude-3d.d.ts +9 -0
- package/dist/cjs/3d/set-magnitude-3d.js +13 -0
- package/dist/cjs/3d/subtract-3d.d.ts +8 -0
- package/dist/cjs/3d/subtract-3d.js +15 -0
- package/dist/cjs/3d/types.d.ts +4 -0
- package/dist/cjs/3d/types.js +2 -0
- package/dist/cjs/3d/zero-3d.d.ts +6 -0
- package/dist/cjs/3d/zero-3d.js +9 -0
- package/dist/cjs/4d/add-4d.d.ts +8 -0
- package/dist/cjs/4d/add-4d.js +16 -0
- package/dist/cjs/4d/angle-between-4d.d.ts +10 -0
- package/dist/cjs/4d/angle-between-4d.js +15 -0
- package/dist/cjs/4d/angle-w-4d.d.ts +7 -0
- package/dist/cjs/4d/angle-w-4d.js +10 -0
- package/dist/cjs/4d/angle-x-4d.d.ts +7 -0
- package/dist/cjs/4d/angle-x-4d.js +10 -0
- package/dist/cjs/4d/angle-y-4d.d.ts +7 -0
- package/dist/cjs/4d/angle-y-4d.js +10 -0
- package/dist/cjs/4d/angle-z-4d.d.ts +7 -0
- package/dist/cjs/4d/angle-z-4d.js +10 -0
- package/dist/cjs/4d/clamp-4d.d.ts +10 -0
- package/dist/cjs/4d/clamp-4d.js +18 -0
- package/dist/cjs/4d/clone-4d.d.ts +7 -0
- package/dist/cjs/4d/clone-4d.js +10 -0
- package/dist/cjs/4d/distance-4d.d.ts +8 -0
- package/dist/cjs/4d/distance-4d.js +11 -0
- package/dist/cjs/4d/distance-chebyshev-4d.d.ts +8 -0
- package/dist/cjs/4d/distance-chebyshev-4d.js +23 -0
- package/dist/cjs/4d/distance-manhattan-4d.d.ts +8 -0
- package/dist/cjs/4d/distance-manhattan-4d.js +14 -0
- package/dist/cjs/4d/distance-minkowski-4d.d.ts +9 -0
- package/dist/cjs/4d/distance-minkowski-4d.js +16 -0
- package/dist/cjs/4d/distance-sq-4d.d.ts +9 -0
- package/dist/cjs/4d/distance-sq-4d.js +12 -0
- package/dist/cjs/4d/divide-4d.d.ts +8 -0
- package/dist/cjs/4d/divide-4d.js +16 -0
- package/dist/cjs/4d/dot-4d.d.ts +8 -0
- package/dist/cjs/4d/dot-4d.js +11 -0
- package/dist/cjs/4d/from-object-4d.d.ts +12 -0
- package/dist/cjs/4d/from-object-4d.js +15 -0
- package/dist/cjs/4d/immutable-4d.d.ts +7 -0
- package/dist/cjs/4d/immutable-4d.js +10 -0
- package/dist/cjs/4d/index.d.ts +44 -0
- package/dist/cjs/4d/index.js +60 -0
- package/dist/cjs/4d/is-equal-4d.d.ts +8 -0
- package/dist/cjs/4d/is-equal-4d.js +11 -0
- package/dist/cjs/4d/is-equal-approx-4d.d.ts +9 -0
- package/dist/cjs/4d/is-equal-approx-4d.js +15 -0
- package/dist/cjs/4d/is-infinite-4d.d.ts +7 -0
- package/dist/cjs/4d/is-infinite-4d.js +17 -0
- package/dist/cjs/4d/is-nan-4d.d.ts +7 -0
- package/dist/cjs/4d/is-nan-4d.js +10 -0
- package/dist/cjs/4d/is-opposite-4d.d.ts +8 -0
- package/dist/cjs/4d/is-opposite-4d.js +11 -0
- package/dist/cjs/4d/is-zero-4d.d.ts +7 -0
- package/dist/cjs/4d/is-zero-4d.js +10 -0
- package/dist/cjs/4d/lerp-4d.d.ts +9 -0
- package/dist/cjs/4d/lerp-4d.js +17 -0
- package/dist/cjs/4d/limit-max-4d.d.ts +9 -0
- package/dist/cjs/4d/limit-max-4d.js +13 -0
- package/dist/cjs/4d/limit-min-4d.d.ts +9 -0
- package/dist/cjs/4d/limit-min-4d.js +13 -0
- package/dist/cjs/4d/look-at-4d.d.ts +10 -0
- package/dist/cjs/4d/look-at-4d.js +14 -0
- package/dist/cjs/4d/magnitude-4d.d.ts +7 -0
- package/dist/cjs/4d/magnitude-4d.js +10 -0
- package/dist/cjs/4d/magnitude-sq-4d.d.ts +8 -0
- package/dist/cjs/4d/magnitude-sq-4d.js +11 -0
- package/dist/cjs/4d/multiply-4d.d.ts +8 -0
- package/dist/cjs/4d/multiply-4d.js +16 -0
- package/dist/cjs/4d/negate-4d.d.ts +7 -0
- package/dist/cjs/4d/negate-4d.js +10 -0
- package/dist/cjs/4d/normalize-4d.d.ts +8 -0
- package/dist/cjs/4d/normalize-4d.js +17 -0
- package/dist/cjs/4d/one-4d.d.ts +6 -0
- package/dist/cjs/4d/one-4d.js +9 -0
- package/dist/cjs/4d/project-4d.d.ts +10 -0
- package/dist/cjs/4d/project-4d.js +18 -0
- package/dist/cjs/4d/random-4d.d.ts +7 -0
- package/dist/cjs/4d/random-4d.js +21 -0
- package/dist/cjs/4d/reflect-4d.d.ts +9 -0
- package/dist/cjs/4d/reflect-4d.js +21 -0
- package/dist/cjs/4d/set-magnitude-4d.d.ts +9 -0
- package/dist/cjs/4d/set-magnitude-4d.js +18 -0
- package/dist/cjs/4d/subtract-4d.d.ts +8 -0
- package/dist/cjs/4d/subtract-4d.js +16 -0
- package/dist/cjs/4d/types.d.ts +4 -0
- package/dist/cjs/4d/types.js +2 -0
- package/dist/cjs/4d/zero-4d.d.ts +6 -0
- package/dist/cjs/4d/zero-4d.js +9 -0
- package/dist/cjs/index.d.ts +4 -0
- package/dist/cjs/index.js +4 -0
- package/dist/cjs/package.json +1 -1
- package/dist/cjs/slerp.d.ts +21 -0
- package/dist/cjs/slerp.js +28 -0
- package/dist/cjs/vec2.d.ts +10 -4
- package/dist/cjs/vec2.js +13 -6
- package/dist/cjs/vec3.d.ts +121 -106
- package/dist/cjs/vec3.js +127 -129
- package/dist/cjs/vec4.d.ts +118 -100
- package/dist/cjs/vec4.js +134 -134
- package/dist/esm/2d/add-2d.d.ts +8 -0
- package/dist/esm/2d/add-2d.js +7 -0
- package/dist/esm/2d/angle-between-2d.d.ts +8 -0
- package/dist/esm/2d/angle-between-2d.js +7 -0
- package/dist/esm/2d/angle-x-2d.d.ts +7 -0
- package/dist/esm/2d/angle-x-2d.js +6 -0
- package/dist/esm/2d/angle-y-2d.d.ts +7 -0
- package/dist/esm/2d/angle-y-2d.js +6 -0
- package/dist/esm/2d/clamp-2d.d.ts +10 -0
- package/dist/esm/2d/clamp-2d.js +10 -0
- package/dist/esm/2d/clone-2d.d.ts +7 -0
- package/dist/esm/2d/clone-2d.js +6 -0
- package/dist/esm/2d/cross-2d.d.ts +8 -0
- package/dist/esm/2d/cross-2d.js +7 -0
- package/dist/esm/2d/distance-2d.d.ts +8 -0
- package/dist/esm/2d/distance-2d.js +7 -0
- package/dist/esm/2d/distance-chebyshev-2d.d.ts +8 -0
- package/dist/esm/2d/distance-chebyshev-2d.js +11 -0
- package/dist/esm/2d/distance-manhattan-2d.d.ts +8 -0
- package/dist/esm/2d/distance-manhattan-2d.js +7 -0
- package/dist/esm/2d/distance-minkowski-2d.d.ts +9 -0
- package/dist/esm/2d/distance-minkowski-2d.js +8 -0
- package/dist/esm/2d/distance-sq-2d.d.ts +8 -0
- package/dist/esm/2d/distance-sq-2d.js +7 -0
- package/dist/esm/2d/divide-2d.d.ts +8 -0
- package/dist/esm/2d/divide-2d.js +10 -0
- package/dist/esm/2d/dot-2d.d.ts +8 -0
- package/dist/esm/2d/dot-2d.js +7 -0
- package/dist/esm/2d/from-angle-x-2d.d.ts +8 -0
- package/dist/esm/2d/from-angle-x-2d.js +10 -0
- package/dist/esm/2d/from-angle-y-2d.d.ts +8 -0
- package/dist/esm/2d/from-angle-y-2d.js +10 -0
- package/dist/esm/2d/from-object-2d.d.ts +10 -0
- package/dist/esm/2d/from-object-2d.js +6 -0
- package/dist/esm/2d/from-polar-coords-2d.d.ts +8 -0
- package/dist/esm/2d/from-polar-coords-2d.js +7 -0
- package/dist/esm/2d/immutable-2d.d.ts +7 -0
- package/dist/esm/2d/immutable-2d.js +6 -0
- package/dist/esm/2d/index.d.ts +47 -0
- package/dist/esm/2d/index.js +47 -0
- package/dist/esm/2d/is-equal-2d.d.ts +8 -0
- package/dist/esm/2d/is-equal-2d.js +7 -0
- package/dist/esm/2d/is-equal-approx-2d.d.ts +9 -0
- package/dist/esm/2d/is-equal-approx-2d.js +8 -0
- package/dist/esm/2d/is-infinite-2d.d.ts +7 -0
- package/dist/esm/2d/is-infinite-2d.js +9 -0
- package/dist/esm/2d/is-nan-2d.d.ts +7 -0
- package/dist/esm/2d/is-nan-2d.js +6 -0
- package/dist/esm/2d/is-opposite-2d.d.ts +8 -0
- package/dist/esm/2d/is-opposite-2d.js +7 -0
- package/dist/esm/2d/is-zero-2d.d.ts +7 -0
- package/dist/esm/2d/is-zero-2d.js +6 -0
- package/dist/esm/2d/lerp-2d.d.ts +9 -0
- package/dist/esm/2d/lerp-2d.js +11 -0
- package/dist/esm/2d/limit-max-2d.d.ts +9 -0
- package/dist/esm/2d/limit-max-2d.js +9 -0
- package/dist/esm/2d/limit-min-2d.d.ts +9 -0
- package/dist/esm/2d/limit-min-2d.js +9 -0
- package/dist/esm/2d/look-at-2d.d.ts +10 -0
- package/dist/esm/2d/look-at-2d.js +10 -0
- package/dist/esm/2d/magnitude-2d.d.ts +7 -0
- package/dist/esm/2d/magnitude-2d.js +6 -0
- package/dist/esm/2d/magnitude-sq-2d.d.ts +7 -0
- package/dist/esm/2d/magnitude-sq-2d.js +6 -0
- package/dist/esm/2d/multiply-2d.d.ts +8 -0
- package/dist/esm/2d/multiply-2d.js +7 -0
- package/dist/esm/2d/negate-2d.d.ts +7 -0
- package/dist/esm/2d/negate-2d.js +6 -0
- package/dist/esm/2d/normalize-2d.d.ts +8 -0
- package/dist/esm/2d/normalize-2d.js +8 -0
- package/dist/esm/2d/one-2d.d.ts +6 -0
- package/dist/esm/2d/one-2d.js +5 -0
- package/dist/esm/2d/project-2d.d.ts +10 -0
- package/dist/esm/2d/project-2d.js +13 -0
- package/dist/esm/2d/random-2d.d.ts +7 -0
- package/dist/esm/2d/random-2d.js +9 -0
- package/dist/esm/2d/reflect-2d.d.ts +9 -0
- package/dist/esm/2d/reflect-2d.js +12 -0
- package/dist/esm/2d/rotate-2d.d.ts +9 -0
- package/dist/esm/2d/rotate-2d.js +23 -0
- package/dist/esm/2d/set-magnitude-2d.d.ts +9 -0
- package/dist/esm/2d/set-magnitude-2d.js +12 -0
- package/dist/esm/2d/subtract-2d.d.ts +8 -0
- package/dist/esm/2d/subtract-2d.js +7 -0
- package/dist/esm/2d/types.d.ts +4 -0
- package/dist/esm/2d/types.js +1 -0
- package/dist/esm/2d/zero-2d.d.ts +6 -0
- package/dist/esm/2d/zero-2d.js +5 -0
- package/dist/esm/3d/add-3d.d.ts +8 -0
- package/dist/esm/3d/add-3d.js +11 -0
- package/dist/esm/3d/angle-between-3d.d.ts +10 -0
- package/dist/esm/3d/angle-between-3d.js +10 -0
- package/dist/esm/3d/angle-x-3d.d.ts +7 -0
- package/dist/esm/3d/angle-x-3d.js +6 -0
- package/dist/esm/3d/angle-y-3d.d.ts +7 -0
- package/dist/esm/3d/angle-y-3d.js +6 -0
- package/dist/esm/3d/angle-z-3d.d.ts +7 -0
- package/dist/esm/3d/angle-z-3d.js +6 -0
- package/dist/esm/3d/clamp-3d.d.ts +10 -0
- package/dist/esm/3d/clamp-3d.js +14 -0
- package/dist/esm/3d/clone-3d.d.ts +7 -0
- package/dist/esm/3d/clone-3d.js +6 -0
- package/dist/esm/3d/cross-3d.d.ts +8 -0
- package/dist/esm/3d/cross-3d.js +11 -0
- package/dist/esm/3d/distance-3d.d.ts +8 -0
- package/dist/esm/3d/distance-3d.js +7 -0
- package/dist/esm/3d/distance-chebyshev-3d.d.ts +8 -0
- package/dist/esm/3d/distance-chebyshev-3d.js +12 -0
- package/dist/esm/3d/distance-manhattan-3d.d.ts +8 -0
- package/dist/esm/3d/distance-manhattan-3d.js +7 -0
- package/dist/esm/3d/distance-minkowski-3d.d.ts +9 -0
- package/dist/esm/3d/distance-minkowski-3d.js +8 -0
- package/dist/esm/3d/distance-sq-3d.d.ts +8 -0
- package/dist/esm/3d/distance-sq-3d.js +7 -0
- package/dist/esm/3d/divide-3d.d.ts +8 -0
- package/dist/esm/3d/divide-3d.js +11 -0
- package/dist/esm/3d/dot-3d.d.ts +8 -0
- package/dist/esm/3d/dot-3d.js +7 -0
- package/dist/esm/3d/from-cylindrical-coords-3d.d.ts +9 -0
- package/dist/esm/3d/from-cylindrical-coords-3d.js +12 -0
- package/dist/esm/3d/from-object-3d.d.ts +11 -0
- package/dist/esm/3d/from-object-3d.js +6 -0
- package/dist/esm/3d/from-spherical-coords-3d.d.ts +9 -0
- package/dist/esm/3d/from-spherical-coords-3d.js +12 -0
- package/dist/esm/3d/immutable-3d.d.ts +7 -0
- package/dist/esm/3d/immutable-3d.js +6 -0
- package/dist/esm/3d/index.d.ts +49 -0
- package/dist/esm/3d/index.js +49 -0
- package/dist/esm/3d/is-equal-3d.d.ts +8 -0
- package/dist/esm/3d/is-equal-3d.js +7 -0
- package/dist/esm/3d/is-equal-approx-3d.d.ts +9 -0
- package/dist/esm/3d/is-equal-approx-3d.js +10 -0
- package/dist/esm/3d/is-infinite-3d.d.ts +7 -0
- package/dist/esm/3d/is-infinite-3d.js +11 -0
- package/dist/esm/3d/is-nan-3d.d.ts +7 -0
- package/dist/esm/3d/is-nan-3d.js +6 -0
- package/dist/esm/3d/is-opposite-3d.d.ts +8 -0
- package/dist/esm/3d/is-opposite-3d.js +7 -0
- package/dist/esm/3d/is-zero-3d.d.ts +7 -0
- package/dist/esm/3d/is-zero-3d.js +6 -0
- package/dist/esm/3d/lerp-3d.d.ts +9 -0
- package/dist/esm/3d/lerp-3d.js +12 -0
- package/dist/esm/3d/limit-max-3d.d.ts +9 -0
- package/dist/esm/3d/limit-max-3d.js +9 -0
- package/dist/esm/3d/limit-min-3d.d.ts +9 -0
- package/dist/esm/3d/limit-min-3d.js +9 -0
- package/dist/esm/3d/look-at-3d.d.ts +10 -0
- package/dist/esm/3d/look-at-3d.js +10 -0
- package/dist/esm/3d/magnitude-3d.d.ts +7 -0
- package/dist/esm/3d/magnitude-3d.js +6 -0
- package/dist/esm/3d/magnitude-sq-3d.d.ts +7 -0
- package/dist/esm/3d/magnitude-sq-3d.js +6 -0
- package/dist/esm/3d/multiply-3d.d.ts +8 -0
- package/dist/esm/3d/multiply-3d.js +11 -0
- package/dist/esm/3d/negate-3d.d.ts +7 -0
- package/dist/esm/3d/negate-3d.js +6 -0
- package/dist/esm/3d/normalize-3d.d.ts +8 -0
- package/dist/esm/3d/normalize-3d.js +8 -0
- package/dist/esm/3d/one-3d.d.ts +6 -0
- package/dist/esm/3d/one-3d.js +5 -0
- package/dist/esm/3d/project-3d.d.ts +10 -0
- package/dist/esm/3d/project-3d.js +13 -0
- package/dist/esm/3d/random-3d.d.ts +7 -0
- package/dist/esm/3d/random-3d.js +7 -0
- package/dist/esm/3d/reflect-3d.d.ts +9 -0
- package/dist/esm/3d/reflect-3d.js +12 -0
- package/dist/esm/3d/rotate-x-3d.d.ts +9 -0
- package/dist/esm/3d/rotate-x-3d.js +22 -0
- package/dist/esm/3d/rotate-y-3d.d.ts +9 -0
- package/dist/esm/3d/rotate-y-3d.js +22 -0
- package/dist/esm/3d/rotate-z-3d.d.ts +9 -0
- package/dist/esm/3d/rotate-z-3d.js +22 -0
- package/dist/esm/3d/set-magnitude-3d.d.ts +9 -0
- package/dist/esm/3d/set-magnitude-3d.js +9 -0
- package/dist/esm/3d/subtract-3d.d.ts +8 -0
- package/dist/esm/3d/subtract-3d.js +11 -0
- package/dist/esm/3d/types.d.ts +4 -0
- package/dist/esm/3d/types.js +1 -0
- package/dist/esm/3d/zero-3d.d.ts +6 -0
- package/dist/esm/3d/zero-3d.js +5 -0
- package/dist/esm/4d/add-4d.d.ts +8 -0
- package/dist/esm/4d/add-4d.js +12 -0
- package/dist/esm/4d/angle-between-4d.d.ts +10 -0
- package/dist/esm/4d/angle-between-4d.js +11 -0
- package/dist/esm/4d/angle-w-4d.d.ts +7 -0
- package/dist/esm/4d/angle-w-4d.js +6 -0
- package/dist/esm/4d/angle-x-4d.d.ts +7 -0
- package/dist/esm/4d/angle-x-4d.js +6 -0
- package/dist/esm/4d/angle-y-4d.d.ts +7 -0
- package/dist/esm/4d/angle-y-4d.js +6 -0
- package/dist/esm/4d/angle-z-4d.d.ts +7 -0
- package/dist/esm/4d/angle-z-4d.js +6 -0
- package/dist/esm/4d/clamp-4d.d.ts +10 -0
- package/dist/esm/4d/clamp-4d.js +14 -0
- package/dist/esm/4d/clone-4d.d.ts +7 -0
- package/dist/esm/4d/clone-4d.js +6 -0
- package/dist/esm/4d/distance-4d.d.ts +8 -0
- package/dist/esm/4d/distance-4d.js +7 -0
- package/dist/esm/4d/distance-chebyshev-4d.d.ts +8 -0
- package/dist/esm/4d/distance-chebyshev-4d.js +19 -0
- package/dist/esm/4d/distance-manhattan-4d.d.ts +8 -0
- package/dist/esm/4d/distance-manhattan-4d.js +10 -0
- package/dist/esm/4d/distance-minkowski-4d.d.ts +9 -0
- package/dist/esm/4d/distance-minkowski-4d.js +12 -0
- package/dist/esm/4d/distance-sq-4d.d.ts +9 -0
- package/dist/esm/4d/distance-sq-4d.js +8 -0
- package/dist/esm/4d/divide-4d.d.ts +8 -0
- package/dist/esm/4d/divide-4d.js +12 -0
- package/dist/esm/4d/dot-4d.d.ts +8 -0
- package/dist/esm/4d/dot-4d.js +7 -0
- package/dist/esm/4d/from-object-4d.d.ts +12 -0
- package/dist/esm/4d/from-object-4d.js +11 -0
- package/dist/esm/4d/immutable-4d.d.ts +7 -0
- package/dist/esm/4d/immutable-4d.js +6 -0
- package/dist/esm/4d/index.d.ts +44 -0
- package/dist/esm/4d/index.js +44 -0
- package/dist/esm/4d/is-equal-4d.d.ts +8 -0
- package/dist/esm/4d/is-equal-4d.js +7 -0
- package/dist/esm/4d/is-equal-approx-4d.d.ts +9 -0
- package/dist/esm/4d/is-equal-approx-4d.js +11 -0
- package/dist/esm/4d/is-infinite-4d.d.ts +7 -0
- package/dist/esm/4d/is-infinite-4d.js +13 -0
- package/dist/esm/4d/is-nan-4d.d.ts +7 -0
- package/dist/esm/4d/is-nan-4d.js +6 -0
- package/dist/esm/4d/is-opposite-4d.d.ts +8 -0
- package/dist/esm/4d/is-opposite-4d.js +7 -0
- package/dist/esm/4d/is-zero-4d.d.ts +7 -0
- package/dist/esm/4d/is-zero-4d.js +6 -0
- package/dist/esm/4d/lerp-4d.d.ts +9 -0
- package/dist/esm/4d/lerp-4d.js +13 -0
- package/dist/esm/4d/limit-max-4d.d.ts +9 -0
- package/dist/esm/4d/limit-max-4d.js +9 -0
- package/dist/esm/4d/limit-min-4d.d.ts +9 -0
- package/dist/esm/4d/limit-min-4d.js +9 -0
- package/dist/esm/4d/look-at-4d.d.ts +10 -0
- package/dist/esm/4d/look-at-4d.js +10 -0
- package/dist/esm/4d/magnitude-4d.d.ts +7 -0
- package/dist/esm/4d/magnitude-4d.js +6 -0
- package/dist/esm/4d/magnitude-sq-4d.d.ts +8 -0
- package/dist/esm/4d/magnitude-sq-4d.js +7 -0
- package/dist/esm/4d/multiply-4d.d.ts +8 -0
- package/dist/esm/4d/multiply-4d.js +12 -0
- package/dist/esm/4d/negate-4d.d.ts +7 -0
- package/dist/esm/4d/negate-4d.js +6 -0
- package/dist/esm/4d/normalize-4d.d.ts +8 -0
- package/dist/esm/4d/normalize-4d.js +13 -0
- package/dist/esm/4d/one-4d.d.ts +6 -0
- package/dist/esm/4d/one-4d.js +5 -0
- package/dist/esm/4d/project-4d.d.ts +10 -0
- package/dist/esm/4d/project-4d.js +14 -0
- package/dist/esm/4d/random-4d.d.ts +7 -0
- package/dist/esm/4d/random-4d.js +17 -0
- package/dist/esm/4d/reflect-4d.d.ts +9 -0
- package/dist/esm/4d/reflect-4d.js +17 -0
- package/dist/esm/4d/set-magnitude-4d.d.ts +9 -0
- package/dist/esm/4d/set-magnitude-4d.js +14 -0
- package/dist/esm/4d/subtract-4d.d.ts +8 -0
- package/dist/esm/4d/subtract-4d.js +12 -0
- package/dist/esm/4d/types.d.ts +4 -0
- package/dist/esm/4d/types.js +1 -0
- package/dist/esm/4d/zero-4d.d.ts +6 -0
- package/dist/esm/4d/zero-4d.js +5 -0
- package/dist/esm/index.d.ts +4 -0
- package/dist/esm/index.js +4 -0
- package/dist/esm/slerp.d.ts +21 -0
- package/dist/esm/slerp.js +23 -0
- package/dist/esm/vec2.d.ts +10 -4
- package/dist/esm/vec2.js +13 -6
- package/dist/esm/vec3.d.ts +121 -106
- package/dist/esm/vec3.js +127 -129
- package/dist/esm/vec4.d.ts +118 -100
- package/dist/esm/vec4.js +134 -134
- package/docs/ArrayVector2D.md +1090 -0
- package/docs/ArrayVector3D.md +1162 -0
- package/docs/ArrayVector4D.md +1019 -0
- package/docs/README.md +13 -0
- package/docs/Slerp.md +64 -0
- package/docs/Vec2.md +1827 -0
- package/docs/Vec3.md +2084 -0
- package/docs/Vec4.md +2031 -0
- package/package.json +30 -9
- package/VEC2.md +0 -147
- package/VEC3.md +0 -172
- package/VEC4.md +0 -161
package/dist/cjs/vec4.js
CHANGED
|
@@ -1,7 +1,11 @@
|
|
|
1
1
|
"use strict";
|
|
2
|
+
/**
|
|
3
|
+
* Documentation for 4D Vector class.
|
|
4
|
+
* @module Vec4
|
|
5
|
+
*/
|
|
2
6
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
7
|
exports.Vec4 = void 0;
|
|
4
|
-
const { cos, acos, atan2, sqrt, abs } = Math;
|
|
8
|
+
const { sin, cos, acos, atan2, sqrt, abs, log, PI } = Math;
|
|
5
9
|
/**
|
|
6
10
|
* Represents a 4D vector with various operations.
|
|
7
11
|
*/
|
|
@@ -12,10 +16,11 @@ class Vec4 {
|
|
|
12
16
|
/**
|
|
13
17
|
* Computes and updates the magnitude of the vector.
|
|
14
18
|
* @private
|
|
15
|
-
* @param x - The x-component of the vector.
|
|
16
|
-
* @param y - The y-component of the vector.
|
|
17
|
-
* @param z - The z-component of the vector.
|
|
18
|
-
* @param w - The w-component of the vector.
|
|
19
|
+
* @param {number} x - The x-component of the vector.
|
|
20
|
+
* @param {number} y - The y-component of the vector.
|
|
21
|
+
* @param {number} z - The z-component of the vector.
|
|
22
|
+
* @param {number} w - The w-component of the vector.
|
|
23
|
+
* @returns {void}
|
|
19
24
|
*/
|
|
20
25
|
#computeMagnitude(x = this.#xyzw[0], y = this.#xyzw[1], z = this.#xyzw[2], w = this.#xyzw[3]) {
|
|
21
26
|
if (x !== this.#prevXYZW[0] || y !== this.#prevXYZW[1] || z !== this.#prevXYZW[2] || w !== this.#prevXYZW[3]) {
|
|
@@ -28,10 +33,10 @@ class Vec4 {
|
|
|
28
33
|
}
|
|
29
34
|
/**
|
|
30
35
|
* Creates a new Vec4 instance.
|
|
31
|
-
* @param x - The x-coordinate of the vector.
|
|
32
|
-
* @param y - The y-coordinate of the vector.
|
|
33
|
-
* @param z - The z-coordinate of the vector.
|
|
34
|
-
* @param w - The w-coordinate of the vector.
|
|
36
|
+
* @param {number} x - The x-coordinate of the vector.
|
|
37
|
+
* @param {number} y - The y-coordinate of the vector.
|
|
38
|
+
* @param {number} z - The z-coordinate of the vector.
|
|
39
|
+
* @param {number} w - The w-coordinate of the vector.
|
|
35
40
|
*/
|
|
36
41
|
constructor(x = 0, y = 0, z = 0, w = 0) {
|
|
37
42
|
this.#xyzw[0] = x;
|
|
@@ -42,18 +47,18 @@ class Vec4 {
|
|
|
42
47
|
}
|
|
43
48
|
/**
|
|
44
49
|
* Adds two vectors.
|
|
45
|
-
* @param v - The first vector.
|
|
46
|
-
* @param w - The second vector.
|
|
47
|
-
* @returns A new
|
|
50
|
+
* @param {Vec4} v - The first vector.
|
|
51
|
+
* @param {Vec4} w - The second vector.
|
|
52
|
+
* @returns {Vec4} A new Vec4 instance representing the sum.
|
|
48
53
|
*/
|
|
49
54
|
static add(v, w) {
|
|
50
55
|
return new Vec4(v.#xyzw[0] + w.#xyzw[0], v.#xyzw[1] + w.#xyzw[1], v.#xyzw[2] + w.#xyzw[2], v.#xyzw[3] + w.#xyzw[3]);
|
|
51
56
|
}
|
|
52
57
|
/**
|
|
53
58
|
* Subtracts one vector from another.
|
|
54
|
-
* @param v - The vector to subtract from.
|
|
55
|
-
* @param w - The vector to subtract.
|
|
56
|
-
* @returns A new
|
|
59
|
+
* @param {Vec4} v - The vector to subtract from.
|
|
60
|
+
* @param {Vec4} w - The vector to subtract.
|
|
61
|
+
* @returns {Vec4} A new Vec4 instance representing the difference.
|
|
57
62
|
*/
|
|
58
63
|
static subtract(v, w) {
|
|
59
64
|
return new Vec4(v.#xyzw[0] - w.#xyzw[0], v.#xyzw[1] - w.#xyzw[1], v.#xyzw[2] - w.#xyzw[2], v.#xyzw[3] - w.#xyzw[3]);
|
|
@@ -78,9 +83,9 @@ class Vec4 {
|
|
|
78
83
|
}
|
|
79
84
|
/**
|
|
80
85
|
* Calculates the angle between two vectors.
|
|
81
|
-
* @param v - The first vector.
|
|
82
|
-
* @param w - The second vector.
|
|
83
|
-
* @returns The angle between the vectors in radians.
|
|
86
|
+
* @param {Vec4} v - The first vector.
|
|
87
|
+
* @param {Vec4} w - The second vector.
|
|
88
|
+
* @returns {number} The angle between the vectors in radians.
|
|
84
89
|
*/
|
|
85
90
|
static angleBetween(v, w) {
|
|
86
91
|
return acos((v.#xyzw[0] * w.#xyzw[0] + v.#xyzw[1] * w.#xyzw[1] + v.#xyzw[2] * w.#xyzw[2] + v.#xyzw[3] * w.#xyzw[3]) /
|
|
@@ -88,9 +93,9 @@ class Vec4 {
|
|
|
88
93
|
}
|
|
89
94
|
/**
|
|
90
95
|
* Calculates the Euclidean distance between two vectors.
|
|
91
|
-
* @param v - The first vector.
|
|
92
|
-
* @param w - The second vector.
|
|
93
|
-
* @returns The distance between the vectors.
|
|
96
|
+
* @param {Vec4} v - The first vector.
|
|
97
|
+
* @param {Vec4} w - The second vector.
|
|
98
|
+
* @returns {number} The distance between the vectors.
|
|
94
99
|
*/
|
|
95
100
|
static distance(v, w) {
|
|
96
101
|
return sqrt((v.#xyzw[0] - w.#xyzw[0]) ** 2 +
|
|
@@ -100,9 +105,9 @@ class Vec4 {
|
|
|
100
105
|
}
|
|
101
106
|
/**
|
|
102
107
|
* Calculates the Chebyshev distance between two vectors.
|
|
103
|
-
* @param v - The first vector.
|
|
104
|
-
* @param w - The second vector.
|
|
105
|
-
* @returns The Chebyshev distance between the vectors.
|
|
108
|
+
* @param {Vec4} v - The first vector.
|
|
109
|
+
* @param {Vec4} w - The second vector.
|
|
110
|
+
* @returns {number} The Chebyshev distance between the vectors.
|
|
106
111
|
*/
|
|
107
112
|
static distanceChebyshev(v, w) {
|
|
108
113
|
const absX = abs(v.#xyzw[0] - w.#xyzw[0]);
|
|
@@ -119,9 +124,9 @@ class Vec4 {
|
|
|
119
124
|
}
|
|
120
125
|
/**
|
|
121
126
|
* Calculates the Manhattan distance between two vectors.
|
|
122
|
-
* @param v - The first vector.
|
|
123
|
-
* @param w - The second vector.
|
|
124
|
-
* @returns The Manhattan distance between the vectors.
|
|
127
|
+
* @param {Vec4} v - The first vector.
|
|
128
|
+
* @param {Vec4} w - The second vector.
|
|
129
|
+
* @returns {number} The Manhattan distance between the vectors.
|
|
125
130
|
*/
|
|
126
131
|
static distanceManhattan(v, w) {
|
|
127
132
|
return (abs(v.#xyzw[0] - w.#xyzw[0]) +
|
|
@@ -131,10 +136,10 @@ class Vec4 {
|
|
|
131
136
|
}
|
|
132
137
|
/**
|
|
133
138
|
* Calculates the Minkowski distance between two vectors.
|
|
134
|
-
* @param v - The first vector.
|
|
135
|
-
* @param w - The second vector.
|
|
136
|
-
* @param p - The order of the Minkowski distance.
|
|
137
|
-
* @returns The Minkowski distance between the vectors.
|
|
139
|
+
* @param {Vec4} v - The first vector.
|
|
140
|
+
* @param {Vec4} w - The second vector.
|
|
141
|
+
* @param {number} p - The order of the Minkowski distance.
|
|
142
|
+
* @returns {number} The Minkowski distance between the vectors.
|
|
138
143
|
*/
|
|
139
144
|
static distanceMinkowski(v, w, p) {
|
|
140
145
|
return ((abs(v.#xyzw[0] - w.#xyzw[0]) ** p +
|
|
@@ -145,9 +150,9 @@ class Vec4 {
|
|
|
145
150
|
}
|
|
146
151
|
/**
|
|
147
152
|
* Calculates the squared Euclidean distance between two vectors.
|
|
148
|
-
* @param v - The first vector.
|
|
149
|
-
* @param w - The second vector.
|
|
150
|
-
* @returns The squared distance between the vectors.
|
|
153
|
+
* @param {Vec4} v - The first vector.
|
|
154
|
+
* @param {Vec4} w - The second vector.
|
|
155
|
+
* @returns {number} The squared distance between the vectors.
|
|
151
156
|
*/
|
|
152
157
|
static distanceSq(v, w) {
|
|
153
158
|
return ((v.#xyzw[0] - w.#xyzw[0]) ** 2 +
|
|
@@ -157,9 +162,9 @@ class Vec4 {
|
|
|
157
162
|
}
|
|
158
163
|
/**
|
|
159
164
|
* Calculates the dot product of two vectors.
|
|
160
|
-
* @param v - The first vector.
|
|
161
|
-
* @param w - The second vector.
|
|
162
|
-
* @returns The dot product of the two vectors.
|
|
165
|
+
* @param {Vec4} v - The first vector.
|
|
166
|
+
* @param {Vec4} w - The second vector.
|
|
167
|
+
* @returns {number} The dot product of the two vectors.
|
|
163
168
|
*/
|
|
164
169
|
static dot(v, w) {
|
|
165
170
|
return v.#xyzw[0] * w.#xyzw[0] + v.#xyzw[1] * w.#xyzw[1] + v.#xyzw[2] * w.#xyzw[2] + v.#xyzw[3] * w.#xyzw[3];
|
|
@@ -181,9 +186,11 @@ class Vec4 {
|
|
|
181
186
|
}
|
|
182
187
|
/**
|
|
183
188
|
* Creates an immutable Vec4-like object.
|
|
184
|
-
* @param x - The x-coordinate of the vector.
|
|
185
|
-
* @param y - The y-coordinate of the vector.
|
|
186
|
-
* @
|
|
189
|
+
* @param {number} x - The x-coordinate of the vector.
|
|
190
|
+
* @param {number} y - The y-coordinate of the vector.
|
|
191
|
+
* @param {number} z - The z-coordinate of the vector.
|
|
192
|
+
* @param {number} w - The w-coordinate of the vector.
|
|
193
|
+
* @returns {Readonly<{ x: number; y: number; z: number; w: number; xyzw: readonly number[]; r: number; g: number; b: number; a: number; rgba: readonly number[]; magnitude: number; magnitudeSq: number; angleW: number; angleX: number; angleY: number; angleZ: number; isInfinite: boolean; isNaN: boolean; isZero: boolean }>} An immutable object with Vec4-like properties.
|
|
187
194
|
*/
|
|
188
195
|
static immutable(x = 0, y = 0, z = 0, w = 0) {
|
|
189
196
|
const data = new Float64Array(10);
|
|
@@ -272,8 +279,8 @@ class Vec4 {
|
|
|
272
279
|
}
|
|
273
280
|
/**
|
|
274
281
|
* Checks if a vector has infinite components.
|
|
275
|
-
* @param v - The vector to check.
|
|
276
|
-
* @returns True if the vector has infinite components, false otherwise.
|
|
282
|
+
* @param {Vec4} v - The vector to check.
|
|
283
|
+
* @returns {boolean} True if the vector has infinite components, false otherwise.
|
|
277
284
|
*/
|
|
278
285
|
static isInfinite(v) {
|
|
279
286
|
const x = v.#xyzw[0];
|
|
@@ -291,26 +298,26 @@ class Vec4 {
|
|
|
291
298
|
}
|
|
292
299
|
/**
|
|
293
300
|
* Checks if a vector has NaN components.
|
|
294
|
-
* @param v - The vector to check.
|
|
295
|
-
* @returns True if the vector has NaN components, false otherwise.
|
|
301
|
+
* @param {Vec4} v - The vector to check.
|
|
302
|
+
* @returns {boolean} True if the vector has NaN components, false otherwise.
|
|
296
303
|
*/
|
|
297
304
|
static isNaN(v) {
|
|
298
305
|
return Number.isNaN(v.#xyzw[0]) || Number.isNaN(v.#xyzw[1]) || Number.isNaN(v.#xyzw[2]) || Number.isNaN(v.#xyzw[3]);
|
|
299
306
|
}
|
|
300
307
|
/**
|
|
301
308
|
* Checks if a vector is zero.
|
|
302
|
-
* @param v - The vector to check.
|
|
303
|
-
* @returns True if the vector is zero, false otherwise.
|
|
309
|
+
* @param {Vec4} v - The vector to check.
|
|
310
|
+
* @returns {boolean} True if the vector is zero, false otherwise.
|
|
304
311
|
*/
|
|
305
312
|
static isZero(v) {
|
|
306
313
|
return v.#xyzw[0] === 0 && v.#xyzw[1] === 0 && v.#xyzw[2] === 0 && v.#xyzw[3] === 0;
|
|
307
314
|
}
|
|
308
315
|
/**
|
|
309
316
|
* Performs linear interpolation between two vectors.
|
|
310
|
-
* @param v - The first vector.
|
|
311
|
-
* @param w - The second vector.
|
|
312
|
-
* @param t - The interpolation parameter (0 to 1).
|
|
313
|
-
* @returns A new
|
|
317
|
+
* @param {Vec4} v - The first vector.
|
|
318
|
+
* @param {Vec4} w - The second vector.
|
|
319
|
+
* @param {number} t - The interpolation parameter (0 to 1).
|
|
320
|
+
* @returns {Vec4} A new Vec4 instance representing the interpolated vector.
|
|
314
321
|
*/
|
|
315
322
|
static lerp(v, w, t) {
|
|
316
323
|
if (t > 1)
|
|
@@ -325,16 +332,16 @@ class Vec4 {
|
|
|
325
332
|
}
|
|
326
333
|
/**
|
|
327
334
|
* Negates a vector.
|
|
328
|
-
* @param v - The vector to negate.
|
|
329
|
-
* @returns A new
|
|
335
|
+
* @param {Vec4} v - The vector to negate.
|
|
336
|
+
* @returns {Vec4} A new Vec4 instance representing the negated vector.
|
|
330
337
|
*/
|
|
331
338
|
static negate(v) {
|
|
332
339
|
return new Vec4(-v.#xyzw[0], -v.#xyzw[1], -v.#xyzw[2], -v.#xyzw[3]);
|
|
333
340
|
}
|
|
334
341
|
/**
|
|
335
342
|
* Normalizes a vector.
|
|
336
|
-
* @param v - The vector to normalize.
|
|
337
|
-
* @returns A new
|
|
343
|
+
* @param {Vec4} v - The vector to normalize.
|
|
344
|
+
* @returns {Vec4} A new Vec4 instance representing the normalized vector.
|
|
338
345
|
*/
|
|
339
346
|
static normalize(v) {
|
|
340
347
|
const m = v.#magnitude;
|
|
@@ -342,9 +349,9 @@ class Vec4 {
|
|
|
342
349
|
}
|
|
343
350
|
/**
|
|
344
351
|
* Projects one vector onto another.
|
|
345
|
-
* @param v - The vector to project.
|
|
346
|
-
* @param w - The vector to project onto.
|
|
347
|
-
* @returns A new
|
|
352
|
+
* @param {Vec4} v - The vector to project.
|
|
353
|
+
* @param {Vec4} w - The vector to project onto.
|
|
354
|
+
* @returns {Vec4} A new Vec4 instance representing the projected vector.
|
|
348
355
|
*/
|
|
349
356
|
static project(v, w) {
|
|
350
357
|
const vM = v.#magnitude;
|
|
@@ -358,37 +365,34 @@ class Vec4 {
|
|
|
358
365
|
}
|
|
359
366
|
/**
|
|
360
367
|
* Creates a random unit vector.
|
|
361
|
-
* @param random - A function that returns a random number between 0 and 1.
|
|
362
|
-
* @returns A new Vec4 instance representing a random unit vector.
|
|
368
|
+
* @param {() => number} random - A function that returns a random number between 0 and 1.
|
|
369
|
+
* @returns {Vec4} A new Vec4 instance representing a random unit vector.
|
|
363
370
|
*/
|
|
364
371
|
static random(random = Math.random) {
|
|
365
|
-
|
|
366
|
-
|
|
367
|
-
|
|
368
|
-
|
|
369
|
-
|
|
370
|
-
|
|
371
|
-
|
|
372
|
-
|
|
373
|
-
|
|
374
|
-
} while (x1 ** 2 + x2 ** 2 >= 1 || x3 ** 2 + x4 ** 2 >= 1);
|
|
375
|
-
const f = sqrt((1 - x1 ** 2 - x2 ** 2) / (x3 ** 2 + x4 ** 2));
|
|
376
|
-
return new Vec4(x1, x2, x3 * f, x4 * f);
|
|
372
|
+
// 1. Generate four numbers from a Normal Distribution (Box-Muller transform)
|
|
373
|
+
const x = sqrt(-2 * log(random())) * cos(2 * PI * random());
|
|
374
|
+
const y = sqrt(-2 * log(random())) * sin(2 * PI * random());
|
|
375
|
+
const z = sqrt(-2 * log(random())) * cos(2 * PI * random());
|
|
376
|
+
const w = sqrt(-2 * log(random())) * sin(2 * PI * random());
|
|
377
|
+
// 2. Calculate the current length
|
|
378
|
+
const length = sqrt(x * x + y * y + z * z + w * w);
|
|
379
|
+
// 3. Divide by length to make it a unit vector
|
|
380
|
+
return new Vec4(x / length, y / length, z / length, w / length);
|
|
377
381
|
}
|
|
378
382
|
/**
|
|
379
383
|
* Checks if two vectors are equal.
|
|
380
|
-
* @param v - The first vector.
|
|
381
|
-
* @param w - The second vector.
|
|
382
|
-
* @returns True if the vectors are equal, false otherwise.
|
|
384
|
+
* @param {Vec4} v - The first vector.
|
|
385
|
+
* @param {Vec4} w - The second vector.
|
|
386
|
+
* @returns {boolean} True if the vectors are equal, false otherwise.
|
|
383
387
|
*/
|
|
384
388
|
static satisfyEquality(v, w) {
|
|
385
389
|
return (v.#xyzw[0] === w.#xyzw[0] && v.#xyzw[1] === w.#xyzw[1] && v.#xyzw[2] === w.#xyzw[2] && v.#xyzw[3] === w.#xyzw[3]);
|
|
386
390
|
}
|
|
387
391
|
/**
|
|
388
392
|
* Checks if two vectors are opposite.
|
|
389
|
-
* @param v - The first vector.
|
|
390
|
-
* @param w - The second vector.
|
|
391
|
-
* @returns True if the vectors are opposite, false otherwise.
|
|
393
|
+
* @param {Vec4} v - The first vector.
|
|
394
|
+
* @param {Vec4} w - The second vector.
|
|
395
|
+
* @returns {boolean} True if the vectors are opposite, false otherwise.
|
|
392
396
|
*/
|
|
393
397
|
static satisfyOpposition(v, w) {
|
|
394
398
|
return (v.#xyzw[0] === -w.#xyzw[0] &&
|
|
@@ -411,16 +415,16 @@ class Vec4 {
|
|
|
411
415
|
}
|
|
412
416
|
/**
|
|
413
417
|
* Scales a vector by a scalar value.
|
|
414
|
-
* @param v - The vector to scale.
|
|
415
|
-
* @param c - The scalar value.
|
|
416
|
-
* @returns A new
|
|
418
|
+
* @param {Vec4} v - The vector to scale.
|
|
419
|
+
* @param {number} c - The scalar value.
|
|
420
|
+
* @returns {Vec4} A new Vec4 instance representing the scaled vector.
|
|
417
421
|
*/
|
|
418
422
|
static scale(v, c) {
|
|
419
423
|
return new Vec4(v.#xyzw[0] * c, v.#xyzw[1] * c, v.#xyzw[2] * c, v.#xyzw[3] * c);
|
|
420
424
|
}
|
|
421
425
|
/**
|
|
422
426
|
* Creates a zero vector.
|
|
423
|
-
* @returns A new Vec4 instance representing a zero vector.
|
|
427
|
+
* @returns {Vec4} A new Vec4 instance representing a zero vector.
|
|
424
428
|
*/
|
|
425
429
|
static zero() {
|
|
426
430
|
return new Vec4();
|
|
@@ -434,14 +438,16 @@ class Vec4 {
|
|
|
434
438
|
}
|
|
435
439
|
/**
|
|
436
440
|
* Creates a Vec4 from an array.
|
|
437
|
-
* @
|
|
441
|
+
* @param {[number, number, number, number] | number[]} arr - An array containing the x, y, z, and w coordinates.
|
|
442
|
+
* @returns {Vec4} A new Vec4 instance.
|
|
438
443
|
*/
|
|
439
444
|
static fromArray(arr) {
|
|
440
445
|
return new Vec4(arr[0] ?? 0, arr[1] ?? 0, arr[2] ?? 0, arr[3] ?? 0);
|
|
441
446
|
}
|
|
442
447
|
/**
|
|
443
448
|
* Creates a Vec4 from an object with x, y, z and w properties.
|
|
444
|
-
* @
|
|
449
|
+
* @param {{ x: number; y: number; z: number; w: number }} obj - An object with x, y, z, and w properties.
|
|
450
|
+
* @returns {Vec4} A new Vec4 instance.
|
|
445
451
|
*/
|
|
446
452
|
static fromObject(obj) {
|
|
447
453
|
return new Vec4(obj.x, obj.y, obj.z, obj.w);
|
|
@@ -456,14 +462,15 @@ class Vec4 {
|
|
|
456
462
|
}
|
|
457
463
|
/**
|
|
458
464
|
* Gets the x-component of the vector.
|
|
459
|
-
* @returns The x-component.
|
|
465
|
+
* @returns {number} The x-component.
|
|
460
466
|
*/
|
|
461
467
|
get x() {
|
|
462
468
|
return this.#xyzw[0];
|
|
463
469
|
}
|
|
464
470
|
/**
|
|
465
471
|
* Sets the x-component of the vector.
|
|
466
|
-
* @param x - The new x-component.
|
|
472
|
+
* @param {number} x - The new x-component.
|
|
473
|
+
* @returns {void}
|
|
467
474
|
*/
|
|
468
475
|
set x(x) {
|
|
469
476
|
this.#xyzw[0] = x;
|
|
@@ -471,14 +478,15 @@ class Vec4 {
|
|
|
471
478
|
}
|
|
472
479
|
/**
|
|
473
480
|
* Gets the y-component of the vector.
|
|
474
|
-
* @returns The y-component.
|
|
481
|
+
* @returns {number} The y-component.
|
|
475
482
|
*/
|
|
476
483
|
get y() {
|
|
477
484
|
return this.#xyzw[1];
|
|
478
485
|
}
|
|
479
486
|
/**
|
|
480
487
|
* Sets the z-component of the vector.
|
|
481
|
-
* @param y - The new z-component.
|
|
488
|
+
* @param {number} y - The new z-component.
|
|
489
|
+
* @returns {void}
|
|
482
490
|
*/
|
|
483
491
|
set y(y) {
|
|
484
492
|
this.#xyzw[1] = y;
|
|
@@ -486,14 +494,15 @@ class Vec4 {
|
|
|
486
494
|
}
|
|
487
495
|
/**
|
|
488
496
|
* Gets the z-component of the vector.
|
|
489
|
-
* @returns The z-component.
|
|
497
|
+
* @returns {number} The z-component.
|
|
490
498
|
*/
|
|
491
499
|
get z() {
|
|
492
500
|
return this.#xyzw[2];
|
|
493
501
|
}
|
|
494
502
|
/**
|
|
495
503
|
* Sets the z-component of the vector.
|
|
496
|
-
* @param z - The new z-component.
|
|
504
|
+
* @param {number} z - The new z-component.
|
|
505
|
+
* @returns {void}
|
|
497
506
|
*/
|
|
498
507
|
set z(z) {
|
|
499
508
|
this.#xyzw[2] = z;
|
|
@@ -501,14 +510,15 @@ class Vec4 {
|
|
|
501
510
|
}
|
|
502
511
|
/**
|
|
503
512
|
* Gets the w-component of the vector.
|
|
504
|
-
* @returns The w-component.
|
|
513
|
+
* @returns {number} The w-component.
|
|
505
514
|
*/
|
|
506
515
|
get w() {
|
|
507
516
|
return this.#xyzw[3];
|
|
508
517
|
}
|
|
509
518
|
/**
|
|
510
519
|
* Sets the w-component of the vector.
|
|
511
|
-
* @param w - The new w-component.
|
|
520
|
+
* @param {number} w - The new w-component.
|
|
521
|
+
* @returns {void}
|
|
512
522
|
*/
|
|
513
523
|
set w(w) {
|
|
514
524
|
this.#xyzw[3] = w;
|
|
@@ -516,14 +526,15 @@ class Vec4 {
|
|
|
516
526
|
}
|
|
517
527
|
/**
|
|
518
528
|
* Gets a copy of the vector's components as an array.
|
|
519
|
-
* @returns An array containing the x, y, z and w components of the vector.
|
|
529
|
+
* @returns {[number, number, number, number]} An array containing the x, y, z and w components of the vector.
|
|
520
530
|
*/
|
|
521
531
|
get xyzw() {
|
|
522
532
|
return Array.from(this.#xyzw.slice());
|
|
523
533
|
}
|
|
524
534
|
/**
|
|
525
535
|
* Sets both components of the vector at once.
|
|
526
|
-
* @param xyzw - An array containing the new x, y and
|
|
536
|
+
* @param {[number, number, number, number]} xyzw - An array containing the new x, y, z and w components.
|
|
537
|
+
* @returns {void}
|
|
527
538
|
*/
|
|
528
539
|
set xyzw(xyzw) {
|
|
529
540
|
this.#xyzw[0] = xyzw[0];
|
|
@@ -534,70 +545,75 @@ class Vec4 {
|
|
|
534
545
|
}
|
|
535
546
|
/**
|
|
536
547
|
* Gets the Red-component of a Color.
|
|
537
|
-
* @returns The Red-component.
|
|
548
|
+
* @returns {number} The Red-component.
|
|
538
549
|
*/
|
|
539
550
|
get r() {
|
|
540
551
|
return this.x;
|
|
541
552
|
}
|
|
542
553
|
/**
|
|
543
554
|
* Sets the Red-component of a Color.
|
|
544
|
-
* @param r - The new Red-component.
|
|
555
|
+
* @param {number} r - The new Red-component.
|
|
556
|
+
* @returns {void}
|
|
545
557
|
*/
|
|
546
558
|
set r(r) {
|
|
547
559
|
this.x = r;
|
|
548
560
|
}
|
|
549
561
|
/**
|
|
550
562
|
* Gets the Green-component of a Color.
|
|
551
|
-
* @returns The Green-component.
|
|
563
|
+
* @returns {number} The Green-component.
|
|
552
564
|
*/
|
|
553
565
|
get g() {
|
|
554
566
|
return this.y;
|
|
555
567
|
}
|
|
556
568
|
/**
|
|
557
569
|
* Sets the Green-component of the Color.
|
|
558
|
-
* @param g - The new Green-component.
|
|
570
|
+
* @param {number} g - The new Green-component.
|
|
571
|
+
* @returns {void}
|
|
559
572
|
*/
|
|
560
573
|
set g(g) {
|
|
561
574
|
this.y = g;
|
|
562
575
|
}
|
|
563
576
|
/**
|
|
564
577
|
* Gets the Blue-component of the color.
|
|
565
|
-
* @returns The Blue-component.
|
|
578
|
+
* @returns {number} The Blue-component.
|
|
566
579
|
*/
|
|
567
580
|
get b() {
|
|
568
581
|
return this.z;
|
|
569
582
|
}
|
|
570
583
|
/**
|
|
571
584
|
* Sets the Blue-component of the Color.
|
|
572
|
-
* @param b - The new Blue-component.
|
|
585
|
+
* @param {number} b - The new Blue-component.
|
|
586
|
+
* @returns {void}
|
|
573
587
|
*/
|
|
574
588
|
set b(b) {
|
|
575
589
|
this.z = b;
|
|
576
590
|
}
|
|
577
591
|
/**
|
|
578
592
|
* Gets the Alpha-component of the color.
|
|
579
|
-
* @returns The Alpha-component.
|
|
593
|
+
* @returns {number} The Alpha-component.
|
|
580
594
|
*/
|
|
581
595
|
get a() {
|
|
582
596
|
return this.w;
|
|
583
597
|
}
|
|
584
598
|
/**
|
|
585
599
|
* Sets the Alpha-component of the Color.
|
|
586
|
-
* @param
|
|
600
|
+
* @param {number} a - The new Alpha-component.
|
|
601
|
+
* @returns {void}
|
|
587
602
|
*/
|
|
588
603
|
set a(a) {
|
|
589
604
|
this.w = a;
|
|
590
605
|
}
|
|
591
606
|
/**
|
|
592
607
|
* Gets a copy of the vector's components as an array.
|
|
593
|
-
* @returns An array containing the Red, Green, Blue and Alpha components of the Color.
|
|
608
|
+
* @returns {[number, number, number, number]} An array containing the Red, Green, Blue and Alpha components of the Color.
|
|
594
609
|
*/
|
|
595
610
|
get rgba() {
|
|
596
611
|
return this.xyzw;
|
|
597
612
|
}
|
|
598
613
|
/**
|
|
599
614
|
* Sets all components of the Color at once.
|
|
600
|
-
* @param rgba - An array containing the new Red, Green and
|
|
615
|
+
* @param {[number, number, number, number]} rgba - An array containing the new Red, Green, Blue and Alpha components.
|
|
616
|
+
* @returns {void}
|
|
601
617
|
*/
|
|
602
618
|
set rgba(rgba) {
|
|
603
619
|
this.xyzw = rgba;
|
|
@@ -659,8 +675,8 @@ class Vec4 {
|
|
|
659
675
|
}
|
|
660
676
|
/**
|
|
661
677
|
* Adds another vector to this vector.
|
|
662
|
-
* @param v - The vector to add.
|
|
663
|
-
* @returns This Vec4 instance for method chaining.
|
|
678
|
+
* @param {Vec4} v - The vector to add.
|
|
679
|
+
* @returns {this} This Vec4 instance for method chaining.
|
|
664
680
|
*/
|
|
665
681
|
add(v) {
|
|
666
682
|
this.#xyzw[0] += v.#xyzw[0];
|
|
@@ -722,9 +738,9 @@ class Vec4 {
|
|
|
722
738
|
}
|
|
723
739
|
/**
|
|
724
740
|
* Clamps the magnitude of this vector between a minimum and maximum value.
|
|
725
|
-
* @param min - The minimum magnitude.
|
|
726
|
-
* @param max - The maximum magnitude.
|
|
727
|
-
* @returns This Vec4 instance for method chaining.
|
|
741
|
+
* @param {number} min - The minimum magnitude.
|
|
742
|
+
* @param {number} max - The maximum magnitude.
|
|
743
|
+
* @returns {this} This Vec4 instance for method chaining.
|
|
728
744
|
*/
|
|
729
745
|
clamp(min, max) {
|
|
730
746
|
const m = this.#magnitude;
|
|
@@ -746,7 +762,7 @@ class Vec4 {
|
|
|
746
762
|
}
|
|
747
763
|
/**
|
|
748
764
|
* Creates a copy of this vector.
|
|
749
|
-
* @returns A new Vec4 instance with the same components.
|
|
765
|
+
* @returns {Vec4} A new Vec4 instance with the same components.
|
|
750
766
|
*/
|
|
751
767
|
clone() {
|
|
752
768
|
return new Vec4(this.#xyzw[0], this.#xyzw[1], this.#xyzw[2], this.#xyzw[3]);
|
|
@@ -777,8 +793,8 @@ class Vec4 {
|
|
|
777
793
|
}
|
|
778
794
|
/**
|
|
779
795
|
* Calculates the Chebyshev distance between this vector and another vector.
|
|
780
|
-
* @param v - The
|
|
781
|
-
* @returns The Chebyshev distance between the vectors.
|
|
796
|
+
* @param {Vec4} v - The other vector.
|
|
797
|
+
* @returns {number} The Chebyshev distance between the vectors.
|
|
782
798
|
*/
|
|
783
799
|
distanceChebyshev(v) {
|
|
784
800
|
const absX = abs(this.#xyzw[0] - v.#xyzw[0]);
|
|
@@ -795,8 +811,8 @@ class Vec4 {
|
|
|
795
811
|
}
|
|
796
812
|
/**
|
|
797
813
|
* Calculates the Manhattan distance between this vector and another vector.
|
|
798
|
-
* @param v - The other vector.
|
|
799
|
-
* @returns The Manhattan distance between the vectors.
|
|
814
|
+
* @param {Vec4} v - The other vector.
|
|
815
|
+
* @returns {number} The Manhattan distance between the vectors.
|
|
800
816
|
*/
|
|
801
817
|
distanceManhattan(v) {
|
|
802
818
|
return (abs(this.#xyzw[0] - v.#xyzw[0]) +
|
|
@@ -805,10 +821,10 @@ class Vec4 {
|
|
|
805
821
|
abs(this.#xyzw[3] - v.#xyzw[3]));
|
|
806
822
|
}
|
|
807
823
|
/**
|
|
808
|
-
* Calculates the Minkowski distance between
|
|
809
|
-
* @param v - The other vector.
|
|
810
|
-
* @param p - The order of the Minkowski distance.
|
|
811
|
-
* @returns The Minkowski distance between the vectors.
|
|
824
|
+
* Calculates the Minkowski distance between this vector and another vector.
|
|
825
|
+
* @param {Vec4} v - The other vector.
|
|
826
|
+
* @param {number} p - The order of the Minkowski distance.
|
|
827
|
+
* @returns {number} The Minkowski distance between the vectors.
|
|
812
828
|
*/
|
|
813
829
|
distanceMinkowski(v, p) {
|
|
814
830
|
return ((abs(this.#xyzw[0] - v.#xyzw[0]) ** p +
|
|
@@ -987,23 +1003,7 @@ class Vec4 {
|
|
|
987
1003
|
* @returns This Vec4 instance for method chaining.
|
|
988
1004
|
*/
|
|
989
1005
|
random(random = Math.random) {
|
|
990
|
-
|
|
991
|
-
let x2;
|
|
992
|
-
let x3;
|
|
993
|
-
let x4;
|
|
994
|
-
do {
|
|
995
|
-
x1 = random() * 2 - 1;
|
|
996
|
-
x2 = random() * 2 - 1;
|
|
997
|
-
x3 = random() * 2 - 1;
|
|
998
|
-
x4 = random() * 2 - 1;
|
|
999
|
-
} while (x1 ** 2 + x2 ** 2 >= 1 || x3 ** 2 + x4 ** 2 >= 1);
|
|
1000
|
-
const f = sqrt((1 - x1 ** 2 - x2 ** 2) / (x3 ** 2 + x4 ** 2));
|
|
1001
|
-
const m = this.#magnitude;
|
|
1002
|
-
this.#xyzw[0] = m * x1;
|
|
1003
|
-
this.#xyzw[1] = m * x2;
|
|
1004
|
-
this.#xyzw[2] = m * x3 * f;
|
|
1005
|
-
this.#xyzw[3] = m * x4 * f;
|
|
1006
|
-
this.#computeMagnitude();
|
|
1006
|
+
this.copy(Vec4.random(random));
|
|
1007
1007
|
return this;
|
|
1008
1008
|
}
|
|
1009
1009
|
/**
|
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
import type { ArrayVector2D } from "./types.js";
|
|
2
|
+
/**
|
|
3
|
+
* Adds one 2D vectors.
|
|
4
|
+
* @param {ArrayVector2D} xy1 - First vector as `[x, y]`
|
|
5
|
+
* @param {ArrayVector2D} xy2 - Second vector as `[x, y]`
|
|
6
|
+
* @returns {ArrayVector2D} The sum of the vectors
|
|
7
|
+
*/
|
|
8
|
+
export declare const add2D: (xy1: ArrayVector2D, xy2: ArrayVector2D) => ArrayVector2D;
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Adds one 2D vectors.
|
|
3
|
+
* @param {ArrayVector2D} xy1 - First vector as `[x, y]`
|
|
4
|
+
* @param {ArrayVector2D} xy2 - Second vector as `[x, y]`
|
|
5
|
+
* @returns {ArrayVector2D} The sum of the vectors
|
|
6
|
+
*/
|
|
7
|
+
export const add2D = (xy1, xy2) => [xy1[0] + xy2[0], xy1[1] + xy2[1]];
|
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
import type { ArrayVector2D } from "./types.js";
|
|
2
|
+
/**
|
|
3
|
+
* Calculates the angle between two 2D vectors.
|
|
4
|
+
* @param {ArrayVector2D} xy1 - First vector as `[x, y]`
|
|
5
|
+
* @param {ArrayVector2D} xy2 - Second vector as `[x, y]`
|
|
6
|
+
* @returns {number} Angle between the vectors in radians
|
|
7
|
+
*/
|
|
8
|
+
export declare const angleBetween2D: (xy1: ArrayVector2D, xy2: ArrayVector2D) => number;
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Calculates the angle between two 2D vectors.
|
|
3
|
+
* @param {ArrayVector2D} xy1 - First vector as `[x, y]`
|
|
4
|
+
* @param {ArrayVector2D} xy2 - Second vector as `[x, y]`
|
|
5
|
+
* @returns {number} Angle between the vectors in radians
|
|
6
|
+
*/
|
|
7
|
+
export const angleBetween2D = (xy1, xy2) => Math.atan2(xy1[0] * xy2[1] - xy1[1] * xy2[0], xy1[0] * xy2[0] + xy1[1] * xy2[1]);
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
import type { ArrayVector2D } from "./types.js";
|
|
2
|
+
/**
|
|
3
|
+
* Gets the angle between a 2D vector and the positive x-axis in radians.
|
|
4
|
+
* @param {ArrayVector2D} xy - Vector as `[x, y]`
|
|
5
|
+
* @returns {number} Angle in radians, always in the range [0, 2π)
|
|
6
|
+
*/
|
|
7
|
+
export declare const angleX2D: (xy: ArrayVector2D) => number;
|
|
@@ -0,0 +1,6 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Gets the angle between a 2D vector and the positive x-axis in radians.
|
|
3
|
+
* @param {ArrayVector2D} xy - Vector as `[x, y]`
|
|
4
|
+
* @returns {number} Angle in radians, always in the range [0, 2π)
|
|
5
|
+
*/
|
|
6
|
+
export const angleX2D = (xy) => Math.atan2(xy[1], xy[0] + (xy[1] < 0 ? Math.PI : 0));
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
import type { ArrayVector2D } from "./types.js";
|
|
2
|
+
/**
|
|
3
|
+
* Gets the angle between a 2D vector and the positive y-axis in radians.
|
|
4
|
+
* @param {ArrayVector2D} xy - Vector as `[x, y]`
|
|
5
|
+
* @returns {number} Angle in radians, always in the range [0, 2π)
|
|
6
|
+
*/
|
|
7
|
+
export declare const angleY2D: (xy: ArrayVector2D) => number;
|