@pawells/math-extended 1.0.1

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 (195) hide show
  1. package/LICENSE +21 -0
  2. package/README.md +319 -0
  3. package/build/angles.d.ts +31 -0
  4. package/build/angles.d.ts.map +1 -0
  5. package/build/angles.js +85 -0
  6. package/build/angles.js.map +1 -0
  7. package/build/angles.spec.d.ts +2 -0
  8. package/build/angles.spec.d.ts.map +1 -0
  9. package/build/angles.spec.js +147 -0
  10. package/build/angles.spec.js.map +1 -0
  11. package/build/clamp.d.ts +17 -0
  12. package/build/clamp.d.ts.map +1 -0
  13. package/build/clamp.js +19 -0
  14. package/build/clamp.js.map +1 -0
  15. package/build/clamp.spec.d.ts +2 -0
  16. package/build/clamp.spec.d.ts.map +1 -0
  17. package/build/clamp.spec.js +19 -0
  18. package/build/clamp.spec.js.map +1 -0
  19. package/build/documentation-validation.spec.d.ts +11 -0
  20. package/build/documentation-validation.spec.d.ts.map +1 -0
  21. package/build/documentation-validation.spec.js +401 -0
  22. package/build/documentation-validation.spec.js.map +1 -0
  23. package/build/index.d.ts +8 -0
  24. package/build/index.d.ts.map +1 -0
  25. package/build/index.js +8 -0
  26. package/build/index.js.map +1 -0
  27. package/build/interpolation.d.ts +175 -0
  28. package/build/interpolation.d.ts.map +1 -0
  29. package/build/interpolation.js +369 -0
  30. package/build/interpolation.js.map +1 -0
  31. package/build/interpolation.spec.d.ts +2 -0
  32. package/build/interpolation.spec.d.ts.map +1 -0
  33. package/build/interpolation.spec.js +480 -0
  34. package/build/interpolation.spec.js.map +1 -0
  35. package/build/matrices/arithmetic.d.ts +411 -0
  36. package/build/matrices/arithmetic.d.ts.map +1 -0
  37. package/build/matrices/arithmetic.js +954 -0
  38. package/build/matrices/arithmetic.js.map +1 -0
  39. package/build/matrices/arithmetic.spec.d.ts +2 -0
  40. package/build/matrices/arithmetic.spec.d.ts.map +1 -0
  41. package/build/matrices/arithmetic.spec.js +915 -0
  42. package/build/matrices/arithmetic.spec.js.map +1 -0
  43. package/build/matrices/asserts.d.ts +306 -0
  44. package/build/matrices/asserts.d.ts.map +1 -0
  45. package/build/matrices/asserts.js +396 -0
  46. package/build/matrices/asserts.js.map +1 -0
  47. package/build/matrices/asserts.spec.d.ts +2 -0
  48. package/build/matrices/asserts.spec.d.ts.map +1 -0
  49. package/build/matrices/asserts.spec.js +565 -0
  50. package/build/matrices/asserts.spec.js.map +1 -0
  51. package/build/matrices/core.d.ts +168 -0
  52. package/build/matrices/core.d.ts.map +1 -0
  53. package/build/matrices/core.js +457 -0
  54. package/build/matrices/core.js.map +1 -0
  55. package/build/matrices/core.spec.d.ts +2 -0
  56. package/build/matrices/core.spec.d.ts.map +1 -0
  57. package/build/matrices/core.spec.js +634 -0
  58. package/build/matrices/core.spec.js.map +1 -0
  59. package/build/matrices/decompositions.d.ts +326 -0
  60. package/build/matrices/decompositions.d.ts.map +1 -0
  61. package/build/matrices/decompositions.js +816 -0
  62. package/build/matrices/decompositions.js.map +1 -0
  63. package/build/matrices/decompositions.spec.d.ts +2 -0
  64. package/build/matrices/decompositions.spec.d.ts.map +1 -0
  65. package/build/matrices/decompositions.spec.js +195 -0
  66. package/build/matrices/decompositions.spec.js.map +1 -0
  67. package/build/matrices/index.d.ts +9 -0
  68. package/build/matrices/index.d.ts.map +1 -0
  69. package/build/matrices/index.js +9 -0
  70. package/build/matrices/index.js.map +1 -0
  71. package/build/matrices/linear-algebra.d.ts +64 -0
  72. package/build/matrices/linear-algebra.d.ts.map +1 -0
  73. package/build/matrices/linear-algebra.js +253 -0
  74. package/build/matrices/linear-algebra.js.map +1 -0
  75. package/build/matrices/linear-algebra.spec.d.ts +2 -0
  76. package/build/matrices/linear-algebra.spec.d.ts.map +1 -0
  77. package/build/matrices/linear-algebra.spec.js +355 -0
  78. package/build/matrices/linear-algebra.spec.js.map +1 -0
  79. package/build/matrices/normalization.d.ts +62 -0
  80. package/build/matrices/normalization.d.ts.map +1 -0
  81. package/build/matrices/normalization.js +167 -0
  82. package/build/matrices/normalization.js.map +1 -0
  83. package/build/matrices/normalization.spec.d.ts +2 -0
  84. package/build/matrices/normalization.spec.d.ts.map +1 -0
  85. package/build/matrices/normalization.spec.js +335 -0
  86. package/build/matrices/normalization.spec.js.map +1 -0
  87. package/build/matrices/transformations.d.ts +484 -0
  88. package/build/matrices/transformations.d.ts.map +1 -0
  89. package/build/matrices/transformations.js +592 -0
  90. package/build/matrices/transformations.js.map +1 -0
  91. package/build/matrices/transformations.spec.d.ts +2 -0
  92. package/build/matrices/transformations.spec.d.ts.map +1 -0
  93. package/build/matrices/transformations.spec.js +755 -0
  94. package/build/matrices/transformations.spec.js.map +1 -0
  95. package/build/matrices/types.d.ts +134 -0
  96. package/build/matrices/types.d.ts.map +1 -0
  97. package/build/matrices/types.js +6 -0
  98. package/build/matrices/types.js.map +1 -0
  99. package/build/quaternions/asserts.d.ts +77 -0
  100. package/build/quaternions/asserts.d.ts.map +1 -0
  101. package/build/quaternions/asserts.js +175 -0
  102. package/build/quaternions/asserts.js.map +1 -0
  103. package/build/quaternions/asserts.spec.d.ts +2 -0
  104. package/build/quaternions/asserts.spec.d.ts.map +1 -0
  105. package/build/quaternions/asserts.spec.js +320 -0
  106. package/build/quaternions/asserts.spec.js.map +1 -0
  107. package/build/quaternions/conversions.d.ts +73 -0
  108. package/build/quaternions/conversions.d.ts.map +1 -0
  109. package/build/quaternions/conversions.js +179 -0
  110. package/build/quaternions/conversions.js.map +1 -0
  111. package/build/quaternions/conversions.spec.d.ts +2 -0
  112. package/build/quaternions/conversions.spec.d.ts.map +1 -0
  113. package/build/quaternions/conversions.spec.js +344 -0
  114. package/build/quaternions/conversions.spec.js.map +1 -0
  115. package/build/quaternions/core.d.ts +203 -0
  116. package/build/quaternions/core.d.ts.map +1 -0
  117. package/build/quaternions/core.js +374 -0
  118. package/build/quaternions/core.js.map +1 -0
  119. package/build/quaternions/core.spec.d.ts +2 -0
  120. package/build/quaternions/core.spec.d.ts.map +1 -0
  121. package/build/quaternions/core.spec.js +294 -0
  122. package/build/quaternions/core.spec.js.map +1 -0
  123. package/build/quaternions/index.d.ts +7 -0
  124. package/build/quaternions/index.d.ts.map +1 -0
  125. package/build/quaternions/index.js +7 -0
  126. package/build/quaternions/index.js.map +1 -0
  127. package/build/quaternions/interpolation.d.ts +54 -0
  128. package/build/quaternions/interpolation.d.ts.map +1 -0
  129. package/build/quaternions/interpolation.js +201 -0
  130. package/build/quaternions/interpolation.js.map +1 -0
  131. package/build/quaternions/interpolation.spec.d.ts +2 -0
  132. package/build/quaternions/interpolation.spec.d.ts.map +1 -0
  133. package/build/quaternions/interpolation.spec.js +64 -0
  134. package/build/quaternions/interpolation.spec.js.map +1 -0
  135. package/build/quaternions/predefined.d.ts +36 -0
  136. package/build/quaternions/predefined.d.ts.map +1 -0
  137. package/build/quaternions/predefined.js +42 -0
  138. package/build/quaternions/predefined.js.map +1 -0
  139. package/build/quaternions/predefined.spec.d.ts +2 -0
  140. package/build/quaternions/predefined.spec.d.ts.map +1 -0
  141. package/build/quaternions/predefined.spec.js +35 -0
  142. package/build/quaternions/predefined.spec.js.map +1 -0
  143. package/build/quaternions/types.d.ts +55 -0
  144. package/build/quaternions/types.d.ts.map +1 -0
  145. package/build/quaternions/types.js +7 -0
  146. package/build/quaternions/types.js.map +1 -0
  147. package/build/random.d.ts +66 -0
  148. package/build/random.d.ts.map +1 -0
  149. package/build/random.js +115 -0
  150. package/build/random.js.map +1 -0
  151. package/build/random.spec.d.ts +2 -0
  152. package/build/random.spec.d.ts.map +1 -0
  153. package/build/random.spec.js +267 -0
  154. package/build/random.spec.js.map +1 -0
  155. package/build/vectors/asserts.d.ts +182 -0
  156. package/build/vectors/asserts.d.ts.map +1 -0
  157. package/build/vectors/asserts.js +285 -0
  158. package/build/vectors/asserts.js.map +1 -0
  159. package/build/vectors/asserts.spec.d.ts +2 -0
  160. package/build/vectors/asserts.spec.d.ts.map +1 -0
  161. package/build/vectors/asserts.spec.js +260 -0
  162. package/build/vectors/asserts.spec.js.map +1 -0
  163. package/build/vectors/core.d.ts +507 -0
  164. package/build/vectors/core.d.ts.map +1 -0
  165. package/build/vectors/core.js +825 -0
  166. package/build/vectors/core.js.map +1 -0
  167. package/build/vectors/core.spec.d.ts +2 -0
  168. package/build/vectors/core.spec.d.ts.map +1 -0
  169. package/build/vectors/core.spec.js +343 -0
  170. package/build/vectors/core.spec.js.map +1 -0
  171. package/build/vectors/index.d.ts +6 -0
  172. package/build/vectors/index.d.ts.map +1 -0
  173. package/build/vectors/index.js +6 -0
  174. package/build/vectors/index.js.map +1 -0
  175. package/build/vectors/interpolation.d.ts +404 -0
  176. package/build/vectors/interpolation.d.ts.map +1 -0
  177. package/build/vectors/interpolation.js +585 -0
  178. package/build/vectors/interpolation.js.map +1 -0
  179. package/build/vectors/interpolation.spec.d.ts +2 -0
  180. package/build/vectors/interpolation.spec.d.ts.map +1 -0
  181. package/build/vectors/interpolation.spec.js +378 -0
  182. package/build/vectors/interpolation.spec.js.map +1 -0
  183. package/build/vectors/predefined.d.ts +191 -0
  184. package/build/vectors/predefined.d.ts.map +1 -0
  185. package/build/vectors/predefined.js +191 -0
  186. package/build/vectors/predefined.js.map +1 -0
  187. package/build/vectors/predefined.spec.d.ts +2 -0
  188. package/build/vectors/predefined.spec.d.ts.map +1 -0
  189. package/build/vectors/predefined.spec.js +333 -0
  190. package/build/vectors/predefined.spec.js.map +1 -0
  191. package/build/vectors/types.d.ts +62 -0
  192. package/build/vectors/types.d.ts.map +1 -0
  193. package/build/vectors/types.js +6 -0
  194. package/build/vectors/types.js.map +1 -0
  195. package/package.json +75 -0
