@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
package/README.md
CHANGED
|
@@ -1,85 +1,208 @@
|
|
|
1
|
-
# @fimbul-works/vec
|
|
2
|
-
|
|
3
|
-
A high-performance TypeScript vector math library providing 2D, 3D, and 4D vector operations with a focus on performance
|
|
4
|
-
|
|
5
|
-
[](https://www.npmjs.com/package/@fimbul-works/vec)
|
|
6
|
-
[](https://github.com/microsoft/TypeScript)
|
|
7
|
-
|
|
8
|
-
##
|
|
9
|
-
|
|
10
|
-
-
|
|
11
|
-
-
|
|
12
|
-
-
|
|
13
|
-
-
|
|
14
|
-
-
|
|
15
|
-
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
const
|
|
46
|
-
const
|
|
47
|
-
|
|
48
|
-
// Chain operations
|
|
49
|
-
position
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
|
|
64
|
-
|
|
65
|
-
|
|
66
|
-
|
|
67
|
-
|
|
68
|
-
|
|
69
|
-
|
|
70
|
-
|
|
71
|
-
|
|
72
|
-
|
|
73
|
-
|
|
74
|
-
|
|
75
|
-
|
|
76
|
-
|
|
77
|
-
|
|
78
|
-
|
|
79
|
-
|
|
80
|
-
|
|
81
|
-
|
|
82
|
-
|
|
83
|
-
|
|
84
|
-
|
|
85
|
-
|
|
1
|
+
# @fimbul-works/vec
|
|
2
|
+
|
|
3
|
+
A high-performance TypeScript vector math library providing both **functional** and **object-oriented** APIs for 2D, 3D, and 4D vector operations with a focus on performance, type safety, and immutability.
|
|
4
|
+
|
|
5
|
+
[](https://www.npmjs.com/package/@fimbul-works/vec)
|
|
6
|
+
[](https://github.com/microsoft/TypeScript)
|
|
7
|
+
|
|
8
|
+
## ✨ Highlights
|
|
9
|
+
|
|
10
|
+
- **🎯 Two API Styles**: Choose between modern functional API (arrays) or classic OOP API (classes)
|
|
11
|
+
- **🛡️ Type Safe**: Full TypeScript support with strict typing and array tuple types
|
|
12
|
+
- **📏 Multiple Distance Metrics**: Euclidean, Manhattan, Chebyshev, and Minkowski
|
|
13
|
+
- **🎮 Graphics Ready**: Homogeneous coordinates and RGB/RGBA color support
|
|
14
|
+
- **🧮 Comprehensive**: Complete set of vector operations for game dev, graphics, and physics
|
|
15
|
+
- **🌳 Tree-Shakeable**: Import only what you need with the functional API
|
|
16
|
+
|
|
17
|
+
## 📦 Installation
|
|
18
|
+
|
|
19
|
+
```bash
|
|
20
|
+
npm install @fimbul-works/vec
|
|
21
|
+
```
|
|
22
|
+
|
|
23
|
+
## 🚀 Quick Start
|
|
24
|
+
|
|
25
|
+
### Functional API (Recommended)
|
|
26
|
+
|
|
27
|
+
The **functional API** uses array tuples and is recommended for new projects:
|
|
28
|
+
|
|
29
|
+
```typescript
|
|
30
|
+
// Import the functional API
|
|
31
|
+
import { add2D, magnitude2D, dot2D, normalize2D } from "@fimbul-works/vec/2d";
|
|
32
|
+
import { add3D, cross3D } from "@fimbul-works/vec/3d";
|
|
33
|
+
|
|
34
|
+
// Type: ArrayVector2D = [number, number]
|
|
35
|
+
const position: ArrayVector2D = [100, 200];
|
|
36
|
+
const velocity: ArrayVector2D = [5, 10];
|
|
37
|
+
|
|
38
|
+
// Immutable operations return new arrays
|
|
39
|
+
const newPosition = add2D(position, velocity); // [105, 210]
|
|
40
|
+
const speed = magnitude2D(velocity); // 11.18...
|
|
41
|
+
|
|
42
|
+
// 3D operations
|
|
43
|
+
const v1: ArrayVector3D = [1, 2, 3];
|
|
44
|
+
const v2: ArrayVector3D = [4, 5, 6];
|
|
45
|
+
const sum = add3D(v1, v2); // [5, 7, 9]
|
|
46
|
+
const cross = cross3D(v1, v2); // [-3, 6, -3]
|
|
47
|
+
|
|
48
|
+
// Chain operations functionally
|
|
49
|
+
const result = normalize2D(add2D(position, velocity));
|
|
50
|
+
```
|
|
51
|
+
|
|
52
|
+
**Benefits of the Functional API:**
|
|
53
|
+
- ✅ Immutable - data never changes unexpectedly
|
|
54
|
+
- ✅ Tree-shakeable - smaller bundles
|
|
55
|
+
- ✅ Simple - just functions and arrays
|
|
56
|
+
- ✅ Pattern-matching ready - works with destructuring
|
|
57
|
+
|
|
58
|
+
### OOP API (Legacy)
|
|
59
|
+
|
|
60
|
+
The **OOP API** uses mutable classes and is maintained for backward compatibility:
|
|
61
|
+
|
|
62
|
+
```typescript
|
|
63
|
+
import { Vec2, Vec3, Vec4 } from "@fimbul-works/vec";
|
|
64
|
+
|
|
65
|
+
// Create and manipulate vectors
|
|
66
|
+
const position = new Vec2(100, 200);
|
|
67
|
+
const velocity = new Vec2(5, 10);
|
|
68
|
+
|
|
69
|
+
position.add(velocity); // Mutates position
|
|
70
|
+
|
|
71
|
+
// Method chaining
|
|
72
|
+
const result = new Vec3(1, 0, 0)
|
|
73
|
+
.rotateY(Math.PI / 4)
|
|
74
|
+
.scale(2)
|
|
75
|
+
.normalize();
|
|
76
|
+
|
|
77
|
+
// 3D graphics with homogeneous coordinates
|
|
78
|
+
const point = new Vec4(x, y, z, 1); // Point in 3D space
|
|
79
|
+
const vector = new Vec4(dx, dy, dz, 0); // Direction in 3D space
|
|
80
|
+
|
|
81
|
+
// Color manipulation with RGB accessors
|
|
82
|
+
const color = new Vec3(0.8, 0.2, 0.4);
|
|
83
|
+
color.r = 1.0; // Set red component
|
|
84
|
+
```
|
|
85
|
+
|
|
86
|
+
## 📖 API Documentation
|
|
87
|
+
|
|
88
|
+
Complete API documentation generated by TypeDoc:
|
|
89
|
+
|
|
90
|
+
### Functional API
|
|
91
|
+
- **[2D Vector Functions](./docs/ArrayVector2D.md)** - Complete 2D functional API reference
|
|
92
|
+
- **[3D Vector Functions](./docs/ArrayVector3D.md)** - Complete 3D functional API reference
|
|
93
|
+
- **[4D Vector Functions](./docs/ArrayVector4D.md)** - Complete 4D functional API reference
|
|
94
|
+
- **[Spherical Interpolation Functions](./docs/Slerp.md)** - Spherical Interpolation API reference
|
|
95
|
+
|
|
96
|
+
### OOP API (Legacy)
|
|
97
|
+
- **[Vec2 Class](./docs/Vec2.md)** - Complete Vec2 class documentation
|
|
98
|
+
- **[Vec3 Class](./docs/Vec3.md)** - Complete Vec3 class documentation
|
|
99
|
+
- **[Vec4 Class](./docs/Vec4.md)** - Complete Vec4 class documentation
|
|
100
|
+
|
|
101
|
+
## 🎯 Common Operations
|
|
102
|
+
|
|
103
|
+
### Functional API Examples
|
|
104
|
+
|
|
105
|
+
```typescript
|
|
106
|
+
import {
|
|
107
|
+
add2D, subtract2D, multiply2D, divide2D,
|
|
108
|
+
dot2D, cross2D,
|
|
109
|
+
magnitude2D, normalize2D, negate2D,
|
|
110
|
+
distance2D, distanceManhattan2D, distanceChebyshev2D,
|
|
111
|
+
lerp2D, clamp2D, limitMax2D, limitMin2D,
|
|
112
|
+
rotate2D, reflect2D, project2D,
|
|
113
|
+
angleBetween2D, angleX2D, angleY2D
|
|
114
|
+
} from "@fimbul-works/vec/2d";
|
|
115
|
+
|
|
116
|
+
// Vector arithmetic
|
|
117
|
+
const v1: ArrayVector2D = [3, 4];
|
|
118
|
+
const v2: ArrayVector2D = [1, 2];
|
|
119
|
+
|
|
120
|
+
add2D(v1, v2); // [4, 6] - Addition
|
|
121
|
+
subtract2D(v1, v2); // [2, 2] - Subtraction
|
|
122
|
+
multiply2D(v1, v2); // [3, 8] - Component-wise multiplication
|
|
123
|
+
divide2D(v1, v2); // [3, 2] - Component-wise division
|
|
124
|
+
|
|
125
|
+
// Products
|
|
126
|
+
dot2D(v1, v2); // 11 - Dot product
|
|
127
|
+
cross2D(v1, v2); // 2 - 2D cross product (returns scalar)
|
|
128
|
+
|
|
129
|
+
// Magnitude & normalization
|
|
130
|
+
magnitude2D(v1); // 5 - Vector length
|
|
131
|
+
normalize2D(v1); // [0.6, 0.8] - Unit vector
|
|
132
|
+
negate2D(v1); // [-3, -4] - Opposite direction
|
|
133
|
+
|
|
134
|
+
// Distance metrics
|
|
135
|
+
distance2D(v1, v2); // 3.606 - Euclidean distance
|
|
136
|
+
distanceManhattan2D(v1, v2); // 4 - Manhattan distance
|
|
137
|
+
distanceChebyshev2D(v1, v2); // 2 - Chebyshev distance
|
|
138
|
+
|
|
139
|
+
// Interpolation & clamping
|
|
140
|
+
lerp2D(v1, v2, 0.5); // [2, 3] - Linear interpolation
|
|
141
|
+
clamp2D(v1, 2, 8); // Keeps magnitude between 2 and 8
|
|
142
|
+
limitMax2D(v1, 3); // Limits magnitude to maximum of 3
|
|
143
|
+
limitMin2D(v1, 6); // Ensures magnitude is at least 6
|
|
144
|
+
|
|
145
|
+
// Rotation & reflection
|
|
146
|
+
rotate2D(v1, Math.PI / 2); // [-4, 3] - Rotate 90°
|
|
147
|
+
reflect2D(v1, v2); // Reflection
|
|
148
|
+
|
|
149
|
+
// Angles
|
|
150
|
+
angleBetween2D(v1, v2); // Angle between vectors in radians
|
|
151
|
+
angleX2D(v1); // Angle with x-axis
|
|
152
|
+
```
|
|
153
|
+
|
|
154
|
+
### Homogeneous Coordinates (4D)
|
|
155
|
+
|
|
156
|
+
```typescript
|
|
157
|
+
// 3D point: w = 1
|
|
158
|
+
const point: ArrayVector4D = [x, y, z, 1];
|
|
159
|
+
|
|
160
|
+
// 3D direction: w = 0
|
|
161
|
+
const direction: ArrayVector4D = [dx, dy, dz, 0];
|
|
162
|
+
```
|
|
163
|
+
|
|
164
|
+
## 🔄 Migration from OOP to Functional
|
|
165
|
+
|
|
166
|
+
Migrating from the OOP API to the functional API is straightforward:
|
|
167
|
+
|
|
168
|
+
| OOP (Vec2) | Functional (2D) |
|
|
169
|
+
|-----------|-----------------|
|
|
170
|
+
| `new Vec2(x, y)` | `[x, y]` as `ArrayVector2D` |
|
|
171
|
+
| `Vec2.add(v1, v2)` | `add2D(v1, v2)` |
|
|
172
|
+
| `v1.add(v2)` | `add2D(v1, v2)` |
|
|
173
|
+
| `v.x` | `v[0]` |
|
|
174
|
+
| `v.y` | `v[1]` |
|
|
175
|
+
| `v.magnitude` | `magnitude2D(v)` |
|
|
176
|
+
| `v.normalize()` | `normalize2D(v)` |
|
|
177
|
+
|
|
178
|
+
**Key differences:**
|
|
179
|
+
- Functional API is **immutable** - returns new arrays instead of mutating
|
|
180
|
+
- Uses **array indexing** `[0], [1]` instead of properties `.x, .y`
|
|
181
|
+
- Functions are **standalone** instead of class methods
|
|
182
|
+
|
|
183
|
+
## 📦 Import Paths
|
|
184
|
+
|
|
185
|
+
```typescript
|
|
186
|
+
// Functional API (Recommended)
|
|
187
|
+
import { add2D } from "@fimbul-works/vec/2d";
|
|
188
|
+
import { add3D } from "@fimbul-works/vec/3d";
|
|
189
|
+
import { add4D } from "@fimbul-works/vec/4d";
|
|
190
|
+
|
|
191
|
+
// OOP API (Legacy)
|
|
192
|
+
import { Vec2 } from "@fimbul-works/vec/vec2";
|
|
193
|
+
import { Vec3 } from "@fimbul-works/vec/vec3";
|
|
194
|
+
import { Vec4 } from "@fimbul-works/vec/vec4";
|
|
195
|
+
|
|
196
|
+
// Types
|
|
197
|
+
import type { ArrayVector2D } from "@fimbul-works/vec/2d";
|
|
198
|
+
import type { ArrayVector3D } from "@fimbul-works/vec/3d";
|
|
199
|
+
import type { ArrayVector4D } from "@fimbul-works/vec/4d";
|
|
200
|
+
```
|
|
201
|
+
|
|
202
|
+
## 📄 License
|
|
203
|
+
|
|
204
|
+
MIT License - See [LICENSE](LICENSE) file for details.
|
|
205
|
+
|
|
206
|
+
---
|
|
207
|
+
|
|
208
|
+
Built with ⚡ by [FimbulWorks](https://github.com/fimbul-works)
|
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
import type { ArrayVector2D } from "./types.js";
|
|
2
|
+
/**
|
|
3
|
+
* Adds one 2D vectors.
|
|
4
|
+
* @param {ArrayVector2D} xy1 - First vector as `[x, y]`
|
|
5
|
+
* @param {ArrayVector2D} xy2 - Second vector as `[x, y]`
|
|
6
|
+
* @returns {ArrayVector2D} The sum of the vectors
|
|
7
|
+
*/
|
|
8
|
+
export declare const add2D: (xy1: ArrayVector2D, xy2: ArrayVector2D) => ArrayVector2D;
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.add2D = void 0;
|
|
4
|
+
/**
|
|
5
|
+
* Adds one 2D vectors.
|
|
6
|
+
* @param {ArrayVector2D} xy1 - First vector as `[x, y]`
|
|
7
|
+
* @param {ArrayVector2D} xy2 - Second vector as `[x, y]`
|
|
8
|
+
* @returns {ArrayVector2D} The sum of the vectors
|
|
9
|
+
*/
|
|
10
|
+
const add2D = (xy1, xy2) => [xy1[0] + xy2[0], xy1[1] + xy2[1]];
|
|
11
|
+
exports.add2D = add2D;
|
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
import type { ArrayVector2D } from "./types.js";
|
|
2
|
+
/**
|
|
3
|
+
* Calculates the angle between two 2D vectors.
|
|
4
|
+
* @param {ArrayVector2D} xy1 - First vector as `[x, y]`
|
|
5
|
+
* @param {ArrayVector2D} xy2 - Second vector as `[x, y]`
|
|
6
|
+
* @returns {number} Angle between the vectors in radians
|
|
7
|
+
*/
|
|
8
|
+
export declare const angleBetween2D: (xy1: ArrayVector2D, xy2: ArrayVector2D) => number;
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.angleBetween2D = void 0;
|
|
4
|
+
/**
|
|
5
|
+
* Calculates the angle between two 2D vectors.
|
|
6
|
+
* @param {ArrayVector2D} xy1 - First vector as `[x, y]`
|
|
7
|
+
* @param {ArrayVector2D} xy2 - Second vector as `[x, y]`
|
|
8
|
+
* @returns {number} Angle between the vectors in radians
|
|
9
|
+
*/
|
|
10
|
+
const angleBetween2D = (xy1, xy2) => Math.atan2(xy1[0] * xy2[1] - xy1[1] * xy2[0], xy1[0] * xy2[0] + xy1[1] * xy2[1]);
|
|
11
|
+
exports.angleBetween2D = angleBetween2D;
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
import type { ArrayVector2D } from "./types.js";
|
|
2
|
+
/**
|
|
3
|
+
* Gets the angle between a 2D vector and the positive x-axis in radians.
|
|
4
|
+
* @param {ArrayVector2D} xy - Vector as `[x, y]`
|
|
5
|
+
* @returns {number} Angle in radians, always in the range [0, 2π)
|
|
6
|
+
*/
|
|
7
|
+
export declare const angleX2D: (xy: ArrayVector2D) => number;
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.angleX2D = void 0;
|
|
4
|
+
/**
|
|
5
|
+
* Gets the angle between a 2D vector and the positive x-axis in radians.
|
|
6
|
+
* @param {ArrayVector2D} xy - Vector as `[x, y]`
|
|
7
|
+
* @returns {number} Angle in radians, always in the range [0, 2π)
|
|
8
|
+
*/
|
|
9
|
+
const angleX2D = (xy) => Math.atan2(xy[1], xy[0] + (xy[1] < 0 ? Math.PI : 0));
|
|
10
|
+
exports.angleX2D = angleX2D;
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
import type { ArrayVector2D } from "./types.js";
|
|
2
|
+
/**
|
|
3
|
+
* Gets the angle between a 2D vector and the positive y-axis in radians.
|
|
4
|
+
* @param {ArrayVector2D} xy - Vector as `[x, y]`
|
|
5
|
+
* @returns {number} Angle in radians, always in the range [0, 2π)
|
|
6
|
+
*/
|
|
7
|
+
export declare const angleY2D: (xy: ArrayVector2D) => number;
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.angleY2D = void 0;
|
|
4
|
+
/**
|
|
5
|
+
* Gets the angle between a 2D vector and the positive y-axis in radians.
|
|
6
|
+
* @param {ArrayVector2D} xy - Vector as `[x, y]`
|
|
7
|
+
* @returns {number} Angle in radians, always in the range [0, 2π)
|
|
8
|
+
*/
|
|
9
|
+
const angleY2D = (xy) => Math.atan2(xy[0], xy[1] + (xy[0] < 0 ? Math.PI : 0));
|
|
10
|
+
exports.angleY2D = angleY2D;
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
import type { ArrayVector2D } from "./types.js";
|
|
2
|
+
/**
|
|
3
|
+
* Clamps the magnitude of a 2D vector between a minimum and maximum value.
|
|
4
|
+
* @param {ArrayVector2D} xy - Vector as `[x, y]`
|
|
5
|
+
* @param {number} min - Minimum magnitude
|
|
6
|
+
* @param {number} max - Maximum magnitude
|
|
7
|
+
* @param {number} [m] - Optional current magnitude (default: `magnitude2D(xy)`)
|
|
8
|
+
* @returns {ArrayVector2D} The clamped vector
|
|
9
|
+
*/
|
|
10
|
+
export declare const clamp2D: (xy: ArrayVector2D, min: number, max: number, m?: number) => ArrayVector2D;
|
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.clamp2D = void 0;
|
|
4
|
+
const magnitude_2d_js_1 = require("./magnitude-2d.js");
|
|
5
|
+
/**
|
|
6
|
+
* Clamps the magnitude of a 2D vector between a minimum and maximum value.
|
|
7
|
+
* @param {ArrayVector2D} xy - Vector as `[x, y]`
|
|
8
|
+
* @param {number} min - Minimum magnitude
|
|
9
|
+
* @param {number} max - Maximum magnitude
|
|
10
|
+
* @param {number} [m] - Optional current magnitude (default: `magnitude2D(xy)`)
|
|
11
|
+
* @returns {ArrayVector2D} The clamped vector
|
|
12
|
+
*/
|
|
13
|
+
const clamp2D = (xy, min, max, m = (0, magnitude_2d_js_1.magnitude2D)(xy)) => m > max ? [(xy[0] / m) * max, (xy[1] / m) * max] : m < min ? [(xy[0] / m) * min, (xy[1] / m) * min] : xy;
|
|
14
|
+
exports.clamp2D = clamp2D;
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.clone2D = void 0;
|
|
4
|
+
/**
|
|
5
|
+
* Clone a 2D vector.
|
|
6
|
+
* @param {ArrayVector2D} xy - Vector as `[x, y]`
|
|
7
|
+
* @returns {ArrayVector2D} The cloned vector
|
|
8
|
+
*/
|
|
9
|
+
const clone2D = (xy) => [xy[0], xy[1]];
|
|
10
|
+
exports.clone2D = clone2D;
|
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
import type { ArrayVector2D } from "./types.js";
|
|
2
|
+
/**
|
|
3
|
+
* Calculates the cross product of two 2D vectors.
|
|
4
|
+
* @param {ArrayVector2D} xy1 - First vector as `[x, y]`
|
|
5
|
+
* @param {ArrayVector2D} xy2 - Second vector as `[x, y]`
|
|
6
|
+
* @returns {number} Cross product
|
|
7
|
+
*/
|
|
8
|
+
export declare const cross2D: (xy1: ArrayVector2D, xy2: ArrayVector2D) => number;
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.cross2D = void 0;
|
|
4
|
+
/**
|
|
5
|
+
* Calculates the cross product of two 2D vectors.
|
|
6
|
+
* @param {ArrayVector2D} xy1 - First vector as `[x, y]`
|
|
7
|
+
* @param {ArrayVector2D} xy2 - Second vector as `[x, y]`
|
|
8
|
+
* @returns {number} Cross product
|
|
9
|
+
*/
|
|
10
|
+
const cross2D = (xy1, xy2) => xy1[0] * xy2[1] - xy1[1] * xy2[0];
|
|
11
|
+
exports.cross2D = cross2D;
|
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
import type { ArrayVector2D } from "./types.js";
|
|
2
|
+
/**
|
|
3
|
+
* Calculate the Euclidean distance between two 2D vectors.
|
|
4
|
+
* @param {ArrayVector2D} xy1 - First vector as `[x, y]`
|
|
5
|
+
* @param {ArrayVector2D} xy2 - Second vector as `[x, y]`
|
|
6
|
+
* @returns {number} Euclidean distance
|
|
7
|
+
*/
|
|
8
|
+
export declare const distance2D: (xy1: ArrayVector2D, xy2: ArrayVector2D) => number;
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.distance2D = void 0;
|
|
4
|
+
/**
|
|
5
|
+
* Calculate the Euclidean distance between two 2D vectors.
|
|
6
|
+
* @param {ArrayVector2D} xy1 - First vector as `[x, y]`
|
|
7
|
+
* @param {ArrayVector2D} xy2 - Second vector as `[x, y]`
|
|
8
|
+
* @returns {number} Euclidean distance
|
|
9
|
+
*/
|
|
10
|
+
const distance2D = (xy1, xy2) => Math.sqrt((xy2[0] - xy1[0]) ** 2 + (xy2[1] - xy1[1]) ** 2);
|
|
11
|
+
exports.distance2D = distance2D;
|
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
import type { ArrayVector2D } from "./types.js";
|
|
2
|
+
/**
|
|
3
|
+
* Calculates the Chebyshev distance between two 2D vectors.
|
|
4
|
+
* @param {ArrayVector2D} xy1 - First vector as `[x, y]`
|
|
5
|
+
* @param {ArrayVector2D} xy2 - Second vector as `[x, y]`
|
|
6
|
+
* @returns {number} Chebyshev distance
|
|
7
|
+
*/
|
|
8
|
+
export declare const distanceChebyshev2D: (xy1: ArrayVector2D, xy2: ArrayVector2D) => number;
|
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.distanceChebyshev2D = void 0;
|
|
4
|
+
/**
|
|
5
|
+
* Calculates the Chebyshev distance between two 2D vectors.
|
|
6
|
+
* @param {ArrayVector2D} xy1 - First vector as `[x, y]`
|
|
7
|
+
* @param {ArrayVector2D} xy2 - Second vector as `[x, y]`
|
|
8
|
+
* @returns {number} Chebyshev distance
|
|
9
|
+
*/
|
|
10
|
+
const distanceChebyshev2D = (xy1, xy2) => {
|
|
11
|
+
const absX = Math.abs(xy1[0] - xy2[0]);
|
|
12
|
+
const absY = Math.abs(xy1[1] - xy2[1]);
|
|
13
|
+
return absX >= absY ? absX : absY;
|
|
14
|
+
};
|
|
15
|
+
exports.distanceChebyshev2D = distanceChebyshev2D;
|
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
import type { ArrayVector2D } from "./types.js";
|
|
2
|
+
/**
|
|
3
|
+
* Calculates the Manhattan distance between two 2D vectors.
|
|
4
|
+
* @param {ArrayVector2D} xy1 - First vector as `[x, y]`
|
|
5
|
+
* @param {ArrayVector2D} xy2 - Second vector as `[x, y]`
|
|
6
|
+
* @returns {number} Manhattan distance
|
|
7
|
+
*/
|
|
8
|
+
export declare const distanceManhattan2D: (xy1: ArrayVector2D, xy2: ArrayVector2D) => number;
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.distanceManhattan2D = void 0;
|
|
4
|
+
/**
|
|
5
|
+
* Calculates the Manhattan distance between two 2D vectors.
|
|
6
|
+
* @param {ArrayVector2D} xy1 - First vector as `[x, y]`
|
|
7
|
+
* @param {ArrayVector2D} xy2 - Second vector as `[x, y]`
|
|
8
|
+
* @returns {number} Manhattan distance
|
|
9
|
+
*/
|
|
10
|
+
const distanceManhattan2D = (xy1, xy2) => Math.abs(xy2[0] - xy1[0]) + Math.abs(xy2[1] - xy1[1]);
|
|
11
|
+
exports.distanceManhattan2D = distanceManhattan2D;
|
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
import type { ArrayVector2D } from "./types.js";
|
|
2
|
+
/**
|
|
3
|
+
* Calculates the Minkowski distance between two 2D vectors.
|
|
4
|
+
* @param {ArrayVector2D} xy1 - First vector as `[x, y]`
|
|
5
|
+
* @param {ArrayVector2D} xy2 - Second vector as `[x, y]`
|
|
6
|
+
* @param {number} p - Order of the Minkowski distance
|
|
7
|
+
* @returns {number} Minkowski distance
|
|
8
|
+
*/
|
|
9
|
+
export declare const distanceMinkowski2D: (xy1: ArrayVector2D, xy2: ArrayVector2D, p: number) => number;
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.distanceMinkowski2D = void 0;
|
|
4
|
+
/**
|
|
5
|
+
* Calculates the Minkowski distance between two 2D vectors.
|
|
6
|
+
* @param {ArrayVector2D} xy1 - First vector as `[x, y]`
|
|
7
|
+
* @param {ArrayVector2D} xy2 - Second vector as `[x, y]`
|
|
8
|
+
* @param {number} p - Order of the Minkowski distance
|
|
9
|
+
* @returns {number} Minkowski distance
|
|
10
|
+
*/
|
|
11
|
+
const distanceMinkowski2D = (xy1, xy2, p) => (Math.abs(xy1[0] - xy2[0]) ** p + Math.abs(xy1[1] - xy2[1]) ** p) ** (1 / p);
|
|
12
|
+
exports.distanceMinkowski2D = distanceMinkowski2D;
|
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
import type { ArrayVector2D } from "./types.js";
|
|
2
|
+
/**
|
|
3
|
+
* Calculates the squared Euclidean distance between two 2D vectors.
|
|
4
|
+
* @param {ArrayVector2D} xy1 - First vector as `[x, y]`
|
|
5
|
+
* @param {ArrayVector2D} xy2 - Second vector as `[x, y]`
|
|
6
|
+
* @returns {number} Squared distance
|
|
7
|
+
*/
|
|
8
|
+
export declare const distanceSq2D: (xy1: ArrayVector2D, xy2: ArrayVector2D) => number;
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.distanceSq2D = void 0;
|
|
4
|
+
/**
|
|
5
|
+
* Calculates the squared Euclidean distance between two 2D vectors.
|
|
6
|
+
* @param {ArrayVector2D} xy1 - First vector as `[x, y]`
|
|
7
|
+
* @param {ArrayVector2D} xy2 - Second vector as `[x, y]`
|
|
8
|
+
* @returns {number} Squared distance
|
|
9
|
+
*/
|
|
10
|
+
const distanceSq2D = (xy1, xy2) => (xy2[0] - xy1[0]) ** 2 + (xy2[1] - xy1[1]) ** 2;
|
|
11
|
+
exports.distanceSq2D = distanceSq2D;
|
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
import type { ArrayVector2D } from "./types.js";
|
|
2
|
+
/**
|
|
3
|
+
* Divides one 2D vector with another.
|
|
4
|
+
* @param {ArrayVector2D} xy1 - First vector as `[x, y]`
|
|
5
|
+
* @param {ArrayVector2D} xy2 - Second vector as `[x, y]`
|
|
6
|
+
* @returns {ArrayVector2D} The divided value
|
|
7
|
+
*/
|
|
8
|
+
export declare const divide2D: (xy1: ArrayVector2D, xy2: ArrayVector2D) => ArrayVector2D;
|
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.divide2D = void 0;
|
|
4
|
+
/**
|
|
5
|
+
* Divides one 2D vector with another.
|
|
6
|
+
* @param {ArrayVector2D} xy1 - First vector as `[x, y]`
|
|
7
|
+
* @param {ArrayVector2D} xy2 - Second vector as `[x, y]`
|
|
8
|
+
* @returns {ArrayVector2D} The divided value
|
|
9
|
+
*/
|
|
10
|
+
const divide2D = (xy1, xy2) => [
|
|
11
|
+
xy2[0] === 0 ? Number.POSITIVE_INFINITY : xy1[0] / xy2[0],
|
|
12
|
+
xy2[1] === 0 ? Number.POSITIVE_INFINITY : xy1[1] / xy2[1],
|
|
13
|
+
];
|
|
14
|
+
exports.divide2D = divide2D;
|
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
import type { ArrayVector2D } from "./types.js";
|
|
2
|
+
/**
|
|
3
|
+
* Calculates the dot product of two vectors.
|
|
4
|
+
* @param {ArrayVector2D} xy1 - First vector as `[x, y]`
|
|
5
|
+
* @param {ArrayVector2D} xy2 - Second vector as `[x, y]`
|
|
6
|
+
* @returns {number} Dot product
|
|
7
|
+
*/
|
|
8
|
+
export declare const dot2D: (xy1: ArrayVector2D, xy2: ArrayVector2D) => number;
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.dot2D = void 0;
|
|
4
|
+
/**
|
|
5
|
+
* Calculates the dot product of two vectors.
|
|
6
|
+
* @param {ArrayVector2D} xy1 - First vector as `[x, y]`
|
|
7
|
+
* @param {ArrayVector2D} xy2 - Second vector as `[x, y]`
|
|
8
|
+
* @returns {number} Dot product
|
|
9
|
+
*/
|
|
10
|
+
const dot2D = (xy1, xy2) => xy1[0] * xy2[0] + xy1[1] * xy2[1];
|
|
11
|
+
exports.dot2D = dot2D;
|
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
import type { ArrayVector2D } from "./types.js";
|
|
2
|
+
/**
|
|
3
|
+
* Creates an ArrayVector2D from x-axis angle.
|
|
4
|
+
* @param {number} phi - Angle in radians
|
|
5
|
+
* @param {number} magnitude - Optional magnitude of the vector (default: `1`)
|
|
6
|
+
* @returns {ArrayVector2D} Vector
|
|
7
|
+
*/
|
|
8
|
+
export declare const fromAngleX2D: (phi: number, magnitude?: number) => ArrayVector2D;
|
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.fromAngleX2D = void 0;
|
|
4
|
+
/**
|
|
5
|
+
* Creates an ArrayVector2D from x-axis angle.
|
|
6
|
+
* @param {number} phi - Angle in radians
|
|
7
|
+
* @param {number} magnitude - Optional magnitude of the vector (default: `1`)
|
|
8
|
+
* @returns {ArrayVector2D} Vector
|
|
9
|
+
*/
|
|
10
|
+
const fromAngleX2D = (phi, magnitude = 1) => [
|
|
11
|
+
magnitude * Math.cos(phi),
|
|
12
|
+
magnitude * Math.sin(phi),
|
|
13
|
+
];
|
|
14
|
+
exports.fromAngleX2D = fromAngleX2D;
|