@fimbul-works/vec 1.1.0 → 2.0.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (558) hide show
  1. package/README.md +208 -95
  2. package/dist/cjs/2d/add-2d.d.ts +8 -0
  3. package/dist/cjs/2d/add-2d.js +11 -0
  4. package/dist/cjs/2d/angle-between-2d.d.ts +8 -0
  5. package/dist/cjs/2d/angle-between-2d.js +11 -0
  6. package/dist/cjs/2d/angle-x-2d.d.ts +7 -0
  7. package/dist/cjs/2d/angle-x-2d.js +10 -0
  8. package/dist/cjs/2d/angle-y-2d.d.ts +7 -0
  9. package/dist/cjs/2d/angle-y-2d.js +10 -0
  10. package/dist/cjs/2d/clamp-2d.d.ts +10 -0
  11. package/dist/cjs/2d/clamp-2d.js +14 -0
  12. package/dist/cjs/2d/clone-2d.d.ts +7 -0
  13. package/dist/cjs/2d/clone-2d.js +10 -0
  14. package/dist/cjs/2d/cross-2d.d.ts +8 -0
  15. package/dist/cjs/2d/cross-2d.js +11 -0
  16. package/dist/cjs/2d/distance-2d.d.ts +8 -0
  17. package/dist/cjs/2d/distance-2d.js +11 -0
  18. package/dist/cjs/2d/distance-chebyshev-2d.d.ts +8 -0
  19. package/dist/cjs/2d/distance-chebyshev-2d.js +15 -0
  20. package/dist/cjs/2d/distance-manhattan-2d.d.ts +8 -0
  21. package/dist/cjs/2d/distance-manhattan-2d.js +11 -0
  22. package/dist/cjs/2d/distance-minkowski-2d.d.ts +9 -0
  23. package/dist/cjs/2d/distance-minkowski-2d.js +12 -0
  24. package/dist/cjs/2d/distance-sq-2d.d.ts +8 -0
  25. package/dist/cjs/2d/distance-sq-2d.js +11 -0
  26. package/dist/cjs/2d/divide-2d.d.ts +8 -0
  27. package/dist/cjs/2d/divide-2d.js +14 -0
  28. package/dist/cjs/2d/dot-2d.d.ts +8 -0
  29. package/dist/cjs/2d/dot-2d.js +11 -0
  30. package/dist/cjs/2d/from-angle-x-2d.d.ts +8 -0
  31. package/dist/cjs/2d/from-angle-x-2d.js +14 -0
  32. package/dist/cjs/2d/from-angle-y-2d.d.ts +8 -0
  33. package/dist/cjs/2d/from-angle-y-2d.js +14 -0
  34. package/dist/cjs/2d/from-object-2d.d.ts +10 -0
  35. package/dist/cjs/2d/from-object-2d.js +10 -0
  36. package/dist/cjs/2d/from-polar-coords-2d.d.ts +8 -0
  37. package/dist/cjs/2d/from-polar-coords-2d.js +11 -0
  38. package/dist/cjs/2d/immutable-2d.d.ts +7 -0
  39. package/dist/cjs/2d/immutable-2d.js +10 -0
  40. package/dist/cjs/2d/index.d.ts +47 -0
  41. package/dist/cjs/2d/index.js +63 -0
  42. package/dist/cjs/2d/is-equal-2d.d.ts +8 -0
  43. package/dist/cjs/2d/is-equal-2d.js +11 -0
  44. package/dist/cjs/2d/is-equal-approx-2d.d.ts +9 -0
  45. package/dist/cjs/2d/is-equal-approx-2d.js +12 -0
  46. package/dist/cjs/2d/is-infinite-2d.d.ts +7 -0
  47. package/dist/cjs/2d/is-infinite-2d.js +13 -0
  48. package/dist/cjs/2d/is-nan-2d.d.ts +7 -0
  49. package/dist/cjs/2d/is-nan-2d.js +10 -0
  50. package/dist/cjs/2d/is-opposite-2d.d.ts +8 -0
  51. package/dist/cjs/2d/is-opposite-2d.js +11 -0
  52. package/dist/cjs/2d/is-zero-2d.d.ts +7 -0
  53. package/dist/cjs/2d/is-zero-2d.js +10 -0
  54. package/dist/cjs/2d/lerp-2d.d.ts +9 -0
  55. package/dist/cjs/2d/lerp-2d.js +15 -0
  56. package/dist/cjs/2d/limit-max-2d.d.ts +9 -0
  57. package/dist/cjs/2d/limit-max-2d.js +13 -0
  58. package/dist/cjs/2d/limit-min-2d.d.ts +9 -0
  59. package/dist/cjs/2d/limit-min-2d.js +13 -0
  60. package/dist/cjs/2d/look-at-2d.d.ts +10 -0
  61. package/dist/cjs/2d/look-at-2d.js +14 -0
  62. package/dist/cjs/2d/magnitude-2d.d.ts +7 -0
  63. package/dist/cjs/2d/magnitude-2d.js +10 -0
  64. package/dist/cjs/2d/magnitude-sq-2d.d.ts +7 -0
  65. package/dist/cjs/2d/magnitude-sq-2d.js +10 -0
  66. package/dist/cjs/2d/multiply-2d.d.ts +8 -0
  67. package/dist/cjs/2d/multiply-2d.js +11 -0
  68. package/dist/cjs/2d/negate-2d.d.ts +7 -0
  69. package/dist/cjs/2d/negate-2d.js +10 -0
  70. package/dist/cjs/2d/normalize-2d.d.ts +8 -0
  71. package/dist/cjs/2d/normalize-2d.js +12 -0
  72. package/dist/cjs/2d/one-2d.d.ts +6 -0
  73. package/dist/cjs/2d/one-2d.js +9 -0
  74. package/dist/cjs/2d/project-2d.d.ts +10 -0
  75. package/dist/cjs/2d/project-2d.js +17 -0
  76. package/dist/cjs/2d/random-2d.d.ts +7 -0
  77. package/dist/cjs/2d/random-2d.js +13 -0
  78. package/dist/cjs/2d/reflect-2d.d.ts +9 -0
  79. package/dist/cjs/2d/reflect-2d.js +16 -0
  80. package/dist/cjs/2d/rotate-2d.d.ts +9 -0
  81. package/dist/cjs/2d/rotate-2d.js +27 -0
  82. package/dist/cjs/2d/set-magnitude-2d.d.ts +9 -0
  83. package/dist/cjs/2d/set-magnitude-2d.js +16 -0
  84. package/dist/cjs/2d/subtract-2d.d.ts +8 -0
  85. package/dist/cjs/2d/subtract-2d.js +11 -0
  86. package/dist/cjs/2d/types.d.ts +4 -0
  87. package/dist/cjs/2d/types.js +2 -0
  88. package/dist/cjs/2d/zero-2d.d.ts +6 -0
  89. package/dist/cjs/2d/zero-2d.js +9 -0
  90. package/dist/cjs/3d/add-3d.d.ts +8 -0
  91. package/dist/cjs/3d/add-3d.js +15 -0
  92. package/dist/cjs/3d/angle-between-3d.d.ts +10 -0
  93. package/dist/cjs/3d/angle-between-3d.js +14 -0
  94. package/dist/cjs/3d/angle-x-3d.d.ts +7 -0
  95. package/dist/cjs/3d/angle-x-3d.js +10 -0
  96. package/dist/cjs/3d/angle-y-3d.d.ts +7 -0
  97. package/dist/cjs/3d/angle-y-3d.js +10 -0
  98. package/dist/cjs/3d/angle-z-3d.d.ts +7 -0
  99. package/dist/cjs/3d/angle-z-3d.js +10 -0
  100. package/dist/cjs/3d/clamp-3d.d.ts +10 -0
  101. package/dist/cjs/3d/clamp-3d.js +18 -0
  102. package/dist/cjs/3d/clone-3d.d.ts +7 -0
  103. package/dist/cjs/3d/clone-3d.js +10 -0
  104. package/dist/cjs/3d/cross-3d.d.ts +8 -0
  105. package/dist/cjs/3d/cross-3d.js +15 -0
  106. package/dist/cjs/3d/distance-3d.d.ts +8 -0
  107. package/dist/cjs/3d/distance-3d.js +11 -0
  108. package/dist/cjs/3d/distance-chebyshev-3d.d.ts +8 -0
  109. package/dist/cjs/3d/distance-chebyshev-3d.js +16 -0
  110. package/dist/cjs/3d/distance-manhattan-3d.d.ts +8 -0
  111. package/dist/cjs/3d/distance-manhattan-3d.js +11 -0
  112. package/dist/cjs/3d/distance-minkowski-3d.d.ts +9 -0
  113. package/dist/cjs/3d/distance-minkowski-3d.js +12 -0
  114. package/dist/cjs/3d/distance-sq-3d.d.ts +8 -0
  115. package/dist/cjs/3d/distance-sq-3d.js +11 -0
  116. package/dist/cjs/3d/divide-3d.d.ts +8 -0
  117. package/dist/cjs/3d/divide-3d.js +15 -0
  118. package/dist/cjs/3d/dot-3d.d.ts +8 -0
  119. package/dist/cjs/3d/dot-3d.js +11 -0
  120. package/dist/cjs/3d/from-cylindrical-coords-3d.d.ts +9 -0
  121. package/dist/cjs/3d/from-cylindrical-coords-3d.js +16 -0
  122. package/dist/cjs/3d/from-object-3d.d.ts +11 -0
  123. package/dist/cjs/3d/from-object-3d.js +10 -0
  124. package/dist/cjs/3d/from-spherical-coords-3d.d.ts +9 -0
  125. package/dist/cjs/3d/from-spherical-coords-3d.js +16 -0
  126. package/dist/cjs/3d/immutable-3d.d.ts +7 -0
  127. package/dist/cjs/3d/immutable-3d.js +10 -0
  128. package/dist/cjs/3d/index.d.ts +49 -0
  129. package/dist/cjs/3d/index.js +65 -0
  130. package/dist/cjs/3d/is-equal-3d.d.ts +8 -0
  131. package/dist/cjs/3d/is-equal-3d.js +11 -0
  132. package/dist/cjs/3d/is-equal-approx-3d.d.ts +9 -0
  133. package/dist/cjs/3d/is-equal-approx-3d.js +14 -0
  134. package/dist/cjs/3d/is-infinite-3d.d.ts +7 -0
  135. package/dist/cjs/3d/is-infinite-3d.js +15 -0
  136. package/dist/cjs/3d/is-nan-3d.d.ts +7 -0
  137. package/dist/cjs/3d/is-nan-3d.js +10 -0
  138. package/dist/cjs/3d/is-opposite-3d.d.ts +8 -0
  139. package/dist/cjs/3d/is-opposite-3d.js +11 -0
  140. package/dist/cjs/3d/is-zero-3d.d.ts +7 -0
  141. package/dist/cjs/3d/is-zero-3d.js +10 -0
  142. package/dist/cjs/3d/lerp-3d.d.ts +9 -0
  143. package/dist/cjs/3d/lerp-3d.js +16 -0
  144. package/dist/cjs/3d/limit-max-3d.d.ts +9 -0
  145. package/dist/cjs/3d/limit-max-3d.js +13 -0
  146. package/dist/cjs/3d/limit-min-3d.d.ts +9 -0
  147. package/dist/cjs/3d/limit-min-3d.js +13 -0
  148. package/dist/cjs/3d/look-at-3d.d.ts +10 -0
  149. package/dist/cjs/3d/look-at-3d.js +14 -0
  150. package/dist/cjs/3d/magnitude-3d.d.ts +7 -0
  151. package/dist/cjs/3d/magnitude-3d.js +10 -0
  152. package/dist/cjs/3d/magnitude-sq-3d.d.ts +7 -0
  153. package/dist/cjs/3d/magnitude-sq-3d.js +10 -0
  154. package/dist/cjs/3d/multiply-3d.d.ts +8 -0
  155. package/dist/cjs/3d/multiply-3d.js +15 -0
  156. package/dist/cjs/3d/negate-3d.d.ts +7 -0
  157. package/dist/cjs/3d/negate-3d.js +10 -0
  158. package/dist/cjs/3d/normalize-3d.d.ts +8 -0
  159. package/dist/cjs/3d/normalize-3d.js +12 -0
  160. package/dist/cjs/3d/one-3d.d.ts +6 -0
  161. package/dist/cjs/3d/one-3d.js +9 -0
  162. package/dist/cjs/3d/project-3d.d.ts +10 -0
  163. package/dist/cjs/3d/project-3d.js +17 -0
  164. package/dist/cjs/3d/random-3d.d.ts +7 -0
  165. package/dist/cjs/3d/random-3d.js +11 -0
  166. package/dist/cjs/3d/reflect-3d.d.ts +9 -0
  167. package/dist/cjs/3d/reflect-3d.js +16 -0
  168. package/dist/cjs/3d/rotate-x-3d.d.ts +9 -0
  169. package/dist/cjs/3d/rotate-x-3d.js +26 -0
  170. package/dist/cjs/3d/rotate-y-3d.d.ts +9 -0
  171. package/dist/cjs/3d/rotate-y-3d.js +26 -0
  172. package/dist/cjs/3d/rotate-z-3d.d.ts +9 -0
  173. package/dist/cjs/3d/rotate-z-3d.js +26 -0
  174. package/dist/cjs/3d/set-magnitude-3d.d.ts +9 -0
  175. package/dist/cjs/3d/set-magnitude-3d.js +13 -0
  176. package/dist/cjs/3d/subtract-3d.d.ts +8 -0
  177. package/dist/cjs/3d/subtract-3d.js +15 -0
  178. package/dist/cjs/3d/types.d.ts +4 -0
  179. package/dist/cjs/3d/types.js +2 -0
  180. package/dist/cjs/3d/zero-3d.d.ts +6 -0
  181. package/dist/cjs/3d/zero-3d.js +9 -0
  182. package/dist/cjs/4d/add-4d.d.ts +8 -0
  183. package/dist/cjs/4d/add-4d.js +16 -0
  184. package/dist/cjs/4d/angle-between-4d.d.ts +10 -0
  185. package/dist/cjs/4d/angle-between-4d.js +15 -0
  186. package/dist/cjs/4d/angle-w-4d.d.ts +7 -0
  187. package/dist/cjs/4d/angle-w-4d.js +10 -0
  188. package/dist/cjs/4d/angle-x-4d.d.ts +7 -0
  189. package/dist/cjs/4d/angle-x-4d.js +10 -0
  190. package/dist/cjs/4d/angle-y-4d.d.ts +7 -0
  191. package/dist/cjs/4d/angle-y-4d.js +10 -0
  192. package/dist/cjs/4d/angle-z-4d.d.ts +7 -0
  193. package/dist/cjs/4d/angle-z-4d.js +10 -0
  194. package/dist/cjs/4d/clamp-4d.d.ts +10 -0
  195. package/dist/cjs/4d/clamp-4d.js +18 -0
  196. package/dist/cjs/4d/clone-4d.d.ts +7 -0
  197. package/dist/cjs/4d/clone-4d.js +10 -0
  198. package/dist/cjs/4d/distance-4d.d.ts +8 -0
  199. package/dist/cjs/4d/distance-4d.js +11 -0
  200. package/dist/cjs/4d/distance-chebyshev-4d.d.ts +8 -0
  201. package/dist/cjs/4d/distance-chebyshev-4d.js +23 -0
  202. package/dist/cjs/4d/distance-manhattan-4d.d.ts +8 -0
  203. package/dist/cjs/4d/distance-manhattan-4d.js +14 -0
  204. package/dist/cjs/4d/distance-minkowski-4d.d.ts +9 -0
  205. package/dist/cjs/4d/distance-minkowski-4d.js +16 -0
  206. package/dist/cjs/4d/distance-sq-4d.d.ts +9 -0
  207. package/dist/cjs/4d/distance-sq-4d.js +12 -0
  208. package/dist/cjs/4d/divide-4d.d.ts +8 -0
  209. package/dist/cjs/4d/divide-4d.js +16 -0
  210. package/dist/cjs/4d/dot-4d.d.ts +8 -0
  211. package/dist/cjs/4d/dot-4d.js +11 -0
  212. package/dist/cjs/4d/from-object-4d.d.ts +12 -0
  213. package/dist/cjs/4d/from-object-4d.js +15 -0
  214. package/dist/cjs/4d/immutable-4d.d.ts +7 -0
  215. package/dist/cjs/4d/immutable-4d.js +10 -0
  216. package/dist/cjs/4d/index.d.ts +44 -0
  217. package/dist/cjs/4d/index.js +60 -0
  218. package/dist/cjs/4d/is-equal-4d.d.ts +8 -0
  219. package/dist/cjs/4d/is-equal-4d.js +11 -0
  220. package/dist/cjs/4d/is-equal-approx-4d.d.ts +9 -0
  221. package/dist/cjs/4d/is-equal-approx-4d.js +15 -0
  222. package/dist/cjs/4d/is-infinite-4d.d.ts +7 -0
  223. package/dist/cjs/4d/is-infinite-4d.js +17 -0
  224. package/dist/cjs/4d/is-nan-4d.d.ts +7 -0
  225. package/dist/cjs/4d/is-nan-4d.js +10 -0
  226. package/dist/cjs/4d/is-opposite-4d.d.ts +8 -0
  227. package/dist/cjs/4d/is-opposite-4d.js +11 -0
  228. package/dist/cjs/4d/is-zero-4d.d.ts +7 -0
  229. package/dist/cjs/4d/is-zero-4d.js +10 -0
  230. package/dist/cjs/4d/lerp-4d.d.ts +9 -0
  231. package/dist/cjs/4d/lerp-4d.js +17 -0
  232. package/dist/cjs/4d/limit-max-4d.d.ts +9 -0
  233. package/dist/cjs/4d/limit-max-4d.js +13 -0
  234. package/dist/cjs/4d/limit-min-4d.d.ts +9 -0
  235. package/dist/cjs/4d/limit-min-4d.js +13 -0
  236. package/dist/cjs/4d/look-at-4d.d.ts +10 -0
  237. package/dist/cjs/4d/look-at-4d.js +14 -0
  238. package/dist/cjs/4d/magnitude-4d.d.ts +7 -0
  239. package/dist/cjs/4d/magnitude-4d.js +10 -0
  240. package/dist/cjs/4d/magnitude-sq-4d.d.ts +8 -0
  241. package/dist/cjs/4d/magnitude-sq-4d.js +11 -0
  242. package/dist/cjs/4d/multiply-4d.d.ts +8 -0
  243. package/dist/cjs/4d/multiply-4d.js +16 -0
  244. package/dist/cjs/4d/negate-4d.d.ts +7 -0
  245. package/dist/cjs/4d/negate-4d.js +10 -0
  246. package/dist/cjs/4d/normalize-4d.d.ts +8 -0
  247. package/dist/cjs/4d/normalize-4d.js +17 -0
  248. package/dist/cjs/4d/one-4d.d.ts +6 -0
  249. package/dist/cjs/4d/one-4d.js +9 -0
  250. package/dist/cjs/4d/project-4d.d.ts +10 -0
  251. package/dist/cjs/4d/project-4d.js +18 -0
  252. package/dist/cjs/4d/random-4d.d.ts +7 -0
  253. package/dist/cjs/4d/random-4d.js +21 -0
  254. package/dist/cjs/4d/reflect-4d.d.ts +9 -0
  255. package/dist/cjs/4d/reflect-4d.js +21 -0
  256. package/dist/cjs/4d/set-magnitude-4d.d.ts +9 -0
  257. package/dist/cjs/4d/set-magnitude-4d.js +18 -0
  258. package/dist/cjs/4d/subtract-4d.d.ts +8 -0
  259. package/dist/cjs/4d/subtract-4d.js +16 -0
  260. package/dist/cjs/4d/types.d.ts +4 -0
  261. package/dist/cjs/4d/types.js +2 -0
  262. package/dist/cjs/4d/zero-4d.d.ts +6 -0
  263. package/dist/cjs/4d/zero-4d.js +9 -0
  264. package/dist/cjs/index.d.ts +4 -0
  265. package/dist/cjs/index.js +4 -0
  266. package/dist/cjs/package.json +1 -1
  267. package/dist/cjs/slerp.d.ts +21 -0
  268. package/dist/cjs/slerp.js +28 -0
  269. package/dist/cjs/vec2.d.ts +10 -4
  270. package/dist/cjs/vec2.js +13 -6
  271. package/dist/cjs/vec3.d.ts +121 -106
  272. package/dist/cjs/vec3.js +127 -129
  273. package/dist/cjs/vec4.d.ts +118 -100
  274. package/dist/cjs/vec4.js +134 -134
  275. package/dist/esm/2d/add-2d.d.ts +8 -0
  276. package/dist/esm/2d/add-2d.js +7 -0
  277. package/dist/esm/2d/angle-between-2d.d.ts +8 -0
  278. package/dist/esm/2d/angle-between-2d.js +7 -0
  279. package/dist/esm/2d/angle-x-2d.d.ts +7 -0
  280. package/dist/esm/2d/angle-x-2d.js +6 -0
  281. package/dist/esm/2d/angle-y-2d.d.ts +7 -0
  282. package/dist/esm/2d/angle-y-2d.js +6 -0
  283. package/dist/esm/2d/clamp-2d.d.ts +10 -0
  284. package/dist/esm/2d/clamp-2d.js +10 -0
  285. package/dist/esm/2d/clone-2d.d.ts +7 -0
  286. package/dist/esm/2d/clone-2d.js +6 -0
  287. package/dist/esm/2d/cross-2d.d.ts +8 -0
  288. package/dist/esm/2d/cross-2d.js +7 -0
  289. package/dist/esm/2d/distance-2d.d.ts +8 -0
  290. package/dist/esm/2d/distance-2d.js +7 -0
  291. package/dist/esm/2d/distance-chebyshev-2d.d.ts +8 -0
  292. package/dist/esm/2d/distance-chebyshev-2d.js +11 -0
  293. package/dist/esm/2d/distance-manhattan-2d.d.ts +8 -0
  294. package/dist/esm/2d/distance-manhattan-2d.js +7 -0
  295. package/dist/esm/2d/distance-minkowski-2d.d.ts +9 -0
  296. package/dist/esm/2d/distance-minkowski-2d.js +8 -0
  297. package/dist/esm/2d/distance-sq-2d.d.ts +8 -0
  298. package/dist/esm/2d/distance-sq-2d.js +7 -0
  299. package/dist/esm/2d/divide-2d.d.ts +8 -0
  300. package/dist/esm/2d/divide-2d.js +10 -0
  301. package/dist/esm/2d/dot-2d.d.ts +8 -0
  302. package/dist/esm/2d/dot-2d.js +7 -0
  303. package/dist/esm/2d/from-angle-x-2d.d.ts +8 -0
  304. package/dist/esm/2d/from-angle-x-2d.js +10 -0
  305. package/dist/esm/2d/from-angle-y-2d.d.ts +8 -0
  306. package/dist/esm/2d/from-angle-y-2d.js +10 -0
  307. package/dist/esm/2d/from-object-2d.d.ts +10 -0
  308. package/dist/esm/2d/from-object-2d.js +6 -0
  309. package/dist/esm/2d/from-polar-coords-2d.d.ts +8 -0
  310. package/dist/esm/2d/from-polar-coords-2d.js +7 -0
  311. package/dist/esm/2d/immutable-2d.d.ts +7 -0
  312. package/dist/esm/2d/immutable-2d.js +6 -0
  313. package/dist/esm/2d/index.d.ts +47 -0
  314. package/dist/esm/2d/index.js +47 -0
  315. package/dist/esm/2d/is-equal-2d.d.ts +8 -0
  316. package/dist/esm/2d/is-equal-2d.js +7 -0
  317. package/dist/esm/2d/is-equal-approx-2d.d.ts +9 -0
  318. package/dist/esm/2d/is-equal-approx-2d.js +8 -0
  319. package/dist/esm/2d/is-infinite-2d.d.ts +7 -0
  320. package/dist/esm/2d/is-infinite-2d.js +9 -0
  321. package/dist/esm/2d/is-nan-2d.d.ts +7 -0
  322. package/dist/esm/2d/is-nan-2d.js +6 -0
  323. package/dist/esm/2d/is-opposite-2d.d.ts +8 -0
  324. package/dist/esm/2d/is-opposite-2d.js +7 -0
  325. package/dist/esm/2d/is-zero-2d.d.ts +7 -0
  326. package/dist/esm/2d/is-zero-2d.js +6 -0
  327. package/dist/esm/2d/lerp-2d.d.ts +9 -0
  328. package/dist/esm/2d/lerp-2d.js +11 -0
  329. package/dist/esm/2d/limit-max-2d.d.ts +9 -0
  330. package/dist/esm/2d/limit-max-2d.js +9 -0
  331. package/dist/esm/2d/limit-min-2d.d.ts +9 -0
  332. package/dist/esm/2d/limit-min-2d.js +9 -0
  333. package/dist/esm/2d/look-at-2d.d.ts +10 -0
  334. package/dist/esm/2d/look-at-2d.js +10 -0
  335. package/dist/esm/2d/magnitude-2d.d.ts +7 -0
  336. package/dist/esm/2d/magnitude-2d.js +6 -0
  337. package/dist/esm/2d/magnitude-sq-2d.d.ts +7 -0
  338. package/dist/esm/2d/magnitude-sq-2d.js +6 -0
  339. package/dist/esm/2d/multiply-2d.d.ts +8 -0
  340. package/dist/esm/2d/multiply-2d.js +7 -0
  341. package/dist/esm/2d/negate-2d.d.ts +7 -0
  342. package/dist/esm/2d/negate-2d.js +6 -0
  343. package/dist/esm/2d/normalize-2d.d.ts +8 -0
  344. package/dist/esm/2d/normalize-2d.js +8 -0
  345. package/dist/esm/2d/one-2d.d.ts +6 -0
  346. package/dist/esm/2d/one-2d.js +5 -0
  347. package/dist/esm/2d/project-2d.d.ts +10 -0
  348. package/dist/esm/2d/project-2d.js +13 -0
  349. package/dist/esm/2d/random-2d.d.ts +7 -0
  350. package/dist/esm/2d/random-2d.js +9 -0
  351. package/dist/esm/2d/reflect-2d.d.ts +9 -0
  352. package/dist/esm/2d/reflect-2d.js +12 -0
  353. package/dist/esm/2d/rotate-2d.d.ts +9 -0
  354. package/dist/esm/2d/rotate-2d.js +23 -0
  355. package/dist/esm/2d/set-magnitude-2d.d.ts +9 -0
  356. package/dist/esm/2d/set-magnitude-2d.js +12 -0
  357. package/dist/esm/2d/subtract-2d.d.ts +8 -0
  358. package/dist/esm/2d/subtract-2d.js +7 -0
  359. package/dist/esm/2d/types.d.ts +4 -0
  360. package/dist/esm/2d/types.js +1 -0
  361. package/dist/esm/2d/zero-2d.d.ts +6 -0
  362. package/dist/esm/2d/zero-2d.js +5 -0
  363. package/dist/esm/3d/add-3d.d.ts +8 -0
  364. package/dist/esm/3d/add-3d.js +11 -0
  365. package/dist/esm/3d/angle-between-3d.d.ts +10 -0
  366. package/dist/esm/3d/angle-between-3d.js +10 -0
  367. package/dist/esm/3d/angle-x-3d.d.ts +7 -0
  368. package/dist/esm/3d/angle-x-3d.js +6 -0
  369. package/dist/esm/3d/angle-y-3d.d.ts +7 -0
  370. package/dist/esm/3d/angle-y-3d.js +6 -0
  371. package/dist/esm/3d/angle-z-3d.d.ts +7 -0
  372. package/dist/esm/3d/angle-z-3d.js +6 -0
  373. package/dist/esm/3d/clamp-3d.d.ts +10 -0
  374. package/dist/esm/3d/clamp-3d.js +14 -0
  375. package/dist/esm/3d/clone-3d.d.ts +7 -0
  376. package/dist/esm/3d/clone-3d.js +6 -0
  377. package/dist/esm/3d/cross-3d.d.ts +8 -0
  378. package/dist/esm/3d/cross-3d.js +11 -0
  379. package/dist/esm/3d/distance-3d.d.ts +8 -0
  380. package/dist/esm/3d/distance-3d.js +7 -0
  381. package/dist/esm/3d/distance-chebyshev-3d.d.ts +8 -0
  382. package/dist/esm/3d/distance-chebyshev-3d.js +12 -0
  383. package/dist/esm/3d/distance-manhattan-3d.d.ts +8 -0
  384. package/dist/esm/3d/distance-manhattan-3d.js +7 -0
  385. package/dist/esm/3d/distance-minkowski-3d.d.ts +9 -0
  386. package/dist/esm/3d/distance-minkowski-3d.js +8 -0
  387. package/dist/esm/3d/distance-sq-3d.d.ts +8 -0
  388. package/dist/esm/3d/distance-sq-3d.js +7 -0
  389. package/dist/esm/3d/divide-3d.d.ts +8 -0
  390. package/dist/esm/3d/divide-3d.js +11 -0
  391. package/dist/esm/3d/dot-3d.d.ts +8 -0
  392. package/dist/esm/3d/dot-3d.js +7 -0
  393. package/dist/esm/3d/from-cylindrical-coords-3d.d.ts +9 -0
  394. package/dist/esm/3d/from-cylindrical-coords-3d.js +12 -0
  395. package/dist/esm/3d/from-object-3d.d.ts +11 -0
  396. package/dist/esm/3d/from-object-3d.js +6 -0
  397. package/dist/esm/3d/from-spherical-coords-3d.d.ts +9 -0
  398. package/dist/esm/3d/from-spherical-coords-3d.js +12 -0
  399. package/dist/esm/3d/immutable-3d.d.ts +7 -0
  400. package/dist/esm/3d/immutable-3d.js +6 -0
  401. package/dist/esm/3d/index.d.ts +49 -0
  402. package/dist/esm/3d/index.js +49 -0
  403. package/dist/esm/3d/is-equal-3d.d.ts +8 -0
  404. package/dist/esm/3d/is-equal-3d.js +7 -0
  405. package/dist/esm/3d/is-equal-approx-3d.d.ts +9 -0
  406. package/dist/esm/3d/is-equal-approx-3d.js +10 -0
  407. package/dist/esm/3d/is-infinite-3d.d.ts +7 -0
  408. package/dist/esm/3d/is-infinite-3d.js +11 -0
  409. package/dist/esm/3d/is-nan-3d.d.ts +7 -0
  410. package/dist/esm/3d/is-nan-3d.js +6 -0
  411. package/dist/esm/3d/is-opposite-3d.d.ts +8 -0
  412. package/dist/esm/3d/is-opposite-3d.js +7 -0
  413. package/dist/esm/3d/is-zero-3d.d.ts +7 -0
  414. package/dist/esm/3d/is-zero-3d.js +6 -0
  415. package/dist/esm/3d/lerp-3d.d.ts +9 -0
  416. package/dist/esm/3d/lerp-3d.js +12 -0
  417. package/dist/esm/3d/limit-max-3d.d.ts +9 -0
  418. package/dist/esm/3d/limit-max-3d.js +9 -0
  419. package/dist/esm/3d/limit-min-3d.d.ts +9 -0
  420. package/dist/esm/3d/limit-min-3d.js +9 -0
  421. package/dist/esm/3d/look-at-3d.d.ts +10 -0
  422. package/dist/esm/3d/look-at-3d.js +10 -0
  423. package/dist/esm/3d/magnitude-3d.d.ts +7 -0
  424. package/dist/esm/3d/magnitude-3d.js +6 -0
  425. package/dist/esm/3d/magnitude-sq-3d.d.ts +7 -0
  426. package/dist/esm/3d/magnitude-sq-3d.js +6 -0
  427. package/dist/esm/3d/multiply-3d.d.ts +8 -0
  428. package/dist/esm/3d/multiply-3d.js +11 -0
  429. package/dist/esm/3d/negate-3d.d.ts +7 -0
  430. package/dist/esm/3d/negate-3d.js +6 -0
  431. package/dist/esm/3d/normalize-3d.d.ts +8 -0
  432. package/dist/esm/3d/normalize-3d.js +8 -0
  433. package/dist/esm/3d/one-3d.d.ts +6 -0
  434. package/dist/esm/3d/one-3d.js +5 -0
  435. package/dist/esm/3d/project-3d.d.ts +10 -0
  436. package/dist/esm/3d/project-3d.js +13 -0
  437. package/dist/esm/3d/random-3d.d.ts +7 -0
  438. package/dist/esm/3d/random-3d.js +7 -0
  439. package/dist/esm/3d/reflect-3d.d.ts +9 -0
  440. package/dist/esm/3d/reflect-3d.js +12 -0
  441. package/dist/esm/3d/rotate-x-3d.d.ts +9 -0
  442. package/dist/esm/3d/rotate-x-3d.js +22 -0
  443. package/dist/esm/3d/rotate-y-3d.d.ts +9 -0
  444. package/dist/esm/3d/rotate-y-3d.js +22 -0
  445. package/dist/esm/3d/rotate-z-3d.d.ts +9 -0
  446. package/dist/esm/3d/rotate-z-3d.js +22 -0
  447. package/dist/esm/3d/set-magnitude-3d.d.ts +9 -0
  448. package/dist/esm/3d/set-magnitude-3d.js +9 -0
  449. package/dist/esm/3d/subtract-3d.d.ts +8 -0
  450. package/dist/esm/3d/subtract-3d.js +11 -0
  451. package/dist/esm/3d/types.d.ts +4 -0
  452. package/dist/esm/3d/types.js +1 -0
  453. package/dist/esm/3d/zero-3d.d.ts +6 -0
  454. package/dist/esm/3d/zero-3d.js +5 -0
  455. package/dist/esm/4d/add-4d.d.ts +8 -0
  456. package/dist/esm/4d/add-4d.js +12 -0
  457. package/dist/esm/4d/angle-between-4d.d.ts +10 -0
  458. package/dist/esm/4d/angle-between-4d.js +11 -0
  459. package/dist/esm/4d/angle-w-4d.d.ts +7 -0
  460. package/dist/esm/4d/angle-w-4d.js +6 -0
  461. package/dist/esm/4d/angle-x-4d.d.ts +7 -0
  462. package/dist/esm/4d/angle-x-4d.js +6 -0
  463. package/dist/esm/4d/angle-y-4d.d.ts +7 -0
  464. package/dist/esm/4d/angle-y-4d.js +6 -0
  465. package/dist/esm/4d/angle-z-4d.d.ts +7 -0
  466. package/dist/esm/4d/angle-z-4d.js +6 -0
  467. package/dist/esm/4d/clamp-4d.d.ts +10 -0
  468. package/dist/esm/4d/clamp-4d.js +14 -0
  469. package/dist/esm/4d/clone-4d.d.ts +7 -0
  470. package/dist/esm/4d/clone-4d.js +6 -0
  471. package/dist/esm/4d/distance-4d.d.ts +8 -0
  472. package/dist/esm/4d/distance-4d.js +7 -0
  473. package/dist/esm/4d/distance-chebyshev-4d.d.ts +8 -0
  474. package/dist/esm/4d/distance-chebyshev-4d.js +19 -0
  475. package/dist/esm/4d/distance-manhattan-4d.d.ts +8 -0
  476. package/dist/esm/4d/distance-manhattan-4d.js +10 -0
  477. package/dist/esm/4d/distance-minkowski-4d.d.ts +9 -0
  478. package/dist/esm/4d/distance-minkowski-4d.js +12 -0
  479. package/dist/esm/4d/distance-sq-4d.d.ts +9 -0
  480. package/dist/esm/4d/distance-sq-4d.js +8 -0
  481. package/dist/esm/4d/divide-4d.d.ts +8 -0
  482. package/dist/esm/4d/divide-4d.js +12 -0
  483. package/dist/esm/4d/dot-4d.d.ts +8 -0
  484. package/dist/esm/4d/dot-4d.js +7 -0
  485. package/dist/esm/4d/from-object-4d.d.ts +12 -0
  486. package/dist/esm/4d/from-object-4d.js +11 -0
  487. package/dist/esm/4d/immutable-4d.d.ts +7 -0
  488. package/dist/esm/4d/immutable-4d.js +6 -0
  489. package/dist/esm/4d/index.d.ts +44 -0
  490. package/dist/esm/4d/index.js +44 -0
  491. package/dist/esm/4d/is-equal-4d.d.ts +8 -0
  492. package/dist/esm/4d/is-equal-4d.js +7 -0
  493. package/dist/esm/4d/is-equal-approx-4d.d.ts +9 -0
  494. package/dist/esm/4d/is-equal-approx-4d.js +11 -0
  495. package/dist/esm/4d/is-infinite-4d.d.ts +7 -0
  496. package/dist/esm/4d/is-infinite-4d.js +13 -0
  497. package/dist/esm/4d/is-nan-4d.d.ts +7 -0
  498. package/dist/esm/4d/is-nan-4d.js +6 -0
  499. package/dist/esm/4d/is-opposite-4d.d.ts +8 -0
  500. package/dist/esm/4d/is-opposite-4d.js +7 -0
  501. package/dist/esm/4d/is-zero-4d.d.ts +7 -0
  502. package/dist/esm/4d/is-zero-4d.js +6 -0
  503. package/dist/esm/4d/lerp-4d.d.ts +9 -0
  504. package/dist/esm/4d/lerp-4d.js +13 -0
  505. package/dist/esm/4d/limit-max-4d.d.ts +9 -0
  506. package/dist/esm/4d/limit-max-4d.js +9 -0
  507. package/dist/esm/4d/limit-min-4d.d.ts +9 -0
  508. package/dist/esm/4d/limit-min-4d.js +9 -0
  509. package/dist/esm/4d/look-at-4d.d.ts +10 -0
  510. package/dist/esm/4d/look-at-4d.js +10 -0
  511. package/dist/esm/4d/magnitude-4d.d.ts +7 -0
  512. package/dist/esm/4d/magnitude-4d.js +6 -0
  513. package/dist/esm/4d/magnitude-sq-4d.d.ts +8 -0
  514. package/dist/esm/4d/magnitude-sq-4d.js +7 -0
  515. package/dist/esm/4d/multiply-4d.d.ts +8 -0
  516. package/dist/esm/4d/multiply-4d.js +12 -0
  517. package/dist/esm/4d/negate-4d.d.ts +7 -0
  518. package/dist/esm/4d/negate-4d.js +6 -0
  519. package/dist/esm/4d/normalize-4d.d.ts +8 -0
  520. package/dist/esm/4d/normalize-4d.js +13 -0
  521. package/dist/esm/4d/one-4d.d.ts +6 -0
  522. package/dist/esm/4d/one-4d.js +5 -0
  523. package/dist/esm/4d/project-4d.d.ts +10 -0
  524. package/dist/esm/4d/project-4d.js +14 -0
  525. package/dist/esm/4d/random-4d.d.ts +7 -0
  526. package/dist/esm/4d/random-4d.js +17 -0
  527. package/dist/esm/4d/reflect-4d.d.ts +9 -0
  528. package/dist/esm/4d/reflect-4d.js +17 -0
  529. package/dist/esm/4d/set-magnitude-4d.d.ts +9 -0
  530. package/dist/esm/4d/set-magnitude-4d.js +14 -0
  531. package/dist/esm/4d/subtract-4d.d.ts +8 -0
  532. package/dist/esm/4d/subtract-4d.js +12 -0
  533. package/dist/esm/4d/types.d.ts +4 -0
  534. package/dist/esm/4d/types.js +1 -0
  535. package/dist/esm/4d/zero-4d.d.ts +6 -0
  536. package/dist/esm/4d/zero-4d.js +5 -0
  537. package/dist/esm/index.d.ts +4 -0
  538. package/dist/esm/index.js +4 -0
  539. package/dist/esm/slerp.d.ts +21 -0
  540. package/dist/esm/slerp.js +23 -0
  541. package/dist/esm/vec2.d.ts +10 -4
  542. package/dist/esm/vec2.js +13 -6
  543. package/dist/esm/vec3.d.ts +121 -106
  544. package/dist/esm/vec3.js +127 -129
  545. package/dist/esm/vec4.d.ts +118 -100
  546. package/dist/esm/vec4.js +134 -134
  547. package/docs/ArrayVector2D.md +1090 -0
  548. package/docs/ArrayVector3D.md +1162 -0
  549. package/docs/ArrayVector4D.md +1019 -0
  550. package/docs/README.md +13 -0
  551. package/docs/Slerp.md +64 -0
  552. package/docs/Vec2.md +1827 -0
  553. package/docs/Vec3.md +2084 -0
  554. package/docs/Vec4.md +2031 -0
  555. package/package.json +30 -9
  556. package/VEC2.md +0 -147
  557. package/VEC3.md +0 -172
  558. package/VEC4.md +0 -161
