@fimbul-works/vec 1.0.3 → 2.0.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (560) hide show
  1. package/README.md +208 -85
  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 +7 -0
  265. package/dist/cjs/index.js +23 -0
  266. package/dist/cjs/package.json +1 -0
  267. package/dist/cjs/slerp.d.ts +21 -0
  268. package/dist/cjs/slerp.js +28 -0
  269. package/dist/{vec2.d.ts → cjs/vec2.d.ts} +10 -4
  270. package/dist/cjs/vec2.js +889 -0
  271. package/dist/{vec3.d.ts → cjs/vec3.d.ts} +159 -100
  272. package/dist/cjs/vec3.js +1045 -0
  273. package/dist/cjs/vec4.d.ts +602 -0
  274. package/dist/cjs/vec4.js +1101 -0
  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 +7 -0
  538. package/dist/esm/index.js +7 -0
  539. package/dist/esm/slerp.d.ts +21 -0
  540. package/dist/esm/slerp.js +23 -0
  541. package/dist/{vec4.d.ts → esm/vec2.d.ts} +165 -157
  542. package/dist/{vec2.js → esm/vec2.js} +14 -6
  543. package/dist/esm/vec3.d.ts +614 -0
  544. package/dist/{vec3.js → esm/vec3.js} +190 -123
  545. package/dist/esm/vec4.d.ts +602 -0
  546. package/dist/{vec4.js → esm/vec4.js} +211 -130
  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 +95 -70
  556. package/VEC2.md +0 -147
  557. package/VEC3.md +0 -159
  558. package/VEC4.md +0 -146
  559. package/dist/index.d.ts +0 -3
  560. package/dist/index.js +0 -3
