@esengine/ecs-framework-math 1.0.3 → 1.0.5

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 (52) hide show
  1. package/index.cjs +2 -0
  2. package/index.cjs.map +1 -0
  3. package/index.d.ts +1968 -0
  4. package/index.mjs +2 -0
  5. package/index.mjs.map +1 -0
  6. package/index.umd.js +2 -0
  7. package/index.umd.js.map +1 -0
  8. package/package.json +50 -67
  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/MathUtils.d.ts +0 -312
  34. package/bin/MathUtils.d.ts.map +0 -1
  35. package/bin/MathUtils.js +0 -500
  36. package/bin/MathUtils.js.map +0 -1
  37. package/bin/Matrix3.d.ts +0 -269
  38. package/bin/Matrix3.d.ts.map +0 -1
  39. package/bin/Matrix3.js +0 -514
  40. package/bin/Matrix3.js.map +0 -1
  41. package/bin/Rectangle.d.ts +0 -266
  42. package/bin/Rectangle.d.ts.map +0 -1
  43. package/bin/Rectangle.js +0 -437
  44. package/bin/Rectangle.js.map +0 -1
  45. package/bin/Vector2.d.ts +0 -317
  46. package/bin/Vector2.d.ts.map +0 -1
  47. package/bin/Vector2.js +0 -474
  48. package/bin/Vector2.js.map +0 -1
  49. package/bin/index.d.ts +0 -17
  50. package/bin/index.d.ts.map +0 -1
  51. package/bin/index.js +0 -21
  52. package/bin/index.js.map +0 -1