@@ -0,0 +1,191 @@
1
+ /**
2
+ * Predefined vector factory functions for common mathematical operations.
3
+ * Provides convenient constructors for standard vectors used in graphics, physics, and mathematics.
4
+ */
5
+ export function VectorZero(size) {
6
+ return new Array(size).fill(0);
7
+ }
8
+ export function VectorOne(size) {
9
+ return new Array(size).fill(1);
10
+ }
11
+ /**
12
+ * Creates a 2D unit vector pointing upward (positive Y direction).
13
+ * Standard in screen coordinates where Y increases downward, or
14
+ * mathematical coordinates where Y increases upward.
15
+ *
16
+ * @returns [0, 1] - Unit vector in positive Y direction
17
+ *
18
+ * @example
19
+ * const upDirection = Vector2_Up(); // Character movement upward
20
+ * const velocity = Vector2_Up().map(c => c * speed); // Moving up at given speed
21
+ */
22
+ export function Vector2Up() {
23
+ return [0, 1];
24
+ }
25
+ /**
26
+ * Creates a 3D unit vector pointing upward (positive Y direction).
27
+ * Standard in 3D graphics and physics where Y is typically the vertical axis.
28
+ *
29
+ * @returns [0, 1, 0] - Unit vector in positive Y direction
30
+ *
31
+ * @example
32
+ * const worldUp = Vector3_Up(); // World space up direction
33
+ * const jumpForce = Vector3_Up().map(c => c * jumpStrength);
34
+ */
35
+ export function Vector3Up() {
36
+ return [0, 1, 0];
37
+ }
38
+ /**
39
+ * Creates a 4D unit vector pointing upward (positive Y direction).
40
+ * Useful in homogeneous coordinates and 4D transformations.
41
+ *
42
+ * @returns [0, 1, 0, 0] - Unit vector in positive Y direction
43
+ */
44
+ export function Vector4Up() {
45
+ return [0, 1, 0, 0];
46
+ }
47
+ /**
48
+ * Creates a 2D unit vector pointing downward (negative Y direction).
49
+ * Commonly used for gravity, falling objects, or downward movement.
50
+ *
51
+ * @returns [0, -1] - Unit vector in negative Y direction
52
+ *
53
+ * @example
54
+ * const gravity = Vector2_Down().map(c => c * 9.81); // Gravity force
55
+ * const dropDirection = Vector2_Down(); // Object falling down
56
+ */
57
+ export function Vector2Down() {
58
+ return [0, -1];
59
+ }
60
+ /**
61
+ * Creates a 3D unit vector pointing downward (negative Y direction).
62
+ * Standard for gravity simulation and downward movement in 3D space.
63
+ *
64
+ * @returns [0, -1, 0] - Unit vector in negative Y direction
65
+ *
66
+ * @example
67
+ * const gravityForce = Vector3Down().map(c => c * 9.81);
68
+ * const downwardRay = Vector3Down(); // Raycast downward
69
+ */
70
+ export function Vector3Down() {
71
+ return [0, -1, 0];
72
+ }
73
+ /**
74
+ * Creates a 4D unit vector pointing downward (negative Y direction).
75
+ *
76
+ * @returns [0, -1, 0, 0] - Unit vector in negative Y direction
77
+ */
78
+ export function Vector4Down() {
79
+ return [0, -1, 0, 0];
80
+ }
81
+ /**
82
+ * Creates a 2D unit vector pointing left (negative X direction).
83
+ * Standard for leftward movement in 2D coordinate systems.
84
+ *
85
+ * @returns [-1, 0] - Unit vector in negative X direction
86
+ *
87
+ * @example
88
+ * const leftMovement = Vector2Left().map(c => c * speed);
89
+ * const leftDirection = Vector2Left(); // Character facing left
90
+ */
91
+ export function Vector2Left() {
92
+ return [-1, 0];
93
+ }
94
+ /**
95
+ * Creates a 3D unit vector pointing left (negative X direction).
96
+ * Standard for leftward movement in 3D coordinate systems.
97
+ *
98
+ * @returns [-1, 0, 0] - Unit vector in negative X direction
99
+ *
100
+ * @example
101
+ * const strafeLeft = Vector3Left().map(c => c * strafeSpeed);
102
+ */
103
+ export function Vector3Left() {
104
+ return [-1, 0, 0];
105
+ }
106
+ /**
107
+ * Creates a 4D unit vector pointing left (negative X direction).
108
+ *
109
+ * @returns [-1, 0, 0, 0] - Unit vector in negative X direction
110
+ */
111
+ export function Vector4Left() {
112
+ return [-1, 0, 0, 0];
113
+ }
114
+ /**
115
+ * Creates a 2D unit vector pointing right (positive X direction).
116
+ * Standard for rightward movement in 2D coordinate systems.
117
+ *
118
+ * @returns [1, 0] - Unit vector in positive X direction
119
+ *
120
+ * @example
121
+ * const rightMovement = Vector2Right().map(c => c * speed);
122
+ * const rightDirection = Vector2Right(); // Character facing right
123
+ */
124
+ export function Vector2Right() {
125
+ return [1, 0];
126
+ }
127
+ /**
128
+ * Creates a 3D unit vector pointing right (positive X direction).
129
+ * Standard for rightward movement in 3D coordinate systems.
130
+ *
131
+ * @returns [1, 0, 0] - Unit vector in positive X direction
132
+ *
133
+ * @example
134
+ * const strafeRight = Vector3Right().map(c => c * strafeSpeed);
135
+ */
136
+ export function Vector3Right() {
137
+ return [1, 0, 0];
138
+ }
139
+ /**
140
+ * Creates a 4D unit vector pointing right (positive X direction).
141
+ *
142
+ * @returns [1, 0, 0, 0] - Unit vector in positive X direction
143
+ */
144
+ export function Vector4Right() {
145
+ return [1, 0, 0, 0];
146
+ }
147
+ /**
148
+ * Creates a 3D unit vector pointing forward (positive Z direction).
149
+ * Standard in right-handed coordinate systems where Z points toward the viewer.
150
+ * Commonly used for forward movement and camera directions.
151
+ *
152
+ * @returns [0, 0, 1] - Unit vector in positive Z direction
153
+ *
154
+ * @example
155
+ * const forwardMovement = Vector3Forward().map(c => c * speed);
156
+ * const cameraForward = Vector3Forward(); // Camera looking direction
157
+ */
158
+ export function Vector3Forward() {
159
+ return [0, 0, 1];
160
+ }
161
+ /**
162
+ * Creates a 4D unit vector pointing forward (positive Z direction).
163
+ *
164
+ * @returns [0, 0, 1, 0] - Unit vector in positive Z direction
165
+ */
166
+ export function Vector4Forward() {
167
+ return [0, 0, 1, 0];
168
+ }
169
+ /**
170
+ * Creates a 3D unit vector pointing backward (negative Z direction).
171
+ * Standard in right-handed coordinate systems where negative Z points away from the viewer.
172
+ * Commonly used for backward movement and opposite camera directions.
173
+ *
174
+ * @returns [0, 0, -1] - Unit vector in negative Z direction
175
+ *
176
+ * @example
177
+ * const backwardMovement = Vector3Backward().map(c => c * speed);
178
+ * const reverseDirection = Vector3Backward(); // Moving away from target
179
+ */
180
+ export function Vector3Backward() {
181
+ return [0, 0, -1];
182
+ }
183
+ /**
184
+ * Creates a 4D unit vector pointing backward (negative Z direction).
185
+ *
186
+ * @returns [0, 0, -1, 0] - Unit vector in negative Z direction
187
+ */
188
+ export function Vector4Backward() {
189
+ return [0, 0, -1, 0];
190
+ }
191
+ //# sourceMappingURL=predefined.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"predefined.js","sourceRoot":"","sources":["../../src/vectors/predefined.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAwBH,MAAM,UAAU,UAAU,CAAC,IAAY;IACtC,OAAO,IAAI,KAAK,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;AAChC,CAAC;AAmBD,MAAM,UAAU,SAAS,CAAC,IAAY;IACrC,OAAO,IAAI,KAAK,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;AAChC,CAAC;AAED;;;;;;;;;;GAUG;AACH,MAAM,UAAU,SAAS;IACxB,OAAO,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;AACf,CAAC;AAED;;;;;;;;;GASG;AACH,MAAM,UAAU,SAAS;IACxB,OAAO,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC;AAClB,CAAC;AAED;;;;;GAKG;AACH,MAAM,UAAU,SAAS;IACxB,OAAO,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC;AACrB,CAAC;AAED;;;;;;;;;GASG;AACH,MAAM,UAAU,WAAW;IAC1B,OAAO,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC;AAChB,CAAC;AAED;;;;;;;;;GASG;AACH,MAAM,UAAU,WAAW;IAC1B,OAAO,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;AACnB,CAAC;AAED;;;;GAIG;AACH,MAAM,UAAU,WAAW;IAC1B,OAAO,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC;AACtB,CAAC;AAED;;;;;;;;;GASG;AACH,MAAM,UAAU,WAAW;IAC1B,OAAO,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;AAChB,CAAC;AAED;;;;;;;;GAQG;AACH,MAAM,UAAU,WAAW;IAC1B,OAAO,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC;AACnB,CAAC;AAED;;;;GAIG;AACH,MAAM,UAAU,WAAW;IAC1B,OAAO,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC;AACtB,CAAC;AAED;;;;;;;;;GASG;AACH,MAAM,UAAU,YAAY;IAC3B,OAAO,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;AACf,CAAC;AAED;;;;;;;;GAQG;AACH,MAAM,UAAU,YAAY;IAC3B,OAAO,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC;AAClB,CAAC;AAED;;;;GAIG;AACH,MAAM,UAAU,YAAY;IAC3B,OAAO,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC;AACrB,CAAC;AAED;;;;;;;;;;GAUG;AACH,MAAM,UAAU,cAAc;IAC7B,OAAO,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC;AAClB,CAAC;AAED;;;;GAIG;AACH,MAAM,UAAU,cAAc;IAC7B,OAAO,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC;AACrB,CAAC;AAED;;;;;;;;;;GAUG;AACH,MAAM,UAAU,eAAe;IAC9B,OAAO,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC;AACnB,CAAC;AAED;;;;GAIG;AACH,MAAM,UAAU,eAAe;IAC9B,OAAO,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;AACtB,CAAC"}
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=predefined.spec.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"predefined.spec.d.ts","sourceRoot":"","sources":["../../src/vectors/predefined.spec.ts"],"names":[],"mappings":""}
@@ -0,0 +1,333 @@
1
+ import { VectorZero, VectorOne, Vector2Up, Vector3Up, Vector4Up, Vector2Down, Vector3Down, Vector4Down, Vector2Left, Vector3Left, Vector4Left, Vector2Right, Vector3Right, Vector4Right, Vector3Forward, Vector4Forward, Vector3Backward, Vector4Backward, } from './predefined.js';
2
+ describe('Predefined Vectors', () => {
3
+ describe('VectorZero', () => {
4
+ it('should create a 1D zero vector', () => {
5
+ const vector = VectorZero(1);
6
+ expect(vector).toEqual([0]);
7
+ expect(vector).toHaveLength(1);
8
+ });
9
+ it('should create a 2D zero vector', () => {
10
+ const vector = VectorZero(2);
11
+ expect(vector).toEqual([0, 0]);
12
+ expect(vector).toHaveLength(2);
13
+ });
14
+ it('should create a 3D zero vector', () => {
15
+ const vector = VectorZero(3);
16
+ expect(vector).toEqual([0, 0, 0]);
17
+ expect(vector).toHaveLength(3);
18
+ });
19
+ it('should create a 4D zero vector', () => {
20
+ const vector = VectorZero(4);
21
+ expect(vector).toEqual([0, 0, 0, 0]);
22
+ expect(vector).toHaveLength(4);
23
+ });
24
+ });
25
+ describe('VectorOne', () => {
26
+ it('should create a 1D ones vector', () => {
27
+ const vector = VectorOne(1);
28
+ expect(vector).toEqual([1]);
29
+ expect(vector).toHaveLength(1);
30
+ });
31
+ it('should create a 2D ones vector', () => {
32
+ const vector = VectorOne(2);
33
+ expect(vector).toEqual([1, 1]);
34
+ expect(vector).toHaveLength(2);
35
+ });
36
+ it('should create a 3D ones vector', () => {
37
+ const vector = VectorOne(3);
38
+ expect(vector).toEqual([1, 1, 1]);
39
+ expect(vector).toHaveLength(3);
40
+ });
41
+ it('should create a 4D ones vector', () => {
42
+ const vector = VectorOne(4);
43
+ expect(vector).toEqual([1, 1, 1, 1]);
44
+ expect(vector).toHaveLength(4);
45
+ });
46
+ });
47
+ describe('2D Direction Vectors', () => {
48
+ describe('Vector2Up', () => {
49
+ it('should create a 2D up direction vector', () => {
50
+ const vector = Vector2Up();
51
+ expect(vector).toEqual([0, 1]);
52
+ expect(vector).toHaveLength(2);
53
+ });
54
+ it('should return a new instance each time', () => {
55
+ const vector1 = Vector2Up();
56
+ const vector2 = Vector2Up();
57
+ expect(vector1).toEqual(vector2);
58
+ expect(vector1).not.toBe(vector2); // Different instances
59
+ });
60
+ });
61
+ describe('Vector2Down', () => {
62
+ it('should create a 2D down direction vector', () => {
63
+ const vector = Vector2Down();
64
+ expect(vector).toEqual([0, -1]);
65
+ expect(vector).toHaveLength(2);
66
+ });
67
+ it('should return a new instance each time', () => {
68
+ const vector1 = Vector2Down();
69
+ const vector2 = Vector2Down();
70
+ expect(vector1).toEqual(vector2);
71
+ expect(vector1).not.toBe(vector2);
72
+ });
73
+ });
74
+ describe('Vector2Left', () => {
75
+ it('should create a 2D left direction vector', () => {
76
+ const vector = Vector2Left();
77
+ expect(vector).toEqual([-1, 0]);
78
+ expect(vector).toHaveLength(2);
79
+ });
80
+ it('should return a new instance each time', () => {
81
+ const vector1 = Vector2Left();
82
+ const vector2 = Vector2Left();
83
+ expect(vector1).toEqual(vector2);
84
+ expect(vector1).not.toBe(vector2);
85
+ });
86
+ });
87
+ describe('Vector2Right', () => {
88
+ it('should create a 2D right direction vector', () => {
89
+ const vector = Vector2Right();
90
+ expect(vector).toEqual([1, 0]);
91
+ expect(vector).toHaveLength(2);
92
+ });
93
+ it('should return a new instance each time', () => {
94
+ const vector1 = Vector2Right();
95
+ const vector2 = Vector2Right();
96
+ expect(vector1).toEqual(vector2);
97
+ expect(vector1).not.toBe(vector2);
98
+ });
99
+ });
100
+ });
101
+ describe('3D Direction Vectors', () => {
102
+ describe('Vector3Up', () => {
103
+ it('should create a 3D up direction vector', () => {
104
+ const vector = Vector3Up();
105
+ expect(vector).toEqual([0, 1, 0]);
106
+ expect(vector).toHaveLength(3);
107
+ });
108
+ it('should return a new instance each time', () => {
109
+ const vector1 = Vector3Up();
110
+ const vector2 = Vector3Up();
111
+ expect(vector1).toEqual(vector2);
112
+ expect(vector1).not.toBe(vector2);
113
+ });
114
+ });
115
+ describe('Vector3Down', () => {
116
+ it('should create a 3D down direction vector', () => {
117
+ const vector = Vector3Down();
118
+ expect(vector).toEqual([0, -1, 0]);
119
+ expect(vector).toHaveLength(3);
120
+ });
121
+ it('should return a new instance each time', () => {
122
+ const vector1 = Vector3Down();
123
+ const vector2 = Vector3Down();
124
+ expect(vector1).toEqual(vector2);
125
+ expect(vector1).not.toBe(vector2);
126
+ });
127
+ });
128
+ describe('Vector3Left', () => {
129
+ it('should create a 3D left direction vector', () => {
130
+ const vector = Vector3Left();
131
+ expect(vector).toEqual([-1, 0, 0]);
132
+ expect(vector).toHaveLength(3);
133
+ });
134
+ it('should return a new instance each time', () => {
135
+ const vector1 = Vector3Left();
136
+ const vector2 = Vector3Left();
137
+ expect(vector1).toEqual(vector2);
138
+ expect(vector1).not.toBe(vector2);
139
+ });
140
+ });
141
+ describe('Vector3Right', () => {
142
+ it('should create a 3D right direction vector', () => {
143
+ const vector = Vector3Right();
144
+ expect(vector).toEqual([1, 0, 0]);
145
+ expect(vector).toHaveLength(3);
146
+ });
147
+ it('should return a new instance each time', () => {
148
+ const vector1 = Vector3Right();
149
+ const vector2 = Vector3Right();
150
+ expect(vector1).toEqual(vector2);
151
+ expect(vector1).not.toBe(vector2);
152
+ });
153
+ });
154
+ describe('Vector3Forward', () => {
155
+ it('should create a 3D forward direction vector', () => {
156
+ const vector = Vector3Forward();
157
+ expect(vector).toEqual([0, 0, 1]);
158
+ expect(vector).toHaveLength(3);
159
+ });
160
+ it('should return a new instance each time', () => {
161
+ const vector1 = Vector3Forward();
162
+ const vector2 = Vector3Forward();
163
+ expect(vector1).toEqual(vector2);
164
+ expect(vector1).not.toBe(vector2);
165
+ });
166
+ });
167
+ describe('Vector3Backward', () => {
168
+ it('should create a 3D backward direction vector', () => {
169
+ const vector = Vector3Backward();
170
+ expect(vector).toEqual([0, 0, -1]);
171
+ expect(vector).toHaveLength(3);
172
+ });
173
+ it('should return a new instance each time', () => {
174
+ const vector1 = Vector3Backward();
175
+ const vector2 = Vector3Backward();
176
+ expect(vector1).toEqual(vector2);
177
+ expect(vector1).not.toBe(vector2);
178
+ });
179
+ });
180
+ });
181
+ describe('4D Direction Vectors', () => {
182
+ describe('Vector4Up', () => {
183
+ it('should create a 4D up direction vector', () => {
184
+ const vector = Vector4Up();
185
+ expect(vector).toEqual([0, 1, 0, 0]);
186
+ expect(vector).toHaveLength(4);
187
+ });
188
+ it('should return a new instance each time', () => {
189
+ const vector1 = Vector4Up();
190
+ const vector2 = Vector4Up();
191
+ expect(vector1).toEqual(vector2);
192
+ expect(vector1).not.toBe(vector2);
193
+ });
194
+ });
195
+ describe('Vector4Down', () => {
196
+ it('should create a 4D down direction vector', () => {
197
+ const vector = Vector4Down();
198
+ expect(vector).toEqual([0, -1, 0, 0]);
199
+ expect(vector).toHaveLength(4);
200
+ });
201
+ it('should return a new instance each time', () => {
202
+ const vector1 = Vector4Down();
203
+ const vector2 = Vector4Down();
204
+ expect(vector1).toEqual(vector2);
205
+ expect(vector1).not.toBe(vector2);
206
+ });
207
+ });
208
+ describe('Vector4Left', () => {
209
+ it('should create a 4D left direction vector', () => {
210
+ const vector = Vector4Left();
211
+ expect(vector).toEqual([-1, 0, 0, 0]);
212
+ expect(vector).toHaveLength(4);
213
+ });
214
+ it('should return a new instance each time', () => {
215
+ const vector1 = Vector4Left();
216
+ const vector2 = Vector4Left();
217
+ expect(vector1).toEqual(vector2);
218
+ expect(vector1).not.toBe(vector2);
219
+ });
220
+ });
221
+ describe('Vector4Right', () => {
222
+ it('should create a 4D right direction vector', () => {
223
+ const vector = Vector4Right();
224
+ expect(vector).toEqual([1, 0, 0, 0]);
225
+ expect(vector).toHaveLength(4);
226
+ });
227
+ it('should return a new instance each time', () => {
228
+ const vector1 = Vector4Right();
229
+ const vector2 = Vector4Right();
230
+ expect(vector1).toEqual(vector2);
231
+ expect(vector1).not.toBe(vector2);
232
+ });
233
+ });
234
+ describe('Vector4Forward', () => {
235
+ it('should create a 4D forward direction vector', () => {
236
+ const vector = Vector4Forward();
237
+ expect(vector).toEqual([0, 0, 1, 0]);
238
+ expect(vector).toHaveLength(4);
239
+ });
240
+ it('should return a new instance each time', () => {
241
+ const vector1 = Vector4Forward();
242
+ const vector2 = Vector4Forward();
243
+ expect(vector1).toEqual(vector2);
244
+ expect(vector1).not.toBe(vector2);
245
+ });
246
+ });
247
+ describe('Vector4Backward', () => {
248
+ it('should create a 4D backward direction vector', () => {
249
+ const vector = Vector4Backward();
250
+ expect(vector).toEqual([0, 0, -1, 0]);
251
+ expect(vector).toHaveLength(4);
252
+ });
253
+ it('should return a new instance each time', () => {
254
+ const vector1 = Vector4Backward();
255
+ const vector2 = Vector4Backward();
256
+ expect(vector1).toEqual(vector2);
257
+ expect(vector1).not.toBe(vector2);
258
+ });
259
+ });
260
+ });
261
+ describe('Mathematical Properties', () => {
262
+ it('should create unit vectors for all direction functions', () => {
263
+ // Test that all direction vectors have magnitude of 1 (within floating point precision)
264
+ const vectors = [
265
+ Vector2Up(),
266
+ Vector2Down(),
267
+ Vector2Left(),
268
+ Vector2Right(),
269
+ Vector3Up(),
270
+ Vector3Down(),
271
+ Vector3Left(),
272
+ Vector3Right(),
273
+ Vector3Forward(),
274
+ Vector3Backward(),
275
+ Vector4Up(),
276
+ Vector4Down(),
277
+ Vector4Left(),
278
+ Vector4Right(),
279
+ Vector4Forward(),
280
+ Vector4Backward(),
281
+ ];
282
+ vectors.forEach((vector) => {
283
+ const magnitude = Math.sqrt(vector.reduce((sum, component) => sum + (component * component), 0));
284
+ expect(magnitude).toBeCloseTo(1, 10);
285
+ });
286
+ });
287
+ it('should create orthogonal pairs for opposite directions', () => {
288
+ // Test 2D orthogonal pairs
289
+ const up2D = Vector2Up();
290
+ const down2D = Vector2Down();
291
+ const left2D = Vector2Left();
292
+ const right2D = Vector2Right();
293
+ // Dot product of opposite vectors should be -1
294
+ expect((up2D[0] * down2D[0]) + (up2D[1] * down2D[1])).toBeCloseTo(-1);
295
+ expect((left2D[0] * right2D[0]) + (left2D[1] * right2D[1])).toBeCloseTo(-1);
296
+ // Dot product of perpendicular vectors should be 0
297
+ expect((up2D[0] * left2D[0]) + (up2D[1] * left2D[1])).toBeCloseTo(0);
298
+ expect((up2D[0] * right2D[0]) + (up2D[1] * right2D[1])).toBeCloseTo(0);
299
+ // Test 3D orthogonal pairs
300
+ const up3D = Vector3Up();
301
+ const down3D = Vector3Down();
302
+ const left3D = Vector3Left();
303
+ const right3D = Vector3Right();
304
+ const forward3D = Vector3Forward();
305
+ const backward3D = Vector3Backward();
306
+ // Dot product of opposite vectors should be -1
307
+ expect((up3D[0] * down3D[0]) + (up3D[1] * down3D[1]) + (up3D[2] * down3D[2])).toBeCloseTo(-1);
308
+ expect((left3D[0] * right3D[0]) + (left3D[1] * right3D[1]) + (left3D[2] * right3D[2])).toBeCloseTo(-1);
309
+ expect((forward3D[0] * backward3D[0]) + (forward3D[1] * backward3D[1]) + (forward3D[2] * backward3D[2])).toBeCloseTo(-1);
310
+ // Dot product of perpendicular vectors should be 0
311
+ expect((up3D[0] * left3D[0]) + (up3D[1] * left3D[1]) + (up3D[2] * left3D[2])).toBeCloseTo(0);
312
+ expect((up3D[0] * forward3D[0]) + (up3D[1] * forward3D[1]) + (up3D[2] * forward3D[2])).toBeCloseTo(0);
313
+ expect((left3D[0] * forward3D[0]) + (left3D[1] * forward3D[1]) + (left3D[2] * forward3D[2])).toBeCloseTo(0);
314
+ });
315
+ });
316
+ describe('Immutability', () => {
317
+ it('should not affect original vectors when modified', () => {
318
+ const zero2D = VectorZero(2);
319
+ const originalZero = [...zero2D];
320
+ zero2D[0] = 999;
321
+ const newZero2D = VectorZero(2);
322
+ expect(newZero2D).toEqual(originalZero);
323
+ expect(newZero2D).not.toEqual(zero2D);
324
+ const up = Vector3Up();
325
+ const originalUp = [...up];
326
+ up[1] = 999;
327
+ const newUp = Vector3Up();
328
+ expect(newUp).toEqual(originalUp);
329
+ expect(newUp).not.toEqual(up);
330
+ });
331
+ });
332
+ });
333
+ //# sourceMappingURL=predefined.spec.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"predefined.spec.js","sourceRoot":"","sources":["../../src/vectors/predefined.spec.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,62 @@
1
+ /**
2
+ * Vector type definitions for mathematical operations and geometric calculations.
3
+ * These types provide a flexible foundation for vector operations while maintaining type safety.
4
+ */
5
+ /**
6
+ * Generic vector type representing an array of numbers with arbitrary dimensions.
7
+ * Useful for mathematical operations on vectors of any size.
8
+ *
9
+ * @example
10
+ * const vector: TVector = [1, 2, 3, 4, 5]; // 5D vector
11
+ */
12
+ export type TVector = number[];
13
+ /**
14
+ * 2D vector type supporting both tuple and array representations.
15
+ * Commonly used for 2D graphics, physics simulations, and coordinate systems.
16
+ *
17
+ * @example
18
+ * const position: TVector2 = [10, 20]; // Tuple representation (preferred)
19
+ * const velocity: TVector2 = [5.5, -3.2]; // Array representation
20
+ */
21
+ export type TVector2 = [number, number];
22
+ /**
23
+ * 3D vector type supporting both tuple and array representations.
24
+ * Essential for 3D graphics, spatial calculations, and physics simulations.
25
+ *
26
+ * @example
27
+ * const position: TVector3 = [10, 20, 30]; // 3D position
28
+ * const direction: TVector3 = [0, 1, 0]; // Unit vector (up)
29
+ * const velocity: TVector3 = [2.5, -1.8, 3.2]; // 3D velocity
30
+ */
31
+ export type TVector3 = [number, number, number];
32
+ /**
33
+ * 4D vector type supporting both tuple and array representations.
34
+ * Used for homogeneous coordinates in 3D transformations and projections.
35
+ *
36
+ * @example
37
+ * const homogeneous: TVector4 = [10, 20, 30, 1]; // 3D point in homogeneous coordinates
38
+ * const direction: TVector4 = [0, 1, 0, 0]; // 3D direction vector
39
+ */
40
+ export type TVector4 = [number, number, number, number];
41
+ /**
42
+ * Union type representing any vector type.
43
+ * Useful for functions that can accept vectors of any dimension.
44
+ *
45
+ * @example
46
+ * function processVector(vector: TAnyVector): void {
47
+ * // Can handle any vector dimension
48
+ * }
49
+ */
50
+ export type TAnyVector = TVector | TVector2 | TVector3 | TVector4;
51
+ /**
52
+ * Conditional type that preserves the specific vector type through operations.
53
+ * Ensures type safety by returning the same specific vector type as the input.
54
+ *
55
+ * @template T - The input vector type extending TAnyVector
56
+ * @example
57
+ * function operation<T extends TAnyVector>(vector: T): TVectorResult<T> {
58
+ * // Returns same specific type as input
59
+ * }
60
+ */
61
+ export type TVectorResult<T extends TAnyVector> = T extends TVector2 ? TVector2 : T extends TVector3 ? TVector3 : T extends TVector4 ? TVector4 : TVector;
62
+ //# sourceMappingURL=types.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../src/vectors/types.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH;;;;;;GAMG;AACH,MAAM,MAAM,OAAO,GAAG,MAAM,EAAE,CAAC;AAE/B;;;;;;;GAOG;AACH,MAAM,MAAM,QAAQ,GAAG,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;AAExC;;;;;;;;GAQG;AACH,MAAM,MAAM,QAAQ,GAAG,CAAC,MAAM,EAAE,MAAM,EAAE,MAAM,CAAC,CAAC;AAEhD;;;;;;;GAOG;AACH,MAAM,MAAM,QAAQ,GAAG,CAAC,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,CAAC,CAAC;AAExD;;;;;;;;GAQG;AACH,MAAM,MAAM,UAAU,GAAG,OAAO,GAAG,QAAQ,GAAG,QAAQ,GAAG,QAAQ,CAAC;AAElE;;;;;;;;;GASG;AACH,MAAM,MAAM,aAAa,CAAC,CAAC,SAAS,UAAU,IAAI,CAAC,SAAS,QAAQ,GAAG,QAAQ,GAAG,CAAC,SAAS,QAAQ,GAAG,QAAQ,GAAG,CAAC,SAAS,QAAQ,GAAG,QAAQ,GAAG,OAAO,CAAC"}
@@ -0,0 +1,6 @@
1
+ /**
2
+ * Vector type definitions for mathematical operations and geometric calculations.
3
+ * These types provide a flexible foundation for vector operations while maintaining type safety.
4
+ */
5
+ export {};
6
+ //# sourceMappingURL=types.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"types.js","sourceRoot":"","sources":["../../src/vectors/types.ts"],"names":[],"mappings":"AAAA;;;GAGG"}