@esengine/ecs-framework-math 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.
Files changed (45) hide show
  1. package/bin/Animation/Easing.d.ts +244 -0
  2. package/bin/Animation/Easing.d.ts.map +1 -0
  3. package/bin/Animation/Easing.js +407 -0
  4. package/bin/Animation/Easing.js.map +1 -0
  5. package/bin/Animation/Interpolation.d.ts +172 -0
  6. package/bin/Animation/Interpolation.d.ts.map +1 -0
  7. package/bin/Animation/Interpolation.js +327 -0
  8. package/bin/Animation/Interpolation.js.map +1 -0
  9. package/bin/Animation/index.d.ts +8 -0
  10. package/bin/Animation/index.d.ts.map +1 -0
  11. package/bin/Animation/index.js +8 -0
  12. package/bin/Animation/index.js.map +1 -0
  13. package/bin/Circle.d.ts +277 -0
  14. package/bin/Circle.d.ts.map +1 -0
  15. package/bin/Circle.js +496 -0
  16. package/bin/Circle.js.map +1 -0
  17. package/bin/Collision/CollisionDetector.d.ts +114 -0
  18. package/bin/Collision/CollisionDetector.d.ts.map +1 -0
  19. package/bin/Collision/CollisionDetector.js +353 -0
  20. package/bin/Collision/CollisionDetector.js.map +1 -0
  21. package/bin/Collision/index.d.ts +7 -0
  22. package/bin/Collision/index.d.ts.map +1 -0
  23. package/bin/Collision/index.js +7 -0
  24. package/bin/Collision/index.js.map +1 -0
  25. package/bin/MathUtils.d.ts +312 -0
  26. package/bin/MathUtils.d.ts.map +1 -0
  27. package/bin/MathUtils.js +500 -0
  28. package/bin/MathUtils.js.map +1 -0
  29. package/bin/Matrix3.d.ts +269 -0
  30. package/bin/Matrix3.d.ts.map +1 -0
  31. package/bin/Matrix3.js +514 -0
  32. package/bin/Matrix3.js.map +1 -0
  33. package/bin/Rectangle.d.ts +266 -0
  34. package/bin/Rectangle.d.ts.map +1 -0
  35. package/bin/Rectangle.js +437 -0
  36. package/bin/Rectangle.js.map +1 -0
  37. package/bin/Vector2.d.ts +317 -0
  38. package/bin/Vector2.d.ts.map +1 -0
  39. package/bin/Vector2.js +474 -0
  40. package/bin/Vector2.js.map +1 -0
  41. package/bin/index.d.ts +17 -0
  42. package/bin/index.d.ts.map +1 -0
  43. package/bin/index.js +21 -0
  44. package/bin/index.js.map +1 -0
  45. package/package.json +66 -0