package/dist/cjs/vec4.js CHANGED
@@ -1,7 +1,11 @@
1
1
  "use strict";
2
+ /**
3
+ * Documentation for 4D Vector class.
4
+ * @module Vec4
5
+ */
2
6
  Object.defineProperty(exports, "__esModule", { value: true });
3
7
  exports.Vec4 = void 0;
4
- const { cos, acos, atan2, sqrt, abs } = Math;
8
+ const { sin, cos, acos, atan2, sqrt, abs, log, PI } = Math;
5
9
  /**
6
10
  * Represents a 4D vector with various operations.
7
11
  */
@@ -12,10 +16,11 @@ class Vec4 {
12
16
  /**
13
17
  * Computes and updates the magnitude of the vector.
14
18
  * @private
15
- * @param x - The x-component of the vector.
16
- * @param y - The y-component of the vector.
17
- * @param z - The z-component of the vector.
18
- * @param w - The w-component of the vector.
19
+ * @param {number} x - The x-component of the vector.
20
+ * @param {number} y - The y-component of the vector.
21
+ * @param {number} z - The z-component of the vector.
22
+ * @param {number} w - The w-component of the vector.
23
+ * @returns {void}
19
24
  */
20
25
  #computeMagnitude(x = this.#xyzw[0], y = this.#xyzw[1], z = this.#xyzw[2], w = this.#xyzw[3]) {
21
26
  if (x !== this.#prevXYZW[0] || y !== this.#prevXYZW[1] || z !== this.#prevXYZW[2] || w !== this.#prevXYZW[3]) {
@@ -28,10 +33,10 @@ class Vec4 {
28
33
  }
29
34
  /**
30
35
  * Creates a new Vec4 instance.
31
- * @param x - The x-coordinate of the vector.
32
- * @param y - The y-coordinate of the vector.
33
- * @param z - The z-coordinate of the vector.
34
- * @param w - The w-coordinate of the vector.
36
+ * @param {number} x - The x-coordinate of the vector.
37
+ * @param {number} y - The y-coordinate of the vector.
38
+ * @param {number} z - The z-coordinate of the vector.
39
+ * @param {number} w - The w-coordinate of the vector.
35
40
  */
36
41
  constructor(x = 0, y = 0, z = 0, w = 0) {
37
42
  this.#xyzw[0] = x;
@@ -42,18 +47,18 @@ class Vec4 {
42
47
  }
43
48
  /**
44
49
  * Adds two vectors.
45
- * @param v - The first vector.
46
- * @param w - The second vector.
47
- * @returns A new Vec3 instance representing the sum.
50
+ * @param {Vec4} v - The first vector.
51
+ * @param {Vec4} w - The second vector.
52
+ * @returns {Vec4} A new Vec4 instance representing the sum.
48
53
  */
49
54
  static add(v, w) {
50
55
  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]);
51
56
  }
52
57
  /**
53
58
  * Subtracts one vector from another.
54
- * @param v - The vector to subtract from.
55
- * @param w - The vector to subtract.
56
- * @returns A new Vec2 instance representing the difference.
59
+ * @param {Vec4} v - The vector to subtract from.
60
+ * @param {Vec4} w - The vector to subtract.
61
+ * @returns {Vec4} A new Vec4 instance representing the difference.
57
62
  */
58
63
  static subtract(v, w) {
59
64
  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]);
