@fimbul-works/vec 1.0.3 → 2.0.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +208 -85
- package/dist/cjs/2d/add-2d.d.ts +8 -0
- package/dist/cjs/2d/add-2d.js +11 -0
- package/dist/cjs/2d/angle-between-2d.d.ts +8 -0
- package/dist/cjs/2d/angle-between-2d.js +11 -0
- package/dist/cjs/2d/angle-x-2d.d.ts +7 -0
- package/dist/cjs/2d/angle-x-2d.js +10 -0
- package/dist/cjs/2d/angle-y-2d.d.ts +7 -0
- package/dist/cjs/2d/angle-y-2d.js +10 -0
- package/dist/cjs/2d/clamp-2d.d.ts +10 -0
- package/dist/cjs/2d/clamp-2d.js +14 -0
- package/dist/cjs/2d/clone-2d.d.ts +7 -0
- package/dist/cjs/2d/clone-2d.js +10 -0
- package/dist/cjs/2d/cross-2d.d.ts +8 -0
- package/dist/cjs/2d/cross-2d.js +11 -0
- package/dist/cjs/2d/distance-2d.d.ts +8 -0
- package/dist/cjs/2d/distance-2d.js +11 -0
- package/dist/cjs/2d/distance-chebyshev-2d.d.ts +8 -0
- package/dist/cjs/2d/distance-chebyshev-2d.js +15 -0
- package/dist/cjs/2d/distance-manhattan-2d.d.ts +8 -0
- package/dist/cjs/2d/distance-manhattan-2d.js +11 -0
- package/dist/cjs/2d/distance-minkowski-2d.d.ts +9 -0
- package/dist/cjs/2d/distance-minkowski-2d.js +12 -0
- package/dist/cjs/2d/distance-sq-2d.d.ts +8 -0
- package/dist/cjs/2d/distance-sq-2d.js +11 -0
- package/dist/cjs/2d/divide-2d.d.ts +8 -0
- package/dist/cjs/2d/divide-2d.js +14 -0
- package/dist/cjs/2d/dot-2d.d.ts +8 -0
- package/dist/cjs/2d/dot-2d.js +11 -0
- package/dist/cjs/2d/from-angle-x-2d.d.ts +8 -0
- package/dist/cjs/2d/from-angle-x-2d.js +14 -0
- package/dist/cjs/2d/from-angle-y-2d.d.ts +8 -0
- package/dist/cjs/2d/from-angle-y-2d.js +14 -0
- package/dist/cjs/2d/from-object-2d.d.ts +10 -0
- package/dist/cjs/2d/from-object-2d.js +10 -0
- package/dist/cjs/2d/from-polar-coords-2d.d.ts +8 -0
- package/dist/cjs/2d/from-polar-coords-2d.js +11 -0
- package/dist/cjs/2d/immutable-2d.d.ts +7 -0
- package/dist/cjs/2d/immutable-2d.js +10 -0
- package/dist/cjs/2d/index.d.ts +47 -0
- package/dist/cjs/2d/index.js +63 -0
- package/dist/cjs/2d/is-equal-2d.d.ts +8 -0
- package/dist/cjs/2d/is-equal-2d.js +11 -0
- package/dist/cjs/2d/is-equal-approx-2d.d.ts +9 -0
- package/dist/cjs/2d/is-equal-approx-2d.js +12 -0
- package/dist/cjs/2d/is-infinite-2d.d.ts +7 -0
- package/dist/cjs/2d/is-infinite-2d.js +13 -0
- package/dist/cjs/2d/is-nan-2d.d.ts +7 -0
- package/dist/cjs/2d/is-nan-2d.js +10 -0
- package/dist/cjs/2d/is-opposite-2d.d.ts +8 -0
- package/dist/cjs/2d/is-opposite-2d.js +11 -0
- package/dist/cjs/2d/is-zero-2d.d.ts +7 -0
- package/dist/cjs/2d/is-zero-2d.js +10 -0
- package/dist/cjs/2d/lerp-2d.d.ts +9 -0
- package/dist/cjs/2d/lerp-2d.js +15 -0
- package/dist/cjs/2d/limit-max-2d.d.ts +9 -0
- package/dist/cjs/2d/limit-max-2d.js +13 -0
- package/dist/cjs/2d/limit-min-2d.d.ts +9 -0
- package/dist/cjs/2d/limit-min-2d.js +13 -0
- package/dist/cjs/2d/look-at-2d.d.ts +10 -0
- package/dist/cjs/2d/look-at-2d.js +14 -0
- package/dist/cjs/2d/magnitude-2d.d.ts +7 -0
- package/dist/cjs/2d/magnitude-2d.js +10 -0
- package/dist/cjs/2d/magnitude-sq-2d.d.ts +7 -0
- package/dist/cjs/2d/magnitude-sq-2d.js +10 -0
- package/dist/cjs/2d/multiply-2d.d.ts +8 -0
- package/dist/cjs/2d/multiply-2d.js +11 -0
- package/dist/cjs/2d/negate-2d.d.ts +7 -0
- package/dist/cjs/2d/negate-2d.js +10 -0
- package/dist/cjs/2d/normalize-2d.d.ts +8 -0
- package/dist/cjs/2d/normalize-2d.js +12 -0
- package/dist/cjs/2d/one-2d.d.ts +6 -0
- package/dist/cjs/2d/one-2d.js +9 -0
- package/dist/cjs/2d/project-2d.d.ts +10 -0
- package/dist/cjs/2d/project-2d.js +17 -0
- package/dist/cjs/2d/random-2d.d.ts +7 -0
- package/dist/cjs/2d/random-2d.js +13 -0
- package/dist/cjs/2d/reflect-2d.d.ts +9 -0
- package/dist/cjs/2d/reflect-2d.js +16 -0
- package/dist/cjs/2d/rotate-2d.d.ts +9 -0
- package/dist/cjs/2d/rotate-2d.js +27 -0
- package/dist/cjs/2d/set-magnitude-2d.d.ts +9 -0
- package/dist/cjs/2d/set-magnitude-2d.js +16 -0
- package/dist/cjs/2d/subtract-2d.d.ts +8 -0
- package/dist/cjs/2d/subtract-2d.js +11 -0
- package/dist/cjs/2d/types.d.ts +4 -0
- package/dist/cjs/2d/types.js +2 -0
- package/dist/cjs/2d/zero-2d.d.ts +6 -0
- package/dist/cjs/2d/zero-2d.js +9 -0
- package/dist/cjs/3d/add-3d.d.ts +8 -0
- package/dist/cjs/3d/add-3d.js +15 -0
- package/dist/cjs/3d/angle-between-3d.d.ts +10 -0
- package/dist/cjs/3d/angle-between-3d.js +14 -0
- package/dist/cjs/3d/angle-x-3d.d.ts +7 -0
- package/dist/cjs/3d/angle-x-3d.js +10 -0
- package/dist/cjs/3d/angle-y-3d.d.ts +7 -0
- package/dist/cjs/3d/angle-y-3d.js +10 -0
- package/dist/cjs/3d/angle-z-3d.d.ts +7 -0
- package/dist/cjs/3d/angle-z-3d.js +10 -0
- package/dist/cjs/3d/clamp-3d.d.ts +10 -0
- package/dist/cjs/3d/clamp-3d.js +18 -0
- package/dist/cjs/3d/clone-3d.d.ts +7 -0
- package/dist/cjs/3d/clone-3d.js +10 -0
- package/dist/cjs/3d/cross-3d.d.ts +8 -0
- package/dist/cjs/3d/cross-3d.js +15 -0
- package/dist/cjs/3d/distance-3d.d.ts +8 -0
- package/dist/cjs/3d/distance-3d.js +11 -0
- package/dist/cjs/3d/distance-chebyshev-3d.d.ts +8 -0
- package/dist/cjs/3d/distance-chebyshev-3d.js +16 -0
- package/dist/cjs/3d/distance-manhattan-3d.d.ts +8 -0
- package/dist/cjs/3d/distance-manhattan-3d.js +11 -0
- package/dist/cjs/3d/distance-minkowski-3d.d.ts +9 -0
- package/dist/cjs/3d/distance-minkowski-3d.js +12 -0
- package/dist/cjs/3d/distance-sq-3d.d.ts +8 -0
- package/dist/cjs/3d/distance-sq-3d.js +11 -0
- package/dist/cjs/3d/divide-3d.d.ts +8 -0
- package/dist/cjs/3d/divide-3d.js +15 -0
- package/dist/cjs/3d/dot-3d.d.ts +8 -0
- package/dist/cjs/3d/dot-3d.js +11 -0
- package/dist/cjs/3d/from-cylindrical-coords-3d.d.ts +9 -0
- package/dist/cjs/3d/from-cylindrical-coords-3d.js +16 -0
- package/dist/cjs/3d/from-object-3d.d.ts +11 -0
- package/dist/cjs/3d/from-object-3d.js +10 -0
- package/dist/cjs/3d/from-spherical-coords-3d.d.ts +9 -0
- package/dist/cjs/3d/from-spherical-coords-3d.js +16 -0
- package/dist/cjs/3d/immutable-3d.d.ts +7 -0
- package/dist/cjs/3d/immutable-3d.js +10 -0
- package/dist/cjs/3d/index.d.ts +49 -0
- package/dist/cjs/3d/index.js +65 -0
- package/dist/cjs/3d/is-equal-3d.d.ts +8 -0
- package/dist/cjs/3d/is-equal-3d.js +11 -0
- package/dist/cjs/3d/is-equal-approx-3d.d.ts +9 -0
- package/dist/cjs/3d/is-equal-approx-3d.js +14 -0
- package/dist/cjs/3d/is-infinite-3d.d.ts +7 -0
- package/dist/cjs/3d/is-infinite-3d.js +15 -0
- package/dist/cjs/3d/is-nan-3d.d.ts +7 -0
- package/dist/cjs/3d/is-nan-3d.js +10 -0
- package/dist/cjs/3d/is-opposite-3d.d.ts +8 -0
- package/dist/cjs/3d/is-opposite-3d.js +11 -0
- package/dist/cjs/3d/is-zero-3d.d.ts +7 -0
- package/dist/cjs/3d/is-zero-3d.js +10 -0
- package/dist/cjs/3d/lerp-3d.d.ts +9 -0
- package/dist/cjs/3d/lerp-3d.js +16 -0
- package/dist/cjs/3d/limit-max-3d.d.ts +9 -0
- package/dist/cjs/3d/limit-max-3d.js +13 -0
- package/dist/cjs/3d/limit-min-3d.d.ts +9 -0
- package/dist/cjs/3d/limit-min-3d.js +13 -0
- package/dist/cjs/3d/look-at-3d.d.ts +10 -0
- package/dist/cjs/3d/look-at-3d.js +14 -0
- package/dist/cjs/3d/magnitude-3d.d.ts +7 -0
- package/dist/cjs/3d/magnitude-3d.js +10 -0
- package/dist/cjs/3d/magnitude-sq-3d.d.ts +7 -0
- package/dist/cjs/3d/magnitude-sq-3d.js +10 -0
- package/dist/cjs/3d/multiply-3d.d.ts +8 -0
- package/dist/cjs/3d/multiply-3d.js +15 -0
- package/dist/cjs/3d/negate-3d.d.ts +7 -0
- package/dist/cjs/3d/negate-3d.js +10 -0
- package/dist/cjs/3d/normalize-3d.d.ts +8 -0
- package/dist/cjs/3d/normalize-3d.js +12 -0
- package/dist/cjs/3d/one-3d.d.ts +6 -0
- package/dist/cjs/3d/one-3d.js +9 -0
- package/dist/cjs/3d/project-3d.d.ts +10 -0
- package/dist/cjs/3d/project-3d.js +17 -0
- package/dist/cjs/3d/random-3d.d.ts +7 -0
- package/dist/cjs/3d/random-3d.js +11 -0
- package/dist/cjs/3d/reflect-3d.d.ts +9 -0
- package/dist/cjs/3d/reflect-3d.js +16 -0
- package/dist/cjs/3d/rotate-x-3d.d.ts +9 -0
- package/dist/cjs/3d/rotate-x-3d.js +26 -0
- package/dist/cjs/3d/rotate-y-3d.d.ts +9 -0
- package/dist/cjs/3d/rotate-y-3d.js +26 -0
- package/dist/cjs/3d/rotate-z-3d.d.ts +9 -0
- package/dist/cjs/3d/rotate-z-3d.js +26 -0
- package/dist/cjs/3d/set-magnitude-3d.d.ts +9 -0
- package/dist/cjs/3d/set-magnitude-3d.js +13 -0
- package/dist/cjs/3d/subtract-3d.d.ts +8 -0
- package/dist/cjs/3d/subtract-3d.js +15 -0
- package/dist/cjs/3d/types.d.ts +4 -0
- package/dist/cjs/3d/types.js +2 -0
- package/dist/cjs/3d/zero-3d.d.ts +6 -0
- package/dist/cjs/3d/zero-3d.js +9 -0
- package/dist/cjs/4d/add-4d.d.ts +8 -0
- package/dist/cjs/4d/add-4d.js +16 -0
- package/dist/cjs/4d/angle-between-4d.d.ts +10 -0
- package/dist/cjs/4d/angle-between-4d.js +15 -0
- package/dist/cjs/4d/angle-w-4d.d.ts +7 -0
- package/dist/cjs/4d/angle-w-4d.js +10 -0
- package/dist/cjs/4d/angle-x-4d.d.ts +7 -0
- package/dist/cjs/4d/angle-x-4d.js +10 -0
- package/dist/cjs/4d/angle-y-4d.d.ts +7 -0
- package/dist/cjs/4d/angle-y-4d.js +10 -0
- package/dist/cjs/4d/angle-z-4d.d.ts +7 -0
- package/dist/cjs/4d/angle-z-4d.js +10 -0
- package/dist/cjs/4d/clamp-4d.d.ts +10 -0
- package/dist/cjs/4d/clamp-4d.js +18 -0
- package/dist/cjs/4d/clone-4d.d.ts +7 -0
- package/dist/cjs/4d/clone-4d.js +10 -0
- package/dist/cjs/4d/distance-4d.d.ts +8 -0
- package/dist/cjs/4d/distance-4d.js +11 -0
- package/dist/cjs/4d/distance-chebyshev-4d.d.ts +8 -0
- package/dist/cjs/4d/distance-chebyshev-4d.js +23 -0
- package/dist/cjs/4d/distance-manhattan-4d.d.ts +8 -0
- package/dist/cjs/4d/distance-manhattan-4d.js +14 -0
- package/dist/cjs/4d/distance-minkowski-4d.d.ts +9 -0
- package/dist/cjs/4d/distance-minkowski-4d.js +16 -0
- package/dist/cjs/4d/distance-sq-4d.d.ts +9 -0
- package/dist/cjs/4d/distance-sq-4d.js +12 -0
- package/dist/cjs/4d/divide-4d.d.ts +8 -0
- package/dist/cjs/4d/divide-4d.js +16 -0
- package/dist/cjs/4d/dot-4d.d.ts +8 -0
- package/dist/cjs/4d/dot-4d.js +11 -0
- package/dist/cjs/4d/from-object-4d.d.ts +12 -0
- package/dist/cjs/4d/from-object-4d.js +15 -0
- package/dist/cjs/4d/immutable-4d.d.ts +7 -0
- package/dist/cjs/4d/immutable-4d.js +10 -0
- package/dist/cjs/4d/index.d.ts +44 -0
- package/dist/cjs/4d/index.js +60 -0
- package/dist/cjs/4d/is-equal-4d.d.ts +8 -0
- package/dist/cjs/4d/is-equal-4d.js +11 -0
- package/dist/cjs/4d/is-equal-approx-4d.d.ts +9 -0
- package/dist/cjs/4d/is-equal-approx-4d.js +15 -0
- package/dist/cjs/4d/is-infinite-4d.d.ts +7 -0
- package/dist/cjs/4d/is-infinite-4d.js +17 -0
- package/dist/cjs/4d/is-nan-4d.d.ts +7 -0
- package/dist/cjs/4d/is-nan-4d.js +10 -0
- package/dist/cjs/4d/is-opposite-4d.d.ts +8 -0
- package/dist/cjs/4d/is-opposite-4d.js +11 -0
- package/dist/cjs/4d/is-zero-4d.d.ts +7 -0
- package/dist/cjs/4d/is-zero-4d.js +10 -0
- package/dist/cjs/4d/lerp-4d.d.ts +9 -0
- package/dist/cjs/4d/lerp-4d.js +17 -0
- package/dist/cjs/4d/limit-max-4d.d.ts +9 -0
- package/dist/cjs/4d/limit-max-4d.js +13 -0
- package/dist/cjs/4d/limit-min-4d.d.ts +9 -0
- package/dist/cjs/4d/limit-min-4d.js +13 -0
- package/dist/cjs/4d/look-at-4d.d.ts +10 -0
- package/dist/cjs/4d/look-at-4d.js +14 -0
- package/dist/cjs/4d/magnitude-4d.d.ts +7 -0
- package/dist/cjs/4d/magnitude-4d.js +10 -0
- package/dist/cjs/4d/magnitude-sq-4d.d.ts +8 -0
- package/dist/cjs/4d/magnitude-sq-4d.js +11 -0
- package/dist/cjs/4d/multiply-4d.d.ts +8 -0
- package/dist/cjs/4d/multiply-4d.js +16 -0
- package/dist/cjs/4d/negate-4d.d.ts +7 -0
- package/dist/cjs/4d/negate-4d.js +10 -0
- package/dist/cjs/4d/normalize-4d.d.ts +8 -0
- package/dist/cjs/4d/normalize-4d.js +17 -0
- package/dist/cjs/4d/one-4d.d.ts +6 -0
- package/dist/cjs/4d/one-4d.js +9 -0
- package/dist/cjs/4d/project-4d.d.ts +10 -0
- package/dist/cjs/4d/project-4d.js +18 -0
- package/dist/cjs/4d/random-4d.d.ts +7 -0
- package/dist/cjs/4d/random-4d.js +21 -0
- package/dist/cjs/4d/reflect-4d.d.ts +9 -0
- package/dist/cjs/4d/reflect-4d.js +21 -0
- package/dist/cjs/4d/set-magnitude-4d.d.ts +9 -0
- package/dist/cjs/4d/set-magnitude-4d.js +18 -0
- package/dist/cjs/4d/subtract-4d.d.ts +8 -0
- package/dist/cjs/4d/subtract-4d.js +16 -0
- package/dist/cjs/4d/types.d.ts +4 -0
- package/dist/cjs/4d/types.js +2 -0
- package/dist/cjs/4d/zero-4d.d.ts +6 -0
- package/dist/cjs/4d/zero-4d.js +9 -0
- package/dist/cjs/index.d.ts +7 -0
- package/dist/cjs/index.js +23 -0
- package/dist/cjs/package.json +1 -0
- package/dist/cjs/slerp.d.ts +21 -0
- package/dist/cjs/slerp.js +28 -0
- package/dist/{vec2.d.ts → cjs/vec2.d.ts} +10 -4
- package/dist/cjs/vec2.js +889 -0
- package/dist/{vec3.d.ts → cjs/vec3.d.ts} +159 -100
- package/dist/cjs/vec3.js +1045 -0
- package/dist/cjs/vec4.d.ts +602 -0
- package/dist/cjs/vec4.js +1101 -0
- package/dist/esm/2d/add-2d.d.ts +8 -0
- package/dist/esm/2d/add-2d.js +7 -0
- package/dist/esm/2d/angle-between-2d.d.ts +8 -0
- package/dist/esm/2d/angle-between-2d.js +7 -0
- package/dist/esm/2d/angle-x-2d.d.ts +7 -0
- package/dist/esm/2d/angle-x-2d.js +6 -0
- package/dist/esm/2d/angle-y-2d.d.ts +7 -0
- package/dist/esm/2d/angle-y-2d.js +6 -0
- package/dist/esm/2d/clamp-2d.d.ts +10 -0
- package/dist/esm/2d/clamp-2d.js +10 -0
- package/dist/esm/2d/clone-2d.d.ts +7 -0
- package/dist/esm/2d/clone-2d.js +6 -0
- package/dist/esm/2d/cross-2d.d.ts +8 -0
- package/dist/esm/2d/cross-2d.js +7 -0
- package/dist/esm/2d/distance-2d.d.ts +8 -0
- package/dist/esm/2d/distance-2d.js +7 -0
- package/dist/esm/2d/distance-chebyshev-2d.d.ts +8 -0
- package/dist/esm/2d/distance-chebyshev-2d.js +11 -0
- package/dist/esm/2d/distance-manhattan-2d.d.ts +8 -0
- package/dist/esm/2d/distance-manhattan-2d.js +7 -0
- package/dist/esm/2d/distance-minkowski-2d.d.ts +9 -0
- package/dist/esm/2d/distance-minkowski-2d.js +8 -0
- package/dist/esm/2d/distance-sq-2d.d.ts +8 -0
- package/dist/esm/2d/distance-sq-2d.js +7 -0
- package/dist/esm/2d/divide-2d.d.ts +8 -0
- package/dist/esm/2d/divide-2d.js +10 -0
- package/dist/esm/2d/dot-2d.d.ts +8 -0
- package/dist/esm/2d/dot-2d.js +7 -0
- package/dist/esm/2d/from-angle-x-2d.d.ts +8 -0
- package/dist/esm/2d/from-angle-x-2d.js +10 -0
- package/dist/esm/2d/from-angle-y-2d.d.ts +8 -0
- package/dist/esm/2d/from-angle-y-2d.js +10 -0
- package/dist/esm/2d/from-object-2d.d.ts +10 -0
- package/dist/esm/2d/from-object-2d.js +6 -0
- package/dist/esm/2d/from-polar-coords-2d.d.ts +8 -0
- package/dist/esm/2d/from-polar-coords-2d.js +7 -0
- package/dist/esm/2d/immutable-2d.d.ts +7 -0
- package/dist/esm/2d/immutable-2d.js +6 -0
- package/dist/esm/2d/index.d.ts +47 -0
- package/dist/esm/2d/index.js +47 -0
- package/dist/esm/2d/is-equal-2d.d.ts +8 -0
- package/dist/esm/2d/is-equal-2d.js +7 -0
- package/dist/esm/2d/is-equal-approx-2d.d.ts +9 -0
- package/dist/esm/2d/is-equal-approx-2d.js +8 -0
- package/dist/esm/2d/is-infinite-2d.d.ts +7 -0
- package/dist/esm/2d/is-infinite-2d.js +9 -0
- package/dist/esm/2d/is-nan-2d.d.ts +7 -0
- package/dist/esm/2d/is-nan-2d.js +6 -0
- package/dist/esm/2d/is-opposite-2d.d.ts +8 -0
- package/dist/esm/2d/is-opposite-2d.js +7 -0
- package/dist/esm/2d/is-zero-2d.d.ts +7 -0
- package/dist/esm/2d/is-zero-2d.js +6 -0
- package/dist/esm/2d/lerp-2d.d.ts +9 -0
- package/dist/esm/2d/lerp-2d.js +11 -0
- package/dist/esm/2d/limit-max-2d.d.ts +9 -0
- package/dist/esm/2d/limit-max-2d.js +9 -0
- package/dist/esm/2d/limit-min-2d.d.ts +9 -0
- package/dist/esm/2d/limit-min-2d.js +9 -0
- package/dist/esm/2d/look-at-2d.d.ts +10 -0
- package/dist/esm/2d/look-at-2d.js +10 -0
- package/dist/esm/2d/magnitude-2d.d.ts +7 -0
- package/dist/esm/2d/magnitude-2d.js +6 -0
- package/dist/esm/2d/magnitude-sq-2d.d.ts +7 -0
- package/dist/esm/2d/magnitude-sq-2d.js +6 -0
- package/dist/esm/2d/multiply-2d.d.ts +8 -0
- package/dist/esm/2d/multiply-2d.js +7 -0
- package/dist/esm/2d/negate-2d.d.ts +7 -0
- package/dist/esm/2d/negate-2d.js +6 -0
- package/dist/esm/2d/normalize-2d.d.ts +8 -0
- package/dist/esm/2d/normalize-2d.js +8 -0
- package/dist/esm/2d/one-2d.d.ts +6 -0
- package/dist/esm/2d/one-2d.js +5 -0
- package/dist/esm/2d/project-2d.d.ts +10 -0
- package/dist/esm/2d/project-2d.js +13 -0
- package/dist/esm/2d/random-2d.d.ts +7 -0
- package/dist/esm/2d/random-2d.js +9 -0
- package/dist/esm/2d/reflect-2d.d.ts +9 -0
- package/dist/esm/2d/reflect-2d.js +12 -0
- package/dist/esm/2d/rotate-2d.d.ts +9 -0
- package/dist/esm/2d/rotate-2d.js +23 -0
- package/dist/esm/2d/set-magnitude-2d.d.ts +9 -0
- package/dist/esm/2d/set-magnitude-2d.js +12 -0
- package/dist/esm/2d/subtract-2d.d.ts +8 -0
- package/dist/esm/2d/subtract-2d.js +7 -0
- package/dist/esm/2d/types.d.ts +4 -0
- package/dist/esm/2d/types.js +1 -0
- package/dist/esm/2d/zero-2d.d.ts +6 -0
- package/dist/esm/2d/zero-2d.js +5 -0
- package/dist/esm/3d/add-3d.d.ts +8 -0
- package/dist/esm/3d/add-3d.js +11 -0
- package/dist/esm/3d/angle-between-3d.d.ts +10 -0
- package/dist/esm/3d/angle-between-3d.js +10 -0
- package/dist/esm/3d/angle-x-3d.d.ts +7 -0
- package/dist/esm/3d/angle-x-3d.js +6 -0
- package/dist/esm/3d/angle-y-3d.d.ts +7 -0
- package/dist/esm/3d/angle-y-3d.js +6 -0
- package/dist/esm/3d/angle-z-3d.d.ts +7 -0
- package/dist/esm/3d/angle-z-3d.js +6 -0
- package/dist/esm/3d/clamp-3d.d.ts +10 -0
- package/dist/esm/3d/clamp-3d.js +14 -0
- package/dist/esm/3d/clone-3d.d.ts +7 -0
- package/dist/esm/3d/clone-3d.js +6 -0
- package/dist/esm/3d/cross-3d.d.ts +8 -0
- package/dist/esm/3d/cross-3d.js +11 -0
- package/dist/esm/3d/distance-3d.d.ts +8 -0
- package/dist/esm/3d/distance-3d.js +7 -0
- package/dist/esm/3d/distance-chebyshev-3d.d.ts +8 -0
- package/dist/esm/3d/distance-chebyshev-3d.js +12 -0
- package/dist/esm/3d/distance-manhattan-3d.d.ts +8 -0
- package/dist/esm/3d/distance-manhattan-3d.js +7 -0
- package/dist/esm/3d/distance-minkowski-3d.d.ts +9 -0
- package/dist/esm/3d/distance-minkowski-3d.js +8 -0
- package/dist/esm/3d/distance-sq-3d.d.ts +8 -0
- package/dist/esm/3d/distance-sq-3d.js +7 -0
- package/dist/esm/3d/divide-3d.d.ts +8 -0
- package/dist/esm/3d/divide-3d.js +11 -0
- package/dist/esm/3d/dot-3d.d.ts +8 -0
- package/dist/esm/3d/dot-3d.js +7 -0
- package/dist/esm/3d/from-cylindrical-coords-3d.d.ts +9 -0
- package/dist/esm/3d/from-cylindrical-coords-3d.js +12 -0
- package/dist/esm/3d/from-object-3d.d.ts +11 -0
- package/dist/esm/3d/from-object-3d.js +6 -0
- package/dist/esm/3d/from-spherical-coords-3d.d.ts +9 -0
- package/dist/esm/3d/from-spherical-coords-3d.js +12 -0
- package/dist/esm/3d/immutable-3d.d.ts +7 -0
- package/dist/esm/3d/immutable-3d.js +6 -0
- package/dist/esm/3d/index.d.ts +49 -0
- package/dist/esm/3d/index.js +49 -0
- package/dist/esm/3d/is-equal-3d.d.ts +8 -0
- package/dist/esm/3d/is-equal-3d.js +7 -0
- package/dist/esm/3d/is-equal-approx-3d.d.ts +9 -0
- package/dist/esm/3d/is-equal-approx-3d.js +10 -0
- package/dist/esm/3d/is-infinite-3d.d.ts +7 -0
- package/dist/esm/3d/is-infinite-3d.js +11 -0
- package/dist/esm/3d/is-nan-3d.d.ts +7 -0
- package/dist/esm/3d/is-nan-3d.js +6 -0
- package/dist/esm/3d/is-opposite-3d.d.ts +8 -0
- package/dist/esm/3d/is-opposite-3d.js +7 -0
- package/dist/esm/3d/is-zero-3d.d.ts +7 -0
- package/dist/esm/3d/is-zero-3d.js +6 -0
- package/dist/esm/3d/lerp-3d.d.ts +9 -0
- package/dist/esm/3d/lerp-3d.js +12 -0
- package/dist/esm/3d/limit-max-3d.d.ts +9 -0
- package/dist/esm/3d/limit-max-3d.js +9 -0
- package/dist/esm/3d/limit-min-3d.d.ts +9 -0
- package/dist/esm/3d/limit-min-3d.js +9 -0
- package/dist/esm/3d/look-at-3d.d.ts +10 -0
- package/dist/esm/3d/look-at-3d.js +10 -0
- package/dist/esm/3d/magnitude-3d.d.ts +7 -0
- package/dist/esm/3d/magnitude-3d.js +6 -0
- package/dist/esm/3d/magnitude-sq-3d.d.ts +7 -0
- package/dist/esm/3d/magnitude-sq-3d.js +6 -0
- package/dist/esm/3d/multiply-3d.d.ts +8 -0
- package/dist/esm/3d/multiply-3d.js +11 -0
- package/dist/esm/3d/negate-3d.d.ts +7 -0
- package/dist/esm/3d/negate-3d.js +6 -0
- package/dist/esm/3d/normalize-3d.d.ts +8 -0
- package/dist/esm/3d/normalize-3d.js +8 -0
- package/dist/esm/3d/one-3d.d.ts +6 -0
- package/dist/esm/3d/one-3d.js +5 -0
- package/dist/esm/3d/project-3d.d.ts +10 -0
- package/dist/esm/3d/project-3d.js +13 -0
- package/dist/esm/3d/random-3d.d.ts +7 -0
- package/dist/esm/3d/random-3d.js +7 -0
- package/dist/esm/3d/reflect-3d.d.ts +9 -0
- package/dist/esm/3d/reflect-3d.js +12 -0
- package/dist/esm/3d/rotate-x-3d.d.ts +9 -0
- package/dist/esm/3d/rotate-x-3d.js +22 -0
- package/dist/esm/3d/rotate-y-3d.d.ts +9 -0
- package/dist/esm/3d/rotate-y-3d.js +22 -0
- package/dist/esm/3d/rotate-z-3d.d.ts +9 -0
- package/dist/esm/3d/rotate-z-3d.js +22 -0
- package/dist/esm/3d/set-magnitude-3d.d.ts +9 -0
- package/dist/esm/3d/set-magnitude-3d.js +9 -0
- package/dist/esm/3d/subtract-3d.d.ts +8 -0
- package/dist/esm/3d/subtract-3d.js +11 -0
- package/dist/esm/3d/types.d.ts +4 -0
- package/dist/esm/3d/types.js +1 -0
- package/dist/esm/3d/zero-3d.d.ts +6 -0
- package/dist/esm/3d/zero-3d.js +5 -0
- package/dist/esm/4d/add-4d.d.ts +8 -0
- package/dist/esm/4d/add-4d.js +12 -0
- package/dist/esm/4d/angle-between-4d.d.ts +10 -0
- package/dist/esm/4d/angle-between-4d.js +11 -0
- package/dist/esm/4d/angle-w-4d.d.ts +7 -0
- package/dist/esm/4d/angle-w-4d.js +6 -0
- package/dist/esm/4d/angle-x-4d.d.ts +7 -0
- package/dist/esm/4d/angle-x-4d.js +6 -0
- package/dist/esm/4d/angle-y-4d.d.ts +7 -0
- package/dist/esm/4d/angle-y-4d.js +6 -0
- package/dist/esm/4d/angle-z-4d.d.ts +7 -0
- package/dist/esm/4d/angle-z-4d.js +6 -0
- package/dist/esm/4d/clamp-4d.d.ts +10 -0
- package/dist/esm/4d/clamp-4d.js +14 -0
- package/dist/esm/4d/clone-4d.d.ts +7 -0
- package/dist/esm/4d/clone-4d.js +6 -0
- package/dist/esm/4d/distance-4d.d.ts +8 -0
- package/dist/esm/4d/distance-4d.js +7 -0
- package/dist/esm/4d/distance-chebyshev-4d.d.ts +8 -0
- package/dist/esm/4d/distance-chebyshev-4d.js +19 -0
- package/dist/esm/4d/distance-manhattan-4d.d.ts +8 -0
- package/dist/esm/4d/distance-manhattan-4d.js +10 -0
- package/dist/esm/4d/distance-minkowski-4d.d.ts +9 -0
- package/dist/esm/4d/distance-minkowski-4d.js +12 -0
- package/dist/esm/4d/distance-sq-4d.d.ts +9 -0
- package/dist/esm/4d/distance-sq-4d.js +8 -0
- package/dist/esm/4d/divide-4d.d.ts +8 -0
- package/dist/esm/4d/divide-4d.js +12 -0
- package/dist/esm/4d/dot-4d.d.ts +8 -0
- package/dist/esm/4d/dot-4d.js +7 -0
- package/dist/esm/4d/from-object-4d.d.ts +12 -0
- package/dist/esm/4d/from-object-4d.js +11 -0
- package/dist/esm/4d/immutable-4d.d.ts +7 -0
- package/dist/esm/4d/immutable-4d.js +6 -0
- package/dist/esm/4d/index.d.ts +44 -0
- package/dist/esm/4d/index.js +44 -0
- package/dist/esm/4d/is-equal-4d.d.ts +8 -0
- package/dist/esm/4d/is-equal-4d.js +7 -0
- package/dist/esm/4d/is-equal-approx-4d.d.ts +9 -0
- package/dist/esm/4d/is-equal-approx-4d.js +11 -0
- package/dist/esm/4d/is-infinite-4d.d.ts +7 -0
- package/dist/esm/4d/is-infinite-4d.js +13 -0
- package/dist/esm/4d/is-nan-4d.d.ts +7 -0
- package/dist/esm/4d/is-nan-4d.js +6 -0
- package/dist/esm/4d/is-opposite-4d.d.ts +8 -0
- package/dist/esm/4d/is-opposite-4d.js +7 -0
- package/dist/esm/4d/is-zero-4d.d.ts +7 -0
- package/dist/esm/4d/is-zero-4d.js +6 -0
- package/dist/esm/4d/lerp-4d.d.ts +9 -0
- package/dist/esm/4d/lerp-4d.js +13 -0
- package/dist/esm/4d/limit-max-4d.d.ts +9 -0
- package/dist/esm/4d/limit-max-4d.js +9 -0
- package/dist/esm/4d/limit-min-4d.d.ts +9 -0
- package/dist/esm/4d/limit-min-4d.js +9 -0
- package/dist/esm/4d/look-at-4d.d.ts +10 -0
- package/dist/esm/4d/look-at-4d.js +10 -0
- package/dist/esm/4d/magnitude-4d.d.ts +7 -0
- package/dist/esm/4d/magnitude-4d.js +6 -0
- package/dist/esm/4d/magnitude-sq-4d.d.ts +8 -0
- package/dist/esm/4d/magnitude-sq-4d.js +7 -0
- package/dist/esm/4d/multiply-4d.d.ts +8 -0
- package/dist/esm/4d/multiply-4d.js +12 -0
- package/dist/esm/4d/negate-4d.d.ts +7 -0
- package/dist/esm/4d/negate-4d.js +6 -0
- package/dist/esm/4d/normalize-4d.d.ts +8 -0
- package/dist/esm/4d/normalize-4d.js +13 -0
- package/dist/esm/4d/one-4d.d.ts +6 -0
- package/dist/esm/4d/one-4d.js +5 -0
- package/dist/esm/4d/project-4d.d.ts +10 -0
- package/dist/esm/4d/project-4d.js +14 -0
- package/dist/esm/4d/random-4d.d.ts +7 -0
- package/dist/esm/4d/random-4d.js +17 -0
- package/dist/esm/4d/reflect-4d.d.ts +9 -0
- package/dist/esm/4d/reflect-4d.js +17 -0
- package/dist/esm/4d/set-magnitude-4d.d.ts +9 -0
- package/dist/esm/4d/set-magnitude-4d.js +14 -0
- package/dist/esm/4d/subtract-4d.d.ts +8 -0
- package/dist/esm/4d/subtract-4d.js +12 -0
- package/dist/esm/4d/types.d.ts +4 -0
- package/dist/esm/4d/types.js +1 -0
- package/dist/esm/4d/zero-4d.d.ts +6 -0
- package/dist/esm/4d/zero-4d.js +5 -0
- package/dist/esm/index.d.ts +7 -0
- package/dist/esm/index.js +7 -0
- package/dist/esm/slerp.d.ts +21 -0
- package/dist/esm/slerp.js +23 -0
- package/dist/{vec4.d.ts → esm/vec2.d.ts} +165 -157
- package/dist/{vec2.js → esm/vec2.js} +14 -6
- package/dist/esm/vec3.d.ts +614 -0
- package/dist/{vec3.js → esm/vec3.js} +190 -123
- package/dist/esm/vec4.d.ts +602 -0
- package/dist/{vec4.js → esm/vec4.js} +211 -130
- package/docs/ArrayVector2D.md +1090 -0
- package/docs/ArrayVector3D.md +1162 -0
- package/docs/ArrayVector4D.md +1019 -0
- package/docs/README.md +13 -0
- package/docs/Slerp.md +64 -0
- package/docs/Vec2.md +1827 -0
- package/docs/Vec3.md +2084 -0
- package/docs/Vec4.md +2031 -0
- package/package.json +95 -70
- package/VEC2.md +0 -147
- package/VEC3.md +0 -159
- package/VEC4.md +0 -146
- package/dist/index.d.ts +0 -3
- package/dist/index.js +0 -3
|
@@ -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);
|
|
@@ -223,6 +229,18 @@ export class Vec3 {
|
|
|
223
229
|
get xyz() {
|
|
224
230
|
return xyz;
|
|
225
231
|
},
|
|
232
|
+
get r() {
|
|
233
|
+
return data[0];
|
|
234
|
+
},
|
|
235
|
+
get g() {
|
|
236
|
+
return data[1];
|
|
237
|
+
},
|
|
238
|
+
get b() {
|
|
239
|
+
return data[2];
|
|
240
|
+
},
|
|
241
|
+
get rgb() {
|
|
242
|
+
return xyz;
|
|
243
|
+
},
|
|
226
244
|
get magnitude() {
|
|
227
245
|
return data[8];
|
|
228
246
|
},
|
|
@@ -251,8 +269,8 @@ export class Vec3 {
|
|
|
251
269
|
}
|
|
252
270
|
/**
|
|
253
271
|
* Checks if a vector has infinite components.
|
|
254
|
-
* @param v - The vector to check.
|
|
255
|
-
* @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.
|
|
256
274
|
*/
|
|
257
275
|
static isInfinite(v) {
|
|
258
276
|
const x = v.#xyz[0];
|
|
@@ -267,26 +285,26 @@ export class Vec3 {
|
|
|
267
285
|
}
|
|
268
286
|
/**
|
|
269
287
|
* Checks if a vector has NaN components.
|
|
270
|
-
* @param v - The vector to check.
|
|
271
|
-
* @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.
|
|
272
290
|
*/
|
|
273
291
|
static isNaN(v) {
|
|
274
292
|
return Number.isNaN(v.#xyz[0]) || Number.isNaN(v.#xyz[1]) || Number.isNaN(v.#xyz[2]);
|
|
275
293
|
}
|
|
276
294
|
/**
|
|
277
295
|
* Checks if a vector is zero.
|
|
278
|
-
* @param v - The vector to check.
|
|
279
|
-
* @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.
|
|
280
298
|
*/
|
|
281
299
|
static isZero(v) {
|
|
282
300
|
return v.#xyz[0] === 0 && v.#xyz[1] === 0 && v.#xyz[2] === 0;
|
|
283
301
|
}
|
|
284
302
|
/**
|
|
285
303
|
* Performs linear interpolation between two vectors.
|
|
286
|
-
* @param v - The first vector.
|
|
287
|
-
* @param w - The second vector.
|
|
288
|
-
* @param t - The interpolation parameter (0 to 1).
|
|
289
|
-
* @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.
|
|
290
308
|
*/
|
|
291
309
|
static lerp(v, w, t) {
|
|
292
310
|
if (t > 1)
|
|
@@ -300,16 +318,16 @@ export class Vec3 {
|
|
|
300
318
|
}
|
|
301
319
|
/**
|
|
302
320
|
* Negates a vector.
|
|
303
|
-
* @param v - The vector to negate.
|
|
304
|
-
* @returns A new
|
|
321
|
+
* @param {Vec3} v - The vector to negate.
|
|
322
|
+
* @returns {Vec3} A new Vec3 instance representing the negated vector.
|
|
305
323
|
*/
|
|
306
324
|
static negate(v) {
|
|
307
325
|
return new Vec3(-v.#xyz[0], -v.#xyz[1], -v.#xyz[2]);
|
|
308
326
|
}
|
|
309
327
|
/**
|
|
310
328
|
* Normalizes a vector.
|
|
311
|
-
* @param v - The vector to normalize.
|
|
312
|
-
* @returns A new
|
|
329
|
+
* @param {Vec3} v - The vector to normalize.
|
|
330
|
+
* @returns {Vec3} A new Vec3 instance representing the normalized vector.
|
|
313
331
|
*/
|
|
314
332
|
static normalize(v) {
|
|
315
333
|
const m = v.#magnitude;
|
|
@@ -317,9 +335,9 @@ export class Vec3 {
|
|
|
317
335
|
}
|
|
318
336
|
/**
|
|
319
337
|
* Projects one vector onto another.
|
|
320
|
-
* @param v - The vector to project.
|
|
321
|
-
* @param w - The vector to project onto.
|
|
322
|
-
* @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.
|
|
323
341
|
*/
|
|
324
342
|
static project(v, w) {
|
|
325
343
|
const vM = v.#magnitude;
|
|
@@ -332,33 +350,26 @@ export class Vec3 {
|
|
|
332
350
|
}
|
|
333
351
|
/**
|
|
334
352
|
* Creates a random unit vector.
|
|
335
|
-
* @param random - A function that returns a random number between 0 and 1.
|
|
336
|
-
* @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.
|
|
337
355
|
*/
|
|
338
356
|
static random(random = Math.random) {
|
|
339
|
-
|
|
340
|
-
let x2;
|
|
341
|
-
do {
|
|
342
|
-
x1 = random() * 2 - 1;
|
|
343
|
-
x2 = random() * 2 - 1;
|
|
344
|
-
} while (x1 ** 2 + x2 ** 2 >= 1);
|
|
345
|
-
const f = sqrt(1 - x1 ** 2 - x2 ** 2);
|
|
346
|
-
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);
|
|
347
358
|
}
|
|
348
359
|
/**
|
|
349
360
|
* Checks if two vectors are equal.
|
|
350
|
-
* @param v - The first vector.
|
|
351
|
-
* @param w - The second vector.
|
|
352
|
-
* @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.
|
|
353
364
|
*/
|
|
354
365
|
static satisfyEquality(v, w) {
|
|
355
366
|
return v.#xyz[0] === w.#xyz[0] && v.#xyz[1] === w.#xyz[1] && v.#xyz[2] === w.#xyz[2];
|
|
356
367
|
}
|
|
357
368
|
/**
|
|
358
369
|
* Checks if two vectors are opposite.
|
|
359
|
-
* @param v - The first vector.
|
|
360
|
-
* @param w - The second vector.
|
|
361
|
-
* @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.
|
|
362
373
|
*/
|
|
363
374
|
static satisfyOpposition(v, w) {
|
|
364
375
|
return v.#xyz[0] === -w.#xyz[0] && v.#xyz[1] === -w.#xyz[1] && v.#xyz[2] === -w.#xyz[2];
|
|
@@ -377,16 +388,16 @@ export class Vec3 {
|
|
|
377
388
|
}
|
|
378
389
|
/**
|
|
379
390
|
* Scales a vector by a scalar value.
|
|
380
|
-
* @param v - The vector to scale.
|
|
381
|
-
* @param c - The scalar value.
|
|
382
|
-
* @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.
|
|
383
394
|
*/
|
|
384
395
|
static scale(v, c) {
|
|
385
396
|
return new Vec3(v.#xyz[0] * c, v.#xyz[1] * c, v.#xyz[2] * c);
|
|
386
397
|
}
|
|
387
398
|
/**
|
|
388
399
|
* Creates a zero vector.
|
|
389
|
-
* @returns A new Vec3 instance representing a zero vector.
|
|
400
|
+
* @returns {Vec3} A new Vec3 instance representing a zero vector.
|
|
390
401
|
*/
|
|
391
402
|
static zero() {
|
|
392
403
|
return new Vec3();
|
|
@@ -400,14 +411,16 @@ export class Vec3 {
|
|
|
400
411
|
}
|
|
401
412
|
/**
|
|
402
413
|
* Creates a Vec3 from an array.
|
|
403
|
-
* @
|
|
414
|
+
* @param {[number, number, number] | number[]} arr - An array containing the x, y, and z coordinates.
|
|
415
|
+
* @returns {Vec3} A new Vec3 instance.
|
|
404
416
|
*/
|
|
405
417
|
static fromArray(arr) {
|
|
406
418
|
return new Vec3(arr[0] ?? 0, arr[1] ?? 0, arr[2] ?? 0);
|
|
407
419
|
}
|
|
408
420
|
/**
|
|
409
421
|
* Creates a Vec3 from an object with x, y and z properties.
|
|
410
|
-
* @
|
|
422
|
+
* @param {{ x: number; y: number; z: number }} obj - An object with x, y, and z properties.
|
|
423
|
+
* @returns {Vec3} A new Vec3 instance.
|
|
411
424
|
*/
|
|
412
425
|
static fromObject(obj) {
|
|
413
426
|
return new Vec3(obj.x, obj.y, obj.z);
|
|
@@ -422,14 +435,15 @@ export class Vec3 {
|
|
|
422
435
|
}
|
|
423
436
|
/**
|
|
424
437
|
* Gets the x-component of the vector.
|
|
425
|
-
* @returns The x-component.
|
|
438
|
+
* @returns {number} The x-component.
|
|
426
439
|
*/
|
|
427
440
|
get x() {
|
|
428
441
|
return this.#xyz[0];
|
|
429
442
|
}
|
|
430
443
|
/**
|
|
431
444
|
* Sets the x-component of the vector.
|
|
432
|
-
* @param x - The new x-component.
|
|
445
|
+
* @param {number} x - The new x-component.
|
|
446
|
+
* @returns {void}
|
|
433
447
|
*/
|
|
434
448
|
set x(x) {
|
|
435
449
|
this.#xyz[0] = x;
|
|
@@ -437,14 +451,15 @@ export class Vec3 {
|
|
|
437
451
|
}
|
|
438
452
|
/**
|
|
439
453
|
* Gets the y-component of the vector.
|
|
440
|
-
* @returns The y-component.
|
|
454
|
+
* @returns {number} The y-component.
|
|
441
455
|
*/
|
|
442
456
|
get y() {
|
|
443
457
|
return this.#xyz[1];
|
|
444
458
|
}
|
|
445
459
|
/**
|
|
446
460
|
* Sets the y-component of the vector.
|
|
447
|
-
* @param y - The new y-component.
|
|
461
|
+
* @param {number} y - The new y-component.
|
|
462
|
+
* @returns {void}
|
|
448
463
|
*/
|
|
449
464
|
set y(y) {
|
|
450
465
|
this.#xyz[1] = y;
|
|
@@ -452,14 +467,15 @@ export class Vec3 {
|
|
|
452
467
|
}
|
|
453
468
|
/**
|
|
454
469
|
* Gets the z-component of the vector.
|
|
455
|
-
* @returns The z-component.
|
|
470
|
+
* @returns {number} The z-component.
|
|
456
471
|
*/
|
|
457
472
|
get z() {
|
|
458
473
|
return this.#xyz[2];
|
|
459
474
|
}
|
|
460
475
|
/**
|
|
461
476
|
* Sets the z-component of the vector.
|
|
462
|
-
* @param z - The new z-component.
|
|
477
|
+
* @param {number} z - The new z-component.
|
|
478
|
+
* @returns {void}
|
|
463
479
|
*/
|
|
464
480
|
set z(z) {
|
|
465
481
|
this.#xyz[2] = z;
|
|
@@ -467,14 +483,15 @@ export class Vec3 {
|
|
|
467
483
|
}
|
|
468
484
|
/**
|
|
469
485
|
* Gets a copy of the vector's components as an array.
|
|
470
|
-
* @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.
|
|
471
487
|
*/
|
|
472
488
|
get xyz() {
|
|
473
489
|
return Array.from(this.#xyz.slice());
|
|
474
490
|
}
|
|
475
491
|
/**
|
|
476
|
-
* Sets
|
|
477
|
-
* @param xyz - An array containing the new x, y and z components.
|
|
492
|
+
* Sets all components of the vector at once.
|
|
493
|
+
* @param {[number, number, number]} xyz - An array containing the new x, y and z components.
|
|
494
|
+
* @returns {void}
|
|
478
495
|
*/
|
|
479
496
|
set xyz(xyz) {
|
|
480
497
|
this.#xyz[0] = xyz[0];
|
|
@@ -482,6 +499,66 @@ export class Vec3 {
|
|
|
482
499
|
this.#xyz[2] = xyz[2];
|
|
483
500
|
this.#computeMagnitude();
|
|
484
501
|
}
|
|
502
|
+
/**
|
|
503
|
+
* Gets the Red-component of a Color.
|
|
504
|
+
* @returns {number} The Red-component.
|
|
505
|
+
*/
|
|
506
|
+
get r() {
|
|
507
|
+
return this.x;
|
|
508
|
+
}
|
|
509
|
+
/**
|
|
510
|
+
* Sets the Red-component of a Color.
|
|
511
|
+
* @param {number} r - The new Red-component.
|
|
512
|
+
* @returns {void}
|
|
513
|
+
*/
|
|
514
|
+
set r(r) {
|
|
515
|
+
this.x = r;
|
|
516
|
+
}
|
|
517
|
+
/**
|
|
518
|
+
* Gets the Green-component of a Color.
|
|
519
|
+
* @returns {number} The Green-component.
|
|
520
|
+
*/
|
|
521
|
+
get g() {
|
|
522
|
+
return this.y;
|
|
523
|
+
}
|
|
524
|
+
/**
|
|
525
|
+
* Sets the Green-component of the Color.
|
|
526
|
+
* @param {number} g - The new Green-component.
|
|
527
|
+
* @returns {void}
|
|
528
|
+
*/
|
|
529
|
+
set g(g) {
|
|
530
|
+
this.y = g;
|
|
531
|
+
}
|
|
532
|
+
/**
|
|
533
|
+
* Gets the Blue-component of the color.
|
|
534
|
+
* @returns {number} The Blue-component.
|
|
535
|
+
*/
|
|
536
|
+
get b() {
|
|
537
|
+
return this.z;
|
|
538
|
+
}
|
|
539
|
+
/**
|
|
540
|
+
* Sets the Blue-component of the Color.
|
|
541
|
+
* @param {number} b - The new Blue-component.
|
|
542
|
+
* @returns {void}
|
|
543
|
+
*/
|
|
544
|
+
set b(b) {
|
|
545
|
+
this.z = b;
|
|
546
|
+
}
|
|
547
|
+
/**
|
|
548
|
+
* Gets a copy of the vector's components as an array.
|
|
549
|
+
* @returns {[number, number, number]} An array containing the x, y and z components of the vector.
|
|
550
|
+
*/
|
|
551
|
+
get rgb() {
|
|
552
|
+
return this.xyz;
|
|
553
|
+
}
|
|
554
|
+
/**
|
|
555
|
+
* Sets all components of the Color at once.
|
|
556
|
+
* @param {[number, number, number]} rgb - An array containing the new Red, Green and Blue components.
|
|
557
|
+
* @returns {void}
|
|
558
|
+
*/
|
|
559
|
+
set rgb(rgb) {
|
|
560
|
+
this.xyz = rgb;
|
|
561
|
+
}
|
|
485
562
|
/**
|
|
486
563
|
* Gets the angle between the vector and the positive x-axis in radians.
|
|
487
564
|
* @returns The angle in radians, always in the range [0, 2π).
|
|
@@ -531,8 +608,8 @@ export class Vec3 {
|
|
|
531
608
|
}
|
|
532
609
|
/**
|
|
533
610
|
* Adds another vector to this vector.
|
|
534
|
-
* @param v - The vector to add.
|
|
535
|
-
* @returns This Vec3 instance for method chaining.
|
|
611
|
+
* @param {Vec3} v - The vector to add.
|
|
612
|
+
* @returns {this} This Vec3 instance for method chaining.
|
|
536
613
|
*/
|
|
537
614
|
add(v) {
|
|
538
615
|
this.#xyz[0] += v.#xyz[0];
|
|
@@ -610,7 +687,7 @@ export class Vec3 {
|
|
|
610
687
|
}
|
|
611
688
|
/**
|
|
612
689
|
* Creates a copy of this vector.
|
|
613
|
-
* @returns A new Vec3 instance with the same components.
|
|
690
|
+
* @returns {Vec3} A new Vec3 instance with the same components.
|
|
614
691
|
*/
|
|
615
692
|
clone() {
|
|
616
693
|
return new Vec3(this.#xyz[0], this.#xyz[1], this.#xyz[2]);
|
|
@@ -629,16 +706,16 @@ export class Vec3 {
|
|
|
629
706
|
}
|
|
630
707
|
/**
|
|
631
708
|
* Calculates the dot product of this vector with another vector.
|
|
632
|
-
* @param v - The other vector.
|
|
633
|
-
* @returns The dot product of the vectors.
|
|
709
|
+
* @param {Vec3} v - The other vector.
|
|
710
|
+
* @returns {number} The dot product of the vectors.
|
|
634
711
|
*/
|
|
635
712
|
dot(v) {
|
|
636
713
|
return this.#xyz[0] * v.#xyz[0] + this.#xyz[1] * v.#xyz[1] + this.#xyz[2] * v.#xyz[2];
|
|
637
714
|
}
|
|
638
715
|
/**
|
|
639
716
|
* Calculates cross product between this vector and another vector.
|
|
640
|
-
* @param v - The other vector.
|
|
641
|
-
* @returns
|
|
717
|
+
* @param {Vec3} v - The other vector.
|
|
718
|
+
* @returns {this} This Vec3 instance for method chaining.
|
|
642
719
|
*/
|
|
643
720
|
cross(v) {
|
|
644
721
|
const x = this.#xyz[0];
|
|
@@ -677,8 +754,8 @@ export class Vec3 {
|
|
|
677
754
|
}
|
|
678
755
|
/**
|
|
679
756
|
* Calculates the Chebyshev distance between vector and another vector.
|
|
680
|
-
* @param v - The other vector.
|
|
681
|
-
* @returns The Chebyshev distance between the vectors.
|
|
757
|
+
* @param {Vec3} v - The other vector.
|
|
758
|
+
* @returns {number} The Chebyshev distance between the vectors.
|
|
682
759
|
*/
|
|
683
760
|
distanceChebyshev(v) {
|
|
684
761
|
const absX = abs(this.#xyz[0] - v.#xyz[0]);
|
|
@@ -688,17 +765,17 @@ export class Vec3 {
|
|
|
688
765
|
}
|
|
689
766
|
/**
|
|
690
767
|
* Calculates the Manhattan distance between vector and another vector.
|
|
691
|
-
* @param v - The other vector.
|
|
692
|
-
* @returns The Manhattan distance between the vectors.
|
|
768
|
+
* @param {Vec3} v - The other vector.
|
|
769
|
+
* @returns {number} The Manhattan distance between the vectors.
|
|
693
770
|
*/
|
|
694
771
|
distanceManhattan(v) {
|
|
695
772
|
return abs(this.#xyz[0] - v.#xyz[0]) + abs(this.#xyz[1] - v.#xyz[1]) + abs(this.#xyz[2] - v.#xyz[2]);
|
|
696
773
|
}
|
|
697
774
|
/**
|
|
698
775
|
* Calculates the Minkowski distance between this vector and another vector.
|
|
699
|
-
* @param v - The other vector.
|
|
700
|
-
* @param p - The order of the Minkowski distance.
|
|
701
|
-
* @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.
|
|
702
779
|
*/
|
|
703
780
|
distanceMinkowski(v, p) {
|
|
704
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) **
|
|
@@ -832,18 +909,7 @@ export class Vec3 {
|
|
|
832
909
|
* @returns This Vec3 instance for method chaining.
|
|
833
910
|
*/
|
|
834
911
|
random(random = Math.random) {
|
|
835
|
-
|
|
836
|
-
let x2;
|
|
837
|
-
do {
|
|
838
|
-
x1 = random() * 2 - 1;
|
|
839
|
-
x2 = random() * 2 - 1;
|
|
840
|
-
} while (x1 ** 2 + x2 ** 2 >= 1);
|
|
841
|
-
const f = sqrt(1 - x1 ** 2 - x2 ** 2);
|
|
842
|
-
const m = this.#magnitude;
|
|
843
|
-
this.#xyz[0] = m * 2 * x1 * f;
|
|
844
|
-
this.#xyz[1] = m * 2 * x2 * f;
|
|
845
|
-
this.#xyz[2] = m * (1 - 2 * (x1 ** 2 + x2 ** 2));
|
|
846
|
-
this.#computeMagnitude();
|
|
912
|
+
this.copy(Vec3.fromSphericalCoords(Math.acos(2 * random() - 1), random() * Math.PI * 2, 1));
|
|
847
913
|
return this;
|
|
848
914
|
}
|
|
849
915
|
/**
|
|
@@ -962,7 +1028,8 @@ export class Vec3 {
|
|
|
962
1028
|
* @returns An object with x, y and z properties.
|
|
963
1029
|
*/
|
|
964
1030
|
toObject() {
|
|
965
|
-
|
|
1031
|
+
const [x, y, z] = this.#xyz;
|
|
1032
|
+
return { x, y, z };
|
|
966
1033
|
}
|
|
967
1034
|
/**
|
|
968
1035
|
* Serializes the vector to a JSON-friendly format.
|