package/bin/Vector2.js ADDED
@@ -0,0 +1,474 @@
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
+ * @returns 新的垂直向量
227
+ */
228
+ perpendicular() {
229
+ return new Vector2(-this.y, this.x);
230
+ }
231
+ // 变换操作
232
+ /**
233
+ * 向量旋转
234
+ * @param angle 旋转角度(弧度)
235
+ * @returns 当前向量实例(链式调用)
236
+ */
237
+ rotate(angle) {
238
+ const cos = Math.cos(angle);
239
+ const sin = Math.sin(angle);
240
+ const x = this.x * cos - this.y * sin;
241
+ const y = this.x * sin + this.y * cos;
242
+ this.x = x;
243
+ this.y = y;
244
+ return this;
245
+ }
246
+ /**
247
+ * 获取旋转后的向量(不修改原向量)
248
+ * @param angle 旋转角度(弧度)
249
+ * @returns 新的旋转后向量
250
+ */
251
+ rotated(angle) {
252
+ return this.clone().rotate(angle);
253
+ }
254
+ /**
255
+ * 围绕一个点旋转
256
+ * @param center 旋转中心点
257
+ * @param angle 旋转角度(弧度)
258
+ * @returns 当前向量实例(链式调用)
259
+ */
260
+ rotateAround(center, angle) {
261
+ return this.subtract(center).rotate(angle).add(center);
262
+ }
263
+ /**
264
+ * 反射向量(关于法线)
265
+ * @param normal 法线向量(应为单位向量)
266
+ * @returns 当前向量实例(链式调用)
267
+ */
268
+ reflect(normal) {
269
+ const dot = this.dot(normal);
270
+ this.x -= 2 * dot * normal.x;
271
+ this.y -= 2 * dot * normal.y;
272
+ return this;
273
+ }
274
+ /**
275
+ * 获取反射后的向量(不修改原向量)
276
+ * @param normal 法线向量(应为单位向量)
277
+ * @returns 新的反射向量
278
+ */
279
+ reflected(normal) {
280
+ return this.clone().reflect(normal);
281
+ }
282
+ // 插值和限制
283
+ /**
284
+ * 线性插值
285
+ * @param target 目标向量
286
+ * @param t 插值参数(0到1)
287
+ * @returns 当前向量实例(链式调用)
288
+ */
289
+ lerp(target, t) {
290
+ this.x += (target.x - this.x) * t;
291
+ this.y += (target.y - this.y) * t;
292
+ return this;
293
+ }
294
+ /**
295
+ * 限制向量长度
296
+ * @param maxLength 最大长度
297
+ * @returns 当前向量实例(链式调用)
298
+ */
299
+ clampLength(maxLength) {
300
+ const lenSq = this.lengthSquared;
301
+ if (lenSq > maxLength * maxLength) {
302
+ return this.normalize().multiply(maxLength);
303
+ }
304
+ return this;
305
+ }
306
+ /**
307
+ * 限制向量分量
308
+ * @param min 最小值向量
309
+ * @param max 最大值向量
310
+ * @returns 当前向量实例(链式调用)
311
+ */
312
+ clamp(min, max) {
313
+ this.x = Math.max(min.x, Math.min(max.x, this.x));
314
+ this.y = Math.max(min.y, Math.min(max.y, this.y));
315
+ return this;
316
+ }
317
+ // 比较操作
318
+ /**
319
+ * 检查两个向量是否相等
320
+ * @param other 另一个向量
321
+ * @param epsilon 容差,默认为Number.EPSILON
322
+ * @returns 是否相等
323
+ */
324
+ equals(other, epsilon = Number.EPSILON) {
325
+ return Math.abs(this.x - other.x) < epsilon &&
326
+ Math.abs(this.y - other.y) < epsilon;
327
+ }
328
+ /**
329
+ * 检查两个向量是否完全相等
330
+ * @param other 另一个向量
331
+ * @returns 是否完全相等
332
+ */
333
+ exactEquals(other) {
334
+ return this.x === other.x && this.y === other.y;
335
+ }
336
+ // 静态方法
337
+ /**
338
+ * 向量加法(静态方法)
339
+ * @param a 向量a
340
+ * @param b 向量b
341
+ * @returns 新的结果向量
342
+ */
343
+ static add(a, b) {
344
+ return new Vector2(a.x + b.x, a.y + b.y);
345
+ }
346
+ /**
347
+ * 向量减法(静态方法)
348
+ * @param a 向量a
349
+ * @param b 向量b
350
+ * @returns 新的结果向量
351
+ */
352
+ static subtract(a, b) {
353
+ return new Vector2(a.x - b.x, a.y - b.y);
354
+ }
355
+ /**
356
+ * 向量数乘(静态方法)
357
+ * @param vector 向量
358
+ * @param scalar 标量
359
+ * @returns 新的结果向量
360
+ */
361
+ static multiply(vector, scalar) {
362
+ return new Vector2(vector.x * scalar, vector.y * scalar);
363
+ }
364
+ /**
365
+ * 向量点积(静态方法)
366
+ * @param a 向量a
367
+ * @param b 向量b
368
+ * @returns 点积值
369
+ */
370
+ static dot(a, b) {
371
+ return a.x * b.x + a.y * b.y;
372
+ }
373
+ /**
374
+ * 向量叉积(静态方法)
375
+ * @param a 向量a
376
+ * @param b 向量b
377
+ * @returns 叉积值
378
+ */
379
+ static cross(a, b) {
380
+ return a.x * b.y - a.y * b.x;
381
+ }
382
+ /**
383
+ * 计算两点间距离(静态方法)
384
+ * @param a 点a
385
+ * @param b 点b
386
+ * @returns 距离值
387
+ */
388
+ static distance(a, b) {
389
+ const dx = a.x - b.x;
390
+ const dy = a.y - b.y;
391
+ return Math.sqrt(dx * dx + dy * dy);
392
+ }
393
+ /**
394
+ * 线性插值(静态方法)
395
+ * @param a 起始向量
396
+ * @param b 目标向量
397
+ * @param t 插值参数(0到1)
398
+ * @returns 新的插值结果向量
399
+ */
400
+ static lerp(a, b, t) {
401
+ return new Vector2(a.x + (b.x - a.x) * t, a.y + (b.y - a.y) * t);
402
+ }
403
+ /**
404
+ * 从角度创建单位向量(静态方法)
405
+ * @param angle 角度(弧度)
406
+ * @returns 新的单位向量
407
+ */
408
+ static fromAngle(angle) {
409
+ return new Vector2(Math.cos(angle), Math.sin(angle));
410
+ }
411
+ /**
412
+ * 从极坐标创建向量(静态方法)
413
+ * @param length 长度
414
+ * @param angle 角度(弧度)
415
+ * @returns 新的向量
416
+ */
417
+ static fromPolar(length, angle) {
418
+ return new Vector2(length * Math.cos(angle), length * Math.sin(angle));
419
+ }
420
+ /**
421
+ * 获取两个向量中的最小分量向量(静态方法)
422
+ * @param a 向量a
423
+ * @param b 向量b
424
+ * @returns 新的最小分量向量
425
+ */
426
+ static min(a, b) {
427
+ return new Vector2(Math.min(a.x, b.x), Math.min(a.y, b.y));
428
+ }
429
+ /**
430
+ * 获取两个向量中的最大分量向量(静态方法)
431
+ * @param a 向量a
432
+ * @param b 向量b
433
+ * @returns 新的最大分量向量
434
+ */
435
+ static max(a, b) {
436
+ return new Vector2(Math.max(a.x, b.x), Math.max(a.y, b.y));
437
+ }
438
+ // 字符串转换
439
+ /**
440
+ * 转换为字符串
441
+ * @returns 字符串表示
442
+ */
443
+ toString() {
444
+ return `Vector2(${this.x.toFixed(3)}, ${this.y.toFixed(3)})`;
445
+ }
446
+ /**
447
+ * 转换为数组
448
+ * @returns [x, y] 数组
449
+ */
450
+ toArray() {
451
+ return [this.x, this.y];
452
+ }
453
+ /**
454
+ * 转换为普通对象
455
+ * @returns {x, y} 对象
456
+ */
457
+ toObject() {
458
+ return { x: this.x, y: this.y };
459
+ }
460
+ }
461
+ // 静态常量
462
+ /** 零向量 (0, 0) */
463
+ Vector2.ZERO = new Vector2(0, 0);
464
+ /** 单位向量 (1, 1) */
465
+ Vector2.ONE = new Vector2(1, 1);
466
+ /** 右方向向量 (1, 0) */
467
+ Vector2.RIGHT = new Vector2(1, 0);
468
+ /** 左方向向量 (-1, 0) */
469
+ Vector2.LEFT = new Vector2(-1, 0);
470
+ /** 上方向向量 (0, 1) */
471
+ Vector2.UP = new Vector2(0, 1);
472
+ /** 下方向向量 (0, -1) */
473
+ Vector2.DOWN = new Vector2(0, -1);
474
+ //# sourceMappingURL=Vector2.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"Vector2.js","sourceRoot":"","sources":["../src/Vector2.ts"],"names":[],"mappings":"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"}
package/bin/index.d.ts ADDED
@@ -0,0 +1,17 @@
1
+ /**
2
+ * ECS Framework Math Library
3
+ *
4
+ * 2D数学库,为游戏开发提供完整的数学工具
5
+ * - 基础数学类(向量、矩阵、几何形状)
6
+ * - 碰撞检测算法
7
+ * - 动画插值和缓动函数
8
+ * - 数学工具函数
9
+ */
10
+ export { Vector2 } from './Vector2';
11
+ export { Matrix3 } from './Matrix3';
12
+ export { Rectangle } from './Rectangle';
13
+ export { Circle } from './Circle';
14
+ export { MathUtils } from './MathUtils';
15
+ export * from './Collision';
16
+ export * from './Animation';
17
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AAGH,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AACpC,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AACpC,OAAO,EAAE,SAAS,EAAE,MAAM,aAAa,CAAC;AACxC,OAAO,EAAE,MAAM,EAAE,MAAM,UAAU,CAAC;AAGlC,OAAO,EAAE,SAAS,EAAE,MAAM,aAAa,CAAC;AAGxC,cAAc,aAAa,CAAC;AAG5B,cAAc,aAAa,CAAC"}
package/bin/index.js ADDED
@@ -0,0 +1,21 @@
1
+ /**
2
+ * ECS Framework Math Library
3
+ *
4
+ * 2D数学库,为游戏开发提供完整的数学工具
5
+ * - 基础数学类(向量、矩阵、几何形状)
6
+ * - 碰撞检测算法
7
+ * - 动画插值和缓动函数
8
+ * - 数学工具函数
9
+ */
10
+ // 核心数学类
11
+ export { Vector2 } from './Vector2';
12
+ export { Matrix3 } from './Matrix3';
13
+ export { Rectangle } from './Rectangle';
14
+ export { Circle } from './Circle';
15
+ // 数学工具
16
+ export { MathUtils } from './MathUtils';
17
+ // 碰撞检测
18
+ export * from './Collision';
19
+ // 动画和插值
20
+ export * from './Animation';
21
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AAEH,QAAQ;AACR,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AACpC,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AACpC,OAAO,EAAE,SAAS,EAAE,MAAM,aAAa,CAAC;AACxC,OAAO,EAAE,MAAM,EAAE,MAAM,UAAU,CAAC;AAElC,OAAO;AACP,OAAO,EAAE,SAAS,EAAE,MAAM,aAAa,CAAC;AAExC,OAAO;AACP,cAAc,aAAa,CAAC;AAE5B,QAAQ;AACR,cAAc,aAAa,CAAC"}
package/package.json ADDED
@@ -0,0 +1,66 @@
1
+ {
2
+ "name": "@esengine/ecs-framework-math",
3
+ "version": "1.0.1",
4
+ "description": "ECS框架2D数学库 - 提供向量、矩阵、几何形状和碰撞检测功能",
5
+ "type": "module",
6
+ "main": "bin/index.js",
7
+ "types": "bin/index.d.ts",
8
+ "files": [
9
+ "bin/**/*",
10
+ "README.md",
11
+ "LICENSE"
12
+ ],
13
+ "keywords": [
14
+ "ecs",
15
+ "math",
16
+ "2d",
17
+ "vector",
18
+ "matrix",
19
+ "geometry",
20
+ "collision",
21
+ "game-engine",
22
+ "typescript"
23
+ ],
24
+ "scripts": {
25
+ "clean": "rimraf bin dist",
26
+ "build:ts": "tsc",
27
+ "prebuild": "npm run clean",
28
+ "build": "npm run build:ts",
29
+ "build:watch": "tsc --watch",
30
+ "rebuild": "npm run clean && npm run build",
31
+ "build:npm": "npm run build && node build-rollup.cjs",
32
+ "test": "jest --config jest.config.cjs",
33
+ "test:watch": "jest --watch --config jest.config.cjs",
34
+ "test:coverage": "jest --coverage --config jest.config.cjs",
35
+ "test:ci": "jest --ci --coverage --config jest.config.cjs",
36
+ "test:clear": "jest --clearCache",
37
+ "publish:patch": "npm version patch && npm publish",
38
+ "publish:minor": "npm version minor && npm publish",
39
+ "publish:major": "npm version major && npm publish"
40
+ },
41
+ "author": "yhh",
42
+ "license": "MIT",
43
+ "devDependencies": {
44
+ "@rollup/plugin-commonjs": "^28.0.3",
45
+ "@rollup/plugin-node-resolve": "^16.0.1",
46
+ "@rollup/plugin-terser": "^0.4.4",
47
+ "@types/jest": "^29.5.14",
48
+ "@types/node": "^20.19.0",
49
+ "jest": "^29.7.0",
50
+ "jest-environment-jsdom": "^29.7.0",
51
+ "rimraf": "^5.0.0",
52
+ "rollup": "^4.42.0",
53
+ "rollup-plugin-dts": "^6.2.1",
54
+ "ts-jest": "^29.4.0",
55
+ "typescript": "^5.8.3"
56
+ },
57
+ "publishConfig": {
58
+ "access": "public",
59
+ "registry": "https://registry.npmjs.org/"
60
+ },
61
+ "repository": {
62
+ "type": "git",
63
+ "url": "https://github.com/esengine/ecs-framework.git",
64
+ "directory": "packages/math"
65
+ }
66
+ }