package/bin/MathUtils.js DELETED
@@ -1,500 +0,0 @@
1
- import { Vector2 } from './Vector2';
2
- /**
3
- * 数学工具函数集合
4
- *
5
- * 提供常用的数学运算、插值、随机数生成等实用工具函数
6
- */
7
- export class MathUtils {
8
- // 角度转换
9
- /**
10
- * 角度转弧度
11
- * @param degrees 角度值
12
- * @returns 弧度值
13
- */
14
- static degToRad(degrees) {
15
- return degrees * MathUtils.DEG_TO_RAD;
16
- }
17
- /**
18
- * 弧度转角度
19
- * @param radians 弧度值
20
- * @returns 角度值
21
- */
22
- static radToDeg(radians) {
23
- return radians * MathUtils.RAD_TO_DEG;
24
- }
25
- /**
26
- * 规范化角度到[0, 2π)范围
27
- * @param radians 角度(弧度)
28
- * @returns 规范化后的角度
29
- */
30
- static normalizeAngle(radians) {
31
- while (radians < 0)
32
- radians += MathUtils.TWO_PI;
33
- while (radians >= MathUtils.TWO_PI)
34
- radians -= MathUtils.TWO_PI;
35
- return radians;
36
- }
37
- /**
38
- * 规范化角度到(-π, π]范围
39
- * @param radians 角度(弧度)
40
- * @returns 规范化后的角度
41
- */
42
- static normalizeAngleSigned(radians) {
43
- while (radians <= -Math.PI)
44
- radians += MathUtils.TWO_PI;
45
- while (radians > Math.PI)
46
- radians -= MathUtils.TWO_PI;
47
- return radians;
48
- }
49
- /**
50
- * 计算两个角度之间的最短角度差
51
- * @param from 起始角度(弧度)
52
- * @param to 目标角度(弧度)
53
- * @returns 角度差(-π到π)
54
- */
55
- static angleDifference(from, to) {
56
- let diff = to - from;
57
- diff = MathUtils.normalizeAngleSigned(diff);
58
- return diff;
59
- }
60
- /**
61
- * 角度插值(处理角度环绕)
62
- * @param from 起始角度(弧度)
63
- * @param to 目标角度(弧度)
64
- * @param t 插值参数(0到1)
65
- * @returns 插值结果角度
66
- */
67
- static lerpAngle(from, to, t) {
68
- const diff = MathUtils.angleDifference(from, to);
69
- return from + diff * t;
70
- }
71
- // 数值操作
72
- /**
73
- * 限制数值在指定范围内
74
- * @param value 待限制的值
75
- * @param min 最小值
76
- * @param max 最大值
77
- * @returns 限制后的值
78
- */
79
- static clamp(value, min, max) {
80
- return Math.max(min, Math.min(max, value));
81
- }
82
- /**
83
- * 限制数值在0到1之间
84
- * @param value 待限制的值
85
- * @returns 限制后的值
86
- */
87
- static clamp01(value) {
88
- return Math.max(0, Math.min(1, value));
89
- }
90
- /**
91
- * 线性插值
92
- * @param a 起始值
93
- * @param b 目标值
94
- * @param t 插值参数(0到1)
95
- * @returns 插值结果
96
- */
97
- static lerp(a, b, t) {
98
- return a + (b - a) * t;
99
- }
100
- /**
101
- * 反向线性插值(获取插值参数)
102
- * @param a 起始值
103
- * @param b 目标值
104
- * @param value 当前值
105
- * @returns 插值参数
106
- */
107
- static inverseLerp(a, b, value) {
108
- if (Math.abs(b - a) < MathUtils.EPSILON) {
109
- return 0;
110
- }
111
- return (value - a) / (b - a);
112
- }
113
- /**
114
- * 重映射数值从一个范围到另一个范围
115
- * @param value 输入值
116
- * @param inMin 输入范围最小值
117
- * @param inMax 输入范围最大值
118
- * @param outMin 输出范围最小值
119
- * @param outMax 输出范围最大值
120
- * @returns 重映射后的值
121
- */
122
- static remap(value, inMin, inMax, outMin, outMax) {
123
- const t = MathUtils.inverseLerp(inMin, inMax, value);
124
- return MathUtils.lerp(outMin, outMax, t);
125
- }
126
- /**
127
- * 平滑阶跃函数(Hermite插值)
128
- * @param t 输入参数(0到1)
129
- * @returns 平滑输出(0到1)
130
- */
131
- static smoothStep(t) {
132
- t = MathUtils.clamp01(t);
133
- return t * t * (3 - 2 * t);
134
- }
135
- /**
136
- * 更平滑的阶跃函数
137
- * @param t 输入参数(0到1)
138
- * @returns 平滑输出(0到1)
139
- */
140
- static smootherStep(t) {
141
- t = MathUtils.clamp01(t);
142
- return t * t * t * (t * (t * 6 - 15) + 10);
143
- }
144
- // 比较操作
145
- /**
146
- * 浮点数相等比较
147
- * @param a 数值a
148
- * @param b 数值b
149
- * @param epsilon 容差,默认为EPSILON
150
- * @returns 是否相等
151
- */
152
- static approximately(a, b, epsilon = MathUtils.EPSILON) {
153
- return Math.abs(a - b) < epsilon;
154
- }
155
- /**
156
- * 检查数值是否为零
157
- * @param value 数值
158
- * @param epsilon 容差,默认为EPSILON
159
- * @returns 是否为零
160
- */
161
- static isZero(value, epsilon = MathUtils.EPSILON) {
162
- return Math.abs(value) < epsilon;
163
- }
164
- /**
165
- * 获取数值的符号
166
- * @param value 数值
167
- * @returns 1、-1或0
168
- */
169
- static sign(value) {
170
- return value > 0 ? 1 : value < 0 ? -1 : 0;
171
- }
172
- // 随机数生成
173
- /**
174
- * 生成指定范围内的随机数
175
- * @param min 最小值(包含)
176
- * @param max 最大值(不包含)
177
- * @returns 随机数
178
- */
179
- static random(min = 0, max = 1) {
180
- return Math.random() * (max - min) + min;
181
- }
182
- /**
183
- * 生成指定范围内的随机整数
184
- * @param min 最小值(包含)
185
- * @param max 最大值(包含)
186
- * @returns 随机整数
187
- */
188
- static randomInt(min, max) {
189
- return Math.floor(Math.random() * (max - min + 1)) + min;
190
- }
191
- /**
192
- * 随机选择数组中的一个元素
193
- * @param array 数组
194
- * @returns 随机元素
195
- */
196
- static randomChoice(array) {
197
- return array[Math.floor(Math.random() * array.length)];
198
- }
199
- /**
200
- * 生成随机布尔值
201
- * @param probability 为true的概率(0到1),默认0.5
202
- * @returns 随机布尔值
203
- */
204
- static randomBoolean(probability = 0.5) {
205
- return Math.random() < probability;
206
- }
207
- /**
208
- * 生成单位圆内的随机点
209
- * @returns 随机向量
210
- */
211
- static randomInUnitCircle() {
212
- const angle = Math.random() * MathUtils.TWO_PI;
213
- const radius = Math.sqrt(Math.random());
214
- return Vector2.fromPolar(radius, angle);
215
- }
216
- /**
217
- * 生成单位圆上的随机点
218
- * @returns 随机单位向量
219
- */
220
- static randomOnUnitCircle() {
221
- const angle = Math.random() * MathUtils.TWO_PI;
222
- return Vector2.fromAngle(angle);
223
- }
224
- // 数学函数
225
- /**
226
- * 快速平方根倒数(用于归一化)
227
- * @param value 输入值
228
- * @returns 平方根倒数
229
- */
230
- static fastInverseSqrt(value) {
231
- // 简化版本,现代JavaScript引擎优化很好
232
- return 1 / Math.sqrt(value);
233
- }
234
- /**
235
- * 快速幂运算(整数指数)
236
- * @param base 底数
237
- * @param exponent 指数(整数)
238
- * @returns 幂运算结果
239
- */
240
- static fastPow(base, exponent) {
241
- if (exponent === 0)
242
- return 1;
243
- if (exponent === 1)
244
- return base;
245
- if (exponent === 2)
246
- return base * base;
247
- if (exponent === 3)
248
- return base * base * base;
249
- return Math.pow(base, exponent);
250
- }
251
- /**
252
- * 阶乘
253
- * @param n 非负整数
254
- * @returns 阶乘结果
255
- */
256
- static factorial(n) {
257
- if (n < 0)
258
- return NaN;
259
- if (n === 0 || n === 1)
260
- return 1;
261
- let result = 1;
262
- for (let i = 2; i <= n; i++) {
263
- result *= i;
264
- }
265
- return result;
266
- }
267
- /**
268
- * 最大公约数
269
- * @param a 整数a
270
- * @param b 整数b
271
- * @returns 最大公约数
272
- */
273
- static gcd(a, b) {
274
- a = Math.abs(Math.floor(a));
275
- b = Math.abs(Math.floor(b));
276
- while (b !== 0) {
277
- const temp = b;
278
- b = a % b;
279
- a = temp;
280
- }
281
- return a;
282
- }
283
- /**
284
- * 最小公倍数
285
- * @param a 整数a
286
- * @param b 整数b
287
- * @returns 最小公倍数
288
- */
289
- static lcm(a, b) {
290
- return Math.abs(a * b) / MathUtils.gcd(a, b);
291
- }
292
- // 序列和级数
293
- /**
294
- * 斐波那契数列
295
- * @param n 项数
296
- * @returns 第n项斐波那契数
297
- */
298
- static fibonacci(n) {
299
- if (n <= 0)
300
- return 0;
301
- if (n === 1)
302
- return 1;
303
- let a = 0, b = 1;
304
- for (let i = 2; i <= n; i++) {
305
- const temp = a + b;
306
- a = b;
307
- b = temp;
308
- }
309
- return b;
310
- }
311
- /**
312
- * 等差数列求和
313
- * @param first 首项
314
- * @param last 末项
315
- * @param count 项数
316
- * @returns 等差数列和
317
- */
318
- static arithmeticSum(first, last, count) {
319
- return (first + last) * count * 0.5;
320
- }
321
- /**
322
- * 等比数列求和
323
- * @param first 首项
324
- * @param ratio 公比
325
- * @param count 项数
326
- * @returns 等比数列和
327
- */
328
- static geometricSum(first, ratio, count) {
329
- if (Math.abs(ratio - 1) < MathUtils.EPSILON) {
330
- return first * count;
331
- }
332
- return first * (1 - Math.pow(ratio, count)) / (1 - ratio);
333
- }
334
- // 曲线和插值
335
- /**
336
- * 贝塞尔二次曲线
337
- * @param p0 控制点0
338
- * @param p1 控制点1
339
- * @param p2 控制点2
340
- * @param t 参数(0到1)
341
- * @returns 曲线上的点
342
- */
343
- static quadraticBezier(p0, p1, p2, t) {
344
- const u = 1 - t;
345
- const tt = t * t;
346
- const uu = u * u;
347
- return new Vector2(uu * p0.x + 2 * u * t * p1.x + tt * p2.x, uu * p0.y + 2 * u * t * p1.y + tt * p2.y);
348
- }
349
- /**
350
- * 贝塞尔三次曲线
351
- * @param p0 控制点0
352
- * @param p1 控制点1
353
- * @param p2 控制点2
354
- * @param p3 控制点3
355
- * @param t 参数(0到1)
356
- * @returns 曲线上的点
357
- */
358
- static cubicBezier(p0, p1, p2, p3, t) {
359
- const u = 1 - t;
360
- const tt = t * t;
361
- const uu = u * u;
362
- const uuu = uu * u;
363
- const ttt = tt * t;
364
- return new Vector2(uuu * p0.x + 3 * uu * t * p1.x + 3 * u * tt * p2.x + ttt * p3.x, uuu * p0.y + 3 * uu * t * p1.y + 3 * u * tt * p2.y + ttt * p3.y);
365
- }
366
- /**
367
- * Catmull-Rom样条插值
368
- * @param p0 控制点0
369
- * @param p1 控制点1
370
- * @param p2 控制点2
371
- * @param p3 控制点3
372
- * @param t 参数(0到1)
373
- * @returns 插值结果点
374
- */
375
- static catmullRom(p0, p1, p2, p3, t) {
376
- const t2 = t * t;
377
- const t3 = t2 * t;
378
- const x = 0.5 * ((2 * p1.x) +
379
- (-p0.x + p2.x) * t +
380
- (2 * p0.x - 5 * p1.x + 4 * p2.x - p3.x) * t2 +
381
- (-p0.x + 3 * p1.x - 3 * p2.x + p3.x) * t3);
382
- const y = 0.5 * ((2 * p1.y) +
383
- (-p0.y + p2.y) * t +
384
- (2 * p0.y - 5 * p1.y + 4 * p2.y - p3.y) * t2 +
385
- (-p0.y + 3 * p1.y - 3 * p2.y + p3.y) * t3);
386
- return new Vector2(x, y);
387
- }
388
- // 噪声函数
389
- /**
390
- * 简单伪随机噪声(基于种子)
391
- * @param x 输入X
392
- * @param y 输入Y
393
- * @param seed 种子
394
- * @returns 噪声值(0到1)
395
- */
396
- static noise(x, y = 0, seed = 0) {
397
- let n = Math.sin(x * 12.9898 + y * 78.233 + seed * 37.719) * 43758.5453;
398
- return n - Math.floor(n);
399
- }
400
- /**
401
- * 平滑噪声
402
- * @param x 输入X
403
- * @param y 输入Y
404
- * @param seed 种子
405
- * @returns 平滑噪声值(0到1)
406
- */
407
- static smoothNoise(x, y = 0, seed = 0) {
408
- const intX = Math.floor(x);
409
- const intY = Math.floor(y);
410
- const fracX = x - intX;
411
- const fracY = y - intY;
412
- const a = MathUtils.noise(intX, intY, seed);
413
- const b = MathUtils.noise(intX + 1, intY, seed);
414
- const c = MathUtils.noise(intX, intY + 1, seed);
415
- const d = MathUtils.noise(intX + 1, intY + 1, seed);
416
- const i1 = MathUtils.lerp(a, b, fracX);
417
- const i2 = MathUtils.lerp(c, d, fracX);
418
- return MathUtils.lerp(i1, i2, fracY);
419
- }
420
- // 实用工具
421
- /**
422
- * 将数值转换为指定精度
423
- * @param value 数值
424
- * @param precision 精度(小数位数)
425
- * @returns 转换后的数值
426
- */
427
- static toPrecision(value, precision) {
428
- const factor = Math.pow(10, precision);
429
- return Math.round(value * factor) / factor;
430
- }
431
- /**
432
- * 检查数值是否在指定范围内
433
- * @param value 数值
434
- * @param min 最小值
435
- * @param max 最大值
436
- * @returns 是否在范围内
437
- */
438
- static inRange(value, min, max) {
439
- return value >= min && value <= max;
440
- }
441
- /**
442
- * 获取数组中的最小值
443
- * @param values 数值数组
444
- * @returns 最小值
445
- */
446
- static min(...values) {
447
- return Math.min(...values);
448
- }
449
- /**
450
- * 获取数组中的最大值
451
- * @param values 数值数组
452
- * @returns 最大值
453
- */
454
- static max(...values) {
455
- return Math.max(...values);
456
- }
457
- /**
458
- * 计算数组的平均值
459
- * @param values 数值数组
460
- * @returns 平均值
461
- */
462
- static average(values) {
463
- if (values.length === 0)
464
- return 0;
465
- return values.reduce((sum, val) => sum + val, 0) / values.length;
466
- }
467
- /**
468
- * 计算数组的中位数
469
- * @param values 数值数组
470
- * @returns 中位数
471
- */
472
- static median(values) {
473
- if (values.length === 0)
474
- return 0;
475
- const sorted = [...values].sort((a, b) => a - b);
476
- const middle = Math.floor(sorted.length / 2);
477
- if (sorted.length % 2 === 0) {
478
- return (sorted[middle - 1] + sorted[middle]) / 2;
479
- }
480
- return sorted[middle];
481
- }
482
- }
483
- // 数学常量
484
- /** 圆周率 */
485
- MathUtils.PI = Math.PI;
486
- /** 2π */
487
- MathUtils.TWO_PI = Math.PI * 2;
488
- /** π/2 */
489
- MathUtils.HALF_PI = Math.PI * 0.5;
490
- /** π/4 */
491
- MathUtils.QUARTER_PI = Math.PI * 0.25;
492
- /** 角度到弧度转换系数 */
493
- MathUtils.DEG_TO_RAD = Math.PI / 180;
494
- /** 弧度到角度转换系数 */
495
- MathUtils.RAD_TO_DEG = 180 / Math.PI;
496
- /** 黄金比例 */
497
- MathUtils.GOLDEN_RATIO = (1 + Math.sqrt(5)) * 0.5;
498
- /** 默认浮点数比较容差 */
499
- MathUtils.EPSILON = Number.EPSILON;
500
- //# sourceMappingURL=MathUtils.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"MathUtils.js","sourceRoot":"","sources":["../src/MathUtils.ts"],"names":[],"mappings":"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"}