@esengine/ecs-framework-math 2.10.1 → 2.11.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 (92) hide show
  1. package/dist/index.cjs +2 -0
  2. package/dist/index.cjs.map +1 -0
  3. package/dist/index.d.ts +10420 -0
  4. package/dist/index.mjs +2 -0
  5. package/dist/index.mjs.map +1 -0
  6. package/dist/index.umd.js +2 -0
  7. package/dist/index.umd.js.map +1 -0
  8. package/package.json +20 -11
  9. package/bin/Animation/Easing.d.ts +0 -244
  10. package/bin/Animation/Easing.d.ts.map +0 -1
  11. package/bin/Animation/Easing.js +0 -407
  12. package/bin/Animation/Easing.js.map +0 -1
  13. package/bin/Animation/Interpolation.d.ts +0 -172
  14. package/bin/Animation/Interpolation.d.ts.map +0 -1
  15. package/bin/Animation/Interpolation.js +0 -327
  16. package/bin/Animation/Interpolation.js.map +0 -1
  17. package/bin/Animation/index.d.ts +0 -8
  18. package/bin/Animation/index.d.ts.map +0 -1
  19. package/bin/Animation/index.js +0 -8
  20. package/bin/Animation/index.js.map +0 -1
  21. package/bin/Circle.d.ts +0 -277
  22. package/bin/Circle.d.ts.map +0 -1
  23. package/bin/Circle.js +0 -496
  24. package/bin/Circle.js.map +0 -1
  25. package/bin/Collision/CollisionDetector.d.ts +0 -114
  26. package/bin/Collision/CollisionDetector.d.ts.map +0 -1
  27. package/bin/Collision/CollisionDetector.js +0 -353
  28. package/bin/Collision/CollisionDetector.js.map +0 -1
  29. package/bin/Collision/index.d.ts +0 -7
  30. package/bin/Collision/index.d.ts.map +0 -1
  31. package/bin/Collision/index.js +0 -7
  32. package/bin/Collision/index.js.map +0 -1
  33. package/bin/Color.d.ts +0 -277
  34. package/bin/Color.d.ts.map +0 -1
  35. package/bin/Color.js +0 -470
  36. package/bin/Color.js.map +0 -1
  37. package/bin/Fixed32.d.ts +0 -266
  38. package/bin/Fixed32.d.ts.map +0 -1
  39. package/bin/Fixed32.js +0 -381
  40. package/bin/Fixed32.js.map +0 -1
  41. package/bin/FixedMath.d.ts +0 -109
  42. package/bin/FixedMath.d.ts.map +0 -1
  43. package/bin/FixedMath.js +0 -264
  44. package/bin/FixedMath.js.map +0 -1
  45. package/bin/FixedVector2.d.ts +0 -293
  46. package/bin/FixedVector2.d.ts.map +0 -1
  47. package/bin/FixedVector2.js +0 -413
  48. package/bin/FixedVector2.js.map +0 -1
  49. package/bin/MathUtils.d.ts +0 -312
  50. package/bin/MathUtils.d.ts.map +0 -1
  51. package/bin/MathUtils.js +0 -500
  52. package/bin/MathUtils.js.map +0 -1
  53. package/bin/Matrix3.d.ts +0 -288
  54. package/bin/Matrix3.d.ts.map +0 -1
  55. package/bin/Matrix3.js +0 -542
  56. package/bin/Matrix3.js.map +0 -1
  57. package/bin/Rectangle.d.ts +0 -266
  58. package/bin/Rectangle.d.ts.map +0 -1
  59. package/bin/Rectangle.js +0 -437
  60. package/bin/Rectangle.js.map +0 -1
  61. package/bin/Vector2.d.ts +0 -333
  62. package/bin/Vector2.d.ts.map +0 -1
  63. package/bin/Vector2.js +0 -484
  64. package/bin/Vector2.js.map +0 -1
  65. package/bin/Vector3.d.ts +0 -257
  66. package/bin/Vector3.d.ts.map +0 -1
  67. package/bin/Vector3.js +0 -372
  68. package/bin/Vector3.js.map +0 -1
  69. package/bin/index.d.ts +0 -25
  70. package/bin/index.d.ts.map +0 -1
  71. package/bin/index.js +0 -32
  72. package/bin/index.js.map +0 -1
  73. package/bin/nodes/ColorNodes.d.ts +0 -70
  74. package/bin/nodes/ColorNodes.d.ts.map +0 -1
  75. package/bin/nodes/ColorNodes.js +0 -427
  76. package/bin/nodes/ColorNodes.js.map +0 -1
  77. package/bin/nodes/FixedNodes.d.ts +0 -98
  78. package/bin/nodes/FixedNodes.d.ts.map +0 -1
  79. package/bin/nodes/FixedNodes.js +0 -612
  80. package/bin/nodes/FixedNodes.js.map +0 -1
  81. package/bin/nodes/FixedVectorNodes.d.ts +0 -58
  82. package/bin/nodes/FixedVectorNodes.d.ts.map +0 -1
  83. package/bin/nodes/FixedVectorNodes.js +0 -330
  84. package/bin/nodes/FixedVectorNodes.js.map +0 -1
  85. package/bin/nodes/VectorNodes.d.ts +0 -62
  86. package/bin/nodes/VectorNodes.d.ts.map +0 -1
  87. package/bin/nodes/VectorNodes.js +0 -355
  88. package/bin/nodes/VectorNodes.js.map +0 -1
  89. package/bin/nodes/index.d.ts +0 -20
  90. package/bin/nodes/index.d.ts.map +0 -1
  91. package/bin/nodes/index.js +0 -27
  92. package/bin/nodes/index.js.map +0 -1
