@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/esm/vec4.js
CHANGED
|
@@ -1,4 +1,8 @@
|
|
|
1
|
-
|
|
1
|
+
/**
|
|
2
|
+
* Documentation for 4D Vector class.
|
|
3
|
+
* @module Vec4
|
|
4
|
+
*/
|
|
5
|
+
const { sin, cos, acos, atan2, sqrt, abs, log, PI } = Math;
|
|
2
6
|
/**
|
|
3
7
|
* Represents a 4D vector with various operations.
|
|
4
8
|
*/
|
|
@@ -9,10 +13,11 @@ export class Vec4 {
|
|
|
9
13
|
/**
|
|
10
14
|
* Computes and updates the magnitude of the vector.
|
|
11
15
|
* @private
|
|
12
|
-
* @param x - The x-component of the vector.
|
|
13
|
-
* @param y - The y-component of the vector.
|
|
14
|
-
* @param z - The z-component of the vector.
|
|
15
|
-
* @param w - The w-component of the vector.
|
|
16
|
+
* @param {number} x - The x-component of the vector.
|
|
17
|
+
* @param {number} y - The y-component of the vector.
|
|
18
|
+
* @param {number} z - The z-component of the vector.
|
|
19
|
+
* @param {number} w - The w-component of the vector.
|
|
20
|
+
* @returns {void}
|
|
16
21
|
*/
|
|
17
22
|
#computeMagnitude(x = this.#xyzw[0], y = this.#xyzw[1], z = this.#xyzw[2], w = this.#xyzw[3]) {
|
|
18
23
|
if (x !== this.#prevXYZW[0] || y !== this.#prevXYZW[1] || z !== this.#prevXYZW[2] || w !== this.#prevXYZW[3]) {
|
|
@@ -25,10 +30,10 @@ export class Vec4 {
|
|
|
25
30
|
}
|
|
26
31
|
/**
|
|
27
32
|
* Creates a new Vec4 instance.
|
|
28
|
-
* @param x - The x-coordinate of the vector.
|
|
29
|
-
* @param y - The y-coordinate of the vector.
|
|
30
|
-
* @param z - The z-coordinate of the vector.
|
|
31
|
-
* @param w - The w-coordinate of the vector.
|
|
33
|
+
* @param {number} x - The x-coordinate of the vector.
|
|
34
|
+
* @param {number} y - The y-coordinate of the vector.
|
|
35
|
+
* @param {number} z - The z-coordinate of the vector.
|
|
36
|
+
* @param {number} w - The w-coordinate of the vector.
|
|
32
37
|
*/
|
|
33
38
|
constructor(x = 0, y = 0, z = 0, w = 0) {
|
|
34
39
|
this.#xyzw[0] = x;
|
|
@@ -39,18 +44,18 @@ export class Vec4 {
|
|
|
39
44
|
}
|
|
40
45
|
/**
|
|
41
46
|
* Adds two vectors.
|
|
42
|
-
* @param v - The first vector.
|
|
43
|
-
* @param w - The second vector.
|
|
44
|
-
* @returns A new
|
|
47
|
+
* @param {Vec4} v - The first vector.
|
|
48
|
+
* @param {Vec4} w - The second vector.
|
|
49
|
+
* @returns {Vec4} A new Vec4 instance representing the sum.
|
|
45
50
|
*/
|
|
46
51
|
static add(v, w) {
|
|
47
52
|
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]);
|
|
48
53
|
}
|
|
49
54
|
/**
|
|
50
55
|
* Subtracts one vector from another.
|
|
51
|
-
* @param v - The vector to subtract from.
|
|
52
|
-
* @param w - The vector to subtract.
|
|
53
|
-
* @returns A new
|
|
56
|
+
* @param {Vec4} v - The vector to subtract from.
|
|
57
|
+
* @param {Vec4} w - The vector to subtract.
|
|
58
|
+
* @returns {Vec4} A new Vec4 instance representing the difference.
|
|
54
59
|
*/
|
|
55
60
|
static subtract(v, w) {
|
|
56
61
|
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]);
|
|
@@ -75,9 +80,9 @@ export class Vec4 {
|
|
|
75
80
|
}
|
|
76
81
|
/**
|
|
77
82
|
* Calculates the angle between two vectors.
|
|
78
|
-
* @param v - The first vector.
|
|
79
|
-
* @param w - The second vector.
|
|
80
|
-
* @returns The angle between the vectors in radians.
|
|
83
|
+
* @param {Vec4} v - The first vector.
|
|
84
|
+
* @param {Vec4} w - The second vector.
|
|
85
|
+
* @returns {number} The angle between the vectors in radians.
|
|
81
86
|
*/
|
|
82
87
|
static angleBetween(v, w) {
|
|
83
88
|
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]) /
|
|
@@ -85,9 +90,9 @@ export class Vec4 {
|
|
|
85
90
|
}
|
|
86
91
|
/**
|
|
87
92
|
* Calculates the Euclidean distance between two vectors.
|
|
88
|
-
* @param v - The first vector.
|
|
89
|
-
* @param w - The second vector.
|
|
90
|
-
* @returns The distance between the vectors.
|
|
93
|
+
* @param {Vec4} v - The first vector.
|
|
94
|
+
* @param {Vec4} w - The second vector.
|
|
95
|
+
* @returns {number} The distance between the vectors.
|
|
91
96
|
*/
|
|
92
97
|
static distance(v, w) {
|
|
93
98
|
return sqrt((v.#xyzw[0] - w.#xyzw[0]) ** 2 +
|
|
@@ -97,9 +102,9 @@ export class Vec4 {
|
|
|
97
102
|
}
|
|
98
103
|
/**
|
|
99
104
|
* Calculates the Chebyshev distance between two vectors.
|
|
100
|
-
* @param v - The first vector.
|
|
101
|
-
* @param w - The second vector.
|
|
102
|
-
* @returns The Chebyshev distance between the vectors.
|
|
105
|
+
* @param {Vec4} v - The first vector.
|
|
106
|
+
* @param {Vec4} w - The second vector.
|
|
107
|
+
* @returns {number} The Chebyshev distance between the vectors.
|
|
103
108
|
*/
|
|
104
109
|
static distanceChebyshev(v, w) {
|
|
105
110
|
const absX = abs(v.#xyzw[0] - w.#xyzw[0]);
|
|
@@ -116,9 +121,9 @@ export class Vec4 {
|
|
|
116
121
|
}
|
|
117
122
|
/**
|
|
118
123
|
* Calculates the Manhattan distance between two vectors.
|
|
119
|
-
* @param v - The first vector.
|
|
120
|
-
* @param w - The second vector.
|
|
121
|
-
* @returns The Manhattan distance between the vectors.
|
|
124
|
+
* @param {Vec4} v - The first vector.
|
|
125
|
+
* @param {Vec4} w - The second vector.
|
|
126
|
+
* @returns {number} The Manhattan distance between the vectors.
|
|
122
127
|
*/
|
|
123
128
|
static distanceManhattan(v, w) {
|
|
124
129
|
return (abs(v.#xyzw[0] - w.#xyzw[0]) +
|
|
@@ -128,10 +133,10 @@ export class Vec4 {
|
|
|
128
133
|
}
|
|
129
134
|
/**
|
|
130
135
|
* Calculates the Minkowski distance between two vectors.
|
|
131
|
-
* @param v - The first vector.
|
|
132
|
-
* @param w - The second vector.
|
|
133
|
-
* @param p - The order of the Minkowski distance.
|
|
134
|
-
* @returns The Minkowski distance between the vectors.
|
|
136
|
+
* @param {Vec4} v - The first vector.
|
|
137
|
+
* @param {Vec4} w - The second vector.
|
|
138
|
+
* @param {number} p - The order of the Minkowski distance.
|
|
139
|
+
* @returns {number} The Minkowski distance between the vectors.
|
|
135
140
|
*/
|
|
136
141
|
static distanceMinkowski(v, w, p) {
|
|
137
142
|
return ((abs(v.#xyzw[0] - w.#xyzw[0]) ** p +
|
|
@@ -142,9 +147,9 @@ export class Vec4 {
|
|
|
142
147
|
}
|
|
143
148
|
/**
|
|
144
149
|
* Calculates the squared Euclidean distance between two vectors.
|
|
145
|
-
* @param v - The first vector.
|
|
146
|
-
* @param w - The second vector.
|
|
147
|
-
* @returns The squared distance between the vectors.
|
|
150
|
+
* @param {Vec4} v - The first vector.
|
|
151
|
+
* @param {Vec4} w - The second vector.
|
|
152
|
+
* @returns {number} The squared distance between the vectors.
|
|
148
153
|
*/
|
|
149
154
|
static distanceSq(v, w) {
|
|
150
155
|
return ((v.#xyzw[0] - w.#xyzw[0]) ** 2 +
|
|
@@ -154,9 +159,9 @@ export class Vec4 {
|
|
|
154
159
|
}
|
|
155
160
|
/**
|
|
156
161
|
* Calculates the dot product of two vectors.
|
|
157
|
-
* @param v - The first vector.
|
|
158
|
-
* @param w - The second vector.
|
|
159
|
-
* @returns The dot product of the two vectors.
|
|
162
|
+
* @param {Vec4} v - The first vector.
|
|
163
|
+
* @param {Vec4} w - The second vector.
|
|
164
|
+
* @returns {number} The dot product of the two vectors.
|
|
160
165
|
*/
|
|
161
166
|
static dot(v, w) {
|
|
162
167
|
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];
|
|
@@ -178,9 +183,11 @@ export class Vec4 {
|
|
|
178
183
|
}
|
|
179
184
|
/**
|
|
180
185
|
* Creates an immutable Vec4-like object.
|
|
181
|
-
* @param x - The x-coordinate of the vector.
|
|
182
|
-
* @param y - The y-coordinate of the vector.
|
|
183
|
-
* @
|
|
186
|
+
* @param {number} x - The x-coordinate of the vector.
|
|
187
|
+
* @param {number} y - The y-coordinate of the vector.
|
|
188
|
+
* @param {number} z - The z-coordinate of the vector.
|
|
189
|
+
* @param {number} w - The w-coordinate of the vector.
|
|
190
|
+
* @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.
|
|
184
191
|
*/
|
|
185
192
|
static immutable(x = 0, y = 0, z = 0, w = 0) {
|
|
186
193
|
const data = new Float64Array(10);
|
|
@@ -269,8 +276,8 @@ export class Vec4 {
|
|
|
269
276
|
}
|
|
270
277
|
/**
|
|
271
278
|
* Checks if a vector has infinite components.
|
|
272
|
-
* @param v - The vector to check.
|
|
273
|
-
* @returns True if the vector has infinite components, false otherwise.
|
|
279
|
+
* @param {Vec4} v - The vector to check.
|
|
280
|
+
* @returns {boolean} True if the vector has infinite components, false otherwise.
|
|
274
281
|
*/
|
|
275
282
|
static isInfinite(v) {
|
|
276
283
|
const x = v.#xyzw[0];
|
|
@@ -288,26 +295,26 @@ export class Vec4 {
|
|
|
288
295
|
}
|
|
289
296
|
/**
|
|
290
297
|
* Checks if a vector has NaN components.
|
|
291
|
-
* @param v - The vector to check.
|
|
292
|
-
* @returns True if the vector has NaN components, false otherwise.
|
|
298
|
+
* @param {Vec4} v - The vector to check.
|
|
299
|
+
* @returns {boolean} True if the vector has NaN components, false otherwise.
|
|
293
300
|
*/
|
|
294
301
|
static isNaN(v) {
|
|
295
302
|
return Number.isNaN(v.#xyzw[0]) || Number.isNaN(v.#xyzw[1]) || Number.isNaN(v.#xyzw[2]) || Number.isNaN(v.#xyzw[3]);
|
|
296
303
|
}
|
|
297
304
|
/**
|
|
298
305
|
* Checks if a vector is zero.
|
|
299
|
-
* @param v - The vector to check.
|
|
300
|
-
* @returns True if the vector is zero, false otherwise.
|
|
306
|
+
* @param {Vec4} v - The vector to check.
|
|
307
|
+
* @returns {boolean} True if the vector is zero, false otherwise.
|
|
301
308
|
*/
|
|
302
309
|
static isZero(v) {
|
|
303
310
|
return v.#xyzw[0] === 0 && v.#xyzw[1] === 0 && v.#xyzw[2] === 0 && v.#xyzw[3] === 0;
|
|
304
311
|
}
|
|
305
312
|
/**
|
|
306
313
|
* Performs linear interpolation between two vectors.
|
|
307
|
-
* @param v - The first vector.
|
|
308
|
-
* @param w - The second vector.
|
|
309
|
-
* @param t - The interpolation parameter (0 to 1).
|
|
310
|
-
* @returns A new
|
|
314
|
+
* @param {Vec4} v - The first vector.
|
|
315
|
+
* @param {Vec4} w - The second vector.
|
|
316
|
+
* @param {number} t - The interpolation parameter (0 to 1).
|
|
317
|
+
* @returns {Vec4} A new Vec4 instance representing the interpolated vector.
|
|
311
318
|
*/
|
|
312
319
|
static lerp(v, w, t) {
|
|
313
320
|
if (t > 1)
|
|
@@ -322,16 +329,16 @@ export class Vec4 {
|
|
|
322
329
|
}
|
|
323
330
|
/**
|
|
324
331
|
* Negates a vector.
|
|
325
|
-
* @param v - The vector to negate.
|
|
326
|
-
* @returns A new
|
|
332
|
+
* @param {Vec4} v - The vector to negate.
|
|
333
|
+
* @returns {Vec4} A new Vec4 instance representing the negated vector.
|
|
327
334
|
*/
|
|
328
335
|
static negate(v) {
|
|
329
336
|
return new Vec4(-v.#xyzw[0], -v.#xyzw[1], -v.#xyzw[2], -v.#xyzw[3]);
|
|
330
337
|
}
|
|
331
338
|
/**
|
|
332
339
|
* Normalizes a vector.
|
|
333
|
-
* @param v - The vector to normalize.
|
|
334
|
-
* @returns A new
|
|
340
|
+
* @param {Vec4} v - The vector to normalize.
|
|
341
|
+
* @returns {Vec4} A new Vec4 instance representing the normalized vector.
|
|
335
342
|
*/
|
|
336
343
|
static normalize(v) {
|
|
337
344
|
const m = v.#magnitude;
|
|
@@ -339,9 +346,9 @@ export class Vec4 {
|
|
|
339
346
|
}
|
|
340
347
|
/**
|
|
341
348
|
* Projects one vector onto another.
|
|
342
|
-
* @param v - The vector to project.
|
|
343
|
-
* @param w - The vector to project onto.
|
|
344
|
-
* @returns A new
|
|
349
|
+
* @param {Vec4} v - The vector to project.
|
|
350
|
+
* @param {Vec4} w - The vector to project onto.
|
|
351
|
+
* @returns {Vec4} A new Vec4 instance representing the projected vector.
|
|
345
352
|
*/
|
|
346
353
|
static project(v, w) {
|
|
347
354
|
const vM = v.#magnitude;
|
|
@@ -355,37 +362,34 @@ export class Vec4 {
|
|
|
355
362
|
}
|
|
356
363
|
/**
|
|
357
364
|
* Creates a random unit vector.
|
|
358
|
-
* @param random - A function that returns a random number between 0 and 1.
|
|
359
|
-
* @returns A new Vec4 instance representing a random unit vector.
|
|
365
|
+
* @param {() => number} random - A function that returns a random number between 0 and 1.
|
|
366
|
+
* @returns {Vec4} A new Vec4 instance representing a random unit vector.
|
|
360
367
|
*/
|
|
361
368
|
static random(random = Math.random) {
|
|
362
|
-
|
|
363
|
-
|
|
364
|
-
|
|
365
|
-
|
|
366
|
-
|
|
367
|
-
|
|
368
|
-
|
|
369
|
-
|
|
370
|
-
|
|
371
|
-
} while (x1 ** 2 + x2 ** 2 >= 1 || x3 ** 2 + x4 ** 2 >= 1);
|
|
372
|
-
const f = sqrt((1 - x1 ** 2 - x2 ** 2) / (x3 ** 2 + x4 ** 2));
|
|
373
|
-
return new Vec4(x1, x2, x3 * f, x4 * f);
|
|
369
|
+
// 1. Generate four numbers from a Normal Distribution (Box-Muller transform)
|
|
370
|
+
const x = sqrt(-2 * log(random())) * cos(2 * PI * random());
|
|
371
|
+
const y = sqrt(-2 * log(random())) * sin(2 * PI * random());
|
|
372
|
+
const z = sqrt(-2 * log(random())) * cos(2 * PI * random());
|
|
373
|
+
const w = sqrt(-2 * log(random())) * sin(2 * PI * random());
|
|
374
|
+
// 2. Calculate the current length
|
|
375
|
+
const length = sqrt(x * x + y * y + z * z + w * w);
|
|
376
|
+
// 3. Divide by length to make it a unit vector
|
|
377
|
+
return new Vec4(x / length, y / length, z / length, w / length);
|
|
374
378
|
}
|
|
375
379
|
/**
|
|
376
380
|
* Checks if two vectors are equal.
|
|
377
|
-
* @param v - The first vector.
|
|
378
|
-
* @param w - The second vector.
|
|
379
|
-
* @returns True if the vectors are equal, false otherwise.
|
|
381
|
+
* @param {Vec4} v - The first vector.
|
|
382
|
+
* @param {Vec4} w - The second vector.
|
|
383
|
+
* @returns {boolean} True if the vectors are equal, false otherwise.
|
|
380
384
|
*/
|
|
381
385
|
static satisfyEquality(v, w) {
|
|
382
386
|
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]);
|
|
383
387
|
}
|
|
384
388
|
/**
|
|
385
389
|
* Checks if two vectors are opposite.
|
|
386
|
-
* @param v - The first vector.
|
|
387
|
-
* @param w - The second vector.
|
|
388
|
-
* @returns True if the vectors are opposite, false otherwise.
|
|
390
|
+
* @param {Vec4} v - The first vector.
|
|
391
|
+
* @param {Vec4} w - The second vector.
|
|
392
|
+
* @returns {boolean} True if the vectors are opposite, false otherwise.
|
|
389
393
|
*/
|
|
390
394
|
static satisfyOpposition(v, w) {
|
|
391
395
|
return (v.#xyzw[0] === -w.#xyzw[0] &&
|
|
@@ -408,16 +412,16 @@ export class Vec4 {
|
|
|
408
412
|
}
|
|
409
413
|
/**
|
|
410
414
|
* Scales a vector by a scalar value.
|
|
411
|
-
* @param v - The vector to scale.
|
|
412
|
-
* @param c - The scalar value.
|
|
413
|
-
* @returns A new
|
|
415
|
+
* @param {Vec4} v - The vector to scale.
|
|
416
|
+
* @param {number} c - The scalar value.
|
|
417
|
+
* @returns {Vec4} A new Vec4 instance representing the scaled vector.
|
|
414
418
|
*/
|
|
415
419
|
static scale(v, c) {
|
|
416
420
|
return new Vec4(v.#xyzw[0] * c, v.#xyzw[1] * c, v.#xyzw[2] * c, v.#xyzw[3] * c);
|
|
417
421
|
}
|
|
418
422
|
/**
|
|
419
423
|
* Creates a zero vector.
|
|
420
|
-
* @returns A new Vec4 instance representing a zero vector.
|
|
424
|
+
* @returns {Vec4} A new Vec4 instance representing a zero vector.
|
|
421
425
|
*/
|
|
422
426
|
static zero() {
|
|
423
427
|
return new Vec4();
|
|
@@ -431,14 +435,16 @@ export class Vec4 {
|
|
|
431
435
|
}
|
|
432
436
|
/**
|
|
433
437
|
* Creates a Vec4 from an array.
|
|
434
|
-
* @
|
|
438
|
+
* @param {[number, number, number, number] | number[]} arr - An array containing the x, y, z, and w coordinates.
|
|
439
|
+
* @returns {Vec4} A new Vec4 instance.
|
|
435
440
|
*/
|
|
436
441
|
static fromArray(arr) {
|
|
437
442
|
return new Vec4(arr[0] ?? 0, arr[1] ?? 0, arr[2] ?? 0, arr[3] ?? 0);
|
|
438
443
|
}
|
|
439
444
|
/**
|
|
440
445
|
* Creates a Vec4 from an object with x, y, z and w properties.
|
|
441
|
-
* @
|
|
446
|
+
* @param {{ x: number; y: number; z: number; w: number }} obj - An object with x, y, z, and w properties.
|
|
447
|
+
* @returns {Vec4} A new Vec4 instance.
|
|
442
448
|
*/
|
|
443
449
|
static fromObject(obj) {
|
|
444
450
|
return new Vec4(obj.x, obj.y, obj.z, obj.w);
|
|
@@ -453,14 +459,15 @@ export class Vec4 {
|
|
|
453
459
|
}
|
|
454
460
|
/**
|
|
455
461
|
* Gets the x-component of the vector.
|
|
456
|
-
* @returns The x-component.
|
|
462
|
+
* @returns {number} The x-component.
|
|
457
463
|
*/
|
|
458
464
|
get x() {
|
|
459
465
|
return this.#xyzw[0];
|
|
460
466
|
}
|
|
461
467
|
/**
|
|
462
468
|
* Sets the x-component of the vector.
|
|
463
|
-
* @param x - The new x-component.
|
|
469
|
+
* @param {number} x - The new x-component.
|
|
470
|
+
* @returns {void}
|
|
464
471
|
*/
|
|
465
472
|
set x(x) {
|
|
466
473
|
this.#xyzw[0] = x;
|
|
@@ -468,14 +475,15 @@ export class Vec4 {
|
|
|
468
475
|
}
|
|
469
476
|
/**
|
|
470
477
|
* Gets the y-component of the vector.
|
|
471
|
-
* @returns The y-component.
|
|
478
|
+
* @returns {number} The y-component.
|
|
472
479
|
*/
|
|
473
480
|
get y() {
|
|
474
481
|
return this.#xyzw[1];
|
|
475
482
|
}
|
|
476
483
|
/**
|
|
477
484
|
* Sets the z-component of the vector.
|
|
478
|
-
* @param y - The new z-component.
|
|
485
|
+
* @param {number} y - The new z-component.
|
|
486
|
+
* @returns {void}
|
|
479
487
|
*/
|
|
480
488
|
set y(y) {
|
|
481
489
|
this.#xyzw[1] = y;
|
|
@@ -483,14 +491,15 @@ export class Vec4 {
|
|
|
483
491
|
}
|
|
484
492
|
/**
|
|
485
493
|
* Gets the z-component of the vector.
|
|
486
|
-
* @returns The z-component.
|
|
494
|
+
* @returns {number} The z-component.
|
|
487
495
|
*/
|
|
488
496
|
get z() {
|
|
489
497
|
return this.#xyzw[2];
|
|
490
498
|
}
|
|
491
499
|
/**
|
|
492
500
|
* Sets the z-component of the vector.
|
|
493
|
-
* @param z - The new z-component.
|
|
501
|
+
* @param {number} z - The new z-component.
|
|
502
|
+
* @returns {void}
|
|
494
503
|
*/
|
|
495
504
|
set z(z) {
|
|
496
505
|
this.#xyzw[2] = z;
|
|
@@ -498,14 +507,15 @@ export class Vec4 {
|
|
|
498
507
|
}
|
|
499
508
|
/**
|
|
500
509
|
* Gets the w-component of the vector.
|
|
501
|
-
* @returns The w-component.
|
|
510
|
+
* @returns {number} The w-component.
|
|
502
511
|
*/
|
|
503
512
|
get w() {
|
|
504
513
|
return this.#xyzw[3];
|
|
505
514
|
}
|
|
506
515
|
/**
|
|
507
516
|
* Sets the w-component of the vector.
|
|
508
|
-
* @param w - The new w-component.
|
|
517
|
+
* @param {number} w - The new w-component.
|
|
518
|
+
* @returns {void}
|
|
509
519
|
*/
|
|
510
520
|
set w(w) {
|
|
511
521
|
this.#xyzw[3] = w;
|
|
@@ -513,14 +523,15 @@ export class Vec4 {
|
|
|
513
523
|
}
|
|
514
524
|
/**
|
|
515
525
|
* Gets a copy of the vector's components as an array.
|
|
516
|
-
* @returns An array containing the x, y, z and w components of the vector.
|
|
526
|
+
* @returns {[number, number, number, number]} An array containing the x, y, z and w components of the vector.
|
|
517
527
|
*/
|
|
518
528
|
get xyzw() {
|
|
519
529
|
return Array.from(this.#xyzw.slice());
|
|
520
530
|
}
|
|
521
531
|
/**
|
|
522
532
|
* Sets both components of the vector at once.
|
|
523
|
-
* @param xyzw - An array containing the new x, y and
|
|
533
|
+
* @param {[number, number, number, number]} xyzw - An array containing the new x, y, z and w components.
|
|
534
|
+
* @returns {void}
|
|
524
535
|
*/
|
|
525
536
|
set xyzw(xyzw) {
|
|
526
537
|
this.#xyzw[0] = xyzw[0];
|
|
@@ -531,70 +542,75 @@ export class Vec4 {
|
|
|
531
542
|
}
|
|
532
543
|
/**
|
|
533
544
|
* Gets the Red-component of a Color.
|
|
534
|
-
* @returns The Red-component.
|
|
545
|
+
* @returns {number} The Red-component.
|
|
535
546
|
*/
|
|
536
547
|
get r() {
|
|
537
548
|
return this.x;
|
|
538
549
|
}
|
|
539
550
|
/**
|
|
540
551
|
* Sets the Red-component of a Color.
|
|
541
|
-
* @param r - The new Red-component.
|
|
552
|
+
* @param {number} r - The new Red-component.
|
|
553
|
+
* @returns {void}
|
|
542
554
|
*/
|
|
543
555
|
set r(r) {
|
|
544
556
|
this.x = r;
|
|
545
557
|
}
|
|
546
558
|
/**
|
|
547
559
|
* Gets the Green-component of a Color.
|
|
548
|
-
* @returns The Green-component.
|
|
560
|
+
* @returns {number} The Green-component.
|
|
549
561
|
*/
|
|
550
562
|
get g() {
|
|
551
563
|
return this.y;
|
|
552
564
|
}
|
|
553
565
|
/**
|
|
554
566
|
* Sets the Green-component of the Color.
|
|
555
|
-
* @param g - The new Green-component.
|
|
567
|
+
* @param {number} g - The new Green-component.
|
|
568
|
+
* @returns {void}
|
|
556
569
|
*/
|
|
557
570
|
set g(g) {
|
|
558
571
|
this.y = g;
|
|
559
572
|
}
|
|
560
573
|
/**
|
|
561
574
|
* Gets the Blue-component of the color.
|
|
562
|
-
* @returns The Blue-component.
|
|
575
|
+
* @returns {number} The Blue-component.
|
|
563
576
|
*/
|
|
564
577
|
get b() {
|
|
565
578
|
return this.z;
|
|
566
579
|
}
|
|
567
580
|
/**
|
|
568
581
|
* Sets the Blue-component of the Color.
|
|
569
|
-
* @param b - The new Blue-component.
|
|
582
|
+
* @param {number} b - The new Blue-component.
|
|
583
|
+
* @returns {void}
|
|
570
584
|
*/
|
|
571
585
|
set b(b) {
|
|
572
586
|
this.z = b;
|
|
573
587
|
}
|
|
574
588
|
/**
|
|
575
589
|
* Gets the Alpha-component of the color.
|
|
576
|
-
* @returns The Alpha-component.
|
|
590
|
+
* @returns {number} The Alpha-component.
|
|
577
591
|
*/
|
|
578
592
|
get a() {
|
|
579
593
|
return this.w;
|
|
580
594
|
}
|
|
581
595
|
/**
|
|
582
596
|
* Sets the Alpha-component of the Color.
|
|
583
|
-
* @param
|
|
597
|
+
* @param {number} a - The new Alpha-component.
|
|
598
|
+
* @returns {void}
|
|
584
599
|
*/
|
|
585
600
|
set a(a) {
|
|
586
601
|
this.w = a;
|
|
587
602
|
}
|
|
588
603
|
/**
|
|
589
604
|
* Gets a copy of the vector's components as an array.
|
|
590
|
-
* @returns An array containing the Red, Green, Blue and Alpha components of the Color.
|
|
605
|
+
* @returns {[number, number, number, number]} An array containing the Red, Green, Blue and Alpha components of the Color.
|
|
591
606
|
*/
|
|
592
607
|
get rgba() {
|
|
593
608
|
return this.xyzw;
|
|
594
609
|
}
|
|
595
610
|
/**
|
|
596
611
|
* Sets all components of the Color at once.
|
|
597
|
-
* @param rgba - An array containing the new Red, Green and
|
|
612
|
+
* @param {[number, number, number, number]} rgba - An array containing the new Red, Green, Blue and Alpha components.
|
|
613
|
+
* @returns {void}
|
|
598
614
|
*/
|
|
599
615
|
set rgba(rgba) {
|
|
600
616
|
this.xyzw = rgba;
|
|
@@ -656,8 +672,8 @@ export class Vec4 {
|
|
|
656
672
|
}
|
|
657
673
|
/**
|
|
658
674
|
* Adds another vector to this vector.
|
|
659
|
-
* @param v - The vector to add.
|
|
660
|
-
* @returns This Vec4 instance for method chaining.
|
|
675
|
+
* @param {Vec4} v - The vector to add.
|
|
676
|
+
* @returns {this} This Vec4 instance for method chaining.
|
|
661
677
|
*/
|
|
662
678
|
add(v) {
|
|
663
679
|
this.#xyzw[0] += v.#xyzw[0];
|
|
@@ -719,9 +735,9 @@ export class Vec4 {
|
|
|
719
735
|
}
|
|
720
736
|
/**
|
|
721
737
|
* Clamps the magnitude of this vector between a minimum and maximum value.
|
|
722
|
-
* @param min - The minimum magnitude.
|
|
723
|
-
* @param max - The maximum magnitude.
|
|
724
|
-
* @returns This Vec4 instance for method chaining.
|
|
738
|
+
* @param {number} min - The minimum magnitude.
|
|
739
|
+
* @param {number} max - The maximum magnitude.
|
|
740
|
+
* @returns {this} This Vec4 instance for method chaining.
|
|
725
741
|
*/
|
|
726
742
|
clamp(min, max) {
|
|
727
743
|
const m = this.#magnitude;
|
|
@@ -743,7 +759,7 @@ export class Vec4 {
|
|
|
743
759
|
}
|
|
744
760
|
/**
|
|
745
761
|
* Creates a copy of this vector.
|
|
746
|
-
* @returns A new Vec4 instance with the same components.
|
|
762
|
+
* @returns {Vec4} A new Vec4 instance with the same components.
|
|
747
763
|
*/
|
|
748
764
|
clone() {
|
|
749
765
|
return new Vec4(this.#xyzw[0], this.#xyzw[1], this.#xyzw[2], this.#xyzw[3]);
|
|
@@ -774,8 +790,8 @@ export class Vec4 {
|
|
|
774
790
|
}
|
|
775
791
|
/**
|
|
776
792
|
* Calculates the Chebyshev distance between this vector and another vector.
|
|
777
|
-
* @param v - The
|
|
778
|
-
* @returns The Chebyshev distance between the vectors.
|
|
793
|
+
* @param {Vec4} v - The other vector.
|
|
794
|
+
* @returns {number} The Chebyshev distance between the vectors.
|
|
779
795
|
*/
|
|
780
796
|
distanceChebyshev(v) {
|
|
781
797
|
const absX = abs(this.#xyzw[0] - v.#xyzw[0]);
|
|
@@ -792,8 +808,8 @@ export class Vec4 {
|
|
|
792
808
|
}
|
|
793
809
|
/**
|
|
794
810
|
* Calculates the Manhattan distance between this vector and another vector.
|
|
795
|
-
* @param v - The other vector.
|
|
796
|
-
* @returns The Manhattan distance between the vectors.
|
|
811
|
+
* @param {Vec4} v - The other vector.
|
|
812
|
+
* @returns {number} The Manhattan distance between the vectors.
|
|
797
813
|
*/
|
|
798
814
|
distanceManhattan(v) {
|
|
799
815
|
return (abs(this.#xyzw[0] - v.#xyzw[0]) +
|
|
@@ -802,10 +818,10 @@ export class Vec4 {
|
|
|
802
818
|
abs(this.#xyzw[3] - v.#xyzw[3]));
|
|
803
819
|
}
|
|
804
820
|
/**
|
|
805
|
-
* Calculates the Minkowski distance between
|
|
806
|
-
* @param v - The other vector.
|
|
807
|
-
* @param p - The order of the Minkowski distance.
|
|
808
|
-
* @returns The Minkowski distance between the vectors.
|
|
821
|
+
* Calculates the Minkowski distance between this vector and another vector.
|
|
822
|
+
* @param {Vec4} v - The other vector.
|
|
823
|
+
* @param {number} p - The order of the Minkowski distance.
|
|
824
|
+
* @returns {number} The Minkowski distance between the vectors.
|
|
809
825
|
*/
|
|
810
826
|
distanceMinkowski(v, p) {
|
|
811
827
|
return ((abs(this.#xyzw[0] - v.#xyzw[0]) ** p +
|
|
@@ -984,23 +1000,7 @@ export class Vec4 {
|
|
|
984
1000
|
* @returns This Vec4 instance for method chaining.
|
|
985
1001
|
*/
|
|
986
1002
|
random(random = Math.random) {
|
|
987
|
-
|
|
988
|
-
let x2;
|
|
989
|
-
let x3;
|
|
990
|
-
let x4;
|
|
991
|
-
do {
|
|
992
|
-
x1 = random() * 2 - 1;
|
|
993
|
-
x2 = random() * 2 - 1;
|
|
994
|
-
x3 = random() * 2 - 1;
|
|
995
|
-
x4 = random() * 2 - 1;
|
|
996
|
-
} while (x1 ** 2 + x2 ** 2 >= 1 || x3 ** 2 + x4 ** 2 >= 1);
|
|
997
|
-
const f = sqrt((1 - x1 ** 2 - x2 ** 2) / (x3 ** 2 + x4 ** 2));
|
|
998
|
-
const m = this.#magnitude;
|
|
999
|
-
this.#xyzw[0] = m * x1;
|
|
1000
|
-
this.#xyzw[1] = m * x2;
|
|
1001
|
-
this.#xyzw[2] = m * x3 * f;
|
|
1002
|
-
this.#xyzw[3] = m * x4 * f;
|
|
1003
|
-
this.#computeMagnitude();
|
|
1003
|
+
this.copy(Vec4.random(random));
|
|
1004
1004
|
return this;
|
|
1005
1005
|
}
|
|
1006
1006
|
/**
|