@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,4 +1,8 @@
|
|
|
1
|
-
|
|
1
|
+
/**
|
|
2
|
+
* Documentation for 4D Vector class.
|
|
3
|
+
* @module Vec4
|
|
4
|
+
*/
|
|
5
|
+
const { sin, cos, acos, atan2, sqrt, abs, log, PI } = Math;
|
|
2
6
|
/**
|
|
3
7
|
* Represents a 4D vector with various operations.
|
|
4
8
|
*/
|
|
@@ -9,10 +13,11 @@ export class Vec4 {
|
|
|
9
13
|
/**
|
|
10
14
|
* Computes and updates the magnitude of the vector.
|
|
11
15
|
* @private
|
|
12
|
-
* @param x - The x-component of the vector.
|
|
13
|
-
* @param y - The y-component of the vector.
|
|
14
|
-
* @param z - The z-component of the vector.
|
|
15
|
-
* @param w - The w-component of the vector.
|
|
16
|
+
* @param {number} x - The x-component of the vector.
|
|
17
|
+
* @param {number} y - The y-component of the vector.
|
|
18
|
+
* @param {number} z - The z-component of the vector.
|
|
19
|
+
* @param {number} w - The w-component of the vector.
|
|
20
|
+
* @returns {void}
|
|
16
21
|
*/
|
|
17
22
|
#computeMagnitude(x = this.#xyzw[0], y = this.#xyzw[1], z = this.#xyzw[2], w = this.#xyzw[3]) {
|
|
18
23
|
if (x !== this.#prevXYZW[0] || y !== this.#prevXYZW[1] || z !== this.#prevXYZW[2] || w !== this.#prevXYZW[3]) {
|
|
@@ -25,10 +30,10 @@ export class Vec4 {
|
|
|
25
30
|
}
|
|
26
31
|
/**
|
|
27
32
|
* Creates a new Vec4 instance.
|
|
28
|
-
* @param x - The x-coordinate of the vector.
|
|
29
|
-
* @param y - The y-coordinate of the vector.
|
|
30
|
-
* @param z - The z-coordinate of the vector.
|
|
31
|
-
* @param w - The w-coordinate of the vector.
|
|
33
|
+
* @param {number} x - The x-coordinate of the vector.
|
|
34
|
+
* @param {number} y - The y-coordinate of the vector.
|
|
35
|
+
* @param {number} z - The z-coordinate of the vector.
|
|
36
|
+
* @param {number} w - The w-coordinate of the vector.
|
|
32
37
|
*/
|
|
33
38
|
constructor(x = 0, y = 0, z = 0, w = 0) {
|
|
34
39
|
this.#xyzw[0] = x;
|
|
@@ -39,18 +44,18 @@ export class Vec4 {
|
|
|
39
44
|
}
|
|
40
45
|
/**
|
|
41
46
|
* Adds two vectors.
|
|
42
|
-
* @param v - The first vector.
|
|
43
|
-
* @param w - The second vector.
|
|
44
|
-
* @returns A new
|
|
47
|
+
* @param {Vec4} v - The first vector.
|
|
48
|
+
* @param {Vec4} w - The second vector.
|
|
49
|
+
* @returns {Vec4} A new Vec4 instance representing the sum.
|
|
45
50
|
*/
|
|
46
51
|
static add(v, w) {
|
|
47
52
|
return new Vec4(v.#xyzw[0] + w.#xyzw[0], v.#xyzw[1] + w.#xyzw[1], v.#xyzw[2] + w.#xyzw[2], v.#xyzw[3] + w.#xyzw[3]);
|
|
48
53
|
}
|
|
49
54
|
/**
|
|
50
55
|
* Subtracts one vector from another.
|
|
51
|
-
* @param v - The vector to subtract from.
|
|
52
|
-
* @param w - The vector to subtract.
|
|
53
|
-
* @returns A new
|
|
56
|
+
* @param {Vec4} v - The vector to subtract from.
|
|
57
|
+
* @param {Vec4} w - The vector to subtract.
|
|
58
|
+
* @returns {Vec4} A new Vec4 instance representing the difference.
|
|
54
59
|
*/
|
|
55
60
|
static subtract(v, w) {
|
|
56
61
|
return new Vec4(v.#xyzw[0] - w.#xyzw[0], v.#xyzw[1] - w.#xyzw[1], v.#xyzw[2] - w.#xyzw[2], v.#xyzw[3] - w.#xyzw[3]);
|
|
@@ -75,9 +80,9 @@ export class Vec4 {
|
|
|
75
80
|
}
|
|
76
81
|
/**
|
|
77
82
|
* Calculates the angle between two vectors.
|
|
78
|
-
* @param v - The first vector.
|
|
79
|
-
* @param w - The second vector.
|
|
80
|
-
* @returns The angle between the vectors in radians.
|
|
83
|
+
* @param {Vec4} v - The first vector.
|
|
84
|
+
* @param {Vec4} w - The second vector.
|
|
85
|
+
* @returns {number} The angle between the vectors in radians.
|
|
81
86
|
*/
|
|
82
87
|
static angleBetween(v, w) {
|
|
83
88
|
return acos((v.#xyzw[0] * w.#xyzw[0] + v.#xyzw[1] * w.#xyzw[1] + v.#xyzw[2] * w.#xyzw[2] + v.#xyzw[3] * w.#xyzw[3]) /
|
|
@@ -85,9 +90,9 @@ export class Vec4 {
|
|
|
85
90
|
}
|
|
86
91
|
/**
|
|
87
92
|
* Calculates the Euclidean distance between two vectors.
|
|
88
|
-
* @param v - The first vector.
|
|
89
|
-
* @param w - The second vector.
|
|
90
|
-
* @returns The distance between the vectors.
|
|
93
|
+
* @param {Vec4} v - The first vector.
|
|
94
|
+
* @param {Vec4} w - The second vector.
|
|
95
|
+
* @returns {number} The distance between the vectors.
|
|
91
96
|
*/
|
|
92
97
|
static distance(v, w) {
|
|
93
98
|
return sqrt((v.#xyzw[0] - w.#xyzw[0]) ** 2 +
|
|
@@ -97,9 +102,9 @@ export class Vec4 {
|
|
|
97
102
|
}
|
|
98
103
|
/**
|
|
99
104
|
* Calculates the Chebyshev distance between two vectors.
|
|
100
|
-
* @param v - The first vector.
|
|
101
|
-
* @param w - The second vector.
|
|
102
|
-
* @returns The Chebyshev distance between the vectors.
|
|
105
|
+
* @param {Vec4} v - The first vector.
|
|
106
|
+
* @param {Vec4} w - The second vector.
|
|
107
|
+
* @returns {number} The Chebyshev distance between the vectors.
|
|
103
108
|
*/
|
|
104
109
|
static distanceChebyshev(v, w) {
|
|
105
110
|
const absX = abs(v.#xyzw[0] - w.#xyzw[0]);
|
|
@@ -116,9 +121,9 @@ export class Vec4 {
|
|
|
116
121
|
}
|
|
117
122
|
/**
|
|
118
123
|
* Calculates the Manhattan distance between two vectors.
|
|
119
|
-
* @param v - The first vector.
|
|
120
|
-
* @param w - The second vector.
|
|
121
|
-
* @returns The Manhattan distance between the vectors.
|
|
124
|
+
* @param {Vec4} v - The first vector.
|
|
125
|
+
* @param {Vec4} w - The second vector.
|
|
126
|
+
* @returns {number} The Manhattan distance between the vectors.
|
|
122
127
|
*/
|
|
123
128
|
static distanceManhattan(v, w) {
|
|
124
129
|
return (abs(v.#xyzw[0] - w.#xyzw[0]) +
|
|
@@ -128,10 +133,10 @@ export class Vec4 {
|
|
|
128
133
|
}
|
|
129
134
|
/**
|
|
130
135
|
* Calculates the Minkowski distance between two vectors.
|
|
131
|
-
* @param v - The first vector.
|
|
132
|
-
* @param w - The second vector.
|
|
133
|
-
* @param p - The order of the Minkowski distance.
|
|
134
|
-
* @returns The Minkowski distance between the vectors.
|
|
136
|
+
* @param {Vec4} v - The first vector.
|
|
137
|
+
* @param {Vec4} w - The second vector.
|
|
138
|
+
* @param {number} p - The order of the Minkowski distance.
|
|
139
|
+
* @returns {number} The Minkowski distance between the vectors.
|
|
135
140
|
*/
|
|
136
141
|
static distanceMinkowski(v, w, p) {
|
|
137
142
|
return ((abs(v.#xyzw[0] - w.#xyzw[0]) ** p +
|
|
@@ -142,9 +147,9 @@ export class Vec4 {
|
|
|
142
147
|
}
|
|
143
148
|
/**
|
|
144
149
|
* Calculates the squared Euclidean distance between two vectors.
|
|
145
|
-
* @param v - The first vector.
|
|
146
|
-
* @param w - The second vector.
|
|
147
|
-
* @returns The squared distance between the vectors.
|
|
150
|
+
* @param {Vec4} v - The first vector.
|
|
151
|
+
* @param {Vec4} w - The second vector.
|
|
152
|
+
* @returns {number} The squared distance between the vectors.
|
|
148
153
|
*/
|
|
149
154
|
static distanceSq(v, w) {
|
|
150
155
|
return ((v.#xyzw[0] - w.#xyzw[0]) ** 2 +
|
|
@@ -154,9 +159,9 @@ export class Vec4 {
|
|
|
154
159
|
}
|
|
155
160
|
/**
|
|
156
161
|
* Calculates the dot product of two vectors.
|
|
157
|
-
* @param v - The first vector.
|
|
158
|
-
* @param w - The second vector.
|
|
159
|
-
* @returns The dot product of the two vectors.
|
|
162
|
+
* @param {Vec4} v - The first vector.
|
|
163
|
+
* @param {Vec4} w - The second vector.
|
|
164
|
+
* @returns {number} The dot product of the two vectors.
|
|
160
165
|
*/
|
|
161
166
|
static dot(v, w) {
|
|
162
167
|
return v.#xyzw[0] * w.#xyzw[0] + v.#xyzw[1] * w.#xyzw[1] + v.#xyzw[2] * w.#xyzw[2] + v.#xyzw[3] * w.#xyzw[3];
|
|
@@ -178,9 +183,11 @@ export class Vec4 {
|
|
|
178
183
|
}
|
|
179
184
|
/**
|
|
180
185
|
* Creates an immutable Vec4-like object.
|
|
181
|
-
* @param x - The x-coordinate of the vector.
|
|
182
|
-
* @param y - The y-coordinate of the vector.
|
|
183
|
-
* @
|
|
186
|
+
* @param {number} x - The x-coordinate of the vector.
|
|
187
|
+
* @param {number} y - The y-coordinate of the vector.
|
|
188
|
+
* @param {number} z - The z-coordinate of the vector.
|
|
189
|
+
* @param {number} w - The w-coordinate of the vector.
|
|
190
|
+
* @returns {Readonly<{ x: number; y: number; z: number; w: number; xyzw: readonly number[]; r: number; g: number; b: number; a: number; rgba: readonly number[]; magnitude: number; magnitudeSq: number; angleW: number; angleX: number; angleY: number; angleZ: number; isInfinite: boolean; isNaN: boolean; isZero: boolean }>} An immutable object with Vec4-like properties.
|
|
184
191
|
*/
|
|
185
192
|
static immutable(x = 0, y = 0, z = 0, w = 0) {
|
|
186
193
|
const data = new Float64Array(10);
|
|
@@ -223,6 +230,21 @@ export class Vec4 {
|
|
|
223
230
|
get xyzw() {
|
|
224
231
|
return xyzw;
|
|
225
232
|
},
|
|
233
|
+
get r() {
|
|
234
|
+
return data[0];
|
|
235
|
+
},
|
|
236
|
+
get g() {
|
|
237
|
+
return data[1];
|
|
238
|
+
},
|
|
239
|
+
get b() {
|
|
240
|
+
return data[2];
|
|
241
|
+
},
|
|
242
|
+
get a() {
|
|
243
|
+
return data[3];
|
|
244
|
+
},
|
|
245
|
+
get rgba() {
|
|
246
|
+
return xyzw;
|
|
247
|
+
},
|
|
226
248
|
get magnitude() {
|
|
227
249
|
return data[8];
|
|
228
250
|
},
|
|
@@ -254,8 +276,8 @@ export class Vec4 {
|
|
|
254
276
|
}
|
|
255
277
|
/**
|
|
256
278
|
* Checks if a vector has infinite components.
|
|
257
|
-
* @param v - The vector to check.
|
|
258
|
-
* @returns True if the vector has infinite components, false otherwise.
|
|
279
|
+
* @param {Vec4} v - The vector to check.
|
|
280
|
+
* @returns {boolean} True if the vector has infinite components, false otherwise.
|
|
259
281
|
*/
|
|
260
282
|
static isInfinite(v) {
|
|
261
283
|
const x = v.#xyzw[0];
|
|
@@ -273,26 +295,26 @@ export class Vec4 {
|
|
|
273
295
|
}
|
|
274
296
|
/**
|
|
275
297
|
* Checks if a vector has NaN components.
|
|
276
|
-
* @param v - The vector to check.
|
|
277
|
-
* @returns True if the vector has NaN components, false otherwise.
|
|
298
|
+
* @param {Vec4} v - The vector to check.
|
|
299
|
+
* @returns {boolean} True if the vector has NaN components, false otherwise.
|
|
278
300
|
*/
|
|
279
301
|
static isNaN(v) {
|
|
280
302
|
return Number.isNaN(v.#xyzw[0]) || Number.isNaN(v.#xyzw[1]) || Number.isNaN(v.#xyzw[2]) || Number.isNaN(v.#xyzw[3]);
|
|
281
303
|
}
|
|
282
304
|
/**
|
|
283
305
|
* Checks if a vector is zero.
|
|
284
|
-
* @param v - The vector to check.
|
|
285
|
-
* @returns True if the vector is zero, false otherwise.
|
|
306
|
+
* @param {Vec4} v - The vector to check.
|
|
307
|
+
* @returns {boolean} True if the vector is zero, false otherwise.
|
|
286
308
|
*/
|
|
287
309
|
static isZero(v) {
|
|
288
310
|
return v.#xyzw[0] === 0 && v.#xyzw[1] === 0 && v.#xyzw[2] === 0 && v.#xyzw[3] === 0;
|
|
289
311
|
}
|
|
290
312
|
/**
|
|
291
313
|
* Performs linear interpolation between two vectors.
|
|
292
|
-
* @param v - The first vector.
|
|
293
|
-
* @param w - The second vector.
|
|
294
|
-
* @param t - The interpolation parameter (0 to 1).
|
|
295
|
-
* @returns A new
|
|
314
|
+
* @param {Vec4} v - The first vector.
|
|
315
|
+
* @param {Vec4} w - The second vector.
|
|
316
|
+
* @param {number} t - The interpolation parameter (0 to 1).
|
|
317
|
+
* @returns {Vec4} A new Vec4 instance representing the interpolated vector.
|
|
296
318
|
*/
|
|
297
319
|
static lerp(v, w, t) {
|
|
298
320
|
if (t > 1)
|
|
@@ -307,16 +329,16 @@ export class Vec4 {
|
|
|
307
329
|
}
|
|
308
330
|
/**
|
|
309
331
|
* Negates a vector.
|
|
310
|
-
* @param v - The vector to negate.
|
|
311
|
-
* @returns A new
|
|
332
|
+
* @param {Vec4} v - The vector to negate.
|
|
333
|
+
* @returns {Vec4} A new Vec4 instance representing the negated vector.
|
|
312
334
|
*/
|
|
313
335
|
static negate(v) {
|
|
314
336
|
return new Vec4(-v.#xyzw[0], -v.#xyzw[1], -v.#xyzw[2], -v.#xyzw[3]);
|
|
315
337
|
}
|
|
316
338
|
/**
|
|
317
339
|
* Normalizes a vector.
|
|
318
|
-
* @param v - The vector to normalize.
|
|
319
|
-
* @returns A new
|
|
340
|
+
* @param {Vec4} v - The vector to normalize.
|
|
341
|
+
* @returns {Vec4} A new Vec4 instance representing the normalized vector.
|
|
320
342
|
*/
|
|
321
343
|
static normalize(v) {
|
|
322
344
|
const m = v.#magnitude;
|
|
@@ -324,9 +346,9 @@ export class Vec4 {
|
|
|
324
346
|
}
|
|
325
347
|
/**
|
|
326
348
|
* Projects one vector onto another.
|
|
327
|
-
* @param v - The vector to project.
|
|
328
|
-
* @param w - The vector to project onto.
|
|
329
|
-
* @returns A new
|
|
349
|
+
* @param {Vec4} v - The vector to project.
|
|
350
|
+
* @param {Vec4} w - The vector to project onto.
|
|
351
|
+
* @returns {Vec4} A new Vec4 instance representing the projected vector.
|
|
330
352
|
*/
|
|
331
353
|
static project(v, w) {
|
|
332
354
|
const vM = v.#magnitude;
|
|
@@ -340,37 +362,34 @@ export class Vec4 {
|
|
|
340
362
|
}
|
|
341
363
|
/**
|
|
342
364
|
* Creates a random unit vector.
|
|
343
|
-
* @param random - A function that returns a random number between 0 and 1.
|
|
344
|
-
* @returns A new Vec4 instance representing a random unit vector.
|
|
365
|
+
* @param {() => number} random - A function that returns a random number between 0 and 1.
|
|
366
|
+
* @returns {Vec4} A new Vec4 instance representing a random unit vector.
|
|
345
367
|
*/
|
|
346
368
|
static random(random = Math.random) {
|
|
347
|
-
|
|
348
|
-
|
|
349
|
-
|
|
350
|
-
|
|
351
|
-
|
|
352
|
-
|
|
353
|
-
|
|
354
|
-
|
|
355
|
-
|
|
356
|
-
} while (x1 ** 2 + x2 ** 2 >= 1 || x3 ** 2 + x4 ** 2 >= 1);
|
|
357
|
-
const f = sqrt((1 - x1 ** 2 - x2 ** 2) / (x3 ** 2 + x4 ** 2));
|
|
358
|
-
return new Vec4(x1, x2, x3 * f, x4 * f);
|
|
369
|
+
// 1. Generate four numbers from a Normal Distribution (Box-Muller transform)
|
|
370
|
+
const x = sqrt(-2 * log(random())) * cos(2 * PI * random());
|
|
371
|
+
const y = sqrt(-2 * log(random())) * sin(2 * PI * random());
|
|
372
|
+
const z = sqrt(-2 * log(random())) * cos(2 * PI * random());
|
|
373
|
+
const w = sqrt(-2 * log(random())) * sin(2 * PI * random());
|
|
374
|
+
// 2. Calculate the current length
|
|
375
|
+
const length = sqrt(x * x + y * y + z * z + w * w);
|
|
376
|
+
// 3. Divide by length to make it a unit vector
|
|
377
|
+
return new Vec4(x / length, y / length, z / length, w / length);
|
|
359
378
|
}
|
|
360
379
|
/**
|
|
361
380
|
* 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.
|
|
381
|
+
* @param {Vec4} v - The first vector.
|
|
382
|
+
* @param {Vec4} w - The second vector.
|
|
383
|
+
* @returns {boolean} True if the vectors are equal, false otherwise.
|
|
365
384
|
*/
|
|
366
385
|
static satisfyEquality(v, w) {
|
|
367
386
|
return (v.#xyzw[0] === w.#xyzw[0] && v.#xyzw[1] === w.#xyzw[1] && v.#xyzw[2] === w.#xyzw[2] && v.#xyzw[3] === w.#xyzw[3]);
|
|
368
387
|
}
|
|
369
388
|
/**
|
|
370
389
|
* 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.
|
|
390
|
+
* @param {Vec4} v - The first vector.
|
|
391
|
+
* @param {Vec4} w - The second vector.
|
|
392
|
+
* @returns {boolean} True if the vectors are opposite, false otherwise.
|
|
374
393
|
*/
|
|
375
394
|
static satisfyOpposition(v, w) {
|
|
376
395
|
return (v.#xyzw[0] === -w.#xyzw[0] &&
|
|
@@ -393,16 +412,16 @@ export class Vec4 {
|
|
|
393
412
|
}
|
|
394
413
|
/**
|
|
395
414
|
* Scales a vector by a scalar value.
|
|
396
|
-
* @param v - The vector to scale.
|
|
397
|
-
* @param c - The scalar value.
|
|
398
|
-
* @returns A new
|
|
415
|
+
* @param {Vec4} v - The vector to scale.
|
|
416
|
+
* @param {number} c - The scalar value.
|
|
417
|
+
* @returns {Vec4} A new Vec4 instance representing the scaled vector.
|
|
399
418
|
*/
|
|
400
419
|
static scale(v, c) {
|
|
401
420
|
return new Vec4(v.#xyzw[0] * c, v.#xyzw[1] * c, v.#xyzw[2] * c, v.#xyzw[3] * c);
|
|
402
421
|
}
|
|
403
422
|
/**
|
|
404
423
|
* Creates a zero vector.
|
|
405
|
-
* @returns A new Vec4 instance representing a zero vector.
|
|
424
|
+
* @returns {Vec4} A new Vec4 instance representing a zero vector.
|
|
406
425
|
*/
|
|
407
426
|
static zero() {
|
|
408
427
|
return new Vec4();
|
|
@@ -416,14 +435,16 @@ export class Vec4 {
|
|
|
416
435
|
}
|
|
417
436
|
/**
|
|
418
437
|
* Creates a Vec4 from an array.
|
|
419
|
-
* @
|
|
438
|
+
* @param {[number, number, number, number] | number[]} arr - An array containing the x, y, z, and w coordinates.
|
|
439
|
+
* @returns {Vec4} A new Vec4 instance.
|
|
420
440
|
*/
|
|
421
441
|
static fromArray(arr) {
|
|
422
442
|
return new Vec4(arr[0] ?? 0, arr[1] ?? 0, arr[2] ?? 0, arr[3] ?? 0);
|
|
423
443
|
}
|
|
424
444
|
/**
|
|
425
445
|
* Creates a Vec4 from an object with x, y, z and w properties.
|
|
426
|
-
* @
|
|
446
|
+
* @param {{ x: number; y: number; z: number; w: number }} obj - An object with x, y, z, and w properties.
|
|
447
|
+
* @returns {Vec4} A new Vec4 instance.
|
|
427
448
|
*/
|
|
428
449
|
static fromObject(obj) {
|
|
429
450
|
return new Vec4(obj.x, obj.y, obj.z, obj.w);
|
|
@@ -438,14 +459,15 @@ export class Vec4 {
|
|
|
438
459
|
}
|
|
439
460
|
/**
|
|
440
461
|
* Gets the x-component of the vector.
|
|
441
|
-
* @returns The x-component.
|
|
462
|
+
* @returns {number} The x-component.
|
|
442
463
|
*/
|
|
443
464
|
get x() {
|
|
444
465
|
return this.#xyzw[0];
|
|
445
466
|
}
|
|
446
467
|
/**
|
|
447
468
|
* Sets the x-component of the vector.
|
|
448
|
-
* @param x - The new x-component.
|
|
469
|
+
* @param {number} x - The new x-component.
|
|
470
|
+
* @returns {void}
|
|
449
471
|
*/
|
|
450
472
|
set x(x) {
|
|
451
473
|
this.#xyzw[0] = x;
|
|
@@ -453,14 +475,15 @@ export class Vec4 {
|
|
|
453
475
|
}
|
|
454
476
|
/**
|
|
455
477
|
* Gets the y-component of the vector.
|
|
456
|
-
* @returns The y-component.
|
|
478
|
+
* @returns {number} The y-component.
|
|
457
479
|
*/
|
|
458
480
|
get y() {
|
|
459
481
|
return this.#xyzw[1];
|
|
460
482
|
}
|
|
461
483
|
/**
|
|
462
484
|
* Sets the z-component of the vector.
|
|
463
|
-
* @param y - The new z-component.
|
|
485
|
+
* @param {number} y - The new z-component.
|
|
486
|
+
* @returns {void}
|
|
464
487
|
*/
|
|
465
488
|
set y(y) {
|
|
466
489
|
this.#xyzw[1] = y;
|
|
@@ -468,14 +491,15 @@ export class Vec4 {
|
|
|
468
491
|
}
|
|
469
492
|
/**
|
|
470
493
|
* Gets the z-component of the vector.
|
|
471
|
-
* @returns The z-component.
|
|
494
|
+
* @returns {number} The z-component.
|
|
472
495
|
*/
|
|
473
496
|
get z() {
|
|
474
497
|
return this.#xyzw[2];
|
|
475
498
|
}
|
|
476
499
|
/**
|
|
477
500
|
* Sets the z-component of the vector.
|
|
478
|
-
* @param z - The new z-component.
|
|
501
|
+
* @param {number} z - The new z-component.
|
|
502
|
+
* @returns {void}
|
|
479
503
|
*/
|
|
480
504
|
set z(z) {
|
|
481
505
|
this.#xyzw[2] = z;
|
|
@@ -483,14 +507,15 @@ export class Vec4 {
|
|
|
483
507
|
}
|
|
484
508
|
/**
|
|
485
509
|
* Gets the w-component of the vector.
|
|
486
|
-
* @returns The w-component.
|
|
510
|
+
* @returns {number} The w-component.
|
|
487
511
|
*/
|
|
488
512
|
get w() {
|
|
489
513
|
return this.#xyzw[3];
|
|
490
514
|
}
|
|
491
515
|
/**
|
|
492
516
|
* Sets the w-component of the vector.
|
|
493
|
-
* @param w - The new w-component.
|
|
517
|
+
* @param {number} w - The new w-component.
|
|
518
|
+
* @returns {void}
|
|
494
519
|
*/
|
|
495
520
|
set w(w) {
|
|
496
521
|
this.#xyzw[3] = w;
|
|
@@ -498,14 +523,15 @@ export class Vec4 {
|
|
|
498
523
|
}
|
|
499
524
|
/**
|
|
500
525
|
* Gets a copy of the vector's components as an array.
|
|
501
|
-
* @returns An array containing the x, y, z and w components of the vector.
|
|
526
|
+
* @returns {[number, number, number, number]} An array containing the x, y, z and w components of the vector.
|
|
502
527
|
*/
|
|
503
528
|
get xyzw() {
|
|
504
529
|
return Array.from(this.#xyzw.slice());
|
|
505
530
|
}
|
|
506
531
|
/**
|
|
507
532
|
* Sets both components of the vector at once.
|
|
508
|
-
* @param xyzw - An array containing the new x, y and
|
|
533
|
+
* @param {[number, number, number, number]} xyzw - An array containing the new x, y, z and w components.
|
|
534
|
+
* @returns {void}
|
|
509
535
|
*/
|
|
510
536
|
set xyzw(xyzw) {
|
|
511
537
|
this.#xyzw[0] = xyzw[0];
|
|
@@ -514,6 +540,81 @@ export class Vec4 {
|
|
|
514
540
|
this.#xyzw[3] = xyzw[3];
|
|
515
541
|
this.#computeMagnitude();
|
|
516
542
|
}
|
|
543
|
+
/**
|
|
544
|
+
* Gets the Red-component of a Color.
|
|
545
|
+
* @returns {number} The Red-component.
|
|
546
|
+
*/
|
|
547
|
+
get r() {
|
|
548
|
+
return this.x;
|
|
549
|
+
}
|
|
550
|
+
/**
|
|
551
|
+
* Sets the Red-component of a Color.
|
|
552
|
+
* @param {number} r - The new Red-component.
|
|
553
|
+
* @returns {void}
|
|
554
|
+
*/
|
|
555
|
+
set r(r) {
|
|
556
|
+
this.x = r;
|
|
557
|
+
}
|
|
558
|
+
/**
|
|
559
|
+
* Gets the Green-component of a Color.
|
|
560
|
+
* @returns {number} The Green-component.
|
|
561
|
+
*/
|
|
562
|
+
get g() {
|
|
563
|
+
return this.y;
|
|
564
|
+
}
|
|
565
|
+
/**
|
|
566
|
+
* Sets the Green-component of the Color.
|
|
567
|
+
* @param {number} g - The new Green-component.
|
|
568
|
+
* @returns {void}
|
|
569
|
+
*/
|
|
570
|
+
set g(g) {
|
|
571
|
+
this.y = g;
|
|
572
|
+
}
|
|
573
|
+
/**
|
|
574
|
+
* Gets the Blue-component of the color.
|
|
575
|
+
* @returns {number} The Blue-component.
|
|
576
|
+
*/
|
|
577
|
+
get b() {
|
|
578
|
+
return this.z;
|
|
579
|
+
}
|
|
580
|
+
/**
|
|
581
|
+
* Sets the Blue-component of the Color.
|
|
582
|
+
* @param {number} b - The new Blue-component.
|
|
583
|
+
* @returns {void}
|
|
584
|
+
*/
|
|
585
|
+
set b(b) {
|
|
586
|
+
this.z = b;
|
|
587
|
+
}
|
|
588
|
+
/**
|
|
589
|
+
* Gets the Alpha-component of the color.
|
|
590
|
+
* @returns {number} The Alpha-component.
|
|
591
|
+
*/
|
|
592
|
+
get a() {
|
|
593
|
+
return this.w;
|
|
594
|
+
}
|
|
595
|
+
/**
|
|
596
|
+
* Sets the Alpha-component of the Color.
|
|
597
|
+
* @param {number} a - The new Alpha-component.
|
|
598
|
+
* @returns {void}
|
|
599
|
+
*/
|
|
600
|
+
set a(a) {
|
|
601
|
+
this.w = a;
|
|
602
|
+
}
|
|
603
|
+
/**
|
|
604
|
+
* Gets a copy of the vector's components as an array.
|
|
605
|
+
* @returns {[number, number, number, number]} An array containing the Red, Green, Blue and Alpha components of the Color.
|
|
606
|
+
*/
|
|
607
|
+
get rgba() {
|
|
608
|
+
return this.xyzw;
|
|
609
|
+
}
|
|
610
|
+
/**
|
|
611
|
+
* Sets all components of the Color at once.
|
|
612
|
+
* @param {[number, number, number, number]} rgba - An array containing the new Red, Green, Blue and Alpha components.
|
|
613
|
+
* @returns {void}
|
|
614
|
+
*/
|
|
615
|
+
set rgba(rgba) {
|
|
616
|
+
this.xyzw = rgba;
|
|
617
|
+
}
|
|
517
618
|
/**
|
|
518
619
|
* Gets the angle between the vector and the positive x-axis in radians.
|
|
519
620
|
* @returns The angle in radians, always in the range [0, 2π).
|
|
@@ -571,8 +672,8 @@ export class Vec4 {
|
|
|
571
672
|
}
|
|
572
673
|
/**
|
|
573
674
|
* Adds another vector to this vector.
|
|
574
|
-
* @param v - The vector to add.
|
|
575
|
-
* @returns This Vec4 instance for method chaining.
|
|
675
|
+
* @param {Vec4} v - The vector to add.
|
|
676
|
+
* @returns {this} This Vec4 instance for method chaining.
|
|
576
677
|
*/
|
|
577
678
|
add(v) {
|
|
578
679
|
this.#xyzw[0] += v.#xyzw[0];
|
|
@@ -634,9 +735,9 @@ export class Vec4 {
|
|
|
634
735
|
}
|
|
635
736
|
/**
|
|
636
737
|
* Clamps the magnitude of this vector between a minimum and maximum value.
|
|
637
|
-
* @param min - The minimum magnitude.
|
|
638
|
-
* @param max - The maximum magnitude.
|
|
639
|
-
* @returns This Vec4 instance for method chaining.
|
|
738
|
+
* @param {number} min - The minimum magnitude.
|
|
739
|
+
* @param {number} max - The maximum magnitude.
|
|
740
|
+
* @returns {this} This Vec4 instance for method chaining.
|
|
640
741
|
*/
|
|
641
742
|
clamp(min, max) {
|
|
642
743
|
const m = this.#magnitude;
|
|
@@ -658,7 +759,7 @@ export class Vec4 {
|
|
|
658
759
|
}
|
|
659
760
|
/**
|
|
660
761
|
* Creates a copy of this vector.
|
|
661
|
-
* @returns A new Vec4 instance with the same components.
|
|
762
|
+
* @returns {Vec4} A new Vec4 instance with the same components.
|
|
662
763
|
*/
|
|
663
764
|
clone() {
|
|
664
765
|
return new Vec4(this.#xyzw[0], this.#xyzw[1], this.#xyzw[2], this.#xyzw[3]);
|
|
@@ -689,8 +790,8 @@ export class Vec4 {
|
|
|
689
790
|
}
|
|
690
791
|
/**
|
|
691
792
|
* Calculates the Chebyshev distance between this vector and another vector.
|
|
692
|
-
* @param v - The
|
|
693
|
-
* @returns The Chebyshev distance between the vectors.
|
|
793
|
+
* @param {Vec4} v - The other vector.
|
|
794
|
+
* @returns {number} The Chebyshev distance between the vectors.
|
|
694
795
|
*/
|
|
695
796
|
distanceChebyshev(v) {
|
|
696
797
|
const absX = abs(this.#xyzw[0] - v.#xyzw[0]);
|
|
@@ -707,8 +808,8 @@ export class Vec4 {
|
|
|
707
808
|
}
|
|
708
809
|
/**
|
|
709
810
|
* Calculates the Manhattan distance between this vector and another vector.
|
|
710
|
-
* @param v - The other vector.
|
|
711
|
-
* @returns The Manhattan distance between the vectors.
|
|
811
|
+
* @param {Vec4} v - The other vector.
|
|
812
|
+
* @returns {number} The Manhattan distance between the vectors.
|
|
712
813
|
*/
|
|
713
814
|
distanceManhattan(v) {
|
|
714
815
|
return (abs(this.#xyzw[0] - v.#xyzw[0]) +
|
|
@@ -717,10 +818,10 @@ export class Vec4 {
|
|
|
717
818
|
abs(this.#xyzw[3] - v.#xyzw[3]));
|
|
718
819
|
}
|
|
719
820
|
/**
|
|
720
|
-
* Calculates the Minkowski distance between
|
|
721
|
-
* @param v - The other vector.
|
|
722
|
-
* @param p - The order of the Minkowski distance.
|
|
723
|
-
* @returns The Minkowski distance between the vectors.
|
|
821
|
+
* Calculates the Minkowski distance between this vector and another vector.
|
|
822
|
+
* @param {Vec4} v - The other vector.
|
|
823
|
+
* @param {number} p - The order of the Minkowski distance.
|
|
824
|
+
* @returns {number} The Minkowski distance between the vectors.
|
|
724
825
|
*/
|
|
725
826
|
distanceMinkowski(v, p) {
|
|
726
827
|
return ((abs(this.#xyzw[0] - v.#xyzw[0]) ** p +
|
|
@@ -899,23 +1000,7 @@ export class Vec4 {
|
|
|
899
1000
|
* @returns This Vec4 instance for method chaining.
|
|
900
1001
|
*/
|
|
901
1002
|
random(random = Math.random) {
|
|
902
|
-
|
|
903
|
-
let x2;
|
|
904
|
-
let x3;
|
|
905
|
-
let x4;
|
|
906
|
-
do {
|
|
907
|
-
x1 = random() * 2 - 1;
|
|
908
|
-
x2 = random() * 2 - 1;
|
|
909
|
-
x3 = random() * 2 - 1;
|
|
910
|
-
x4 = random() * 2 - 1;
|
|
911
|
-
} while (x1 ** 2 + x2 ** 2 >= 1 || x3 ** 2 + x4 ** 2 >= 1);
|
|
912
|
-
const f = sqrt((1 - x1 ** 2 - x2 ** 2) / (x3 ** 2 + x4 ** 2));
|
|
913
|
-
const m = this.#magnitude;
|
|
914
|
-
this.#xyzw[0] = m * x1;
|
|
915
|
-
this.#xyzw[1] = m * x2;
|
|
916
|
-
this.#xyzw[2] = m * x3 * f;
|
|
917
|
-
this.#xyzw[3] = m * x4 * f;
|
|
918
|
-
this.#computeMagnitude();
|
|
1003
|
+
this.copy(Vec4.random(random));
|
|
919
1004
|
return this;
|
|
920
1005
|
}
|
|
921
1006
|
/**
|
|
@@ -999,12 +1084,8 @@ export class Vec4 {
|
|
|
999
1084
|
* @returns An object with x, y, z and w properties.
|
|
1000
1085
|
*/
|
|
1001
1086
|
toObject() {
|
|
1002
|
-
|
|
1003
|
-
|
|
1004
|
-
y: this.#xyzw[1],
|
|
1005
|
-
z: this.#xyzw[2],
|
|
1006
|
-
w: this.#xyzw[3],
|
|
1007
|
-
};
|
|
1087
|
+
const [x, y, z, w] = this.#xyzw;
|
|
1088
|
+
return { x, y, z, w };
|
|
1008
1089
|
}
|
|
1009
1090
|
/**
|
|
1010
1091
|
* Serializes the vector to a JSON-friendly format.
|