@@ -0,0 +1,1019 @@
1
+ [@fimbul-works/vec](README.md) / ArrayVector4D
2
+
3
+ # ArrayVector4D
4
+
5
+ Documentation for functional 4D Vector array operations.
6
+
7
+ ## Type Aliases
8
+
9
+ ### ArrayVector4D
10
+
11
+ ```ts
12
+ type ArrayVector4D = [number, number, number, number];
13
+ ```
14
+
15
+ Defined in: [4d/types.ts:4](https://github.com/claus-codes/vec/blob/1a991556255e5555afd05799362abaa631fc20cc/src/4d/types.ts#L4)
16
+
17
+ 4D vector as an array.
18
+
19
+ ## Functions
20
+
21
+ ### add4D()
22
+
23
+ ```ts
24
+ function add4D(xyzw1, xyzw2): ArrayVector4D;
25
+ ```
26
+
27
+ Defined in: [4d/add-4d.ts:9](https://github.com/claus-codes/vec/blob/1a991556255e5555afd05799362abaa631fc20cc/src/4d/add-4d.ts#L9)
28
+
29
+ Adds two 4D vectors.
30
+
31
+ #### Parameters
32
+
33
+ | Parameter | Type | Description |
34
+ | ------ | ------ | ------ |
35
+ | `xyzw1` | [`ArrayVector4D`](#arrayvector4d) | First vector as `[x, y, z, w]` |
36
+ | `xyzw2` | [`ArrayVector4D`](#arrayvector4d) | Second vector as `[x, y, z, w]` |
37
+
38
+ #### Returns
39
+
40
+ [`ArrayVector4D`](#arrayvector4d)
41
+
42
+ The sum of the vectors
43
+
44
+ ***
45
+
46
+ ### angleBetween4D()
47
+
48
+ ```ts
49
+ function angleBetween4D(
50
+ xyzw1,
51
+ xyzw2,
52
+ m1?,
53
+ m2?): number;
54
+ ```
55
+
56
+ Defined in: [4d/angle-between-4d.ts:13](https://github.com/claus-codes/vec/blob/1a991556255e5555afd05799362abaa631fc20cc/src/4d/angle-between-4d.ts#L13)
57
+
58
+ Calculates the angle between two 4D vectors.
59
+
60
+ #### Parameters
61
+
62
+ | Parameter | Type | Description |
63
+ | ------ | ------ | ------ |
64
+ | `xyzw1` | [`ArrayVector4D`](#arrayvector4d) | First vector as `[x, y, z, w]` |
65
+ | `xyzw2` | [`ArrayVector4D`](#arrayvector4d) | Second vector as `[x, y, z, w]` |
66
+ | `m1?` | `number` | Optional magnitude of the first vector (default: `magnitude4D(xyzw1)`) |
67
+ | `m2?` | `number` | Optional magnitude of the second vector (default: `magnitude4D(xyzw2)`) |
68
+
69
+ #### Returns
70
+
71
+ `number`
72
+
73
+ The angle in radians
74
+
75
+ ***
76
+
77
+ ### angleW4D()
78
+
79
+ ```ts
80
+ function angleW4D(xyzw): number;
81
+ ```
82
+
83
+ Defined in: [4d/angle-w-4d.ts:8](https://github.com/claus-codes/vec/blob/1a991556255e5555afd05799362abaa631fc20cc/src/4d/angle-w-4d.ts#L8)
84
+
85
+ Calculates the angle between a 4D vector and the positive w-axis.
86
+
87
+ #### Parameters
88
+
89
+ | Parameter | Type | Description |
90
+ | ------ | ------ | ------ |
91
+ | `xyzw` | [`ArrayVector4D`](#arrayvector4d) | Vector as `[x, y, z, w]` |
92
+
93
+ #### Returns
94
+
95
+ `number`
96
+
97
+ The angle in radians
98
+
99
+ ***
100
+
101
+ ### angleX4D()
102
+
103
+ ```ts
104
+ function angleX4D(xyzw): number;
105
+ ```
106
+
107
+ Defined in: [4d/angle-x-4d.ts:8](https://github.com/claus-codes/vec/blob/1a991556255e5555afd05799362abaa631fc20cc/src/4d/angle-x-4d.ts#L8)
108
+
109
+ Calculates the angle between a 4D vector and the positive x-axis.
110
+
111
+ #### Parameters
112
+
113
+ | Parameter | Type | Description |
114
+ | ------ | ------ | ------ |
115
+ | `xyzw` | [`ArrayVector4D`](#arrayvector4d) | Vector as `[x, y, z, w]` |
116
+
117
+ #### Returns
118
+
119
+ `number`
120
+
121
+ The angle in radians
122
+
123
+ ***
124
+
125
+ ### angleY4D()
126
+
127
+ ```ts
128
+ function angleY4D(xyzw): number;
129
+ ```
130
+
131
+ Defined in: [4d/angle-y-4d.ts:8](https://github.com/claus-codes/vec/blob/1a991556255e5555afd05799362abaa631fc20cc/src/4d/angle-y-4d.ts#L8)
132
+
133
+ Calculates the angle between a 4D vector and the positive y-axis.
134
+
135
+ #### Parameters
136
+
137
+ | Parameter | Type | Description |
138
+ | ------ | ------ | ------ |
139
+ | `xyzw` | [`ArrayVector4D`](#arrayvector4d) | Vector as `[x, y, z, w]` |
140
+
141
+ #### Returns
142
+
143
+ `number`
144
+
145
+ The angle in radians
146
+
147
+ ***
148
+
149
+ ### angleZ4D()
150
+
151
+ ```ts
152
+ function angleZ4D(xyzw): number;
153
+ ```
154
+
155
+ Defined in: [4d/angle-z-4d.ts:8](https://github.com/claus-codes/vec/blob/1a991556255e5555afd05799362abaa631fc20cc/src/4d/angle-z-4d.ts#L8)
156
+
157
+ Calculates the angle between a 4D vector and the positive z-axis.
158
+
159
+ #### Parameters
160
+
161
+ | Parameter | Type | Description |
162
+ | ------ | ------ | ------ |
163
+ | `xyzw` | [`ArrayVector4D`](#arrayvector4d) | Vector as `[x, y, z, w]` |
164
+
165
+ #### Returns
166
+
167
+ `number`
168
+
169
+ The angle in radians
170
+
171
+ ***
172
+
173
+ ### clamp4D()
174
+
175
+ ```ts
176
+ function clamp4D(
177
+ xyzw,
178
+ min,
179
+ max,
180
+ m?): ArrayVector4D;
181
+ ```
182
+
183
+ Defined in: [4d/clamp-4d.ts:12](https://github.com/claus-codes/vec/blob/1a991556255e5555afd05799362abaa631fc20cc/src/4d/clamp-4d.ts#L12)
184
+
185
+ Clamps the magnitude of a 4D vector between min and max.
186
+
187
+ #### Parameters
188
+
189
+ | Parameter | Type | Description |
190
+ | ------ | ------ | ------ |
191
+ | `xyzw` | [`ArrayVector4D`](#arrayvector4d) | Vector as `[x, y, z, w]` |
192
+ | `min` | `number` | Minimum magnitude |
193
+ | `max` | `number` | Maximum magnitude |
194
+ | `m?` | `number` | Optional current magnitude (default: `magnitude4D(xyzw)`) |
195
+
196
+ #### Returns
197
+
198
+ [`ArrayVector4D`](#arrayvector4d)
199
+
200
+ The clamped vector
201
+
202
+ ***
203
+
204
+ ### clone4D()
205
+
206
+ ```ts
207
+ function clone4D(xyzw): ArrayVector4D;
208
+ ```
209
+
210
+ Defined in: [4d/clone-4d.ts:8](https://github.com/claus-codes/vec/blob/1a991556255e5555afd05799362abaa631fc20cc/src/4d/clone-4d.ts#L8)
211
+
212
+ Clone a 4D vector.
213
+
214
+ #### Parameters
215
+
216
+ | Parameter | Type | Description |
217
+ | ------ | ------ | ------ |
218
+ | `xyzw` | [`ArrayVector4D`](#arrayvector4d) | Vector as `[x, y, z, w]` |
219
+
220
+ #### Returns
221
+
222
+ [`ArrayVector4D`](#arrayvector4d)
223
+
224
+ The cloned vector
225
+
226
+ ***
227
+
228
+ ### distance4D()
229
+
230
+ ```ts
231
+ function distance4D(xyzw1, xyzw2): number;
232
+ ```
233
+
234
+ Defined in: [4d/distance-4d.ts:9](https://github.com/claus-codes/vec/blob/1a991556255e5555afd05799362abaa631fc20cc/src/4d/distance-4d.ts#L9)
235
+
236
+ Calculates the Euclidean distance between two 4D vectors.
237
+
238
+ #### Parameters
239
+
240
+ | Parameter | Type | Description |
241
+ | ------ | ------ | ------ |
242
+ | `xyzw1` | [`ArrayVector4D`](#arrayvector4d) | First vector as `[x, y, z, w]` |
243
+ | `xyzw2` | [`ArrayVector4D`](#arrayvector4d) | Second vector as `[x, y, z, w]` |
244
+
245
+ #### Returns
246
+
247
+ `number`
248
+
249
+ The distance
250
+
251
+ ***
252
+
253
+ ### distanceChebyshev4D()
254
+
255
+ ```ts
256
+ function distanceChebyshev4D(xyzw1, xyzw2): number;
257
+ ```
258
+
259
+ Defined in: [4d/distance-chebyshev-4d.ts:9](https://github.com/claus-codes/vec/blob/1a991556255e5555afd05799362abaa631fc20cc/src/4d/distance-chebyshev-4d.ts#L9)
260
+
261
+ Calculates the Chebyshev distance between two 4D vectors.
262
+
263
+ #### Parameters
264
+
265
+ | Parameter | Type | Description |
266
+ | ------ | ------ | ------ |
267
+ | `xyzw1` | [`ArrayVector4D`](#arrayvector4d) | First vector as `[x, y, z, w]` |
268
+ | `xyzw2` | [`ArrayVector4D`](#arrayvector4d) | Second vector as `[x, y, z, w]` |
269
+
270
+ #### Returns
271
+
272
+ `number`
273
+
274
+ The Chebyshev distance
275
+
276
+ ***
277
+
278
+ ### distanceManhattan4D()
279
+
280
+ ```ts
281
+ function distanceManhattan4D(xyzw1, xyzw2): number;
282
+ ```
283
+
284
+ Defined in: [4d/distance-manhattan-4d.ts:9](https://github.com/claus-codes/vec/blob/1a991556255e5555afd05799362abaa631fc20cc/src/4d/distance-manhattan-4d.ts#L9)
285
+
286
+ Calculates the Manhattan distance between two 4D vectors.
287
+
288
+ #### Parameters
289
+
290
+ | Parameter | Type | Description |
291
+ | ------ | ------ | ------ |
292
+ | `xyzw1` | [`ArrayVector4D`](#arrayvector4d) | First vector as `[x, y, z, w]` |
293
+ | `xyzw2` | [`ArrayVector4D`](#arrayvector4d) | Second vector as `[x, y, z, w]` |
294
+
295
+ #### Returns
296
+
297
+ `number`
298
+
299
+ The Manhattan distance
300
+
301
+ ***
302
+
303
+ ### distanceMinkowski4D()
304
+
305
+ ```ts
306
+ function distanceMinkowski4D(
307
+ xyzw1,
308
+ xyzw2,
309
+ p): number;
310
+ ```
311
+
312
+ Defined in: [4d/distance-minkowski-4d.ts:10](https://github.com/claus-codes/vec/blob/1a991556255e5555afd05799362abaa631fc20cc/src/4d/distance-minkowski-4d.ts#L10)
313
+
314
+ Calculates the Minkowski distance between two 4D vectors.
315
+
316
+ #### Parameters
317
+
318
+ | Parameter | Type | Description |
319
+ | ------ | ------ | ------ |
320
+ | `xyzw1` | [`ArrayVector4D`](#arrayvector4d) | First vector as `[x, y, z, w]` |
321
+ | `xyzw2` | [`ArrayVector4D`](#arrayvector4d) | Second vector as `[x, y, z, w]` |
322
+ | `p` | `number` | The order of the Minkowski distance |
323
+
324
+ #### Returns
325
+
326
+ `number`
327
+
328
+ The Minkowski distance
329
+
330
+ ***
331
+
332
+ ### distanceSq4D()
333
+
334
+ ```ts
335
+ function distanceSq4D(xyzw1, xyzw2): number;
336
+ ```
337
+
338
+ Defined in: [4d/distance-sq-4d.ts:10](https://github.com/claus-codes/vec/blob/1a991556255e5555afd05799362abaa631fc20cc/src/4d/distance-sq-4d.ts#L10)
339
+
340
+ Calculates the squared Euclidean distance between two 4D vectors.
341
+ Faster than distance for comparisons.
342
+
343
+ #### Parameters
344
+
345
+ | Parameter | Type | Description |
346
+ | ------ | ------ | ------ |
347
+ | `xyzw1` | [`ArrayVector4D`](#arrayvector4d) | First vector as `[x, y, z, w]` |
348
+ | `xyzw2` | [`ArrayVector4D`](#arrayvector4d) | Second vector as `[x, y, z, w]` |
349
+
350
+ #### Returns
351
+
352
+ `number`
353
+
354
+ The squared distance
355
+
356
+ ***
357
+
358
+ ### divide4D()
359
+
360
+ ```ts
361
+ function divide4D(xyzw1, xyzw2): ArrayVector4D;
362
+ ```
363
+
364
+ Defined in: [4d/divide-4d.ts:9](https://github.com/claus-codes/vec/blob/1a991556255e5555afd05799362abaa631fc20cc/src/4d/divide-4d.ts#L9)
365
+
366
+ Divides two 4D vectors component-wise.
367
+
368
+ #### Parameters
369
+
370
+ | Parameter | Type | Description |
371
+ | ------ | ------ | ------ |
372
+ | `xyzw1` | [`ArrayVector4D`](#arrayvector4d) | First vector as `[x, y, z, w]` |
373
+ | `xyzw2` | [`ArrayVector4D`](#arrayvector4d) | Second vector as `[x, y, z, w]` |
374
+
375
+ #### Returns
376
+
377
+ [`ArrayVector4D`](#arrayvector4d)
378
+
379
+ The divided vector
380
+
381
+ ***
382
+
383
+ ### dot4D()
384
+
385
+ ```ts
386
+ function dot4D(xyzw1, xyzw2): number;
387
+ ```
388
+
389
+ Defined in: [4d/dot-4d.ts:9](https://github.com/claus-codes/vec/blob/1a991556255e5555afd05799362abaa631fc20cc/src/4d/dot-4d.ts#L9)
390
+
391
+ Calculates the dot product of two 4D vectors.
392
+
393
+ #### Parameters
394
+
395
+ | Parameter | Type | Description |
396
+ | ------ | ------ | ------ |
397
+ | `xyzw1` | [`ArrayVector4D`](#arrayvector4d) | First vector as `[x, y, z, w]` |
398
+ | `xyzw2` | [`ArrayVector4D`](#arrayvector4d) | Second vector as `[x, y, z, w]` |
399
+
400
+ #### Returns
401
+
402
+ `number`
403
+
404
+ The dot product
405
+
406
+ ***
407
+
408
+ ### fromObject4D()
409
+
410
+ ```ts
411
+ function fromObject4D(obj): ArrayVector4D;
412
+ ```
413
+
414
+ Defined in: [4d/from-object-4d.ts:8](https://github.com/claus-codes/vec/blob/1a991556255e5555afd05799362abaa631fc20cc/src/4d/from-object-4d.ts#L8)
415
+
416
+ Creates a 4D vector from an object with x, y, z, w properties.
417
+
418
+ #### Parameters
419
+
420
+ | Parameter | Type | Description |
421
+ | ------ | ------ | ------ |
422
+ | `obj` | \{ `w`: `number`; `x`: `number`; `y`: `number`; `z`: `number`; \} | Object with x, y, z, w properties |
423
+ | `obj.w` | `number` | - |
424
+ | `obj.x` | `number` | - |
425
+ | `obj.y` | `number` | - |
426
+ | `obj.z` | `number` | - |
427
+
428
+ #### Returns
429
+
430
+ [`ArrayVector4D`](#arrayvector4d)
431
+
432
+ 4D vector
433
+
434
+ ***
435
+
436
+ ### immutable4D()
437
+
438
+ ```ts
439
+ function immutable4D(xyzw): readonly [number, number, number, number];
440
+ ```
441
+
442
+ Defined in: [4d/immutable-4d.ts:8](https://github.com/claus-codes/vec/blob/1a991556255e5555afd05799362abaa631fc20cc/src/4d/immutable-4d.ts#L8)
443
+
444
+ Create an immutable 4D vector.
445
+
446
+ #### Parameters
447
+
448
+ | Parameter | Type | Description |
449
+ | ------ | ------ | ------ |
450
+ | `xyzw` | [`ArrayVector4D`](#arrayvector4d) | Vector as `[x, y, z, w]` |
451
+
452
+ #### Returns
453
+
454
+ readonly \[`number`, `number`, `number`, `number`\]
455
+
456
+ The immutable vector
457
+
458
+ ***
459
+
460
+ ### isEqual4D()
461
+
462
+ ```ts
463
+ function isEqual4D(xyzw1, xyzw2): boolean;
464
+ ```
465
+
466
+ Defined in: [4d/is-equal-4d.ts:9](https://github.com/claus-codes/vec/blob/1a991556255e5555afd05799362abaa631fc20cc/src/4d/is-equal-4d.ts#L9)
467
+
468
+ Checks if two 4D vectors are exactly equal.
469
+
470
+ #### Parameters
471
+
472
+ | Parameter | Type | Description |
473
+ | ------ | ------ | ------ |
474
+ | `xyzw1` | [`ArrayVector4D`](#arrayvector4d) | First vector as `[x, y, z, w]` |
475
+ | `xyzw2` | [`ArrayVector4D`](#arrayvector4d) | Second vector as `[x, y, z, w]` |
476
+
477
+ #### Returns
478
+
479
+ `boolean`
480
+
481
+ `true` if vectors are equal, `false` otherwse
482
+
483
+ ***
484
+
485
+ ### isEqualApprox4D()
486
+
487
+ ```ts
488
+ function isEqualApprox4D(
489
+ xyzw1,
490
+ xyzw2,
491
+ epsilon): boolean;
492
+ ```
493
+
494
+ Defined in: [4d/is-equal-approx-4d.ts:10](https://github.com/claus-codes/vec/blob/1a991556255e5555afd05799362abaa631fc20cc/src/4d/is-equal-approx-4d.ts#L10)
495
+
496
+ Checks if two 4D vectors are approximately equal within epsilon.
497
+
498
+ #### Parameters
499
+
500
+ | Parameter | Type | Default value | Description |
501
+ | ------ | ------ | ------ | ------ |
502
+ | `xyzw1` | [`ArrayVector4D`](#arrayvector4d) | `undefined` | First vector as `[x, y, z, w]` |
503
+ | `xyzw2` | [`ArrayVector4D`](#arrayvector4d) | `undefined` | Second vector as `[x, y, z, w]` |
504
+ | `epsilon` | `number` | `Number.EPSILON` | Maximum difference (default: `Number.EPSILON`) |
505
+
506
+ #### Returns
507
+
508
+ `boolean`
509
+
510
+ `true` if vectors are approximately equal, `false` otherwise
511
+
512
+ ***
513
+
514
+ ### isInfinite4D()
515
+
516
+ ```ts
517
+ function isInfinite4D(xyzw): boolean;
518
+ ```
519
+
520
+ Defined in: [4d/is-infinite-4d.ts:8](https://github.com/claus-codes/vec/blob/1a991556255e5555afd05799362abaa631fc20cc/src/4d/is-infinite-4d.ts#L8)
521
+
522
+ Checks if a 4D vector has infinite components.
523
+
524
+ #### Parameters
525
+
526
+ | Parameter | Type | Description |
527
+ | ------ | ------ | ------ |
528
+ | `xyzw` | [`ArrayVector4D`](#arrayvector4d) | Vector as `[x, y, z, w]` |
529
+
530
+ #### Returns
531
+
532
+ `boolean`
533
+
534
+ `true` if vector has infinite components, `false` otherwise
535
+
536
+ ***
537
+
538
+ ### isNan4D()
539
+
540
+ ```ts
541
+ function isNan4D(xyzw): boolean;
542
+ ```
543
+
544
+ Defined in: [4d/is-nan-4d.ts:8](https://github.com/claus-codes/vec/blob/1a991556255e5555afd05799362abaa631fc20cc/src/4d/is-nan-4d.ts#L8)
545
+
546
+ Checks if a 4D vector has NaN components.
547
+
548
+ #### Parameters
549
+
550
+ | Parameter | Type | Description |
551
+ | ------ | ------ | ------ |
552
+ | `xyzw` | [`ArrayVector4D`](#arrayvector4d) | Vector as `[x, y, z, w]` |
553
+
554
+ #### Returns
555
+
556
+ `boolean`
557
+
558
+ `true` if vector has `NaN` components, `false` otherwise
559
+
560
+ ***
561
+
562
+ ### isOpposite4D()
563
+
564
+ ```ts
565
+ function isOpposite4D(xyzw1, xyzw2): boolean;
566
+ ```
567
+
568
+ Defined in: [4d/is-opposite-4d.ts:9](https://github.com/claus-codes/vec/blob/1a991556255e5555afd05799362abaa631fc20cc/src/4d/is-opposite-4d.ts#L9)
569
+
570
+ Checks if two 4D vectors are opposite.
571
+
572
+ #### Parameters
573
+
574
+ | Parameter | Type | Description |
575
+ | ------ | ------ | ------ |
576
+ | `xyzw1` | [`ArrayVector4D`](#arrayvector4d) | First vector as `[x, y, z, w]` |
577
+ | `xyzw2` | [`ArrayVector4D`](#arrayvector4d) | Second vector as `[x, y, z, w]` |
578
+
579
+ #### Returns
580
+
581
+ `boolean`
582
+
583
+ `true` if vectors are opposite
584
+
585
+ ***
586
+
587
+ ### isZero4D()
588
+
589
+ ```ts
590
+ function isZero4D(xyzw): boolean;
591
+ ```
592
+
593
+ Defined in: [4d/is-zero-4d.ts:8](https://github.com/claus-codes/vec/blob/1a991556255e5555afd05799362abaa631fc20cc/src/4d/is-zero-4d.ts#L8)
594
+
595
+ Checks if a 4D vector is zero.
596
+
597
+ #### Parameters
598
+
599
+ | Parameter | Type | Description |
600
+ | ------ | ------ | ------ |
601
+ | `xyzw` | [`ArrayVector4D`](#arrayvector4d) | Vector as `[x, y, z, w]` |
602
+
603
+ #### Returns
604
+
605
+ `boolean`
606
+
607
+ `true` if vector is zero, `false` otherwise
608
+
609
+ ***
610
+
611
+ ### lerp4D()
612
+
613
+ ```ts
614
+ function lerp4D(
615
+ xyzw1,
616
+ xyzw2,
617
+ t): ArrayVector4D;
618
+ ```
619
+
620
+ Defined in: [4d/lerp-4d.ts:10](https://github.com/claus-codes/vec/blob/1a991556255e5555afd05799362abaa631fc20cc/src/4d/lerp-4d.ts#L10)
621
+
622
+ Performs linear interpolation between two 4D vectors.
623
+
624
+ #### Parameters
625
+
626
+ | Parameter | Type | Description |
627
+ | ------ | ------ | ------ |
628
+ | `xyzw1` | [`ArrayVector4D`](#arrayvector4d) | First vector as `[x, y, z, w]` |
629
+ | `xyzw2` | [`ArrayVector4D`](#arrayvector4d) | Second vector as `[x, y, z, w]` |
630
+ | `t` | `number` | Interpolation parameter |
631
+
632
+ #### Returns
633
+
634
+ [`ArrayVector4D`](#arrayvector4d)
635
+
636
+ The interpolated vector
637
+
638
+ ***
639
+
640
+ ### limitMax4D()
641
+
642
+ ```ts
643
+ function limitMax4D(
644
+ xyzw,
645
+ max,
646
+ m?): ArrayVector4D;
647
+ ```
648
+
649
+ Defined in: [4d/limit-max-4d.ts:11](https://github.com/claus-codes/vec/blob/1a991556255e5555afd05799362abaa631fc20cc/src/4d/limit-max-4d.ts#L11)
650
+
651
+ Limits the maximum magnitude of a 4D vector.
652
+
653
+ #### Parameters
654
+
655
+ | Parameter | Type | Description |
656
+ | ------ | ------ | ------ |
657
+ | `xyzw` | [`ArrayVector4D`](#arrayvector4d) | Vector as `[x, y, z, w]` |
658
+ | `max` | `number` | Maximum magnitude |
659
+ | `m?` | `number` | Optional current magnitude (default: `magnitude4D(xyzw)`) |
660
+
661
+ #### Returns
662
+
663
+ [`ArrayVector4D`](#arrayvector4d)
664
+
665
+ Vector with limited magnitude
666
+
667
+ ***
668
+
669
+ ### limitMin4D()
670
+
671
+ ```ts
672
+ function limitMin4D(
673
+ xyzw,
674
+ min,
675
+ m?): ArrayVector4D;
676
+ ```
677
+
678
+ Defined in: [4d/limit-min-4d.ts:11](https://github.com/claus-codes/vec/blob/1a991556255e5555afd05799362abaa631fc20cc/src/4d/limit-min-4d.ts#L11)
679
+
680
+ Limits the minimum magnitude of a 4D vector.
681
+
682
+ #### Parameters
683
+
684
+ | Parameter | Type | Description |
685
+ | ------ | ------ | ------ |
686
+ | `xyzw` | [`ArrayVector4D`](#arrayvector4d) | Vector as `[x, y, z, w]` |
687
+ | `min` | `number` | Minimum magnitude |
688
+ | `m?` | `number` | Optional current magnitude (default: `magnitude4D(xyzw)`) |
689
+
690
+ #### Returns
691
+
692
+ [`ArrayVector4D`](#arrayvector4d)
693
+
694
+ Vector with limited magnitude
695
+
696
+ ***
697
+
698
+ ### lookAt4D()
699
+
700
+ ```ts
701
+ function lookAt4D(
702
+ xyzw1,
703
+ xyzw2,
704
+ m1?,
705
+ m2?): ArrayVector4D;
706
+ ```
707
+
708
+ Defined in: [4d/look-at-4d.ts:12](https://github.com/claus-codes/vec/blob/1a991556255e5555afd05799362abaa631fc20cc/src/4d/look-at-4d.ts#L12)
709
+
710
+ Makes a 4D vector point towards another vector.
711
+
712
+ #### Parameters
713
+
714
+ | Parameter | Type | Description |
715
+ | ------ | ------ | ------ |
716
+ | `xyzw1` | [`ArrayVector4D`](#arrayvector4d) | First vector as `[x, y, z, w]` |
717
+ | `xyzw2` | [`ArrayVector4D`](#arrayvector4d) | Second vector as `[x, y, z, w]` (target to look at) |
718
+ | `m1?` | `number` | Optional current magnitude of the first vector (default: `magnitude4D(xyzw1)`) |
719
+ | `m2?` | `number` | Optional current magnitude of the second vector (default: `magnitude4D(xyzw2)`) |
720
+
721
+ #### Returns
722
+
723
+ [`ArrayVector4D`](#arrayvector4d)
724
+
725
+ Vector pointing at the target with the magnitude of xyzw1
726
+
727
+ ***
728
+
729
+ ### magnitude4D()
730
+
731
+ ```ts
732
+ function magnitude4D(xyzw): number;
733
+ ```
734
+
735
+ Defined in: [4d/magnitude-4d.ts:8](https://github.com/claus-codes/vec/blob/1a991556255e5555afd05799362abaa631fc20cc/src/4d/magnitude-4d.ts#L8)
736
+
737
+ Calculates the magnitude (length) of a 4D vector.
738
+
739
+ #### Parameters
740
+
741
+ | Parameter | Type | Description |
742
+ | ------ | ------ | ------ |
743
+ | `xyzw` | [`ArrayVector4D`](#arrayvector4d) | Vector as `[x, y, z, w]` |
744
+
745
+ #### Returns
746
+
747
+ `number`
748
+
749
+ The magnitude
750
+
751
+ ***
752
+
753
+ ### magnitudeSq4D()
754
+
755
+ ```ts
756
+ function magnitudeSq4D(xyzw): number;
757
+ ```
758
+
759
+ Defined in: [4d/magnitude-sq-4d.ts:9](https://github.com/claus-codes/vec/blob/1a991556255e5555afd05799362abaa631fc20cc/src/4d/magnitude-sq-4d.ts#L9)
760
+
761
+ Calculates the squared magnitude of a 4D vector.
762
+ Faster than magnitude for comparisons.
763
+
764
+ #### Parameters
765
+
766
+ | Parameter | Type | Description |
767
+ | ------ | ------ | ------ |
768
+ | `xyzw` | [`ArrayVector4D`](#arrayvector4d) | Vector as `[x, y, z, w]` |
769
+
770
+ #### Returns
771
+
772
+ `number`
773
+
774
+ The squared magnitude
775
+
776
+ ***
777
+
778
+ ### multiply4D()
779
+
780
+ ```ts
781
+ function multiply4D(xyzw1, xyzw2): ArrayVector4D;
782
+ ```
783
+
784
+ Defined in: [4d/multiply-4d.ts:9](https://github.com/claus-codes/vec/blob/1a991556255e5555afd05799362abaa631fc20cc/src/4d/multiply-4d.ts#L9)
785
+
786
+ Multiplies two 4D vectors component-wise.
787
+
788
+ #### Parameters
789
+
790
+ | Parameter | Type | Description |
791
+ | ------ | ------ | ------ |
792
+ | `xyzw1` | [`ArrayVector4D`](#arrayvector4d) | First vector as `[x, y, z, w]` |
793
+ | `xyzw2` | [`ArrayVector4D`](#arrayvector4d) | Second vector as `[x, y, z, w]` |
794
+
795
+ #### Returns
796
+
797
+ [`ArrayVector4D`](#arrayvector4d)
798
+
799
+ The multiplied vector
800
+
801
+ ***
802
+
803
+ ### negate4D()
804
+
805
+ ```ts
806
+ function negate4D(xyzw): ArrayVector4D;
807
+ ```
808
+
809
+ Defined in: [4d/negate-4d.ts:8](https://github.com/claus-codes/vec/blob/1a991556255e5555afd05799362abaa631fc20cc/src/4d/negate-4d.ts#L8)
810
+
811
+ Negates a 4D vector.
812
+
813
+ #### Parameters
814
+
815
+ | Parameter | Type | Description |
816
+ | ------ | ------ | ------ |
817
+ | `xyzw` | [`ArrayVector4D`](#arrayvector4d) | Vector as `[x, y, z, w]` |
818
+
819
+ #### Returns
820
+
821
+ [`ArrayVector4D`](#arrayvector4d)
822
+
823
+ The negated vector
824
+
825
+ ***
826
+
827
+ ### normalize4D()
828
+
829
+ ```ts
830
+ function normalize4D(xyzw, m?): ArrayVector4D;
831
+ ```
832
+
833
+ Defined in: [4d/normalize-4d.ts:10](https://github.com/claus-codes/vec/blob/1a991556255e5555afd05799362abaa631fc20cc/src/4d/normalize-4d.ts#L10)
834
+
835
+ Normalizes a 4D vector to unit length.
836
+
837
+ #### Parameters
838
+
839
+ | Parameter | Type | Description |
840
+ | ------ | ------ | ------ |
841
+ | `xyzw` | [`ArrayVector4D`](#arrayvector4d) | Vector as `[x, y, z, w]` |
842
+ | `m?` | `number` | Optional current magnitude (default: `magnitude4D(xyzw)`) |
843
+
844
+ #### Returns
845
+
846
+ [`ArrayVector4D`](#arrayvector4d)
847
+
848
+ The normalized vector
849
+
850
+ ***
851
+
852
+ ### one4D()
853
+
854
+ ```ts
855
+ function one4D(): ArrayVector4D;
856
+ ```
857
+
858
+ Defined in: [4d/one-4d.ts:7](https://github.com/claus-codes/vec/blob/1a991556255e5555afd05799362abaa631fc20cc/src/4d/one-4d.ts#L7)
859
+
860
+ Creates a 4D vector with all components set to 1.
861
+
862
+ #### Returns
863
+
864
+ [`ArrayVector4D`](#arrayvector4d)
865
+
866
+ A vector `[1, 1, 1, 1]`
867
+
868
+ ***
869
+
870
+ ### project4D()
871
+
872
+ ```ts
873
+ function project4D(
874
+ xyzw1,
875
+ xyzw2,
876
+ m1?,
877
+ m2?): ArrayVector4D;
878
+ ```
879
+
880
+ Defined in: [4d/project-4d.ts:13](https://github.com/claus-codes/vec/blob/1a991556255e5555afd05799362abaa631fc20cc/src/4d/project-4d.ts#L13)
881
+
882
+ Projects one 4D vector onto another.
883
+
884
+ #### Parameters
885
+
886
+ | Parameter | Type | Description |
887
+ | ------ | ------ | ------ |
888
+ | `xyzw1` | [`ArrayVector4D`](#arrayvector4d) | First vector as `[x, y, z, w]` |
889
+ | `xyzw2` | [`ArrayVector4D`](#arrayvector4d) | Second vector as `[x, y, z, w]` to project onto |
890
+ | `m1?` | `number` | Optional current magnitude (default: `magnitude4D(xyzw1)`) |
891
+ | `m2?` | `number` | Optional current magnitude (default: `magnitude4D(xyzw2)`) |
892
+
893
+ #### Returns
894
+
895
+ [`ArrayVector4D`](#arrayvector4d)
896
+
897
+ The projected vector
898
+
899
+ ***
900
+
901
+ ### random4D()
902
+
903
+ ```ts
904
+ function random4D(random): ArrayVector4D;
905
+ ```
906
+
907
+ Defined in: [4d/random-4d.ts:10](https://github.com/claus-codes/vec/blob/1a991556255e5555afd05799362abaa631fc20cc/src/4d/random-4d.ts#L10)
908
+
909
+ Creates a random unit 4D vector.
910
+
911
+ #### Parameters
912
+
913
+ | Parameter | Type | Default value | Description |
914
+ | ------ | ------ | ------ | ------ |
915
+ | `random` | () => `number` | `Math.random` | A function that returns a random number between 0 and 1 (default: `Math.random`) |
916
+
917
+ #### Returns
918
+
919
+ [`ArrayVector4D`](#arrayvector4d)
920
+
921
+ A random unit vector
922
+
923
+ ***
924
+
925
+ ### reflect4D()
926
+
927
+ ```ts
928
+ function reflect4D(xyzw, normal): ArrayVector4D;
929
+ ```
930
+
931
+ Defined in: [4d/reflect-4d.ts:11](https://github.com/claus-codes/vec/blob/1a991556255e5555afd05799362abaa631fc20cc/src/4d/reflect-4d.ts#L11)
932
+
933
+ Reflects a 4D vector across a normal vector.
934
+ The normal vector should be normalized (unit length).
935
+
936
+ #### Parameters
937
+
938
+ | Parameter | Type | Description |
939
+ | ------ | ------ | ------ |
940
+ | `xyzw` | [`ArrayVector4D`](#arrayvector4d) | Vector as `[x, y, z, w]` |
941
+ | `normal` | [`ArrayVector4D`](#arrayvector4d) | Normal vector (must be normalized) |
942
+
943
+ #### Returns
944
+
945
+ [`ArrayVector4D`](#arrayvector4d)
946
+
947
+ The reflected vector
948
+
949
+ ***
950
+
951
+ ### setMagnitude4D()
952
+
953
+ ```ts
954
+ function setMagnitude4D(
955
+ xyzw,
956
+ newMag,
957
+ m?): ArrayVector4D;
958
+ ```
959
+
960
+ Defined in: [4d/set-magnitude-4d.ts:11](https://github.com/claus-codes/vec/blob/1a991556255e5555afd05799362abaa631fc20cc/src/4d/set-magnitude-4d.ts#L11)
961
+
962
+ Sets the magnitude of a 4D vector while maintaining its direction.
963
+
964
+ #### Parameters
965
+
966
+ | Parameter | Type | Description |
967
+ | ------ | ------ | ------ |
968
+ | `xyzw` | [`ArrayVector4D`](#arrayvector4d) | Vector as `[x, y, z, w]` |
969
+ | `newMag` | `number` | The new magnitude |
970
+ | `m?` | `number` | Optional current magnitude (default: `magnitude4D(xyzw)`) |
971
+
972
+ #### Returns
973
+
974
+ [`ArrayVector4D`](#arrayvector4d)
975
+
976
+ Vector with the new magnitude
977
+
978
+ ***
979
+
980
+ ### subtract4D()
981
+
982
+ ```ts
983
+ function subtract4D(xyzw1, xyzw2): ArrayVector4D;
984
+ ```
985
+
986
+ Defined in: [4d/subtract-4d.ts:9](https://github.com/claus-codes/vec/blob/1a991556255e5555afd05799362abaa631fc20cc/src/4d/subtract-4d.ts#L9)
987
+
988
+ Subtracts two 4D vectors.
989
+
990
+ #### Parameters
991
+
992
+ | Parameter | Type | Description |
993
+ | ------ | ------ | ------ |
994
+ | `xyzw1` | [`ArrayVector4D`](#arrayvector4d) | First vector as `[x, y, z, w]` |
995
+ | `xyzw2` | [`ArrayVector4D`](#arrayvector4d) | Second vector as `[x, y, z, w]` |
996
+
997
+ #### Returns
998
+
999
+ [`ArrayVector4D`](#arrayvector4d)
1000
+
1001
+ The difference of the vectors
1002
+
1003
+ ***
1004
+
1005
+ ### zero4D()
1006
+
1007
+ ```ts
1008
+ function zero4D(): ArrayVector4D;
1009
+ ```
1010
+
1011
+ Defined in: [4d/zero-4d.ts:7](https://github.com/claus-codes/vec/blob/1a991556255e5555afd05799362abaa631fc20cc/src/4d/zero-4d.ts#L7)
1012
+
1013
+ Creates a zero 4D vector.
1014
+
1015
+ #### Returns
1016
+
1017
+ [`ArrayVector4D`](#arrayvector4d)
1018
+
1019
+ A zero vector `[0, 0, 0, 0]`