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