@esengine/ecs-framework-math 1.0.3 → 2.8.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 (60) hide show
  1. package/LICENSE +21 -0
  2. package/bin/Animation/Easing.d.ts +150 -150
  3. package/bin/Animation/Easing.d.ts.map +1 -1
  4. package/bin/Animation/Easing.js +151 -151
  5. package/bin/Animation/Easing.js.map +1 -1
  6. package/bin/Animation/Interpolation.d.ts +102 -102
  7. package/bin/Animation/Interpolation.d.ts.map +1 -1
  8. package/bin/Animation/Interpolation.js +104 -104
  9. package/bin/Animation/Interpolation.js.map +1 -1
  10. package/bin/Animation/index.d.ts.map +1 -1
  11. package/bin/Animation/index.js.map +1 -1
  12. package/bin/Circle.d.ts +159 -159
  13. package/bin/Circle.d.ts.map +1 -1
  14. package/bin/Circle.js +159 -159
  15. package/bin/Circle.js.map +1 -1
  16. package/bin/Collision/CollisionDetector.d.ts +64 -64
  17. package/bin/Collision/CollisionDetector.d.ts.map +1 -1
  18. package/bin/Collision/CollisionDetector.js +66 -66
  19. package/bin/Collision/CollisionDetector.js.map +1 -1
  20. package/bin/Color.d.ts +277 -0
  21. package/bin/Color.d.ts.map +1 -0
  22. package/bin/Color.js +470 -0
  23. package/bin/Color.js.map +1 -0
  24. package/bin/Fixed32.d.ts +266 -0
  25. package/bin/Fixed32.d.ts.map +1 -0
  26. package/bin/Fixed32.js +381 -0
  27. package/bin/Fixed32.js.map +1 -0
  28. package/bin/FixedMath.d.ts +109 -0
  29. package/bin/FixedMath.d.ts.map +1 -0
  30. package/bin/FixedMath.js +264 -0
  31. package/bin/FixedMath.js.map +1 -0
  32. package/bin/FixedVector2.d.ts +293 -0
  33. package/bin/FixedVector2.d.ts.map +1 -0
  34. package/bin/FixedVector2.js +413 -0
  35. package/bin/FixedVector2.js.map +1 -0
  36. package/bin/MathUtils.d.ts +205 -205
  37. package/bin/MathUtils.d.ts.map +1 -1
  38. package/bin/MathUtils.js +206 -206
  39. package/bin/MathUtils.js.map +1 -1
  40. package/bin/Matrix3.d.ts +158 -139
  41. package/bin/Matrix3.d.ts.map +1 -1
  42. package/bin/Matrix3.js +179 -151
  43. package/bin/Matrix3.js.map +1 -1
  44. package/bin/Rectangle.d.ts +144 -144
  45. package/bin/Rectangle.d.ts.map +1 -1
  46. package/bin/Rectangle.js +144 -144
  47. package/bin/Rectangle.js.map +1 -1
  48. package/bin/Vector2.d.ts +202 -186
  49. package/bin/Vector2.d.ts.map +1 -1
  50. package/bin/Vector2.js +198 -188
  51. package/bin/Vector2.js.map +1 -1
  52. package/bin/Vector3.d.ts +257 -0
  53. package/bin/Vector3.d.ts.map +1 -0
  54. package/bin/Vector3.js +372 -0
  55. package/bin/Vector3.js.map +1 -0
  56. package/bin/index.d.ts +8 -1
  57. package/bin/index.d.ts.map +1 -1
  58. package/bin/index.js +9 -0
  59. package/bin/index.js.map +1 -1
  60. package/package.json +66 -67