package/bin/Vector2.js DELETED
@@ -1,484 +0,0 @@
1
- /**
2
- * 2D向量类
3
- *
4
- * 提供完整的2D向量运算功能,包括:
5
- * - 基础运算(加减乘除)
6
- * - 向量运算(点积、叉积、归一化)
7
- * - 几何运算(距离、角度、投影)
8
- * - 变换操作(旋转、反射、插值)
9
- */
10
- export class Vector2 {
11
- /**
12
- * 创建2D向量
13
- * @param x X分量,默认为0
14
- * @param y Y分量,默认为0
15
- */
16
- constructor(x = 0, y = 0) {
17
- this.x = x;
18
- this.y = y;
19
- }
20
- // 基础属性
21
- /**
22
- * 获取向量长度(模)
23
- */
24
- get length() {
25
- return Math.sqrt(this.x * this.x + this.y * this.y);
26
- }
27
- /**
28
- * 获取向量长度的平方
29
- */
30
- get lengthSquared() {
31
- return this.x * this.x + this.y * this.y;
32
- }
33
- /**
34
- * 获取向量角度(弧度)
35
- */
36
- get angle() {
37
- return Math.atan2(this.y, this.x);
38
- }
39
- /**
40
- * 检查是否为零向量
41
- */
42
- get isZero() {
43
- return this.x === 0 && this.y === 0;
44
- }
45
- /**
46
- * 检查是否为单位向量
47
- */
48
- get isUnit() {
49
- const lenSq = this.lengthSquared;
50
- return Math.abs(lenSq - 1) < Number.EPSILON;
51
- }
52
- // 基础运算
53
- /**
54
- * 设置向量分量
55
- * @param x X分量
56
- * @param y Y分量
57
- * @returns 当前向量实例(链式调用)
58
- */
59
- set(x, y) {
60
- this.x = x;
61
- this.y = y;
62
- return this;
63
- }
64
- /**
65
- * 复制另一个向量的值
66
- * @param other 源向量
67
- * @returns 当前向量实例(链式调用)
68
- */
69
- copy(other) {
70
- this.x = other.x;
71
- this.y = other.y;
72
- return this;
73
- }
74
- /**
75
- * 克隆当前向量
76
- * @returns 新的向量实例
77
- */
78
- clone() {
79
- return new Vector2(this.x, this.y);
80
- }
81
- /**
82
- * 向量加法
83
- * @param other 另一个向量
84
- * @returns 当前向量实例(链式调用)
85
- */
86
- add(other) {
87
- this.x += other.x;
88
- this.y += other.y;
89
- return this;
90
- }
91
- /**
92
- * 向量减法
93
- * @param other 另一个向量
94
- * @returns 当前向量实例(链式调用)
95
- */
96
- subtract(other) {
97
- this.x -= other.x;
98
- this.y -= other.y;
99
- return this;
100
- }
101
- /**
102
- * 向量数乘
103
- * @param scalar 标量
104
- * @returns 当前向量实例(链式调用)
105
- */
106
- multiply(scalar) {
107
- this.x *= scalar;
108
- this.y *= scalar;
109
- return this;
110
- }
111
- /**
112
- * 向量数除
113
- * @param scalar 标量
114
- * @returns 当前向量实例(链式调用)
115
- */
116
- divide(scalar) {
117
- if (scalar === 0) {
118
- throw new Error('不能除以零');
119
- }
120
- this.x /= scalar;
121
- this.y /= scalar;
122
- return this;
123
- }
124
- /**
125
- * 向量取反
126
- * @returns 当前向量实例(链式调用)
127
- */
128
- negate() {
129
- this.x = -this.x;
130
- this.y = -this.y;
131
- return this;
132
- }
133
- // 向量运算
134
- /**
135
- * 计算与另一个向量的点积
136
- * @param other 另一个向量
137
- * @returns 点积值
138
- */
139
- dot(other) {
140
- return this.x * other.x + this.y * other.y;
141
- }
142
- /**
143
- * 计算与另一个向量的叉积(2D中返回标量)
144
- * @param other 另一个向量
145
- * @returns 叉积值
146
- */
147
- cross(other) {
148
- return this.x * other.y - this.y * other.x;
149
- }
150
- /**
151
- * 向量归一化(转换为单位向量)
152
- * @returns 当前向量实例(链式调用)
153
- */
154
- normalize() {
155
- const len = this.length;
156
- if (len === 0) {
157
- return this;
158
- }
159
- return this.divide(len);
160
- }
161
- /**
162
- * 获取归一化后的向量(不修改原向量)
163
- * @returns 新的单位向量
164
- */
165
- normalized() {
166
- return this.clone().normalize();
167
- }
168
- // 几何运算
169
- /**
170
- * 计算到另一个向量的距离
171
- * @param other 另一个向量
172
- * @returns 距离值
173
- */
174
- distanceTo(other) {
175
- const dx = this.x - other.x;
176
- const dy = this.y - other.y;
177
- return Math.sqrt(dx * dx + dy * dy);
178
- }
179
- /**
180
- * 计算到另一个向量的距离平方
181
- * @param other 另一个向量
182
- * @returns 距离平方值
183
- */
184
- distanceToSquared(other) {
185
- const dx = this.x - other.x;
186
- const dy = this.y - other.y;
187
- return dx * dx + dy * dy;
188
- }
189
- /**
190
- * 计算与另一个向量的夹角(弧度)
191
- * @param other 另一个向量
192
- * @returns 夹角(0到π)
193
- */
194
- angleTo(other) {
195
- const dot = this.dot(other);
196
- const lenProduct = this.length * other.length;
197
- if (lenProduct === 0)
198
- return 0;
199
- return Math.acos(Math.max(-1, Math.min(1, dot / lenProduct)));
200
- }
201
- /**
202
- * 计算向量在另一个向量上的投影
203
- * @param onto 投影目标向量
204
- * @returns 新的投影向量
205
- */
206
- projectOnto(onto) {
207
- const dot = this.dot(onto);
208
- const lenSq = onto.lengthSquared;
209
- if (lenSq === 0)
210
- return new Vector2();
211
- return onto.clone().multiply(dot / lenSq);
212
- }
213
- /**
214
- * 计算向量在另一个向量上的投影长度
215
- * @param onto 投影目标向量
216
- * @returns 投影长度(带符号)
217
- */
218
- projectOntoLength(onto) {
219
- const len = onto.length;
220
- if (len === 0)
221
- return 0;
222
- return this.dot(onto) / len;
223
- }
224
- /**
225
- * 获取垂直向量(顺时针旋转90度)
226
- * Get perpendicular vector (clockwise 90 degrees)
227
- * @returns 新的垂直向量
228
- */
229
- perpendicular() {
230
- // Clockwise 90° rotation: (x, y) -> (y, -x)
231
- // 顺时针旋转 90°
232
- return new Vector2(this.y, -this.x);
233
- }
234
- // 变换操作
235
- /**
236
- * 向量旋转(顺时针为正)
237
- * Rotate vector (clockwise positive)
238
- *
239
- * 使用左手坐标系约定:正角度 = 顺时针旋转
240
- * Uses left-hand coordinate system: positive angle = clockwise
241
- *
242
- * @param angle 旋转角度(弧度)
243
- * @returns 当前向量实例(链式调用)
244
- */
245
- rotate(angle) {
246
- const cos = Math.cos(angle);
247
- const sin = Math.sin(angle);
248
- // Clockwise rotation: x' = x*cos + y*sin, y' = -x*sin + y*cos
249
- // 顺时针旋转公式
250
- const x = this.x * cos + this.y * sin;
251
- const y = -this.x * sin + this.y * cos;
252
- this.x = x;
253
- this.y = y;
254
- return this;
255
- }
256
- /**
257
- * 获取旋转后的向量(不修改原向量)
258
- * @param angle 旋转角度(弧度)
259
- * @returns 新的旋转后向量
260
- */
261
- rotated(angle) {
262
- return this.clone().rotate(angle);
263
- }
264
- /**
265
- * 围绕一个点旋转
266
- * @param center 旋转中心点
267
- * @param angle 旋转角度(弧度)
268
- * @returns 当前向量实例(链式调用)
269
- */
270
- rotateAround(center, angle) {
271
- return this.subtract(center).rotate(angle).add(center);
272
- }
273
- /**
274
- * 反射向量(关于法线)
275
- * @param normal 法线向量(应为单位向量)
276
- * @returns 当前向量实例(链式调用)
277
- */
278
- reflect(normal) {
279
- const dot = this.dot(normal);
280
- this.x -= 2 * dot * normal.x;
281
- this.y -= 2 * dot * normal.y;
282
- return this;
283
- }
284
- /**
285
- * 获取反射后的向量(不修改原向量)
286
- * @param normal 法线向量(应为单位向量)
287
- * @returns 新的反射向量
288
- */
289
- reflected(normal) {
290
- return this.clone().reflect(normal);
291
- }
292
- // 插值和限制
293
- /**
294
- * 线性插值
295
- * @param target 目标向量
296
- * @param t 插值参数(0到1)
297
- * @returns 当前向量实例(链式调用)
298
- */
299
- lerp(target, t) {
300
- this.x += (target.x - this.x) * t;
301
- this.y += (target.y - this.y) * t;
302
- return this;
303
- }
304
- /**
305
- * 限制向量长度
306
- * @param maxLength 最大长度
307
- * @returns 当前向量实例(链式调用)
308
- */
309
- clampLength(maxLength) {
310
- const lenSq = this.lengthSquared;
311
- if (lenSq > maxLength * maxLength) {
312
- return this.normalize().multiply(maxLength);
313
- }
314
- return this;
315
- }
316
- /**
317
- * 限制向量分量
318
- * @param min 最小值向量
319
- * @param max 最大值向量
320
- * @returns 当前向量实例(链式调用)
321
- */
322
- clamp(min, max) {
323
- this.x = Math.max(min.x, Math.min(max.x, this.x));
324
- this.y = Math.max(min.y, Math.min(max.y, this.y));
325
- return this;
326
- }
327
- // 比较操作
328
- /**
329
- * 检查两个向量是否相等
330
- * @param other 另一个向量
331
- * @param epsilon 容差,默认为Number.EPSILON
332
- * @returns 是否相等
333
- */
334
- equals(other, epsilon = Number.EPSILON) {
335
- return Math.abs(this.x - other.x) < epsilon &&
336
- Math.abs(this.y - other.y) < epsilon;
337
- }
338
- /**
339
- * 检查两个向量是否完全相等
340
- * @param other 另一个向量
341
- * @returns 是否完全相等
342
- */
343
- exactEquals(other) {
344
- return this.x === other.x && this.y === other.y;
345
- }
346
- // 静态方法
347
- /**
348
- * 向量加法(静态方法)
349
- * @param a 向量a
350
- * @param b 向量b
351
- * @returns 新的结果向量
352
- */
353
- static add(a, b) {
354
- return new Vector2(a.x + b.x, a.y + b.y);
355
- }
356
- /**
357
- * 向量减法(静态方法)
358
- * @param a 向量a
359
- * @param b 向量b
360
- * @returns 新的结果向量
361
- */
362
- static subtract(a, b) {
363
- return new Vector2(a.x - b.x, a.y - b.y);
364
- }
365
- /**
366
- * 向量数乘(静态方法)
367
- * @param vector 向量
368
- * @param scalar 标量
369
- * @returns 新的结果向量
370
- */
371
- static multiply(vector, scalar) {
372
- return new Vector2(vector.x * scalar, vector.y * scalar);
373
- }
374
- /**
375
- * 向量点积(静态方法)
376
- * @param a 向量a
377
- * @param b 向量b
378
- * @returns 点积值
379
- */
380
- static dot(a, b) {
381
- return a.x * b.x + a.y * b.y;
382
- }
383
- /**
384
- * 向量叉积(静态方法)
385
- * @param a 向量a
386
- * @param b 向量b
387
- * @returns 叉积值
388
- */
389
- static cross(a, b) {
390
- return a.x * b.y - a.y * b.x;
391
- }
392
- /**
393
- * 计算两点间距离(静态方法)
394
- * @param a 点a
395
- * @param b 点b
396
- * @returns 距离值
397
- */
398
- static distance(a, b) {
399
- const dx = a.x - b.x;
400
- const dy = a.y - b.y;
401
- return Math.sqrt(dx * dx + dy * dy);
402
- }
403
- /**
404
- * 线性插值(静态方法)
405
- * @param a 起始向量
406
- * @param b 目标向量
407
- * @param t 插值参数(0到1)
408
- * @returns 新的插值结果向量
409
- */
410
- static lerp(a, b, t) {
411
- return new Vector2(a.x + (b.x - a.x) * t, a.y + (b.y - a.y) * t);
412
- }
413
- /**
414
- * 从角度创建单位向量(静态方法)
415
- * @param angle 角度(弧度)
416
- * @returns 新的单位向量
417
- */
418
- static fromAngle(angle) {
419
- return new Vector2(Math.cos(angle), Math.sin(angle));
420
- }
421
- /**
422
- * 从极坐标创建向量(静态方法)
423
- * @param length 长度
424
- * @param angle 角度(弧度)
425
- * @returns 新的向量
426
- */
427
- static fromPolar(length, angle) {
428
- return new Vector2(length * Math.cos(angle), length * Math.sin(angle));
429
- }
430
- /**
431
- * 获取两个向量中的最小分量向量(静态方法)
432
- * @param a 向量a
433
- * @param b 向量b
434
- * @returns 新的最小分量向量
435
- */
436
- static min(a, b) {
437
- return new Vector2(Math.min(a.x, b.x), Math.min(a.y, b.y));
438
- }
439
- /**
440
- * 获取两个向量中的最大分量向量(静态方法)
441
- * @param a 向量a
442
- * @param b 向量b
443
- * @returns 新的最大分量向量
444
- */
445
- static max(a, b) {
446
- return new Vector2(Math.max(a.x, b.x), Math.max(a.y, b.y));
447
- }
448
- // 字符串转换
449
- /**
450
- * 转换为字符串
451
- * @returns 字符串表示
452
- */
453
- toString() {
454
- return `Vector2(${this.x.toFixed(3)}, ${this.y.toFixed(3)})`;
455
- }
456
- /**
457
- * 转换为数组
458
- * @returns [x, y] 数组
459
- */
460
- toArray() {
461
- return [this.x, this.y];
462
- }
463
- /**
464
- * 转换为普通对象
465
- * @returns {x, y} 对象
466
- */
467
- toObject() {
468
- return { x: this.x, y: this.y };
469
- }
470
- }
471
- // 静态常量
472
- /** 零向量 (0, 0) */
473
- Vector2.ZERO = new Vector2(0, 0);
474
- /** 单位向量 (1, 1) */
475
- Vector2.ONE = new Vector2(1, 1);
476
- /** 右方向向量 (1, 0) */
477
- Vector2.RIGHT = new Vector2(1, 0);
478
- /** 左方向向量 (-1, 0) */
479
- Vector2.LEFT = new Vector2(-1, 0);
480
- /** 上方向向量 (0, 1) */
481
- Vector2.UP = new Vector2(0, 1);
482
- /** 下方向向量 (0, -1) */
483
- Vector2.DOWN = new Vector2(0, -1);
484
- //# sourceMappingURL=Vector2.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"Vector2.js","sourceRoot":"","sources":["../src/Vector2.ts"],"names":[],"mappings":"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"}