@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.
- package/LICENSE +21 -0
- package/README.md +319 -0
- package/build/angles.d.ts +31 -0
- package/build/angles.d.ts.map +1 -0
- package/build/angles.js +85 -0
- package/build/angles.js.map +1 -0
- package/build/angles.spec.d.ts +2 -0
- package/build/angles.spec.d.ts.map +1 -0
- package/build/angles.spec.js +147 -0
- package/build/angles.spec.js.map +1 -0
- package/build/clamp.d.ts +17 -0
- package/build/clamp.d.ts.map +1 -0
- package/build/clamp.js +19 -0
- package/build/clamp.js.map +1 -0
- package/build/clamp.spec.d.ts +2 -0
- package/build/clamp.spec.d.ts.map +1 -0
- package/build/clamp.spec.js +19 -0
- package/build/clamp.spec.js.map +1 -0
- package/build/documentation-validation.spec.d.ts +11 -0
- package/build/documentation-validation.spec.d.ts.map +1 -0
- package/build/documentation-validation.spec.js +401 -0
- package/build/documentation-validation.spec.js.map +1 -0
- package/build/index.d.ts +8 -0
- package/build/index.d.ts.map +1 -0
- package/build/index.js +8 -0
- package/build/index.js.map +1 -0
- package/build/interpolation.d.ts +175 -0
- package/build/interpolation.d.ts.map +1 -0
- package/build/interpolation.js +369 -0
- package/build/interpolation.js.map +1 -0
- package/build/interpolation.spec.d.ts +2 -0
- package/build/interpolation.spec.d.ts.map +1 -0
- package/build/interpolation.spec.js +480 -0
- package/build/interpolation.spec.js.map +1 -0
- package/build/matrices/arithmetic.d.ts +411 -0
- package/build/matrices/arithmetic.d.ts.map +1 -0
- package/build/matrices/arithmetic.js +954 -0
- package/build/matrices/arithmetic.js.map +1 -0
- package/build/matrices/arithmetic.spec.d.ts +2 -0
- package/build/matrices/arithmetic.spec.d.ts.map +1 -0
- package/build/matrices/arithmetic.spec.js +915 -0
- package/build/matrices/arithmetic.spec.js.map +1 -0
- package/build/matrices/asserts.d.ts +306 -0
- package/build/matrices/asserts.d.ts.map +1 -0
- package/build/matrices/asserts.js +396 -0
- package/build/matrices/asserts.js.map +1 -0
- package/build/matrices/asserts.spec.d.ts +2 -0
- package/build/matrices/asserts.spec.d.ts.map +1 -0
- package/build/matrices/asserts.spec.js +565 -0
- package/build/matrices/asserts.spec.js.map +1 -0
- package/build/matrices/core.d.ts +168 -0
- package/build/matrices/core.d.ts.map +1 -0
- package/build/matrices/core.js +457 -0
- package/build/matrices/core.js.map +1 -0
- package/build/matrices/core.spec.d.ts +2 -0
- package/build/matrices/core.spec.d.ts.map +1 -0
- package/build/matrices/core.spec.js +634 -0
- package/build/matrices/core.spec.js.map +1 -0
- package/build/matrices/decompositions.d.ts +326 -0
- package/build/matrices/decompositions.d.ts.map +1 -0
- package/build/matrices/decompositions.js +816 -0
- package/build/matrices/decompositions.js.map +1 -0
- package/build/matrices/decompositions.spec.d.ts +2 -0
- package/build/matrices/decompositions.spec.d.ts.map +1 -0
- package/build/matrices/decompositions.spec.js +195 -0
- package/build/matrices/decompositions.spec.js.map +1 -0
- package/build/matrices/index.d.ts +9 -0
- package/build/matrices/index.d.ts.map +1 -0
- package/build/matrices/index.js +9 -0
- package/build/matrices/index.js.map +1 -0
- package/build/matrices/linear-algebra.d.ts +64 -0
- package/build/matrices/linear-algebra.d.ts.map +1 -0
- package/build/matrices/linear-algebra.js +253 -0
- package/build/matrices/linear-algebra.js.map +1 -0
- package/build/matrices/linear-algebra.spec.d.ts +2 -0
- package/build/matrices/linear-algebra.spec.d.ts.map +1 -0
- package/build/matrices/linear-algebra.spec.js +355 -0
- package/build/matrices/linear-algebra.spec.js.map +1 -0
- package/build/matrices/normalization.d.ts +62 -0
- package/build/matrices/normalization.d.ts.map +1 -0
- package/build/matrices/normalization.js +167 -0
- package/build/matrices/normalization.js.map +1 -0
- package/build/matrices/normalization.spec.d.ts +2 -0
- package/build/matrices/normalization.spec.d.ts.map +1 -0
- package/build/matrices/normalization.spec.js +335 -0
- package/build/matrices/normalization.spec.js.map +1 -0
- package/build/matrices/transformations.d.ts +484 -0
- package/build/matrices/transformations.d.ts.map +1 -0
- package/build/matrices/transformations.js +592 -0
- package/build/matrices/transformations.js.map +1 -0
- package/build/matrices/transformations.spec.d.ts +2 -0
- package/build/matrices/transformations.spec.d.ts.map +1 -0
- package/build/matrices/transformations.spec.js +755 -0
- package/build/matrices/transformations.spec.js.map +1 -0
- package/build/matrices/types.d.ts +134 -0
- package/build/matrices/types.d.ts.map +1 -0
- package/build/matrices/types.js +6 -0
- package/build/matrices/types.js.map +1 -0
- package/build/quaternions/asserts.d.ts +77 -0
- package/build/quaternions/asserts.d.ts.map +1 -0
- package/build/quaternions/asserts.js +175 -0
- package/build/quaternions/asserts.js.map +1 -0
- package/build/quaternions/asserts.spec.d.ts +2 -0
- package/build/quaternions/asserts.spec.d.ts.map +1 -0
- package/build/quaternions/asserts.spec.js +320 -0
- package/build/quaternions/asserts.spec.js.map +1 -0
- package/build/quaternions/conversions.d.ts +73 -0
- package/build/quaternions/conversions.d.ts.map +1 -0
- package/build/quaternions/conversions.js +179 -0
- package/build/quaternions/conversions.js.map +1 -0
- package/build/quaternions/conversions.spec.d.ts +2 -0
- package/build/quaternions/conversions.spec.d.ts.map +1 -0
- package/build/quaternions/conversions.spec.js +344 -0
- package/build/quaternions/conversions.spec.js.map +1 -0
- package/build/quaternions/core.d.ts +203 -0
- package/build/quaternions/core.d.ts.map +1 -0
- package/build/quaternions/core.js +374 -0
- package/build/quaternions/core.js.map +1 -0
- package/build/quaternions/core.spec.d.ts +2 -0
- package/build/quaternions/core.spec.d.ts.map +1 -0
- package/build/quaternions/core.spec.js +294 -0
- package/build/quaternions/core.spec.js.map +1 -0
- package/build/quaternions/index.d.ts +7 -0
- package/build/quaternions/index.d.ts.map +1 -0
- package/build/quaternions/index.js +7 -0
- package/build/quaternions/index.js.map +1 -0
- package/build/quaternions/interpolation.d.ts +54 -0
- package/build/quaternions/interpolation.d.ts.map +1 -0
- package/build/quaternions/interpolation.js +201 -0
- package/build/quaternions/interpolation.js.map +1 -0
- package/build/quaternions/interpolation.spec.d.ts +2 -0
- package/build/quaternions/interpolation.spec.d.ts.map +1 -0
- package/build/quaternions/interpolation.spec.js +64 -0
- package/build/quaternions/interpolation.spec.js.map +1 -0
- package/build/quaternions/predefined.d.ts +36 -0
- package/build/quaternions/predefined.d.ts.map +1 -0
- package/build/quaternions/predefined.js +42 -0
- package/build/quaternions/predefined.js.map +1 -0
- package/build/quaternions/predefined.spec.d.ts +2 -0
- package/build/quaternions/predefined.spec.d.ts.map +1 -0
- package/build/quaternions/predefined.spec.js +35 -0
- package/build/quaternions/predefined.spec.js.map +1 -0
- package/build/quaternions/types.d.ts +55 -0
- package/build/quaternions/types.d.ts.map +1 -0
- package/build/quaternions/types.js +7 -0
- package/build/quaternions/types.js.map +1 -0
- package/build/random.d.ts +66 -0
- package/build/random.d.ts.map +1 -0
- package/build/random.js +115 -0
- package/build/random.js.map +1 -0
- package/build/random.spec.d.ts +2 -0
- package/build/random.spec.d.ts.map +1 -0
- package/build/random.spec.js +267 -0
- package/build/random.spec.js.map +1 -0
- package/build/vectors/asserts.d.ts +182 -0
- package/build/vectors/asserts.d.ts.map +1 -0
- package/build/vectors/asserts.js +285 -0
- package/build/vectors/asserts.js.map +1 -0
- package/build/vectors/asserts.spec.d.ts +2 -0
- package/build/vectors/asserts.spec.d.ts.map +1 -0
- package/build/vectors/asserts.spec.js +260 -0
- package/build/vectors/asserts.spec.js.map +1 -0
- package/build/vectors/core.d.ts +507 -0
- package/build/vectors/core.d.ts.map +1 -0
- package/build/vectors/core.js +825 -0
- package/build/vectors/core.js.map +1 -0
- package/build/vectors/core.spec.d.ts +2 -0
- package/build/vectors/core.spec.d.ts.map +1 -0
- package/build/vectors/core.spec.js +343 -0
- package/build/vectors/core.spec.js.map +1 -0
- package/build/vectors/index.d.ts +6 -0
- package/build/vectors/index.d.ts.map +1 -0
- package/build/vectors/index.js +6 -0
- package/build/vectors/index.js.map +1 -0
- package/build/vectors/interpolation.d.ts +404 -0
- package/build/vectors/interpolation.d.ts.map +1 -0
- package/build/vectors/interpolation.js +585 -0
- package/build/vectors/interpolation.js.map +1 -0
- package/build/vectors/interpolation.spec.d.ts +2 -0
- package/build/vectors/interpolation.spec.d.ts.map +1 -0
- package/build/vectors/interpolation.spec.js +378 -0
- package/build/vectors/interpolation.spec.js.map +1 -0
- package/build/vectors/predefined.d.ts +191 -0
- package/build/vectors/predefined.d.ts.map +1 -0
- package/build/vectors/predefined.js +191 -0
- package/build/vectors/predefined.js.map +1 -0
- package/build/vectors/predefined.spec.d.ts +2 -0
- package/build/vectors/predefined.spec.d.ts.map +1 -0
- package/build/vectors/predefined.spec.js +333 -0
- package/build/vectors/predefined.spec.js.map +1 -0
- package/build/vectors/types.d.ts +62 -0
- package/build/vectors/types.d.ts.map +1 -0
- package/build/vectors/types.js +6 -0
- package/build/vectors/types.js.map +1 -0
- 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 @@
|
|
|
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 @@
|
|
|
1
|
+
{"version":3,"file":"types.js","sourceRoot":"","sources":["../../src/vectors/types.ts"],"names":[],"mappings":"AAAA;;;GAGG"}
|