@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/vec3.js
CHANGED
|
@@ -1,4 +1,8 @@
|
|
|
1
1
|
"use strict";
|
|
2
|
+
/**
|
|
3
|
+
* Documentation for 3D Vector class.
|
|
4
|
+
* @module Vec3
|
|
5
|
+
*/
|
|
2
6
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
7
|
exports.Vec3 = void 0;
|
|
4
8
|
const { sin, cos, acos, atan2, sqrt, abs } = Math;
|
|
@@ -12,9 +16,10 @@ class Vec3 {
|
|
|
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.
|
|
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
|
+
* @returns {void}
|
|
18
23
|
*/
|
|
19
24
|
#computeMagnitude(x = this.#xyz[0], y = this.#xyz[1], z = this.#xyz[2]) {
|
|
20
25
|
if (x !== this.#prevXYZ[0] || y !== this.#prevXYZ[1] || z !== this.#prevXYZ[2]) {
|
|
@@ -26,9 +31,9 @@ class Vec3 {
|
|
|
26
31
|
}
|
|
27
32
|
/**
|
|
28
33
|
* Creates a new Vec3 instance.
|
|
29
|
-
* @param x - The x-coordinate of the vector.
|
|
30
|
-
* @param y - The y-coordinate of the vector.
|
|
31
|
-
* @param z - The z-coordinate of the vector.
|
|
34
|
+
* @param {number} x - The x-coordinate of the vector.
|
|
35
|
+
* @param {number} y - The y-coordinate of the vector.
|
|
36
|
+
* @param {number} z - The z-coordinate of the vector.
|
|
32
37
|
*/
|
|
33
38
|
constructor(x = 0, y = 0, z = 0) {
|
|
34
39
|
this.#xyz[0] = x;
|
|
@@ -38,18 +43,18 @@ class Vec3 {
|
|
|
38
43
|
}
|
|
39
44
|
/**
|
|
40
45
|
* Adds two vectors.
|
|
41
|
-
* @param v - The first vector.
|
|
42
|
-
* @param w - The second vector.
|
|
43
|
-
* @returns A new Vec3 instance representing the sum.
|
|
46
|
+
* @param {Vec3} v - The first vector.
|
|
47
|
+
* @param {Vec3} w - The second vector.
|
|
48
|
+
* @returns {Vec3} A new Vec3 instance representing the sum.
|
|
44
49
|
*/
|
|
45
50
|
static add(v, w) {
|
|
46
51
|
return new Vec3(v.#xyz[0] + w.#xyz[0], v.#xyz[1] + w.#xyz[1], v.#xyz[2] + w.#xyz[2]);
|
|
47
52
|
}
|
|
48
53
|
/**
|
|
49
54
|
* Subtracts one vector from another.
|
|
50
|
-
* @param v - The vector to subtract from.
|
|
51
|
-
* @param w - The vector to subtract.
|
|
52
|
-
* @returns A new
|
|
55
|
+
* @param {Vec3} v - The vector to subtract from.
|
|
56
|
+
* @param {Vec3} w - The vector to subtract.
|
|
57
|
+
* @returns {Vec3} A new Vec3 instance representing the difference.
|
|
53
58
|
*/
|
|
54
59
|
static subtract(v, w) {
|
|
55
60
|
return new Vec3(v.#xyz[0] - w.#xyz[0], v.#xyz[1] - w.#xyz[1], v.#xyz[2] - w.#xyz[2]);
|
|
@@ -74,18 +79,18 @@ class Vec3 {
|
|
|
74
79
|
}
|
|
75
80
|
/**
|
|
76
81
|
* Calculates the angle between two vectors.
|
|
77
|
-
* @param v - The first vector.
|
|
78
|
-
* @param w - The second vector.
|
|
79
|
-
* @returns The angle between the vectors in radians.
|
|
82
|
+
* @param {Vec3} v - The first vector.
|
|
83
|
+
* @param {Vec3} w - The second vector.
|
|
84
|
+
* @returns {number} The angle between the vectors in radians.
|
|
80
85
|
*/
|
|
81
86
|
static angleBetween(v, w) {
|
|
82
87
|
return acos((v.#xyz[0] * w.#xyz[0] + v.#xyz[1] * w.#xyz[1] + v.#xyz[2] * w.#xyz[2]) / (v.#magnitude * w.#magnitude));
|
|
83
88
|
}
|
|
84
89
|
/**
|
|
85
90
|
* Calculates the cross product of two vectors.
|
|
86
|
-
* @param v - The first vector.
|
|
87
|
-
* @param w - The second vector.
|
|
88
|
-
* @returns The cross product of the two vectors.
|
|
91
|
+
* @param {Vec3} v - The first vector.
|
|
92
|
+
* @param {Vec3} w - The second vector.
|
|
93
|
+
* @returns {Vec3} The cross product of the two vectors.
|
|
89
94
|
*/
|
|
90
95
|
static cross(v, w) {
|
|
91
96
|
const vX = v.#xyz[0];
|
|
@@ -110,18 +115,18 @@ class Vec3 {
|
|
|
110
115
|
}
|
|
111
116
|
/**
|
|
112
117
|
* Calculates the Euclidean distance between two vectors.
|
|
113
|
-
* @param v - The first vector.
|
|
114
|
-
* @param w - The second vector.
|
|
115
|
-
* @returns The distance between the vectors.
|
|
118
|
+
* @param {Vec3} v - The first vector.
|
|
119
|
+
* @param {Vec3} w - The second vector.
|
|
120
|
+
* @returns {number} The distance between the vectors.
|
|
116
121
|
*/
|
|
117
122
|
static distance(v, w) {
|
|
118
123
|
return sqrt((v.#xyz[0] - w.#xyz[0]) ** 2 + (v.#xyz[1] - w.#xyz[1]) ** 2 + (v.#xyz[2] - w.#xyz[2]) ** 2);
|
|
119
124
|
}
|
|
120
125
|
/**
|
|
121
126
|
* Calculates the Chebyshev distance between two vectors.
|
|
122
|
-
* @param v - The first vector.
|
|
123
|
-
* @param w - The second vector.
|
|
124
|
-
* @returns The Chebyshev distance between the vectors.
|
|
127
|
+
* @param {Vec3} v - The first vector.
|
|
128
|
+
* @param {Vec3} w - The second vector.
|
|
129
|
+
* @returns {number} The Chebyshev distance between the vectors.
|
|
125
130
|
*/
|
|
126
131
|
static distanceChebyshev(v, w) {
|
|
127
132
|
const absX = abs(v.#xyz[0] - w.#xyz[0]);
|
|
@@ -131,66 +136,67 @@ class Vec3 {
|
|
|
131
136
|
}
|
|
132
137
|
/**
|
|
133
138
|
* Calculates the Manhattan distance between two vectors.
|
|
134
|
-
* @param v - The first vector.
|
|
135
|
-
* @param w - The second vector.
|
|
136
|
-
* @returns The Manhattan distance between the vectors.
|
|
139
|
+
* @param {Vec3} v - The first vector.
|
|
140
|
+
* @param {Vec3} w - The second vector.
|
|
141
|
+
* @returns {number} The Manhattan distance between the vectors.
|
|
137
142
|
*/
|
|
138
143
|
static distanceManhattan(v, w) {
|
|
139
144
|
return abs(v.#xyz[0] - w.#xyz[0]) + abs(v.#xyz[1] - w.#xyz[1]) + abs(v.#xyz[2] - w.#xyz[2]);
|
|
140
145
|
}
|
|
141
146
|
/**
|
|
142
147
|
* Calculates the Minkowski distance between two vectors.
|
|
143
|
-
* @param v - The first vector.
|
|
144
|
-
* @param w - The second vector.
|
|
145
|
-
* @param p - The order of the Minkowski distance.
|
|
146
|
-
* @returns The Minkowski distance between the vectors.
|
|
148
|
+
* @param {Vec3} v - The first vector.
|
|
149
|
+
* @param {Vec3} w - The second vector.
|
|
150
|
+
* @param {number} p - The order of the Minkowski distance.
|
|
151
|
+
* @returns {number} The Minkowski distance between the vectors.
|
|
147
152
|
*/
|
|
148
153
|
static distanceMinkowski(v, w, p) {
|
|
149
154
|
return ((abs(v.#xyz[0] - w.#xyz[0]) ** p + abs(v.#xyz[1] - w.#xyz[1]) ** p + abs(v.#xyz[2] - w.#xyz[2]) ** p) ** (1 / p));
|
|
150
155
|
}
|
|
151
156
|
/**
|
|
152
157
|
* Calculates the squared Euclidean distance between two vectors.
|
|
153
|
-
* @param v - The first vector.
|
|
154
|
-
* @param w - The second vector.
|
|
155
|
-
* @returns The squared distance between the vectors.
|
|
158
|
+
* @param {Vec3} v - The first vector.
|
|
159
|
+
* @param {Vec3} w - The second vector.
|
|
160
|
+
* @returns {number} The squared distance between the vectors.
|
|
156
161
|
*/
|
|
157
162
|
static distanceSq(v, w) {
|
|
158
163
|
return (v.#xyz[0] - w.#xyz[0]) ** 2 + (v.#xyz[1] - w.#xyz[1]) ** 2 + (v.#xyz[2] - w.#xyz[2]) ** 2;
|
|
159
164
|
}
|
|
160
165
|
/**
|
|
161
166
|
* Calculates the dot product of two vectors.
|
|
162
|
-
* @param v - The first vector.
|
|
163
|
-
* @param w - The second vector.
|
|
164
|
-
* @returns The dot product of the two vectors.
|
|
167
|
+
* @param {Vec3} v - The first vector.
|
|
168
|
+
* @param {Vec3} w - The second vector.
|
|
169
|
+
* @returns {number} The dot product of the two vectors.
|
|
165
170
|
*/
|
|
166
171
|
static dot(v, w) {
|
|
167
172
|
return v.#xyz[0] * w.#xyz[0] + v.#xyz[1] * w.#xyz[1] + v.#xyz[2] * w.#xyz[2];
|
|
168
173
|
}
|
|
169
174
|
/**
|
|
170
175
|
* Creates a Vec3 from cylindrical coordinates.
|
|
171
|
-
* @param r - Radial distance from the z-axis
|
|
172
|
-
* @param phi - Azimuthal angle in the x-y plane from the x-axis
|
|
173
|
-
* @param z - Height above the x-y plane
|
|
174
|
-
* @returns New Vec3 instance
|
|
176
|
+
* @param {number} r - Radial distance from the z-axis
|
|
177
|
+
* @param {number} phi - Azimuthal angle in the x-y plane from the x-axis
|
|
178
|
+
* @param {number} z - Height above the x-y plane
|
|
179
|
+
* @returns {Vec3} New Vec3 instance
|
|
175
180
|
*/
|
|
176
181
|
static fromCylindricalCoords(r, phi, z) {
|
|
177
182
|
return new Vec3(r * cos(phi), r * sin(phi), z);
|
|
178
183
|
}
|
|
179
184
|
/**
|
|
180
185
|
* Creates a Vec3 from spherical coordinates.
|
|
181
|
-
* @param r - Radial distance from origin
|
|
182
|
-
* @param theta - Polar angle from the z-axis
|
|
183
|
-
* @param phi - Azimuthal angle in the x-y plane from the x-axis
|
|
184
|
-
* @returns New Vec3 instance
|
|
186
|
+
* @param {number} r - Radial distance from origin
|
|
187
|
+
* @param {number} theta - Polar angle from the z-axis
|
|
188
|
+
* @param {number} phi - Azimuthal angle in the x-y plane from the x-axis
|
|
189
|
+
* @returns {Vec3} New Vec3 instance
|
|
185
190
|
*/
|
|
186
191
|
static fromSphericalCoords(r, theta, phi) {
|
|
187
192
|
return new Vec3(r * sin(theta) * cos(phi), r * sin(theta) * sin(phi), r * cos(theta));
|
|
188
193
|
}
|
|
189
194
|
/**
|
|
190
195
|
* Creates an immutable Vec3-like object.
|
|
191
|
-
* @param x - The x-coordinate of the vector.
|
|
192
|
-
* @param y - The y-coordinate of the vector.
|
|
193
|
-
* @
|
|
196
|
+
* @param {number} x - The x-coordinate of the vector.
|
|
197
|
+
* @param {number} y - The y-coordinate of the vector.
|
|
198
|
+
* @param {number} z - The z-coordinate of the vector.
|
|
199
|
+
* @returns {Readonly<{ x: number; y: number; z: number; xyz: readonly number[]; r: number; g: number; b: number; rgb: readonly number[]; magnitude: number; magnitudeSq: number; angleX: number; angleY: number; angleZ: number; isInfinite: boolean; isNaN: boolean; isZero: boolean }>} An immutable object with Vec3-like properties.
|
|
194
200
|
*/
|
|
195
201
|
static immutable(x = 0, y = 0, z = 0) {
|
|
196
202
|
const data = new Float64Array(10);
|
|
@@ -266,8 +272,8 @@ class Vec3 {
|
|
|
266
272
|
}
|
|
267
273
|
/**
|
|
268
274
|
* Checks if a vector has infinite components.
|
|
269
|
-
* @param v - The vector to check.
|
|
270
|
-
* @returns True if the vector has infinite components, false otherwise.
|
|
275
|
+
* @param {Vec3} v - The vector to check.
|
|
276
|
+
* @returns {boolean} True if the vector has infinite components, false otherwise.
|
|
271
277
|
*/
|
|
272
278
|
static isInfinite(v) {
|
|
273
279
|
const x = v.#xyz[0];
|
|
@@ -282,26 +288,26 @@ class Vec3 {
|
|
|
282
288
|
}
|
|
283
289
|
/**
|
|
284
290
|
* Checks if a vector has NaN components.
|
|
285
|
-
* @param v - The vector to check.
|
|
286
|
-
* @returns True if the vector has NaN components, false otherwise.
|
|
291
|
+
* @param {Vec3} v - The vector to check.
|
|
292
|
+
* @returns {boolean} True if the vector has NaN components, false otherwise.
|
|
287
293
|
*/
|
|
288
294
|
static isNaN(v) {
|
|
289
295
|
return Number.isNaN(v.#xyz[0]) || Number.isNaN(v.#xyz[1]) || Number.isNaN(v.#xyz[2]);
|
|
290
296
|
}
|
|
291
297
|
/**
|
|
292
298
|
* Checks if a vector is zero.
|
|
293
|
-
* @param v - The vector to check.
|
|
294
|
-
* @returns True if the vector is zero, false otherwise.
|
|
299
|
+
* @param {Vec3} v - The vector to check.
|
|
300
|
+
* @returns {boolean} True if the vector is zero, false otherwise.
|
|
295
301
|
*/
|
|
296
302
|
static isZero(v) {
|
|
297
303
|
return v.#xyz[0] === 0 && v.#xyz[1] === 0 && v.#xyz[2] === 0;
|
|
298
304
|
}
|
|
299
305
|
/**
|
|
300
306
|
* Performs linear interpolation between two vectors.
|
|
301
|
-
* @param v - The first vector.
|
|
302
|
-
* @param w - The second vector.
|
|
303
|
-
* @param t - The interpolation parameter (0 to 1).
|
|
304
|
-
* @returns A new
|
|
307
|
+
* @param {Vec3} v - The first vector.
|
|
308
|
+
* @param {Vec3} w - The second vector.
|
|
309
|
+
* @param {number} t - The interpolation parameter (0 to 1).
|
|
310
|
+
* @returns {Vec3} A new Vec3 instance representing the interpolated vector.
|
|
305
311
|
*/
|
|
306
312
|
static lerp(v, w, t) {
|
|
307
313
|
if (t > 1)
|
|
@@ -315,16 +321,16 @@ class Vec3 {
|
|
|
315
321
|
}
|
|
316
322
|
/**
|
|
317
323
|
* Negates a vector.
|
|
318
|
-
* @param v - The vector to negate.
|
|
319
|
-
* @returns A new
|
|
324
|
+
* @param {Vec3} v - The vector to negate.
|
|
325
|
+
* @returns {Vec3} A new Vec3 instance representing the negated vector.
|
|
320
326
|
*/
|
|
321
327
|
static negate(v) {
|
|
322
328
|
return new Vec3(-v.#xyz[0], -v.#xyz[1], -v.#xyz[2]);
|
|
323
329
|
}
|
|
324
330
|
/**
|
|
325
331
|
* Normalizes a vector.
|
|
326
|
-
* @param v - The vector to normalize.
|
|
327
|
-
* @returns A new
|
|
332
|
+
* @param {Vec3} v - The vector to normalize.
|
|
333
|
+
* @returns {Vec3} A new Vec3 instance representing the normalized vector.
|
|
328
334
|
*/
|
|
329
335
|
static normalize(v) {
|
|
330
336
|
const m = v.#magnitude;
|
|
@@ -332,9 +338,9 @@ class Vec3 {
|
|
|
332
338
|
}
|
|
333
339
|
/**
|
|
334
340
|
* Projects one vector onto another.
|
|
335
|
-
* @param v - The vector to project.
|
|
336
|
-
* @param w - The vector to project onto.
|
|
337
|
-
* @returns A new
|
|
341
|
+
* @param {Vec3} v - The vector to project.
|
|
342
|
+
* @param {Vec3} w - The vector to project onto.
|
|
343
|
+
* @returns {Vec3} A new Vec3 instance representing the projected vector.
|
|
338
344
|
*/
|
|
339
345
|
static project(v, w) {
|
|
340
346
|
const vM = v.#magnitude;
|
|
@@ -347,33 +353,26 @@ class Vec3 {
|
|
|
347
353
|
}
|
|
348
354
|
/**
|
|
349
355
|
* Creates a random unit vector.
|
|
350
|
-
* @param random - A function that returns a random number between 0 and 1.
|
|
351
|
-
* @returns A new Vec3 instance representing a random unit vector.
|
|
356
|
+
* @param {() => number} random - A function that returns a random number between 0 and 1.
|
|
357
|
+
* @returns {Vec3} A new Vec3 instance representing a random unit vector.
|
|
352
358
|
*/
|
|
353
359
|
static random(random = Math.random) {
|
|
354
|
-
|
|
355
|
-
let x2;
|
|
356
|
-
do {
|
|
357
|
-
x1 = random() * 2 - 1;
|
|
358
|
-
x2 = random() * 2 - 1;
|
|
359
|
-
} while (x1 ** 2 + x2 ** 2 >= 1);
|
|
360
|
-
const f = sqrt(1 - x1 ** 2 - x2 ** 2);
|
|
361
|
-
return new Vec3(2 * x1 * f, 2 * x2 * f, 1 - 2 * (x1 ** 2 + x2 ** 2));
|
|
360
|
+
return Vec3.fromSphericalCoords(Math.acos(2 * random() - 1), random() * Math.PI * 2, 1);
|
|
362
361
|
}
|
|
363
362
|
/**
|
|
364
363
|
* Checks if two vectors are equal.
|
|
365
|
-
* @param v - The first vector.
|
|
366
|
-
* @param w - The second vector.
|
|
367
|
-
* @returns True if the vectors are equal, false otherwise.
|
|
364
|
+
* @param {Vec3} v - The first vector.
|
|
365
|
+
* @param {Vec3} w - The second vector.
|
|
366
|
+
* @returns {boolean} True if the vectors are equal, false otherwise.
|
|
368
367
|
*/
|
|
369
368
|
static satisfyEquality(v, w) {
|
|
370
369
|
return v.#xyz[0] === w.#xyz[0] && v.#xyz[1] === w.#xyz[1] && v.#xyz[2] === w.#xyz[2];
|
|
371
370
|
}
|
|
372
371
|
/**
|
|
373
372
|
* Checks if two vectors are opposite.
|
|
374
|
-
* @param v - The first vector.
|
|
375
|
-
* @param w - The second vector.
|
|
376
|
-
* @returns True if the vectors are opposite, false otherwise.
|
|
373
|
+
* @param {Vec3} v - The first vector.
|
|
374
|
+
* @param {Vec3} w - The second vector.
|
|
375
|
+
* @returns {boolean} True if the vectors are opposite, false otherwise.
|
|
377
376
|
*/
|
|
378
377
|
static satisfyOpposition(v, w) {
|
|
379
378
|
return v.#xyz[0] === -w.#xyz[0] && v.#xyz[1] === -w.#xyz[1] && v.#xyz[2] === -w.#xyz[2];
|
|
@@ -392,16 +391,16 @@ class Vec3 {
|
|
|
392
391
|
}
|
|
393
392
|
/**
|
|
394
393
|
* Scales a vector by a scalar value.
|
|
395
|
-
* @param v - The vector to scale.
|
|
396
|
-
* @param c - The scalar value.
|
|
397
|
-
* @returns A new Vec3 instance representing the scaled vector.
|
|
394
|
+
* @param {Vec3} v - The vector to scale.
|
|
395
|
+
* @param {number} c - The scalar value.
|
|
396
|
+
* @returns {Vec3} A new Vec3 instance representing the scaled vector.
|
|
398
397
|
*/
|
|
399
398
|
static scale(v, c) {
|
|
400
399
|
return new Vec3(v.#xyz[0] * c, v.#xyz[1] * c, v.#xyz[2] * c);
|
|
401
400
|
}
|
|
402
401
|
/**
|
|
403
402
|
* Creates a zero vector.
|
|
404
|
-
* @returns A new Vec3 instance representing a zero vector.
|
|
403
|
+
* @returns {Vec3} A new Vec3 instance representing a zero vector.
|
|
405
404
|
*/
|
|
406
405
|
static zero() {
|
|
407
406
|
return new Vec3();
|
|
@@ -415,14 +414,16 @@ class Vec3 {
|
|
|
415
414
|
}
|
|
416
415
|
/**
|
|
417
416
|
* Creates a Vec3 from an array.
|
|
418
|
-
* @
|
|
417
|
+
* @param {[number, number, number] | number[]} arr - An array containing the x, y, and z coordinates.
|
|
418
|
+
* @returns {Vec3} A new Vec3 instance.
|
|
419
419
|
*/
|
|
420
420
|
static fromArray(arr) {
|
|
421
421
|
return new Vec3(arr[0] ?? 0, arr[1] ?? 0, arr[2] ?? 0);
|
|
422
422
|
}
|
|
423
423
|
/**
|
|
424
424
|
* Creates a Vec3 from an object with x, y and z properties.
|
|
425
|
-
* @
|
|
425
|
+
* @param {{ x: number; y: number; z: number }} obj - An object with x, y, and z properties.
|
|
426
|
+
* @returns {Vec3} A new Vec3 instance.
|
|
426
427
|
*/
|
|
427
428
|
static fromObject(obj) {
|
|
428
429
|
return new Vec3(obj.x, obj.y, obj.z);
|
|
@@ -437,14 +438,15 @@ class Vec3 {
|
|
|
437
438
|
}
|
|
438
439
|
/**
|
|
439
440
|
* Gets the x-component of the vector.
|
|
440
|
-
* @returns The x-component.
|
|
441
|
+
* @returns {number} The x-component.
|
|
441
442
|
*/
|
|
442
443
|
get x() {
|
|
443
444
|
return this.#xyz[0];
|
|
444
445
|
}
|
|
445
446
|
/**
|
|
446
447
|
* Sets the x-component of the vector.
|
|
447
|
-
* @param x - The new x-component.
|
|
448
|
+
* @param {number} x - The new x-component.
|
|
449
|
+
* @returns {void}
|
|
448
450
|
*/
|
|
449
451
|
set x(x) {
|
|
450
452
|
this.#xyz[0] = x;
|
|
@@ -452,14 +454,15 @@ class Vec3 {
|
|
|
452
454
|
}
|
|
453
455
|
/**
|
|
454
456
|
* Gets the y-component of the vector.
|
|
455
|
-
* @returns The y-component.
|
|
457
|
+
* @returns {number} The y-component.
|
|
456
458
|
*/
|
|
457
459
|
get y() {
|
|
458
460
|
return this.#xyz[1];
|
|
459
461
|
}
|
|
460
462
|
/**
|
|
461
463
|
* Sets the y-component of the vector.
|
|
462
|
-
* @param y - The new y-component.
|
|
464
|
+
* @param {number} y - The new y-component.
|
|
465
|
+
* @returns {void}
|
|
463
466
|
*/
|
|
464
467
|
set y(y) {
|
|
465
468
|
this.#xyz[1] = y;
|
|
@@ -467,14 +470,15 @@ class Vec3 {
|
|
|
467
470
|
}
|
|
468
471
|
/**
|
|
469
472
|
* Gets the z-component of the vector.
|
|
470
|
-
* @returns The z-component.
|
|
473
|
+
* @returns {number} The z-component.
|
|
471
474
|
*/
|
|
472
475
|
get z() {
|
|
473
476
|
return this.#xyz[2];
|
|
474
477
|
}
|
|
475
478
|
/**
|
|
476
479
|
* Sets the z-component of the vector.
|
|
477
|
-
* @param z - The new z-component.
|
|
480
|
+
* @param {number} z - The new z-component.
|
|
481
|
+
* @returns {void}
|
|
478
482
|
*/
|
|
479
483
|
set z(z) {
|
|
480
484
|
this.#xyz[2] = z;
|
|
@@ -482,14 +486,15 @@ class Vec3 {
|
|
|
482
486
|
}
|
|
483
487
|
/**
|
|
484
488
|
* Gets a copy of the vector's components as an array.
|
|
485
|
-
* @returns An array containing the x, y and z components of the vector.
|
|
489
|
+
* @returns {[number, number, number]} An array containing the x, y and z components of the vector.
|
|
486
490
|
*/
|
|
487
491
|
get xyz() {
|
|
488
492
|
return Array.from(this.#xyz.slice());
|
|
489
493
|
}
|
|
490
494
|
/**
|
|
491
495
|
* Sets all components of the vector at once.
|
|
492
|
-
* @param xyz - An array containing the new x, y and z components.
|
|
496
|
+
* @param {[number, number, number]} xyz - An array containing the new x, y and z components.
|
|
497
|
+
* @returns {void}
|
|
493
498
|
*/
|
|
494
499
|
set xyz(xyz) {
|
|
495
500
|
this.#xyz[0] = xyz[0];
|
|
@@ -499,56 +504,60 @@ class Vec3 {
|
|
|
499
504
|
}
|
|
500
505
|
/**
|
|
501
506
|
* Gets the Red-component of a Color.
|
|
502
|
-
* @returns The Red-component.
|
|
507
|
+
* @returns {number} The Red-component.
|
|
503
508
|
*/
|
|
504
509
|
get r() {
|
|
505
510
|
return this.x;
|
|
506
511
|
}
|
|
507
512
|
/**
|
|
508
513
|
* Sets the Red-component of a Color.
|
|
509
|
-
* @param r - The new Red-component.
|
|
514
|
+
* @param {number} r - The new Red-component.
|
|
515
|
+
* @returns {void}
|
|
510
516
|
*/
|
|
511
517
|
set r(r) {
|
|
512
518
|
this.x = r;
|
|
513
519
|
}
|
|
514
520
|
/**
|
|
515
521
|
* Gets the Green-component of a Color.
|
|
516
|
-
* @returns The Green-component.
|
|
522
|
+
* @returns {number} The Green-component.
|
|
517
523
|
*/
|
|
518
524
|
get g() {
|
|
519
525
|
return this.y;
|
|
520
526
|
}
|
|
521
527
|
/**
|
|
522
528
|
* Sets the Green-component of the Color.
|
|
523
|
-
* @param g - The new Green-component.
|
|
529
|
+
* @param {number} g - The new Green-component.
|
|
530
|
+
* @returns {void}
|
|
524
531
|
*/
|
|
525
532
|
set g(g) {
|
|
526
533
|
this.y = g;
|
|
527
534
|
}
|
|
528
535
|
/**
|
|
529
536
|
* Gets the Blue-component of the color.
|
|
530
|
-
* @returns The Blue-component.
|
|
537
|
+
* @returns {number} The Blue-component.
|
|
531
538
|
*/
|
|
532
539
|
get b() {
|
|
533
540
|
return this.z;
|
|
534
541
|
}
|
|
535
542
|
/**
|
|
536
543
|
* Sets the Blue-component of the Color.
|
|
537
|
-
* @param b - The new Blue-component.
|
|
544
|
+
* @param {number} b - The new Blue-component.
|
|
545
|
+
* @returns {void}
|
|
538
546
|
*/
|
|
539
547
|
set b(b) {
|
|
540
548
|
this.z = b;
|
|
541
549
|
}
|
|
542
550
|
/**
|
|
543
551
|
* Gets a copy of the vector's components as an array.
|
|
544
|
-
* @returns An array containing the x, y and z components of the vector.
|
|
552
|
+
* @returns {[number, number, number]} An array containing the x, y and z components of the vector.
|
|
545
553
|
*/
|
|
546
554
|
get rgb() {
|
|
547
555
|
return this.xyz;
|
|
548
556
|
}
|
|
549
557
|
/**
|
|
550
558
|
* Sets all components of the Color at once.
|
|
551
|
-
* @param rgb - An array containing the new Red, Green and Blue components.
|
|
559
|
+
* @param {[number, number, number]} rgb - An array containing the new Red, Green and Blue components.
|
|
560
|
+
* @returns {void}
|
|
552
561
|
*/
|
|
553
562
|
set rgb(rgb) {
|
|
554
563
|
this.xyz = rgb;
|
|
@@ -602,8 +611,8 @@ class Vec3 {
|
|
|
602
611
|
}
|
|
603
612
|
/**
|
|
604
613
|
* Adds another vector to this vector.
|
|
605
|
-
* @param v - The vector to add.
|
|
606
|
-
* @returns This Vec3 instance for method chaining.
|
|
614
|
+
* @param {Vec3} v - The vector to add.
|
|
615
|
+
* @returns {this} This Vec3 instance for method chaining.
|
|
607
616
|
*/
|
|
608
617
|
add(v) {
|
|
609
618
|
this.#xyz[0] += v.#xyz[0];
|
|
@@ -681,7 +690,7 @@ class Vec3 {
|
|
|
681
690
|
}
|
|
682
691
|
/**
|
|
683
692
|
* Creates a copy of this vector.
|
|
684
|
-
* @returns A new Vec3 instance with the same components.
|
|
693
|
+
* @returns {Vec3} A new Vec3 instance with the same components.
|
|
685
694
|
*/
|
|
686
695
|
clone() {
|
|
687
696
|
return new Vec3(this.#xyz[0], this.#xyz[1], this.#xyz[2]);
|
|
@@ -700,16 +709,16 @@ class Vec3 {
|
|
|
700
709
|
}
|
|
701
710
|
/**
|
|
702
711
|
* Calculates the dot product of this vector with another vector.
|
|
703
|
-
* @param v - The other vector.
|
|
704
|
-
* @returns The dot product of the vectors.
|
|
712
|
+
* @param {Vec3} v - The other vector.
|
|
713
|
+
* @returns {number} The dot product of the vectors.
|
|
705
714
|
*/
|
|
706
715
|
dot(v) {
|
|
707
716
|
return this.#xyz[0] * v.#xyz[0] + this.#xyz[1] * v.#xyz[1] + this.#xyz[2] * v.#xyz[2];
|
|
708
717
|
}
|
|
709
718
|
/**
|
|
710
719
|
* Calculates cross product between this vector and another vector.
|
|
711
|
-
* @param v - The other vector.
|
|
712
|
-
* @returns
|
|
720
|
+
* @param {Vec3} v - The other vector.
|
|
721
|
+
* @returns {this} This Vec3 instance for method chaining.
|
|
713
722
|
*/
|
|
714
723
|
cross(v) {
|
|
715
724
|
const x = this.#xyz[0];
|
|
@@ -748,8 +757,8 @@ class Vec3 {
|
|
|
748
757
|
}
|
|
749
758
|
/**
|
|
750
759
|
* Calculates the Chebyshev distance between vector and another vector.
|
|
751
|
-
* @param v - The other vector.
|
|
752
|
-
* @returns The Chebyshev distance between the vectors.
|
|
760
|
+
* @param {Vec3} v - The other vector.
|
|
761
|
+
* @returns {number} The Chebyshev distance between the vectors.
|
|
753
762
|
*/
|
|
754
763
|
distanceChebyshev(v) {
|
|
755
764
|
const absX = abs(this.#xyz[0] - v.#xyz[0]);
|
|
@@ -759,17 +768,17 @@ class Vec3 {
|
|
|
759
768
|
}
|
|
760
769
|
/**
|
|
761
770
|
* Calculates the Manhattan distance between vector and another vector.
|
|
762
|
-
* @param v - The other vector.
|
|
763
|
-
* @returns The Manhattan distance between the vectors.
|
|
771
|
+
* @param {Vec3} v - The other vector.
|
|
772
|
+
* @returns {number} The Manhattan distance between the vectors.
|
|
764
773
|
*/
|
|
765
774
|
distanceManhattan(v) {
|
|
766
775
|
return abs(this.#xyz[0] - v.#xyz[0]) + abs(this.#xyz[1] - v.#xyz[1]) + abs(this.#xyz[2] - v.#xyz[2]);
|
|
767
776
|
}
|
|
768
777
|
/**
|
|
769
778
|
* Calculates the Minkowski distance between this vector and another vector.
|
|
770
|
-
* @param v - The other vector.
|
|
771
|
-
* @param p - The order of the Minkowski distance.
|
|
772
|
-
* @returns The Minkowski distance between the vectors.
|
|
779
|
+
* @param {Vec3} v - The other vector.
|
|
780
|
+
* @param {number} p - The order of the Minkowski distance.
|
|
781
|
+
* @returns {number} The Minkowski distance between the vectors.
|
|
773
782
|
*/
|
|
774
783
|
distanceMinkowski(v, p) {
|
|
775
784
|
return ((abs(this.#xyz[0] - v.#xyz[0]) ** p + abs(this.#xyz[1] - v.#xyz[1]) ** p + abs(this.#xyz[2] - v.#xyz[2]) ** p) **
|
|
@@ -903,18 +912,7 @@ class Vec3 {
|
|
|
903
912
|
* @returns This Vec3 instance for method chaining.
|
|
904
913
|
*/
|
|
905
914
|
random(random = Math.random) {
|
|
906
|
-
|
|
907
|
-
let x2;
|
|
908
|
-
do {
|
|
909
|
-
x1 = random() * 2 - 1;
|
|
910
|
-
x2 = random() * 2 - 1;
|
|
911
|
-
} while (x1 ** 2 + x2 ** 2 >= 1);
|
|
912
|
-
const f = sqrt(1 - x1 ** 2 - x2 ** 2);
|
|
913
|
-
const m = this.#magnitude;
|
|
914
|
-
this.#xyz[0] = m * 2 * x1 * f;
|
|
915
|
-
this.#xyz[1] = m * 2 * x2 * f;
|
|
916
|
-
this.#xyz[2] = m * (1 - 2 * (x1 ** 2 + x2 ** 2));
|
|
917
|
-
this.#computeMagnitude();
|
|
915
|
+
this.copy(Vec3.fromSphericalCoords(Math.acos(2 * random() - 1), random() * Math.PI * 2, 1));
|
|
918
916
|
return this;
|
|
919
917
|
}
|
|
920
918
|
/**
|