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