@@ -0,0 +1,109 @@
1
+ import { Fixed32 } from './Fixed32';
2
+ /**
3
+ * @zh 定点数数学函数库,使用查表法确保确定性
4
+ * @en Fixed-point math functions using lookup tables for determinism
5
+ *
6
+ * @zh 所有三角函数使用预计算的查找表,确保在所有平台上结果一致
7
+ * @en All trigonometric functions use precomputed lookup tables to ensure consistent results across all platforms
8
+ */
9
+ export declare class FixedMath {
10
+ /**
11
+ * @zh 正弦表大小(每 90 度的采样点数)
12
+ * @en Sine table size (samples per 90 degrees)
13
+ */
14
+ private static readonly SIN_TABLE_SIZE;
15
+ /**
16
+ * @zh 正弦查找表(0 到 90 度)
17
+ * @en Sine lookup table (0 to 90 degrees)
18
+ */
19
+ private static readonly SIN_TABLE;
20
+ /**
21
+ * @zh 生成正弦查找表
22
+ * @en Generate sine lookup table
23
+ */
24
+ private static generateSinTable;
25
+ /**
26
+ * @zh 正弦函数(确定性)
27
+ * @en Sine function (deterministic)
28
+ * @param angle - @zh 角度(弧度,定点数) @en Angle in radians (fixed-point)
29
+ */
30
+ static sin(angle: Fixed32): Fixed32;
31
+ /**
32
+ * @zh 余弦函数(确定性)
33
+ * @en Cosine function (deterministic)
34
+ * @param angle - @zh 角度(弧度,定点数) @en Angle in radians (fixed-point)
35
+ */
36
+ static cos(angle: Fixed32): Fixed32;
37
+ /**
38
+ * @zh 正切函数(确定性)
39
+ * @en Tangent function (deterministic)
40
+ * @param angle - @zh 角度(弧度,定点数) @en Angle in radians (fixed-point)
41
+ */
42
+ static tan(angle: Fixed32): Fixed32;
43
+ /**
44
+ * @zh 反正切函数 atan2(确定性)
45
+ * @en Arc tangent of y/x (deterministic)
46
+ * @param y - @zh Y 坐标 @en Y coordinate
47
+ * @param x - @zh X 坐标 @en X coordinate
48
+ * @returns @zh 角度(弧度,范围 -π 到 π)@en Angle in radians (range -π to π)
49
+ */
50
+ static atan2(y: Fixed32, x: Fixed32): Fixed32;
51
+ /**
52
+ * @zh atan 近似计算(内部使用)
53
+ * @en Approximate atan calculation (internal use)
54
+ */
55
+ private static atanApprox;
56
+ /**
57
+ * @zh 反正弦函数(确定性)
58
+ * @en Arc sine function (deterministic)
59
+ * @param x - @zh 值(范围 -1 到 1)@en Value (range -1 to 1)
60
+ */
61
+ static asin(x: Fixed32): Fixed32;
62
+ /**
63
+ * @zh 反余弦函数(确定性)
64
+ * @en Arc cosine function (deterministic)
65
+ * @param x - @zh 值(范围 -1 到 1)@en Value (range -1 to 1)
66
+ */
67
+ static acos(x: Fixed32): Fixed32;
68
+ /**
69
+ * @zh 角度规范化到 [-π, π]
70
+ * @en Normalize angle to [-π, π]
71
+ */
72
+ static normalizeAngle(angle: Fixed32): Fixed32;
73
+ /**
74
+ * @zh 角度差值(最短路径)
75
+ * @en Angle difference (shortest path)
76
+ */
77
+ static angleDelta(from: Fixed32, to: Fixed32): Fixed32;
78
+ /**
79
+ * @zh 角度线性插值(最短路径)
80
+ * @en Angle linear interpolation (shortest path)
81
+ */
82
+ static lerpAngle(from: Fixed32, to: Fixed32, t: Fixed32): Fixed32;
83
+ /**
84
+ * @zh 弧度转角度
85
+ * @en Radians to degrees
86
+ */
87
+ static radToDeg(rad: Fixed32): Fixed32;
88
+ /**
89
+ * @zh 角度转弧度
90
+ * @en Degrees to radians
91
+ */
92
+ static degToRad(deg: Fixed32): Fixed32;
93
+ /**
94
+ * @zh 幂函数(整数次幂)
95
+ * @en Power function (integer exponent)
96
+ */
97
+ static pow(base: Fixed32, exp: number): Fixed32;
98
+ /**
99
+ * @zh 指数函数近似(e^x)
100
+ * @en Exponential function approximation (e^x)
101
+ */
102
+ static exp(x: Fixed32): Fixed32;
103
+ /**
104
+ * @zh 自然对数近似
105
+ * @en Natural logarithm approximation
106
+ */
107
+ static ln(x: Fixed32): Fixed32;
108
+ }
109
+ //# sourceMappingURL=FixedMath.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"FixedMath.d.ts","sourceRoot":"","sources":["../src/FixedMath.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAEpC;;;;;;GAMG;AACH,qBAAa,SAAS;IAClB;;;OAGG;IACH,OAAO,CAAC,MAAM,CAAC,QAAQ,CAAC,cAAc,CAAQ;IAE9C;;;OAGG;IACH,OAAO,CAAC,MAAM,CAAC,QAAQ,CAAC,SAAS,CAA4C;IAE7E;;;OAGG;IACH,OAAO,CAAC,MAAM,CAAC,gBAAgB;IAS/B;;;;OAIG;IACH,MAAM,CAAC,GAAG,CAAC,KAAK,EAAE,OAAO,GAAG,OAAO;IAsCnC;;;;OAIG;IACH,MAAM,CAAC,GAAG,CAAC,KAAK,EAAE,OAAO,GAAG,OAAO;IAKnC;;;;OAIG;IACH,MAAM,CAAC,GAAG,CAAC,KAAK,EAAE,OAAO,GAAG,OAAO;IASnC;;;;;;OAMG;IACH,MAAM,CAAC,KAAK,CAAC,CAAC,EAAE,OAAO,EAAE,CAAC,EAAE,OAAO,GAAG,OAAO;IAiC7C;;;OAGG;IACH,OAAO,CAAC,MAAM,CAAC,UAAU;IAgBzB;;;;OAIG;IACH,MAAM,CAAC,IAAI,CAAC,CAAC,EAAE,OAAO,GAAG,OAAO;IAQhC;;;;OAIG;IACH,MAAM,CAAC,IAAI,CAAC,CAAC,EAAE,OAAO,GAAG,OAAO;IAKhC;;;OAGG;IACH,MAAM,CAAC,cAAc,CAAC,KAAK,EAAE,OAAO,GAAG,OAAO;IAY9C;;;OAGG;IACH,MAAM,CAAC,UAAU,CAAC,IAAI,EAAE,OAAO,EAAE,EAAE,EAAE,OAAO,GAAG,OAAO;IAItD;;;OAGG;IACH,MAAM,CAAC,SAAS,CAAC,IAAI,EAAE,OAAO,EAAE,EAAE,EAAE,OAAO,EAAE,CAAC,EAAE,OAAO,GAAG,OAAO;IAKjE;;;OAGG;IACH,MAAM,CAAC,QAAQ,CAAC,GAAG,EAAE,OAAO,GAAG,OAAO;IAItC;;;OAGG;IACH,MAAM,CAAC,QAAQ,CAAC,GAAG,EAAE,OAAO,GAAG,OAAO;IAItC;;;OAGG;IACH,MAAM,CAAC,GAAG,CAAC,IAAI,EAAE,OAAO,EAAE,GAAG,EAAE,MAAM,GAAG,OAAO;IAmB/C;;;OAGG;IACH,MAAM,CAAC,GAAG,CAAC,CAAC,EAAE,OAAO,GAAG,OAAO;IAc/B;;;OAGG;IACH,MAAM,CAAC,EAAE,CAAC,CAAC,EAAE,OAAO,GAAG,OAAO;CAkBjC"}
@@ -0,0 +1,264 @@
1
+ import { Fixed32 } from './Fixed32';
2
+ /**
3
+ * @zh 定点数数学函数库,使用查表法确保确定性
4
+ * @en Fixed-point math functions using lookup tables for determinism
5
+ *
6
+ * @zh 所有三角函数使用预计算的查找表,确保在所有平台上结果一致
7
+ * @en All trigonometric functions use precomputed lookup tables to ensure consistent results across all platforms
8
+ */
9
+ export class FixedMath {
10
+ /**
11
+ * @zh 生成正弦查找表
12
+ * @en Generate sine lookup table
13
+ */
14
+ static generateSinTable() {
15
+ const table = new Int32Array(FixedMath.SIN_TABLE_SIZE + 1);
16
+ for (let i = 0; i <= FixedMath.SIN_TABLE_SIZE; i++) {
17
+ const angle = (i * Math.PI) / (2 * FixedMath.SIN_TABLE_SIZE);
18
+ table[i] = Math.round(Math.sin(angle) * Fixed32.SCALE);
19
+ }
20
+ return table;
21
+ }
22
+ /**
23
+ * @zh 正弦函数(确定性)
24
+ * @en Sine function (deterministic)
25
+ * @param angle - @zh 角度(弧度,定点数) @en Angle in radians (fixed-point)
26
+ */
27
+ static sin(angle) {
28
+ // 将角度规范化到 [0, 2π)
29
+ let raw = angle.raw % Fixed32.TWO_PI.raw;
30
+ if (raw < 0)
31
+ raw += Fixed32.TWO_PI.raw;
32
+ const halfPi = Fixed32.HALF_PI.raw;
33
+ const pi = Fixed32.PI.raw;
34
+ const threeHalfPi = halfPi * 3;
35
+ let tableAngle;
36
+ let negative = false;
37
+ if (raw <= halfPi) {
38
+ // 第一象限: [0, π/2]
39
+ tableAngle = raw;
40
+ }
41
+ else if (raw <= pi) {
42
+ // 第二象限: (π/2, π]
43
+ tableAngle = pi - raw;
44
+ }
45
+ else if (raw <= threeHalfPi) {
46
+ // 第三象限: (π, 3π/2]
47
+ tableAngle = raw - pi;
48
+ negative = true;
49
+ }
50
+ else {
51
+ // 第四象限: (3π/2, 2π)
52
+ tableAngle = Fixed32.TWO_PI.raw - raw;
53
+ negative = true;
54
+ }
55
+ // 计算表索引 (tableAngle 范围是 [0, π/2])
56
+ const tableIndex = Math.min(((tableAngle * FixedMath.SIN_TABLE_SIZE) / halfPi) | 0, FixedMath.SIN_TABLE_SIZE);
57
+ const result = FixedMath.SIN_TABLE[tableIndex];
58
+ return Fixed32.fromRaw(negative ? -result : result);
59
+ }
60
+ /**
61
+ * @zh 余弦函数(确定性)
62
+ * @en Cosine function (deterministic)
63
+ * @param angle - @zh 角度(弧度,定点数) @en Angle in radians (fixed-point)
64
+ */
65
+ static cos(angle) {
66
+ // cos(x) = sin(x + π/2)
67
+ return FixedMath.sin(angle.add(Fixed32.HALF_PI));
68
+ }
69
+ /**
70
+ * @zh 正切函数(确定性)
71
+ * @en Tangent function (deterministic)
72
+ * @param angle - @zh 角度(弧度,定点数) @en Angle in radians (fixed-point)
73
+ */
74
+ static tan(angle) {
75
+ const cosVal = FixedMath.cos(angle);
76
+ if (cosVal.isZero()) {
77
+ // 返回最大值表示无穷大
78
+ return Fixed32.fromRaw(Fixed32.MAX_VALUE);
79
+ }
80
+ return FixedMath.sin(angle).div(cosVal);
81
+ }
82
+ /**
83
+ * @zh 反正切函数 atan2(确定性)
84
+ * @en Arc tangent of y/x (deterministic)
85
+ * @param y - @zh Y 坐标 @en Y coordinate
86
+ * @param x - @zh X 坐标 @en X coordinate
87
+ * @returns @zh 角度(弧度,范围 -π 到 π)@en Angle in radians (range -π to π)
88
+ */
89
+ static atan2(y, x) {
90
+ const yRaw = y.raw;
91
+ const xRaw = x.raw;
92
+ if (xRaw === 0 && yRaw === 0) {
93
+ return Fixed32.ZERO;
94
+ }
95
+ // 使用 CORDIC 算法的简化版本
96
+ const absY = Math.abs(yRaw);
97
+ const absX = Math.abs(xRaw);
98
+ let angle;
99
+ if (absX >= absY) {
100
+ // |y/x| <= 1,使用泰勒展开近似
101
+ angle = FixedMath.atanApprox(absY, absX);
102
+ }
103
+ else {
104
+ // |y/x| > 1,使用恒等式 atan(y/x) = π/2 - atan(x/y)
105
+ angle = Fixed32.HALF_PI.raw - FixedMath.atanApprox(absX, absY);
106
+ }
107
+ // 根据象限调整
108
+ if (xRaw < 0) {
109
+ angle = Fixed32.PI.raw - angle;
110
+ }
111
+ if (yRaw < 0) {
112
+ angle = -angle;
113
+ }
114
+ return Fixed32.fromRaw(angle);
115
+ }
116
+ /**
117
+ * @zh atan 近似计算(内部使用)
118
+ * @en Approximate atan calculation (internal use)
119
+ */
120
+ static atanApprox(num, den) {
121
+ if (den === 0)
122
+ return Fixed32.HALF_PI.raw;
123
+ // 使用多项式近似: atan(x) ≈ x - x³/3 + x⁵/5
124
+ // 对于 |x| <= 1 精度足够
125
+ const ratio = ((num * Fixed32.SCALE) / den) | 0;
126
+ // 简化的多项式: atan(x) ≈ x * (1 - x²/3)
127
+ // 更精确的版本: atan(x) ≈ x / (1 + 0.28125 * x²)
128
+ const x2 = ((ratio * ratio) / Fixed32.SCALE) | 0;
129
+ const factor = Fixed32.SCALE + ((x2 * 18432) / Fixed32.SCALE | 0); // 0.28125 * 65536 ≈ 18432
130
+ const result = ((ratio * Fixed32.SCALE) / factor) | 0;
131
+ return result;
132
+ }
133
+ /**
134
+ * @zh 反正弦函数(确定性)
135
+ * @en Arc sine function (deterministic)
136
+ * @param x - @zh 值(范围 -1 到 1)@en Value (range -1 to 1)
137
+ */
138
+ static asin(x) {
139
+ // asin(x) = atan2(x, sqrt(1 - x²))
140
+ const one = Fixed32.ONE;
141
+ const x2 = x.mul(x);
142
+ const sqrt = Fixed32.sqrt(one.sub(x2));
143
+ return FixedMath.atan2(x, sqrt);
144
+ }
145
+ /**
146
+ * @zh 反余弦函数(确定性)
147
+ * @en Arc cosine function (deterministic)
148
+ * @param x - @zh 值(范围 -1 到 1)@en Value (range -1 to 1)
149
+ */
150
+ static acos(x) {
151
+ // acos(x) = π/2 - asin(x)
152
+ return Fixed32.HALF_PI.sub(FixedMath.asin(x));
153
+ }
154
+ /**
155
+ * @zh 角度规范化到 [-π, π]
156
+ * @en Normalize angle to [-π, π]
157
+ */
158
+ static normalizeAngle(angle) {
159
+ let raw = angle.raw % Fixed32.TWO_PI.raw;
160
+ if (raw > Fixed32.PI.raw) {
161
+ raw -= Fixed32.TWO_PI.raw;
162
+ }
163
+ else if (raw < -Fixed32.PI.raw) {
164
+ raw += Fixed32.TWO_PI.raw;
165
+ }
166
+ return Fixed32.fromRaw(raw);
167
+ }
168
+ /**
169
+ * @zh 角度差值(最短路径)
170
+ * @en Angle difference (shortest path)
171
+ */
172
+ static angleDelta(from, to) {
173
+ return FixedMath.normalizeAngle(to.sub(from));
174
+ }
175
+ /**
176
+ * @zh 角度线性插值(最短路径)
177
+ * @en Angle linear interpolation (shortest path)
178
+ */
179
+ static lerpAngle(from, to, t) {
180
+ const delta = FixedMath.angleDelta(from, to);
181
+ return from.add(delta.mul(t));
182
+ }
183
+ /**
184
+ * @zh 弧度转角度
185
+ * @en Radians to degrees
186
+ */
187
+ static radToDeg(rad) {
188
+ return rad.mul(Fixed32.RAD_TO_DEG);
189
+ }
190
+ /**
191
+ * @zh 角度转弧度
192
+ * @en Degrees to radians
193
+ */
194
+ static degToRad(deg) {
195
+ return deg.mul(Fixed32.DEG_TO_RAD);
196
+ }
197
+ /**
198
+ * @zh 幂函数(整数次幂)
199
+ * @en Power function (integer exponent)
200
+ */
201
+ static pow(base, exp) {
202
+ if (exp === 0)
203
+ return Fixed32.ONE;
204
+ if (exp < 0) {
205
+ base = Fixed32.ONE.div(base);
206
+ exp = -exp;
207
+ }
208
+ let result = Fixed32.ONE;
209
+ while (exp > 0) {
210
+ if (exp & 1) {
211
+ result = result.mul(base);
212
+ }
213
+ base = base.mul(base);
214
+ exp >>= 1;
215
+ }
216
+ return result;
217
+ }
218
+ /**
219
+ * @zh 指数函数近似(e^x)
220
+ * @en Exponential function approximation (e^x)
221
+ */
222
+ static exp(x) {
223
+ // 使用泰勒展开: e^x ≈ 1 + x + x²/2 + x³/6 + x⁴/24
224
+ const one = Fixed32.ONE;
225
+ const x2 = x.mul(x);
226
+ const x3 = x2.mul(x);
227
+ const x4 = x3.mul(x);
228
+ return one
229
+ .add(x)
230
+ .add(x2.div(Fixed32.from(2)))
231
+ .add(x3.div(Fixed32.from(6)))
232
+ .add(x4.div(Fixed32.from(24)));
233
+ }
234
+ /**
235
+ * @zh 自然对数近似
236
+ * @en Natural logarithm approximation
237
+ */
238
+ static ln(x) {
239
+ if (x.raw <= 0) {
240
+ throw new Error('FixedMath.ln: argument must be positive');
241
+ }
242
+ // 使用牛顿迭代法: y_{n+1} = y_n + 2 * (x - exp(y_n)) / (x + exp(y_n))
243
+ let y = Fixed32.ZERO;
244
+ const two = Fixed32.from(2);
245
+ for (let i = 0; i < 10; i++) {
246
+ const expY = FixedMath.exp(y);
247
+ const diff = x.sub(expY);
248
+ const sum = x.add(expY);
249
+ y = y.add(two.mul(diff).div(sum));
250
+ }
251
+ return y;
252
+ }
253
+ }
254
+ /**
255
+ * @zh 正弦表大小(每 90 度的采样点数)
256
+ * @en Sine table size (samples per 90 degrees)
257
+ */
258
+ FixedMath.SIN_TABLE_SIZE = 1024;
259
+ /**
260
+ * @zh 正弦查找表(0 到 90 度)
261
+ * @en Sine lookup table (0 to 90 degrees)
262
+ */
263
+ FixedMath.SIN_TABLE = FixedMath.generateSinTable();
264
+ //# sourceMappingURL=FixedMath.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"FixedMath.js","sourceRoot":"","sources":["../src/FixedMath.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,293 @@
1
+ import { Fixed32, type IFixed32 } from './Fixed32';
2
+ /**
3
+ * @zh 定点数 2D 向量数据接口
4
+ * @en Fixed-point 2D vector data interface
5
+ */
6
+ export interface IFixedVector2 {
7
+ x: IFixed32;
8
+ y: IFixed32;
9
+ }
10
+ /**
11
+ * @zh 定点数 2D 向量类,用于确定性计算(帧同步)
12
+ * @en Fixed-point 2D vector class for deterministic calculations (lockstep)
13
+ *
14
+ * @zh 所有运算返回新实例,保证不可变性
15
+ * @en All operations return new instances, ensuring immutability
16
+ *
17
+ * @example
18
+ * ```typescript
19
+ * const a = FixedVector2.from(3, 4);
20
+ * const b = FixedVector2.from(1, 2);
21
+ * const c = a.add(b); // (4, 6)
22
+ * const len = a.length(); // 5
23
+ * ```
24
+ */
25
+ export declare class FixedVector2 {
26
+ /** @zh X 分量 @en X component */
27
+ readonly x: Fixed32;
28
+ /** @zh Y 分量 @en Y component */
29
+ readonly y: Fixed32;
30
+ /** @zh 零向量 (0, 0) @en Zero vector */
31
+ static readonly ZERO: FixedVector2;
32
+ /** @zh 单位向量 (1, 1) @en One vector */
33
+ static readonly ONE: FixedVector2;
34
+ /** @zh 右方向 (1, 0) @en Right direction */
35
+ static readonly RIGHT: FixedVector2;
36
+ /** @zh 左方向 (-1, 0) @en Left direction */
37
+ static readonly LEFT: FixedVector2;
38
+ /** @zh 上方向 (0, 1) @en Up direction */
39
+ static readonly UP: FixedVector2;
40
+ /** @zh 下方向 (0, -1) @en Down direction */
41
+ static readonly DOWN: FixedVector2;
42
+ /**
43
+ * @zh 创建定点数向量
44
+ * @en Create fixed-point vector
45
+ */
46
+ constructor(x: Fixed32, y: Fixed32);
47
+ /**
48
+ * @zh 从浮点数创建向量
49
+ * @en Create vector from floating-point numbers
50
+ */
51
+ static from(x: number, y: number): FixedVector2;
52
+ /**
53
+ * @zh 从原始整数值创建向量
54
+ * @en Create vector from raw integer values
55
+ */
56
+ static fromRaw(rawX: number, rawY: number): FixedVector2;
57
+ /**
58
+ * @zh 从整数创建向量
59
+ * @en Create vector from integers
60
+ */
61
+ static fromInt(x: number, y: number): FixedVector2;
62
+ /**
63
+ * @zh 从普通向量接口创建
64
+ * @en Create from plain vector interface
65
+ */
66
+ static fromObject(obj: {
67
+ x: number;
68
+ y: number;
69
+ }): FixedVector2;
70
+ /**
71
+ * @zh 转换为浮点数对象(用于渲染)
72
+ * @en Convert to floating-point object (for rendering)
73
+ */
74
+ toObject(): {
75
+ x: number;
76
+ y: number;
77
+ };
78
+ /**
79
+ * @zh 转换为数组
80
+ * @en Convert to array
81
+ */
82
+ toArray(): [number, number];
83
+ /**
84
+ * @zh 获取原始值对象(用于网络传输)
85
+ * @en Get raw values object (for network transmission)
86
+ */
87
+ toRawObject(): {
88
+ x: number;
89
+ y: number;
90
+ };
91
+ /**
92
+ * @zh 转换为字符串
93
+ * @en Convert to string
94
+ */
95
+ toString(): string;
96
+ /**
97
+ * @zh 克隆向量
98
+ * @en Clone vector
99
+ */
100
+ clone(): FixedVector2;
101
+ /**
102
+ * @zh 向量加法
103
+ * @en Vector addition
104
+ */
105
+ add(other: FixedVector2): FixedVector2;
106
+ /**
107
+ * @zh 向量减法
108
+ * @en Vector subtraction
109
+ */
110
+ sub(other: FixedVector2): FixedVector2;
111
+ /**
112
+ * @zh 标量乘法
113
+ * @en Scalar multiplication
114
+ */
115
+ mul(scalar: Fixed32): FixedVector2;
116
+ /**
117
+ * @zh 标量除法
118
+ * @en Scalar division
119
+ */
120
+ div(scalar: Fixed32): FixedVector2;
121
+ /**
122
+ * @zh 分量乘法
123
+ * @en Component-wise multiplication
124
+ */
125
+ mulComponents(other: FixedVector2): FixedVector2;
126
+ /**
127
+ * @zh 分量除法
128
+ * @en Component-wise division
129
+ */
130
+ divComponents(other: FixedVector2): FixedVector2;
131
+ /**
132
+ * @zh 取反
133
+ * @en Negate
134
+ */
135
+ neg(): FixedVector2;
136
+ /**
137
+ * @zh 点积
138
+ * @en Dot product
139
+ */
140
+ dot(other: FixedVector2): Fixed32;
141
+ /**
142
+ * @zh 叉积(2D 返回标量)
143
+ * @en Cross product (returns scalar in 2D)
144
+ */
145
+ cross(other: FixedVector2): Fixed32;
146
+ /**
147
+ * @zh 长度的平方
148
+ * @en Length squared
149
+ */
150
+ lengthSquared(): Fixed32;
151
+ /**
152
+ * @zh 长度(模)
153
+ * @en Length (magnitude)
154
+ */
155
+ length(): Fixed32;
156
+ /**
157
+ * @zh 归一化(转换为单位向量)
158
+ * @en Normalize (convert to unit vector)
159
+ */
160
+ normalize(): FixedVector2;
161
+ /**
162
+ * @zh 到另一个向量的距离平方
163
+ * @en Distance squared to another vector
164
+ */
165
+ distanceSquaredTo(other: FixedVector2): Fixed32;
166
+ /**
167
+ * @zh 到另一个向量的距离
168
+ * @en Distance to another vector
169
+ */
170
+ distanceTo(other: FixedVector2): Fixed32;
171
+ /**
172
+ * @zh 获取垂直向量(顺时针旋转90度)
173
+ * @en Get perpendicular vector (clockwise 90 degrees)
174
+ */
175
+ perpendicular(): FixedVector2;
176
+ /**
177
+ * @zh 获取垂直向量(逆时针旋转90度)
178
+ * @en Get perpendicular vector (counter-clockwise 90 degrees)
179
+ */
180
+ perpendicularCCW(): FixedVector2;
181
+ /**
182
+ * @zh 投影到另一个向量上
183
+ * @en Project onto another vector
184
+ */
185
+ projectOnto(onto: FixedVector2): FixedVector2;
186
+ /**
187
+ * @zh 反射向量(关于法线)
188
+ * @en Reflect vector (about normal)
189
+ */
190
+ reflect(normal: FixedVector2): FixedVector2;
191
+ /**
192
+ * @zh 旋转向量(顺时针为正,左手坐标系)
193
+ * @en Rotate vector (clockwise positive, left-hand coordinate system)
194
+ * @param angle - @zh 旋转角度(弧度)@en Rotation angle in radians
195
+ */
196
+ rotate(angle: Fixed32): FixedVector2;
197
+ /**
198
+ * @zh 围绕一个点旋转
199
+ * @en Rotate around a point
200
+ */
201
+ rotateAround(center: FixedVector2, angle: Fixed32): FixedVector2;
202
+ /**
203
+ * @zh 获取向量角度(弧度)
204
+ * @en Get vector angle in radians
205
+ */
206
+ angle(): Fixed32;
207
+ /**
208
+ * @zh 获取与另一个向量的夹角
209
+ * @en Get angle between this and another vector
210
+ */
211
+ angleTo(other: FixedVector2): Fixed32;
212
+ /**
213
+ * @zh 从极坐标创建向量
214
+ * @en Create vector from polar coordinates
215
+ */
216
+ static fromPolar(length: Fixed32, angle: Fixed32): FixedVector2;
217
+ /**
218
+ * @zh 从角度创建单位向量
219
+ * @en Create unit vector from angle
220
+ */
221
+ static fromAngle(angle: Fixed32): FixedVector2;
222
+ /**
223
+ * @zh 检查是否相等
224
+ * @en Check equality
225
+ */
226
+ equals(other: FixedVector2): boolean;
227
+ /**
228
+ * @zh 检查是否为零向量
229
+ * @en Check if zero vector
230
+ */
231
+ isZero(): boolean;
232
+ /**
233
+ * @zh 限制长度
234
+ * @en Clamp length
235
+ */
236
+ clampLength(maxLength: Fixed32): FixedVector2;
237
+ /**
238
+ * @zh 限制分量范围
239
+ * @en Clamp components
240
+ */
241
+ clamp(min: FixedVector2, max: FixedVector2): FixedVector2;
242
+ /**
243
+ * @zh 线性插值
244
+ * @en Linear interpolation
245
+ */
246
+ lerp(target: FixedVector2, t: Fixed32): FixedVector2;
247
+ /**
248
+ * @zh 向目标移动固定距离
249
+ * @en Move towards target by fixed distance
250
+ */
251
+ moveTowards(target: FixedVector2, maxDistance: Fixed32): FixedVector2;
252
+ /**
253
+ * @zh 向量加法(静态)
254
+ * @en Vector addition (static)
255
+ */
256
+ static add(a: FixedVector2, b: FixedVector2): FixedVector2;
257
+ /**
258
+ * @zh 向量减法(静态)
259
+ * @en Vector subtraction (static)
260
+ */
261
+ static sub(a: FixedVector2, b: FixedVector2): FixedVector2;
262
+ /**
263
+ * @zh 点积(静态)
264
+ * @en Dot product (static)
265
+ */
266
+ static dot(a: FixedVector2, b: FixedVector2): Fixed32;
267
+ /**
268
+ * @zh 叉积(静态)
269
+ * @en Cross product (static)
270
+ */
271
+ static cross(a: FixedVector2, b: FixedVector2): Fixed32;
272
+ /**
273
+ * @zh 距离(静态)
274
+ * @en Distance (static)
275
+ */
276
+ static distance(a: FixedVector2, b: FixedVector2): Fixed32;
277
+ /**
278
+ * @zh 线性插值(静态)
279
+ * @en Linear interpolation (static)
280
+ */
281
+ static lerp(a: FixedVector2, b: FixedVector2, t: Fixed32): FixedVector2;
282
+ /**
283
+ * @zh 获取两个向量的最小分量
284
+ * @en Get minimum components of two vectors
285
+ */
286
+ static min(a: FixedVector2, b: FixedVector2): FixedVector2;
287
+ /**
288
+ * @zh 获取两个向量的最大分量
289
+ * @en Get maximum components of two vectors
290
+ */
291
+ static max(a: FixedVector2, b: FixedVector2): FixedVector2;
292
+ }
293
+ //# sourceMappingURL=FixedVector2.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"FixedVector2.d.ts","sourceRoot":"","sources":["../src/FixedVector2.ts"],"names":[],"mappings":"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"}