@esengine/ecs-framework-math 2.10.1 → 2.10.3
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.
- package/dist/index.cjs +2 -0
- package/dist/index.cjs.map +1 -0
- package/dist/index.d.ts +10175 -0
- package/dist/index.mjs +2 -0
- package/dist/index.mjs.map +1 -0
- package/dist/index.umd.js +2 -0
- package/dist/index.umd.js.map +1 -0
- package/package.json +20 -11
- package/bin/Animation/Easing.d.ts +0 -244
- package/bin/Animation/Easing.d.ts.map +0 -1
- package/bin/Animation/Easing.js +0 -407
- package/bin/Animation/Easing.js.map +0 -1
- package/bin/Animation/Interpolation.d.ts +0 -172
- package/bin/Animation/Interpolation.d.ts.map +0 -1
- package/bin/Animation/Interpolation.js +0 -327
- package/bin/Animation/Interpolation.js.map +0 -1
- package/bin/Animation/index.d.ts +0 -8
- package/bin/Animation/index.d.ts.map +0 -1
- package/bin/Animation/index.js +0 -8
- package/bin/Animation/index.js.map +0 -1
- package/bin/Circle.d.ts +0 -277
- package/bin/Circle.d.ts.map +0 -1
- package/bin/Circle.js +0 -496
- package/bin/Circle.js.map +0 -1
- package/bin/Collision/CollisionDetector.d.ts +0 -114
- package/bin/Collision/CollisionDetector.d.ts.map +0 -1
- package/bin/Collision/CollisionDetector.js +0 -353
- package/bin/Collision/CollisionDetector.js.map +0 -1
- package/bin/Collision/index.d.ts +0 -7
- package/bin/Collision/index.d.ts.map +0 -1
- package/bin/Collision/index.js +0 -7
- package/bin/Collision/index.js.map +0 -1
- package/bin/Color.d.ts +0 -277
- package/bin/Color.d.ts.map +0 -1
- package/bin/Color.js +0 -470
- package/bin/Color.js.map +0 -1
- package/bin/Fixed32.d.ts +0 -266
- package/bin/Fixed32.d.ts.map +0 -1
- package/bin/Fixed32.js +0 -381
- package/bin/Fixed32.js.map +0 -1
- package/bin/FixedMath.d.ts +0 -109
- package/bin/FixedMath.d.ts.map +0 -1
- package/bin/FixedMath.js +0 -264
- package/bin/FixedMath.js.map +0 -1
- package/bin/FixedVector2.d.ts +0 -293
- package/bin/FixedVector2.d.ts.map +0 -1
- package/bin/FixedVector2.js +0 -413
- package/bin/FixedVector2.js.map +0 -1
- package/bin/MathUtils.d.ts +0 -312
- package/bin/MathUtils.d.ts.map +0 -1
- package/bin/MathUtils.js +0 -500
- package/bin/MathUtils.js.map +0 -1
- package/bin/Matrix3.d.ts +0 -288
- package/bin/Matrix3.d.ts.map +0 -1
- package/bin/Matrix3.js +0 -542
- package/bin/Matrix3.js.map +0 -1
- package/bin/Rectangle.d.ts +0 -266
- package/bin/Rectangle.d.ts.map +0 -1
- package/bin/Rectangle.js +0 -437
- package/bin/Rectangle.js.map +0 -1
- package/bin/Vector2.d.ts +0 -333
- package/bin/Vector2.d.ts.map +0 -1
- package/bin/Vector2.js +0 -484
- package/bin/Vector2.js.map +0 -1
- package/bin/Vector3.d.ts +0 -257
- package/bin/Vector3.d.ts.map +0 -1
- package/bin/Vector3.js +0 -372
- package/bin/Vector3.js.map +0 -1
- package/bin/index.d.ts +0 -25
- package/bin/index.d.ts.map +0 -1
- package/bin/index.js +0 -32
- package/bin/index.js.map +0 -1
- package/bin/nodes/ColorNodes.d.ts +0 -70
- package/bin/nodes/ColorNodes.d.ts.map +0 -1
- package/bin/nodes/ColorNodes.js +0 -427
- package/bin/nodes/ColorNodes.js.map +0 -1
- package/bin/nodes/FixedNodes.d.ts +0 -98
- package/bin/nodes/FixedNodes.d.ts.map +0 -1
- package/bin/nodes/FixedNodes.js +0 -612
- package/bin/nodes/FixedNodes.js.map +0 -1
- package/bin/nodes/FixedVectorNodes.d.ts +0 -58
- package/bin/nodes/FixedVectorNodes.d.ts.map +0 -1
- package/bin/nodes/FixedVectorNodes.js +0 -330
- package/bin/nodes/FixedVectorNodes.js.map +0 -1
- package/bin/nodes/VectorNodes.d.ts +0 -62
- package/bin/nodes/VectorNodes.d.ts.map +0 -1
- package/bin/nodes/VectorNodes.js +0 -355
- package/bin/nodes/VectorNodes.js.map +0 -1
- package/bin/nodes/index.d.ts +0 -20
- package/bin/nodes/index.d.ts.map +0 -1
- package/bin/nodes/index.js +0 -27
- package/bin/nodes/index.js.map +0 -1
package/bin/FixedMath.d.ts
DELETED
|
@@ -1,109 +0,0 @@
|
|
|
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
|
package/bin/FixedMath.d.ts.map
DELETED
|
@@ -1 +0,0 @@
|
|
|
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"}
|
package/bin/FixedMath.js
DELETED
|
@@ -1,264 +0,0 @@
|
|
|
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
|
package/bin/FixedMath.js.map
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"FixedMath.js","sourceRoot":"","sources":["../src/FixedMath.ts"],"names":[],"mappings":"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"}
|
package/bin/FixedVector2.d.ts
DELETED
|
@@ -1,293 +0,0 @@
|
|
|
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
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"FixedVector2.d.ts","sourceRoot":"","sources":["../src/FixedVector2.ts"],"names":[],"mappings":"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"}
|