@@ -78,9 +83,9 @@ class Vec4 {
78
83
  }
79
84
  /**
80
85
  * Calculates the angle between two vectors.
81
- * @param v - The first vector.
82
- * @param w - The second vector.
83
- * @returns The angle between the vectors in radians.
86
+ * @param {Vec4} v - The first vector.
87
+ * @param {Vec4} w - The second vector.
88
+ * @returns {number} The angle between the vectors in radians.
84
89
  */
85
90
  static angleBetween(v, w) {
86
91
  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]) /
@@ -88,9 +93,9 @@ class Vec4 {
88
93
  }
89
94
  /**
90
95
  * Calculates the Euclidean distance between two vectors.
91
- * @param v - The first vector.
92
- * @param w - The second vector.
93
- * @returns The distance between the vectors.
96
+ * @param {Vec4} v - The first vector.
97
+ * @param {Vec4} w - The second vector.
98
+ * @returns {number} The distance between the vectors.
94
99
  */
95
100
  static distance(v, w) {
96
101
  return sqrt((v.#xyzw[0] - w.#xyzw[0]) ** 2 +
@@ -100,9 +105,9 @@ class Vec4 {
100
105
  }
101
106
  /**
102
107
  * Calculates the Chebyshev distance between two vectors.
103
- * @param v - The first vector.
104
- * @param w - The second vector.
105
- * @returns The Chebyshev distance between the vectors.
108
+ * @param {Vec4} v - The first vector.
109
+ * @param {Vec4} w - The second vector.
110
+ * @returns {number} The Chebyshev distance between the vectors.
106
111
  */
107
112
  static distanceChebyshev(v, w) {
108
113
  const absX = abs(v.#xyzw[0] - w.#xyzw[0]);
@@ -119,9 +124,9 @@ class Vec4 {
119
124
  }
120
125
  /**
121
126
  * Calculates the Manhattan distance between two vectors.
122
- * @param v - The first vector.
123
- * @param w - The second vector.
124
- * @returns The Manhattan distance between the vectors.
127
+ * @param {Vec4} v - The first vector.
128
+ * @param {Vec4} w - The second vector.
129
+ * @returns {number} The Manhattan distance between the vectors.
125
130
  */
126
131
  static distanceManhattan(v, w) {
127
132
  return (abs(v.#xyzw[0] - w.#xyzw[0]) +
@@ -131,10 +136,10 @@ class Vec4 {
131
136
  }
132
137
  /**
133
138
  * Calculates the Minkowski distance between two vectors.
134
- * @param v - The first vector.
135
- * @param w - The second vector.
136
- * @param p - The order of the Minkowski distance.
137
- * @returns The Minkowski distance between the vectors.
139
+ * @param {Vec4} v - The first vector.
140
+ * @param {Vec4} w - The second vector.
141
+ * @param {number} p - The order of the Minkowski distance.
142
+ * @returns {number} The Minkowski distance between the vectors.
138
143
  */
139
144
  static distanceMinkowski(v, w, p) {
140
145
  return ((abs(v.#xyzw[0] - w.#xyzw[0]) ** p +
@@ -145,9 +150,9 @@ class Vec4 {
145
150
  }
146
151
  /**
147
152
  * Calculates the squared Euclidean distance between two vectors.
148
- * @param v - The first vector.
149
- * @param w - The second vector.
150
- * @returns The squared distance between the vectors.
153
+ * @param {Vec4} v - The first vector.
154
+ * @param {Vec4} w - The second vector.
155
+ * @returns {number} The squared distance between the vectors.
151
156
  */
152
157
  static distanceSq(v, w) {
153
158
  return ((v.#xyzw[0] - w.#xyzw[0]) ** 2 +
@@ -157,9 +162,9 @@ class Vec4 {
157
162
  }
158
163
  /**
159
164
  * Calculates the dot product of two vectors.
160
- * @param v - The first vector.
161
- * @param w - The second vector.
162
- * @returns The dot product of the two vectors.
165
+ * @param {Vec4} v - The first vector.
166
+ * @param {Vec4} w - The second vector.
167
+ * @returns {number} The dot product of the two vectors.
163
168
  */
164
169
  static dot(v, w) {
165
170
  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];
@@ -181,9 +186,11 @@ class Vec4 {
181
186
  }
182
187
  /**
183
188
  * Creates an immutable Vec4-like object.
184
- * @param x - The x-coordinate of the vector.
185
- * @param y - The y-coordinate of the vector.
186
- * @returns An immutable object with Vec4-like properties.
189
+ * @param {number} x - The x-coordinate of the vector.
190
+ * @param {number} y - The y-coordinate of the vector.
191
+ * @param {number} z - The z-coordinate of the vector.
192
+ * @param {number} w - The w-coordinate of the vector.
193
+ * @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.
187
194
  */
188
195
  static immutable(x = 0, y = 0, z = 0, w = 0) {
189
196
  const data = new Float64Array(10);
@@ -272,8 +279,8 @@ class Vec4 {
272
279
  }
273
280
  /**
274
281
  * Checks if a vector has infinite components.
275
- * @param v - The vector to check.
276
- * @returns True if the vector has infinite components, false otherwise.
282
+ * @param {Vec4} v - The vector to check.
283
+ * @returns {boolean} True if the vector has infinite components, false otherwise.
277
284
  */
278
285
  static isInfinite(v) {
279
286
  const x = v.#xyzw[0];
@@ -291,26 +298,26 @@ class Vec4 {
291
298
  }
292
299
  /**
293
300
  * Checks if a vector has NaN components.
294
- * @param v - The vector to check.
295
- * @returns True if the vector has NaN components, false otherwise.
301
+ * @param {Vec4} v - The vector to check.
302
+ * @returns {boolean} True if the vector has NaN components, false otherwise.
296
303
  */
297
304
  static isNaN(v) {
298
305
  return Number.isNaN(v.#xyzw[0]) || Number.isNaN(v.#xyzw[1]) || Number.isNaN(v.#xyzw[2]) || Number.isNaN(v.#xyzw[3]);
299
306
  }
300
307
  /**
301
308
  * Checks if a vector is zero.
302
- * @param v - The vector to check.
303
- * @returns True if the vector is zero, false otherwise.
309
+ * @param {Vec4} v - The vector to check.
310
+ * @returns {boolean} True if the vector is zero, false otherwise.
304
311
  */
305
312
  static isZero(v) {
306
313
  return v.#xyzw[0] === 0 && v.#xyzw[1] === 0 && v.#xyzw[2] === 0 && v.#xyzw[3] === 0;
307
314
  }
308
315
  /**
309
316
  * Performs linear interpolation between two vectors.
310
- * @param v - The first vector.
311
- * @param w - The second vector.
312
- * @param t - The interpolation parameter (0 to 1).
313
- * @returns A new Vec2 instance representing the interpolated vector.
317
+ * @param {Vec4} v - The first vector.
318
+ * @param {Vec4} w - The second vector.
319
+ * @param {number} t - The interpolation parameter (0 to 1).
320
+ * @returns {Vec4} A new Vec4 instance representing the interpolated vector.
314
321
  */
315
322
  static lerp(v, w, t) {
316
323
  if (t > 1)
@@ -325,16 +332,16 @@ class Vec4 {
325
332
  }
326
333
  /**
327
334
  * Negates a vector.
328
- * @param v - The vector to negate.
329
- * @returns A new Vec2 instance representing the negated vector.
335
+ * @param {Vec4} v - The vector to negate.
336
+ * @returns {Vec4} A new Vec4 instance representing the negated vector.
330
337
  */
331
338
  static negate(v) {
332
339
  return new Vec4(-v.#xyzw[0], -v.#xyzw[1], -v.#xyzw[2], -v.#xyzw[3]);
333
340
  }
334
341
  /**
335
342
  * Normalizes a vector.
336
- * @param v - The vector to normalize.
337
- * @returns A new Vec2 instance representing the normalized vector.
343
+ * @param {Vec4} v - The vector to normalize.
344
+ * @returns {Vec4} A new Vec4 instance representing the normalized vector.
338
345
  */
339
346
  static normalize(v) {
340
347
  const m = v.#magnitude;
@@ -342,9 +349,9 @@ class Vec4 {
342
349
  }
343
350
  /**
344
351
  * Projects one vector onto another.
345
- * @param v - The vector to project.
346
- * @param w - The vector to project onto.
347
- * @returns A new Vec2 instance representing the projected vector.
352
+ * @param {Vec4} v - The vector to project.
353
+ * @param {Vec4} w - The vector to project onto.
354
+ * @returns {Vec4} A new Vec4 instance representing the projected vector.
348
355
  */
349
356
  static project(v, w) {
350
357
  const vM = v.#magnitude;
@@ -358,37 +365,34 @@ class Vec4 {
358
365
  }
359
366
  /**
360
367
  * Creates a random unit vector.
361
- * @param random - A function that returns a random number between 0 and 1.
362
- * @returns A new Vec4 instance representing a random unit vector.
368
+ * @param {() => number} random - A function that returns a random number between 0 and 1.
369
+ * @returns {Vec4} A new Vec4 instance representing a random unit vector.
363
370
  */
364
371
  static random(random = Math.random) {
365
- let x1;
366
- let x2;
367
- let x3;
368
- let x4;
369
- do {
370
- x1 = random() * 2 - 1;
371
- x2 = random() * 2 - 1;
372
- x3 = random() * 2 - 1;
373
- x4 = random() * 2 - 1;
374
- } while (x1 ** 2 + x2 ** 2 >= 1 || x3 ** 2 + x4 ** 2 >= 1);
375
- const f = sqrt((1 - x1 ** 2 - x2 ** 2) / (x3 ** 2 + x4 ** 2));
376
- return new Vec4(x1, x2, x3 * f, x4 * f);
372
+ // 1. Generate four numbers from a Normal Distribution (Box-Muller transform)
373
+ const x = sqrt(-2 * log(random())) * cos(2 * PI * random());
374
+ const y = sqrt(-2 * log(random())) * sin(2 * PI * random());
375
+ const z = sqrt(-2 * log(random())) * cos(2 * PI * random());
376
+ const w = sqrt(-2 * log(random())) * sin(2 * PI * random());
377
+ // 2. Calculate the current length
378
+ const length = sqrt(x * x + y * y + z * z + w * w);
379
+ // 3. Divide by length to make it a unit vector
380
+ return new Vec4(x / length, y / length, z / length, w / length);
377
381
  }
378
382
  /**
379
383
  * Checks if two vectors are equal.
380
- * @param v - The first vector.
381
- * @param w - The second vector.
382
- * @returns True if the vectors are equal, false otherwise.
384
+ * @param {Vec4} v - The first vector.
385
+ * @param {Vec4} w - The second vector.
386
+ * @returns {boolean} True if the vectors are equal, false otherwise.
383
387
  */
384
388
  static satisfyEquality(v, w) {
385
389
  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]);
386
390
  }
387
391
  /**
388
392
  * Checks if two vectors are opposite.
389
- * @param v - The first vector.
390
- * @param w - The second vector.
391
- * @returns True if the vectors are opposite, false otherwise.
393
+ * @param {Vec4} v - The first vector.
394
+ * @param {Vec4} w - The second vector.
395
+ * @returns {boolean} True if the vectors are opposite, false otherwise.
392
396
  */
393
397
  static satisfyOpposition(v, w) {
394
398
  return (v.#xyzw[0] === -w.#xyzw[0] &&
@@ -411,16 +415,16 @@ class Vec4 {
411
415
  }
412
416
  /**
413
417
  * Scales a vector by a scalar value.
414
- * @param v - The vector to scale.
415
- * @param c - The scalar value.
416
- * @returns A new Vec2 instance representing the scaled vector.
418
+ * @param {Vec4} v - The vector to scale.
419
+ * @param {number} c - The scalar value.
420
+ * @returns {Vec4} A new Vec4 instance representing the scaled vector.
417
421
  */
418
422
  static scale(v, c) {
419
423
  return new Vec4(v.#xyzw[0] * c, v.#xyzw[1] * c, v.#xyzw[2] * c, v.#xyzw[3] * c);
420
424
  }
421
425
  /**
422
426
  * Creates a zero vector.
423
- * @returns A new Vec4 instance representing a zero vector.
427
+ * @returns {Vec4} A new Vec4 instance representing a zero vector.
424
428
  */
425
429
  static zero() {
426
430
  return new Vec4();
@@ -434,14 +438,16 @@ class Vec4 {
434
438
  }
435
439
  /**
436
440
  * Creates a Vec4 from an array.
437
- * @returns A new Vec4 instance.
441
+ * @param {[number, number, number, number] | number[]} arr - An array containing the x, y, z, and w coordinates.
442
+ * @returns {Vec4} A new Vec4 instance.
438
443
  */
439
444
  static fromArray(arr) {
440
445
  return new Vec4(arr[0] ?? 0, arr[1] ?? 0, arr[2] ?? 0, arr[3] ?? 0);
441
446
  }
442
447
  /**
443
448
  * Creates a Vec4 from an object with x, y, z and w properties.
444
- * @returns A new Vec4 instance.
449
+ * @param {{ x: number; y: number; z: number; w: number }} obj - An object with x, y, z, and w properties.
450
+ * @returns {Vec4} A new Vec4 instance.
445
451
  */
446
452
  static fromObject(obj) {
447
453
  return new Vec4(obj.x, obj.y, obj.z, obj.w);
@@ -456,14 +462,15 @@ class Vec4 {
456
462
  }
457
463
  /**
458
464
  * Gets the x-component of the vector.
459
- * @returns The x-component.
465
+ * @returns {number} The x-component.
460
466
  */
461
467
  get x() {
462
468
  return this.#xyzw[0];
463
469
  }
464
470
  /**
465
471
  * Sets the x-component of the vector.
466
- * @param x - The new x-component.
472
+ * @param {number} x - The new x-component.
473
+ * @returns {void}
467
474
  */
468
475
  set x(x) {
469
476
  this.#xyzw[0] = x;
@@ -471,14 +478,15 @@ class Vec4 {
471
478
  }
472
479
  /**
473
480
  * Gets the y-component of the vector.
474
- * @returns The y-component.
481
+ * @returns {number} The y-component.
475
482
  */
476
483
  get y() {
477
484
  return this.#xyzw[1];
478
485
  }
479
486
  /**
480
487
  * Sets the z-component of the vector.
481
- * @param y - The new z-component.
488
+ * @param {number} y - The new z-component.
489
+ * @returns {void}
482
490
  */
483
491
  set y(y) {
484
492
  this.#xyzw[1] = y;
@@ -486,14 +494,15 @@ class Vec4 {
486
494
  }
487
495
  /**
488
496
  * Gets the z-component of the vector.
489
- * @returns The z-component.
497
+ * @returns {number} The z-component.
490
498
  */
491
499
  get z() {
492
500
  return this.#xyzw[2];
493
501
  }
494
502
  /**
495
503
  * Sets the z-component of the vector.
496
- * @param z - The new z-component.
504
+ * @param {number} z - The new z-component.
505
+ * @returns {void}
497
506
  */
498
507
  set z(z) {
499
508
  this.#xyzw[2] = z;
@@ -501,14 +510,15 @@ class Vec4 {
501
510
  }
502
511
  /**
503
512
  * Gets the w-component of the vector.
504
- * @returns The w-component.
513
+ * @returns {number} The w-component.
505
514
  */
506
515
  get w() {
507
516
  return this.#xyzw[3];
508
517
  }
509
518
  /**
510
519
  * Sets the w-component of the vector.
511
- * @param w - The new w-component.
520
+ * @param {number} w - The new w-component.
521
+ * @returns {void}
512
522
  */
513
523
  set w(w) {
514
524
  this.#xyzw[3] = w;
@@ -516,14 +526,15 @@ class Vec4 {
516
526
  }
517
527
  /**
518
528
  * Gets a copy of the vector's components as an array.
519
- * @returns An array containing the x, y, z and w components of the vector.
529
+ * @returns {[number, number, number, number]} An array containing the x, y, z and w components of the vector.
520
530
  */
521
531
  get xyzw() {
522
532
  return Array.from(this.#xyzw.slice());
523
533
  }
524
534
  /**
525
535
  * Sets both components of the vector at once.
526
- * @param xyzw - An array containing the new x, y and z components.
536
+ * @param {[number, number, number, number]} xyzw - An array containing the new x, y, z and w components.
537
+ * @returns {void}
527
538
  */
528
539
  set xyzw(xyzw) {
529
540
  this.#xyzw[0] = xyzw[0];
@@ -534,70 +545,75 @@ class Vec4 {
534
545
  }
535
546
  /**
536
547
  * Gets the Red-component of a Color.
537
- * @returns The Red-component.
548
+ * @returns {number} The Red-component.
538
549
  */
539
550
  get r() {
540
551
  return this.x;
541
552
  }
542
553
  /**
543
554
  * Sets the Red-component of a Color.
544
- * @param r - The new Red-component.
555
+ * @param {number} r - The new Red-component.
556
+ * @returns {void}
545
557
  */
546
558
  set r(r) {
547
559
  this.x = r;
548
560
  }
549
561
  /**
550
562
  * Gets the Green-component of a Color.
551
- * @returns The Green-component.
563
+ * @returns {number} The Green-component.
552
564
  */
553
565
  get g() {
554
566
  return this.y;
555
567
  }
556
568
  /**
557
569
  * Sets the Green-component of the Color.
558
- * @param g - The new Green-component.
570
+ * @param {number} g - The new Green-component.
571
+ * @returns {void}
559
572
  */
560
573
  set g(g) {
561
574
  this.y = g;
562
575
  }
563
576
  /**
564
577
  * Gets the Blue-component of the color.
565
- * @returns The Blue-component.
578
+ * @returns {number} The Blue-component.
566
579
  */
567
580
  get b() {
568
581
  return this.z;
569
582
  }
570
583
  /**
571
584
  * Sets the Blue-component of the Color.
572
- * @param b - The new Blue-component.
585
+ * @param {number} b - The new Blue-component.
586
+ * @returns {void}
573
587
  */
574
588
  set b(b) {
575
589
  this.z = b;
576
590
  }
577
591
  /**
578
592
  * Gets the Alpha-component of the color.
579
- * @returns The Alpha-component.
593
+ * @returns {number} The Alpha-component.
580
594
  */
581
595
  get a() {
582
596
  return this.w;
583
597
  }
584
598
  /**
585
599
  * Sets the Alpha-component of the Color.
586
- * @param b - The new Alpha-component.
600
+ * @param {number} a - The new Alpha-component.
601
+ * @returns {void}
587
602
  */
588
603
  set a(a) {
589
604
  this.w = a;
590
605
  }
591
606
  /**
592
607
  * Gets a copy of the vector's components as an array.
593
- * @returns An array containing the Red, Green, Blue and Alpha components of the Color.
608
+ * @returns {[number, number, number, number]} An array containing the Red, Green, Blue and Alpha components of the Color.
594
609
  */
595
610
  get rgba() {
596
611
  return this.xyzw;
597
612
  }
598
613
  /**
599
614
  * Sets all components of the Color at once.
600
- * @param rgba - An array containing the new Red, Green and Blue components.
615
+ * @param {[number, number, number, number]} rgba - An array containing the new Red, Green, Blue and Alpha components.
616
+ * @returns {void}
601
617
  */
602
618
  set rgba(rgba) {
603
619
  this.xyzw = rgba;
@@ -659,8 +675,8 @@ class Vec4 {
659
675
  }
660
676
  /**
661
677
  * Adds another vector to this vector.
662
- * @param v - The vector to add.
663
- * @returns This Vec4 instance for method chaining.
678
+ * @param {Vec4} v - The vector to add.
679
+ * @returns {this} This Vec4 instance for method chaining.
664
680
  */
665
681
  add(v) {
666
682
  this.#xyzw[0] += v.#xyzw[0];
@@ -722,9 +738,9 @@ class Vec4 {
722
738
  }
723
739
  /**
724
740
  * Clamps the magnitude of this vector between a minimum and maximum value.
725
- * @param min - The minimum magnitude.
726
- * @param max - The maximum magnitude.
727
- * @returns This Vec4 instance for method chaining.
741
+ * @param {number} min - The minimum magnitude.
742
+ * @param {number} max - The maximum magnitude.
743
+ * @returns {this} This Vec4 instance for method chaining.
728
744
  */
729
745
  clamp(min, max) {
730
746
  const m = this.#magnitude;
@@ -746,7 +762,7 @@ class Vec4 {
746
762
  }
747
763
  /**
748
764
  * Creates a copy of this vector.
749
- * @returns A new Vec4 instance with the same components.
765
+ * @returns {Vec4} A new Vec4 instance with the same components.
750
766
  */
751
767
  clone() {
752
768
  return new Vec4(this.#xyzw[0], this.#xyzw[1], this.#xyzw[2], this.#xyzw[3]);
@@ -777,8 +793,8 @@ class Vec4 {
777
793
  }
778
794
  /**
779
795
  * Calculates the Chebyshev distance between this vector and another vector.
780
- * @param v - The first vector.
781
- * @returns The Chebyshev distance between the vectors.
796
+ * @param {Vec4} v - The other vector.
797
+ * @returns {number} The Chebyshev distance between the vectors.
782
798
  */
783
799
  distanceChebyshev(v) {
784
800
  const absX = abs(this.#xyzw[0] - v.#xyzw[0]);
@@ -795,8 +811,8 @@ class Vec4 {
795
811
  }
796
812
  /**
797
813
  * Calculates the Manhattan distance between this vector and another vector.
798
- * @param v - The other vector.
799
- * @returns The Manhattan distance between the vectors.
814
+ * @param {Vec4} v - The other vector.
815
+ * @returns {number} The Manhattan distance between the vectors.
800
816
  */
801
817
  distanceManhattan(v) {
802
818
  return (abs(this.#xyzw[0] - v.#xyzw[0]) +
@@ -805,10 +821,10 @@ class Vec4 {
805
821
  abs(this.#xyzw[3] - v.#xyzw[3]));
806
822
  }
807
823
  /**
808
- * Calculates the Minkowski distance between thisvector and another vector.
809
- * @param v - The other vector.
810
- * @param p - The order of the Minkowski distance.
811
- * @returns The Minkowski distance between the vectors.
824
+ * Calculates the Minkowski distance between this vector and another vector.
825
+ * @param {Vec4} v - The other vector.
826
+ * @param {number} p - The order of the Minkowski distance.
827
+ * @returns {number} The Minkowski distance between the vectors.
812
828
  */
813
829
  distanceMinkowski(v, p) {
814
830
  return ((abs(this.#xyzw[0] - v.#xyzw[0]) ** p +
@@ -987,23 +1003,7 @@ class Vec4 {
987
1003
  * @returns This Vec4 instance for method chaining.
988
1004
  */
989
1005
  random(random = Math.random) {
990
- let x1;
991
- let x2;
992
- let x3;
993
- let x4;
994
- do {
995
- x1 = random() * 2 - 1;
996
- x2 = random() * 2 - 1;
997
- x3 = random() * 2 - 1;
998
- x4 = random() * 2 - 1;
999
- } while (x1 ** 2 + x2 ** 2 >= 1 || x3 ** 2 + x4 ** 2 >= 1);
1000
- const f = sqrt((1 - x1 ** 2 - x2 ** 2) / (x3 ** 2 + x4 ** 2));
1001
- const m = this.#magnitude;
1002
- this.#xyzw[0] = m * x1;
1003
- this.#xyzw[1] = m * x2;
1004
- this.#xyzw[2] = m * x3 * f;
1005
- this.#xyzw[3] = m * x4 * f;
1006
- this.#computeMagnitude();
1006
+ this.copy(Vec4.random(random));
1007
1007
  return this;
1008
1008
  }
1009
1009
  /**
@@ -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,7 @@
1
+ /**
2
+ * Adds one 2D vectors.
3
+ * @param {ArrayVector2D} xy1 - First vector as `[x, y]`
4
+ * @param {ArrayVector2D} xy2 - Second vector as `[x, y]`
5
+ * @returns {ArrayVector2D} The sum of the vectors
6
+ */
7
+ export const add2D = (xy1, xy2) => [xy1[0] + xy2[0], xy1[1] + xy2[1]];
@@ -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,7 @@
1
+ /**
2
+ * Calculates the angle between two 2D vectors.
3
+ * @param {ArrayVector2D} xy1 - First vector as `[x, y]`
4
+ * @param {ArrayVector2D} xy2 - Second vector as `[x, y]`
5
+ * @returns {number} Angle between the vectors in radians
6
+ */
7
+ export const angleBetween2D = (xy1, xy2) => Math.atan2(xy1[0] * xy2[1] - xy1[1] * xy2[0], xy1[0] * xy2[0] + xy1[1] * xy2[1]);
@@ -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,6 @@
1
+ /**
2
+ * Gets the angle between a 2D vector and the positive x-axis in radians.
3
+ * @param {ArrayVector2D} xy - Vector as `[x, y]`
4
+ * @returns {number} Angle in radians, always in the range [0, 2π)
5
+ */
6
+ export const angleX2D = (xy) => Math.atan2(xy[1], xy[0] + (xy[1] < 0 ? Math.PI : 0));
@@ -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;