ddan-js 2.8.12 → 2.8.14

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.
@@ -1,10 +1,14 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.lerpAverage = void 0;
4
3
  const lerp = (start, end, t) => {
5
4
  // (1 - t) * p0.x + t * p1.x,
6
5
  return start * (1 - t) + end * t;
7
6
  };
7
+ const proportion = (start, end, current) => {
8
+ if (start === end)
9
+ return 0;
10
+ return (current - start) / (end - start);
11
+ };
8
12
  const bezier1 = (p0, p1, t) => {
9
13
  return {
10
14
  x: lerp(p0.x, p1.x, t),
@@ -72,8 +76,8 @@ const bezierCurve = (points, t) => {
72
76
  }
73
77
  return { x, y };
74
78
  };
75
- const lerpAverage = (points, step //
76
- ) => {
79
+ const lerpAverage = (points, step, //
80
+ type = '') => {
77
81
  if (points.length <= 0)
78
82
  return 0;
79
83
  if (points.length === 1)
@@ -83,35 +87,35 @@ const lerpAverage = (points, step //
83
87
  const values = [];
84
88
  // 调整下排序
85
89
  const _points = points.slice().sort((a, b) => a.x - b.x);
90
+ const size = _points.length;
86
91
  const start = _points[0].x;
87
- const end = _points[_points.length - 1].x;
92
+ const end = _points[size - 1].x;
88
93
  // 遍历每个插值点
89
94
  for (let axis = start; axis <= end; axis += step) {
90
95
  let value = 0;
91
96
  // 找到 t 所在区间 [t1, t2]
92
- for (let i = 0; i < _points.length - 1; i++) {
97
+ for (let i = 0; i < size - 1; i++) {
93
98
  const p1 = _points[i];
94
99
  const p2 = _points[i + 1];
95
100
  if (axis >= p1.x && axis <= p2.x) {
96
- if (p1.x === p2.x) {
97
- value = p1.y;
101
+ if (type === 'bezier') {
102
+ const t = proportion(p1.x, p2.x, axis);
103
+ value = bezier1(p1, p2, t).y;
98
104
  }
99
105
  else {
100
- const t = (axis - p1.x) / (p2.x - p1.x);
101
- value = bezier1(p1, p2, t).y;
106
+ // 取左侧值
107
+ value = p1.y;
102
108
  }
103
- // 线性插值公式
104
109
  break;
105
110
  }
106
111
  }
107
112
  // 如果 t 超出范围,使用最后一个已知值
108
- if (axis > _points[_points.length - 1].x) {
109
- value = _points[_points.length - 1].y;
113
+ if (axis > _points[size - 1].x) {
114
+ value = _points[size - 1].y;
110
115
  }
111
116
  values.push(value);
112
117
  }
113
- const sum = values.reduce((acc, val) => acc + val, 0) / values.length;
118
+ const sum = values.reduce((acc, val) => acc + val, 0);
114
119
  return sum / values.length;
115
120
  };
116
- exports.lerpAverage = lerpAverage;
117
- exports.default = { bezier1, bezier2, bezier3, bezier, bezierCurve, lerp, lerpAverage: exports.lerpAverage };
121
+ exports.default = { bezier1, bezier2, bezier3, bezier, bezierCurve, lerp, lerpAverage, proportion };
@@ -339,7 +339,8 @@ declare const dHook: {
339
339
  bezier3: (p0: import("./typings").Ddan.IPoint, p1: import("./typings").Ddan.IPoint, p2: import("./typings").Ddan.IPoint, p3: import("./typings").Ddan.IPoint, t: number) => import("./typings").Ddan.IPoint;
340
340
  bezier: (points: import("./typings").Ddan.IPoint[], t: number) => import("./typings").Ddan.IPoint;
341
341
  bezierCurve: (points: import("./typings").Ddan.IPoint[], t: number) => import("./typings").Ddan.IPoint;
342
- lerpAverage: (points: import("./typings").Ddan.IPoint[], step: number) => number;
342
+ lerpAverage: (points: import("./typings").Ddan.IPoint[], step: number, type?: "" | "bezier") => number;
343
+ proportion: (start: number, end: number, current: number) => number;
343
344
  logString: (data: any) => string;
344
345
  logParse: (logStr: string) => string;
345
346
  logRString: (data: any) => Promise<string>;
@@ -697,7 +698,8 @@ declare const _default: {
697
698
  bezier: (points: import("./typings").Ddan.IPoint[], t: number) => import("./typings").Ddan.IPoint;
698
699
  bezierCurve: (points: import("./typings").Ddan.IPoint[], t: number) => import("./typings").Ddan.IPoint;
699
700
  lerp: (start: number, end: number, t: number) => number;
700
- lerpAverage: (points: import("./typings").Ddan.IPoint[], step: number) => number;
701
+ lerpAverage: (points: import("./typings").Ddan.IPoint[], step: number, type?: "" | "bezier") => number;
702
+ proportion: (start: number, end: number, current: number) => number;
701
703
  logString: (data: any) => string;
702
704
  logParse: (logStr: string) => string;
703
705
  logRString: (data: any) => Promise<string>;
@@ -339,7 +339,8 @@ declare const dHook: {
339
339
  bezier3: (p0: import("./typings").Ddan.IPoint, p1: import("./typings").Ddan.IPoint, p2: import("./typings").Ddan.IPoint, p3: import("./typings").Ddan.IPoint, t: number) => import("./typings").Ddan.IPoint;
340
340
  bezier: (points: import("./typings").Ddan.IPoint[], t: number) => import("./typings").Ddan.IPoint;
341
341
  bezierCurve: (points: import("./typings").Ddan.IPoint[], t: number) => import("./typings").Ddan.IPoint;
342
- lerpAverage: (points: import("./typings").Ddan.IPoint[], step: number) => number;
342
+ lerpAverage: (points: import("./typings").Ddan.IPoint[], step: number, type?: "" | "bezier") => number;
343
+ proportion: (start: number, end: number, current: number) => number;
343
344
  logString: (data: any) => string;
344
345
  logParse: (logStr: string) => string;
345
346
  logRString: (data: any) => Promise<string>;
@@ -733,7 +734,8 @@ declare const _default: {
733
734
  bezier: (points: import("./typings").Ddan.IPoint[], t: number) => import("./typings").Ddan.IPoint;
734
735
  bezierCurve: (points: import("./typings").Ddan.IPoint[], t: number) => import("./typings").Ddan.IPoint;
735
736
  lerp: (start: number, end: number, t: number) => number;
736
- lerpAverage: (points: import("./typings").Ddan.IPoint[], step: number) => number;
737
+ lerpAverage: (points: import("./typings").Ddan.IPoint[], step: number, type?: "" | "bezier") => number;
738
+ proportion: (start: number, end: number, current: number) => number;
737
739
  logString: (data: any) => string;
738
740
  logParse: (logStr: string) => string;
739
741
  logRString: (data: any) => Promise<string>;
@@ -31,7 +31,8 @@ declare const _default: {
31
31
  bezier: (points: Ddan.IPoint[], t: number) => Ddan.IPoint;
32
32
  bezierCurve: (points: Ddan.IPoint[], t: number) => Ddan.IPoint;
33
33
  lerp: (start: number, end: number, t: number) => number;
34
- lerpAverage: (points: Ddan.IPoint[], step: number) => number;
34
+ lerpAverage: (points: Ddan.IPoint[], step: number, type?: "" | "bezier") => number;
35
+ proportion: (start: number, end: number, current: number) => number;
35
36
  logString: (data: any) => string;
36
37
  logParse: (logStr: string) => string;
37
38
  logRString: (data: any) => Promise<string>;
@@ -1,5 +1,4 @@
1
1
  import { Ddan } from '../../../typings';
2
- export declare const lerpAverage: (points: Ddan.IPoint[], step: number) => number;
3
2
  declare const _default: {
4
3
  bezier1: (p0: Ddan.IPoint, p1: Ddan.IPoint, t: number) => Ddan.IPoint;
5
4
  bezier2: (p0: Ddan.IPoint, p1: Ddan.IPoint, p2: Ddan.IPoint, t: number) => Ddan.IPoint;
@@ -7,6 +6,7 @@ declare const _default: {
7
6
  bezier: (points: Ddan.IPoint[], t: number) => Ddan.IPoint;
8
7
  bezierCurve: (points: Ddan.IPoint[], t: number) => Ddan.IPoint;
9
8
  lerp: (start: number, end: number, t: number) => number;
10
- lerpAverage: (points: Ddan.IPoint[], step: number) => number;
9
+ lerpAverage: (points: Ddan.IPoint[], step: number, type?: "" | "bezier") => number;
10
+ proportion: (start: number, end: number, current: number) => number;
11
11
  };
12
12
  export default _default;
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "ddan-js",
3
- "version": "2.8.12",
3
+ "version": "2.8.14",
4
4
  "description": "",
5
5
  "keywords": [
6
6
  "ddan-js",