@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,413 @@
1
+ import { Fixed32 } from './Fixed32';
2
+ import { FixedMath } from './FixedMath';
3
+ /**
4
+ * @zh 定点数 2D 向量类,用于确定性计算(帧同步)
5
+ * @en Fixed-point 2D vector class for deterministic calculations (lockstep)
6
+ *
7
+ * @zh 所有运算返回新实例,保证不可变性
8
+ * @en All operations return new instances, ensuring immutability
9
+ *
10
+ * @example
11
+ * ```typescript
12
+ * const a = FixedVector2.from(3, 4);
13
+ * const b = FixedVector2.from(1, 2);
14
+ * const c = a.add(b); // (4, 6)
15
+ * const len = a.length(); // 5
16
+ * ```
17
+ */
18
+ export class FixedVector2 {
19
+ // ==================== 构造 ====================
20
+ /**
21
+ * @zh 创建定点数向量
22
+ * @en Create fixed-point vector
23
+ */
24
+ constructor(x, y) {
25
+ this.x = x;
26
+ this.y = y;
27
+ }
28
+ /**
29
+ * @zh 从浮点数创建向量
30
+ * @en Create vector from floating-point numbers
31
+ */
32
+ static from(x, y) {
33
+ return new FixedVector2(Fixed32.from(x), Fixed32.from(y));
34
+ }
35
+ /**
36
+ * @zh 从原始整数值创建向量
37
+ * @en Create vector from raw integer values
38
+ */
39
+ static fromRaw(rawX, rawY) {
40
+ return new FixedVector2(Fixed32.fromRaw(rawX), Fixed32.fromRaw(rawY));
41
+ }
42
+ /**
43
+ * @zh 从整数创建向量
44
+ * @en Create vector from integers
45
+ */
46
+ static fromInt(x, y) {
47
+ return new FixedVector2(Fixed32.fromInt(x), Fixed32.fromInt(y));
48
+ }
49
+ /**
50
+ * @zh 从普通向量接口创建
51
+ * @en Create from plain vector interface
52
+ */
53
+ static fromObject(obj) {
54
+ return FixedVector2.from(obj.x, obj.y);
55
+ }
56
+ // ==================== 转换 ====================
57
+ /**
58
+ * @zh 转换为浮点数对象(用于渲染)
59
+ * @en Convert to floating-point object (for rendering)
60
+ */
61
+ toObject() {
62
+ return {
63
+ x: this.x.toNumber(),
64
+ y: this.y.toNumber()
65
+ };
66
+ }
67
+ /**
68
+ * @zh 转换为数组
69
+ * @en Convert to array
70
+ */
71
+ toArray() {
72
+ return [this.x.toNumber(), this.y.toNumber()];
73
+ }
74
+ /**
75
+ * @zh 获取原始值对象(用于网络传输)
76
+ * @en Get raw values object (for network transmission)
77
+ */
78
+ toRawObject() {
79
+ return {
80
+ x: this.x.toRaw(),
81
+ y: this.y.toRaw()
82
+ };
83
+ }
84
+ /**
85
+ * @zh 转换为字符串
86
+ * @en Convert to string
87
+ */
88
+ toString() {
89
+ return `FixedVector2(${this.x.toNumber().toFixed(3)}, ${this.y.toNumber().toFixed(3)})`;
90
+ }
91
+ /**
92
+ * @zh 克隆向量
93
+ * @en Clone vector
94
+ */
95
+ clone() {
96
+ return new FixedVector2(this.x, this.y);
97
+ }
98
+ // ==================== 基础运算 ====================
99
+ /**
100
+ * @zh 向量加法
101
+ * @en Vector addition
102
+ */
103
+ add(other) {
104
+ return new FixedVector2(this.x.add(other.x), this.y.add(other.y));
105
+ }
106
+ /**
107
+ * @zh 向量减法
108
+ * @en Vector subtraction
109
+ */
110
+ sub(other) {
111
+ return new FixedVector2(this.x.sub(other.x), this.y.sub(other.y));
112
+ }
113
+ /**
114
+ * @zh 标量乘法
115
+ * @en Scalar multiplication
116
+ */
117
+ mul(scalar) {
118
+ return new FixedVector2(this.x.mul(scalar), this.y.mul(scalar));
119
+ }
120
+ /**
121
+ * @zh 标量除法
122
+ * @en Scalar division
123
+ */
124
+ div(scalar) {
125
+ return new FixedVector2(this.x.div(scalar), this.y.div(scalar));
126
+ }
127
+ /**
128
+ * @zh 分量乘法
129
+ * @en Component-wise multiplication
130
+ */
131
+ mulComponents(other) {
132
+ return new FixedVector2(this.x.mul(other.x), this.y.mul(other.y));
133
+ }
134
+ /**
135
+ * @zh 分量除法
136
+ * @en Component-wise division
137
+ */
138
+ divComponents(other) {
139
+ return new FixedVector2(this.x.div(other.x), this.y.div(other.y));
140
+ }
141
+ /**
142
+ * @zh 取反
143
+ * @en Negate
144
+ */
145
+ neg() {
146
+ return new FixedVector2(this.x.neg(), this.y.neg());
147
+ }
148
+ // ==================== 向量运算 ====================
149
+ /**
150
+ * @zh 点积
151
+ * @en Dot product
152
+ */
153
+ dot(other) {
154
+ return this.x.mul(other.x).add(this.y.mul(other.y));
155
+ }
156
+ /**
157
+ * @zh 叉积(2D 返回标量)
158
+ * @en Cross product (returns scalar in 2D)
159
+ */
160
+ cross(other) {
161
+ return this.x.mul(other.y).sub(this.y.mul(other.x));
162
+ }
163
+ /**
164
+ * @zh 长度的平方
165
+ * @en Length squared
166
+ */
167
+ lengthSquared() {
168
+ return this.dot(this);
169
+ }
170
+ /**
171
+ * @zh 长度(模)
172
+ * @en Length (magnitude)
173
+ */
174
+ length() {
175
+ return Fixed32.sqrt(this.lengthSquared());
176
+ }
177
+ /**
178
+ * @zh 归一化(转换为单位向量)
179
+ * @en Normalize (convert to unit vector)
180
+ */
181
+ normalize() {
182
+ const len = this.length();
183
+ if (len.isZero()) {
184
+ return FixedVector2.ZERO;
185
+ }
186
+ return this.div(len);
187
+ }
188
+ /**
189
+ * @zh 到另一个向量的距离平方
190
+ * @en Distance squared to another vector
191
+ */
192
+ distanceSquaredTo(other) {
193
+ const dx = this.x.sub(other.x);
194
+ const dy = this.y.sub(other.y);
195
+ return dx.mul(dx).add(dy.mul(dy));
196
+ }
197
+ /**
198
+ * @zh 到另一个向量的距离
199
+ * @en Distance to another vector
200
+ */
201
+ distanceTo(other) {
202
+ return Fixed32.sqrt(this.distanceSquaredTo(other));
203
+ }
204
+ /**
205
+ * @zh 获取垂直向量(顺时针旋转90度)
206
+ * @en Get perpendicular vector (clockwise 90 degrees)
207
+ */
208
+ perpendicular() {
209
+ return new FixedVector2(this.y, this.x.neg());
210
+ }
211
+ /**
212
+ * @zh 获取垂直向量(逆时针旋转90度)
213
+ * @en Get perpendicular vector (counter-clockwise 90 degrees)
214
+ */
215
+ perpendicularCCW() {
216
+ return new FixedVector2(this.y.neg(), this.x);
217
+ }
218
+ /**
219
+ * @zh 投影到另一个向量上
220
+ * @en Project onto another vector
221
+ */
222
+ projectOnto(onto) {
223
+ const dot = this.dot(onto);
224
+ const lenSq = onto.lengthSquared();
225
+ if (lenSq.isZero()) {
226
+ return FixedVector2.ZERO;
227
+ }
228
+ return onto.mul(dot.div(lenSq));
229
+ }
230
+ /**
231
+ * @zh 反射向量(关于法线)
232
+ * @en Reflect vector (about normal)
233
+ */
234
+ reflect(normal) {
235
+ const dot = this.dot(normal);
236
+ const two = Fixed32.from(2);
237
+ return this.sub(normal.mul(two.mul(dot)));
238
+ }
239
+ // ==================== 旋转和角度 ====================
240
+ /**
241
+ * @zh 旋转向量(顺时针为正,左手坐标系)
242
+ * @en Rotate vector (clockwise positive, left-hand coordinate system)
243
+ * @param angle - @zh 旋转角度(弧度)@en Rotation angle in radians
244
+ */
245
+ rotate(angle) {
246
+ const cos = FixedMath.cos(angle);
247
+ const sin = FixedMath.sin(angle);
248
+ // 顺时针旋转: x' = x*cos + y*sin, y' = -x*sin + y*cos
249
+ return new FixedVector2(this.x.mul(cos).add(this.y.mul(sin)), this.x.neg().mul(sin).add(this.y.mul(cos)));
250
+ }
251
+ /**
252
+ * @zh 围绕一个点旋转
253
+ * @en Rotate around a point
254
+ */
255
+ rotateAround(center, angle) {
256
+ return this.sub(center).rotate(angle).add(center);
257
+ }
258
+ /**
259
+ * @zh 获取向量角度(弧度)
260
+ * @en Get vector angle in radians
261
+ */
262
+ angle() {
263
+ return FixedMath.atan2(this.y, this.x);
264
+ }
265
+ /**
266
+ * @zh 获取与另一个向量的夹角
267
+ * @en Get angle between this and another vector
268
+ */
269
+ angleTo(other) {
270
+ const cross = this.cross(other);
271
+ const dot = this.dot(other);
272
+ return FixedMath.atan2(cross, dot);
273
+ }
274
+ /**
275
+ * @zh 从极坐标创建向量
276
+ * @en Create vector from polar coordinates
277
+ */
278
+ static fromPolar(length, angle) {
279
+ return new FixedVector2(length.mul(FixedMath.cos(angle)), length.mul(FixedMath.sin(angle)));
280
+ }
281
+ /**
282
+ * @zh 从角度创建单位向量
283
+ * @en Create unit vector from angle
284
+ */
285
+ static fromAngle(angle) {
286
+ return new FixedVector2(FixedMath.cos(angle), FixedMath.sin(angle));
287
+ }
288
+ // ==================== 比较运算 ====================
289
+ /**
290
+ * @zh 检查是否相等
291
+ * @en Check equality
292
+ */
293
+ equals(other) {
294
+ return this.x.eq(other.x) && this.y.eq(other.y);
295
+ }
296
+ /**
297
+ * @zh 检查是否为零向量
298
+ * @en Check if zero vector
299
+ */
300
+ isZero() {
301
+ return this.x.isZero() && this.y.isZero();
302
+ }
303
+ // ==================== 限制和插值 ====================
304
+ /**
305
+ * @zh 限制长度
306
+ * @en Clamp length
307
+ */
308
+ clampLength(maxLength) {
309
+ const lenSq = this.lengthSquared();
310
+ const maxLenSq = maxLength.mul(maxLength);
311
+ if (lenSq.gt(maxLenSq)) {
312
+ return this.normalize().mul(maxLength);
313
+ }
314
+ return this;
315
+ }
316
+ /**
317
+ * @zh 限制分量范围
318
+ * @en Clamp components
319
+ */
320
+ clamp(min, max) {
321
+ return new FixedVector2(Fixed32.clamp(this.x, min.x, max.x), Fixed32.clamp(this.y, min.y, max.y));
322
+ }
323
+ /**
324
+ * @zh 线性插值
325
+ * @en Linear interpolation
326
+ */
327
+ lerp(target, t) {
328
+ return new FixedVector2(Fixed32.lerp(this.x, target.x, t), Fixed32.lerp(this.y, target.y, t));
329
+ }
330
+ /**
331
+ * @zh 向目标移动固定距离
332
+ * @en Move towards target by fixed distance
333
+ */
334
+ moveTowards(target, maxDistance) {
335
+ const diff = target.sub(this);
336
+ const dist = diff.length();
337
+ if (dist.isZero() || dist.le(maxDistance)) {
338
+ return target;
339
+ }
340
+ return this.add(diff.div(dist).mul(maxDistance));
341
+ }
342
+ // ==================== 静态方法 ====================
343
+ /**
344
+ * @zh 向量加法(静态)
345
+ * @en Vector addition (static)
346
+ */
347
+ static add(a, b) {
348
+ return a.add(b);
349
+ }
350
+ /**
351
+ * @zh 向量减法(静态)
352
+ * @en Vector subtraction (static)
353
+ */
354
+ static sub(a, b) {
355
+ return a.sub(b);
356
+ }
357
+ /**
358
+ * @zh 点积(静态)
359
+ * @en Dot product (static)
360
+ */
361
+ static dot(a, b) {
362
+ return a.dot(b);
363
+ }
364
+ /**
365
+ * @zh 叉积(静态)
366
+ * @en Cross product (static)
367
+ */
368
+ static cross(a, b) {
369
+ return a.cross(b);
370
+ }
371
+ /**
372
+ * @zh 距离(静态)
373
+ * @en Distance (static)
374
+ */
375
+ static distance(a, b) {
376
+ return a.distanceTo(b);
377
+ }
378
+ /**
379
+ * @zh 线性插值(静态)
380
+ * @en Linear interpolation (static)
381
+ */
382
+ static lerp(a, b, t) {
383
+ return a.lerp(b, t);
384
+ }
385
+ /**
386
+ * @zh 获取两个向量的最小分量
387
+ * @en Get minimum components of two vectors
388
+ */
389
+ static min(a, b) {
390
+ return new FixedVector2(Fixed32.min(a.x, b.x), Fixed32.min(a.y, b.y));
391
+ }
392
+ /**
393
+ * @zh 获取两个向量的最大分量
394
+ * @en Get maximum components of two vectors
395
+ */
396
+ static max(a, b) {
397
+ return new FixedVector2(Fixed32.max(a.x, b.x), Fixed32.max(a.y, b.y));
398
+ }
399
+ }
400
+ // ==================== 常量 ====================
401
+ /** @zh 零向量 (0, 0) @en Zero vector */
402
+ FixedVector2.ZERO = new FixedVector2(Fixed32.ZERO, Fixed32.ZERO);
403
+ /** @zh 单位向量 (1, 1) @en One vector */
404
+ FixedVector2.ONE = new FixedVector2(Fixed32.ONE, Fixed32.ONE);
405
+ /** @zh 右方向 (1, 0) @en Right direction */
406
+ FixedVector2.RIGHT = new FixedVector2(Fixed32.ONE, Fixed32.ZERO);
407
+ /** @zh 左方向 (-1, 0) @en Left direction */
408
+ FixedVector2.LEFT = new FixedVector2(Fixed32.NEG_ONE, Fixed32.ZERO);
409
+ /** @zh 上方向 (0, 1) @en Up direction */
410
+ FixedVector2.UP = new FixedVector2(Fixed32.ZERO, Fixed32.ONE);
411
+ /** @zh 下方向 (0, -1) @en Down direction */
412
+ FixedVector2.DOWN = new FixedVector2(Fixed32.ZERO, Fixed32.NEG_ONE);
413
+ //# sourceMappingURL=FixedVector2.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"FixedVector2.js","sourceRoot":"","sources":["../src/FixedVector2.ts"],"names":[],"mappings":"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"}