@immugio/three-math-extensions 0.2.38 → 0.3.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.
- package/CHANGELOG.md +7 -1
- package/cjs/Line2D.js +13 -10
- package/esm/Line2D.js +14 -11
- package/package.json +1 -1
- package/src/Line2D.ts +14 -14
- package/types/Line2D.d.ts +1 -1
package/CHANGELOG.md
CHANGED
|
@@ -7,7 +7,13 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0
|
|
|
7
7
|
|
|
8
8
|
Generated by [`auto-changelog`](https://github.com/CookPete/auto-changelog).
|
|
9
9
|
|
|
10
|
-
## [0.
|
|
10
|
+
## [0.3.0](https://github.com/Immugio/three-math-extensions/compare/0.2.38...0.3.0)
|
|
11
|
+
|
|
12
|
+
### Commits
|
|
13
|
+
|
|
14
|
+
- Add Line2D.split [`8f218fb`](https://github.com/Immugio/three-math-extensions/commit/8f218fb6d8682e65f1da49c9084d56ec3e9a68b7)
|
|
15
|
+
|
|
16
|
+
## [0.2.38](https://github.com/Immugio/three-math-extensions/compare/0.2.37...0.2.38) - 2024-12-09
|
|
11
17
|
|
|
12
18
|
### Commits
|
|
13
19
|
|
package/cjs/Line2D.js
CHANGED
|
@@ -96,8 +96,7 @@ class Line2D {
|
|
|
96
96
|
* Modifies this line.
|
|
97
97
|
*/
|
|
98
98
|
moveStartPoint(amount) {
|
|
99
|
-
|
|
100
|
-
this.start.copy(p1);
|
|
99
|
+
this.start.add(this.direction.multiplyScalar(-amount));
|
|
101
100
|
return this;
|
|
102
101
|
}
|
|
103
102
|
/**
|
|
@@ -105,16 +104,9 @@ class Line2D {
|
|
|
105
104
|
* Modifies this line.
|
|
106
105
|
*/
|
|
107
106
|
moveEndPoint(amount) {
|
|
108
|
-
|
|
109
|
-
this.end.copy(p2);
|
|
107
|
+
this.end.add(this.direction.multiplyScalar(amount));
|
|
110
108
|
return this;
|
|
111
109
|
}
|
|
112
|
-
movePointOnThisLine(point, amount) {
|
|
113
|
-
const vec = new three_1.Vector2(this.center.x - point.x, this.center.y - point.y);
|
|
114
|
-
const length = vec.length();
|
|
115
|
-
vec.normalize().multiplyScalar(length + amount);
|
|
116
|
-
return new Vec2_1.Vec2(this.center.x - vec.x, this.center.y - vec.y);
|
|
117
|
-
}
|
|
118
110
|
/**
|
|
119
111
|
* Set the length of this line. Center and direction remain unchanged.
|
|
120
112
|
* Modifies this line.
|
|
@@ -419,6 +411,17 @@ class Line2D {
|
|
|
419
411
|
result.push(source);
|
|
420
412
|
return result;
|
|
421
413
|
}
|
|
414
|
+
split(segmentsCount) {
|
|
415
|
+
const result = [];
|
|
416
|
+
const segmentLength = this.length / segmentsCount;
|
|
417
|
+
for (let i = 0; i < segmentsCount; i++) {
|
|
418
|
+
const line = this.clone();
|
|
419
|
+
line.moveStartPoint(-i * segmentLength);
|
|
420
|
+
line.moveEndPoint(-(segmentsCount - i - 1) * segmentLength);
|
|
421
|
+
result.push(line);
|
|
422
|
+
}
|
|
423
|
+
return result;
|
|
424
|
+
}
|
|
422
425
|
/**
|
|
423
426
|
* Returns the closest point on the line to the given point.
|
|
424
427
|
* @param point
|
package/esm/Line2D.js
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { MathUtils
|
|
1
|
+
import { MathUtils } from "three";
|
|
2
2
|
import { Vec2 } from "./Vec2";
|
|
3
3
|
import { TwoPI } from "./MathConstants";
|
|
4
4
|
import { Line3D } from "./Line3D";
|
|
@@ -93,8 +93,7 @@ export class Line2D {
|
|
|
93
93
|
* Modifies this line.
|
|
94
94
|
*/
|
|
95
95
|
moveStartPoint(amount) {
|
|
96
|
-
|
|
97
|
-
this.start.copy(p1);
|
|
96
|
+
this.start.add(this.direction.multiplyScalar(-amount));
|
|
98
97
|
return this;
|
|
99
98
|
}
|
|
100
99
|
/**
|
|
@@ -102,16 +101,9 @@ export class Line2D {
|
|
|
102
101
|
* Modifies this line.
|
|
103
102
|
*/
|
|
104
103
|
moveEndPoint(amount) {
|
|
105
|
-
|
|
106
|
-
this.end.copy(p2);
|
|
104
|
+
this.end.add(this.direction.multiplyScalar(amount));
|
|
107
105
|
return this;
|
|
108
106
|
}
|
|
109
|
-
movePointOnThisLine(point, amount) {
|
|
110
|
-
const vec = new Vector2(this.center.x - point.x, this.center.y - point.y);
|
|
111
|
-
const length = vec.length();
|
|
112
|
-
vec.normalize().multiplyScalar(length + amount);
|
|
113
|
-
return new Vec2(this.center.x - vec.x, this.center.y - vec.y);
|
|
114
|
-
}
|
|
115
107
|
/**
|
|
116
108
|
* Set the length of this line. Center and direction remain unchanged.
|
|
117
109
|
* Modifies this line.
|
|
@@ -416,6 +408,17 @@ export class Line2D {
|
|
|
416
408
|
result.push(source);
|
|
417
409
|
return result;
|
|
418
410
|
}
|
|
411
|
+
split(segmentsCount) {
|
|
412
|
+
const result = [];
|
|
413
|
+
const segmentLength = this.length / segmentsCount;
|
|
414
|
+
for (let i = 0; i < segmentsCount; i++) {
|
|
415
|
+
const line = this.clone();
|
|
416
|
+
line.moveStartPoint(-i * segmentLength);
|
|
417
|
+
line.moveEndPoint(-(segmentsCount - i - 1) * segmentLength);
|
|
418
|
+
result.push(line);
|
|
419
|
+
}
|
|
420
|
+
return result;
|
|
421
|
+
}
|
|
419
422
|
/**
|
|
420
423
|
* Returns the closest point on the line to the given point.
|
|
421
424
|
* @param point
|
package/package.json
CHANGED
package/src/Line2D.ts
CHANGED
|
@@ -107,9 +107,7 @@ export class Line2D {
|
|
|
107
107
|
* Modifies this line.
|
|
108
108
|
*/
|
|
109
109
|
public moveStartPoint(amount: number): this {
|
|
110
|
-
|
|
111
|
-
this.start.copy(p1);
|
|
112
|
-
|
|
110
|
+
this.start.add(this.direction.multiplyScalar(-amount));
|
|
113
111
|
return this;
|
|
114
112
|
}
|
|
115
113
|
|
|
@@ -118,20 +116,10 @@ export class Line2D {
|
|
|
118
116
|
* Modifies this line.
|
|
119
117
|
*/
|
|
120
118
|
public moveEndPoint(amount: number): this {
|
|
121
|
-
|
|
122
|
-
this.end.copy(p2);
|
|
123
|
-
|
|
119
|
+
this.end.add(this.direction.multiplyScalar(amount));
|
|
124
120
|
return this;
|
|
125
121
|
}
|
|
126
122
|
|
|
127
|
-
private movePointOnThisLine(point: Point2, amount: number): Vec2 {
|
|
128
|
-
const vec = new Vector2(this.center.x - point.x, this.center.y - point.y);
|
|
129
|
-
const length = vec.length();
|
|
130
|
-
vec.normalize().multiplyScalar(length + amount);
|
|
131
|
-
|
|
132
|
-
return new Vec2(this.center.x - vec.x,this.center.y - vec.y);
|
|
133
|
-
}
|
|
134
|
-
|
|
135
123
|
/**
|
|
136
124
|
* Set the length of this line. Center and direction remain unchanged.
|
|
137
125
|
* Modifies this line.
|
|
@@ -490,6 +478,18 @@ export class Line2D {
|
|
|
490
478
|
return result;
|
|
491
479
|
}
|
|
492
480
|
|
|
481
|
+
public split(segmentsCount: number): Line2D[] {
|
|
482
|
+
const result: Line2D[] = [];
|
|
483
|
+
const segmentLength = this.length / segmentsCount;
|
|
484
|
+
for (let i = 0; i < segmentsCount; i++) {
|
|
485
|
+
const line = this.clone();
|
|
486
|
+
line.moveStartPoint(-i * segmentLength);
|
|
487
|
+
line.moveEndPoint(-(segmentsCount - i - 1) * segmentLength);
|
|
488
|
+
result.push(line);
|
|
489
|
+
}
|
|
490
|
+
return result;
|
|
491
|
+
}
|
|
492
|
+
|
|
493
493
|
/**
|
|
494
494
|
* Returns the closest point on the line to the given point.
|
|
495
495
|
* @param point
|
package/types/Line2D.d.ts
CHANGED
|
@@ -38,7 +38,6 @@ export declare class Line2D {
|
|
|
38
38
|
* Modifies this line.
|
|
39
39
|
*/
|
|
40
40
|
moveEndPoint(amount: number): this;
|
|
41
|
-
private movePointOnThisLine;
|
|
42
41
|
/**
|
|
43
42
|
* Set the length of this line. Center and direction remain unchanged.
|
|
44
43
|
* Modifies this line.
|
|
@@ -177,6 +176,7 @@ export declare class Line2D {
|
|
|
177
176
|
* @param maxSegmentLength number
|
|
178
177
|
*/
|
|
179
178
|
chunk(maxSegmentLength: number): Line2D[];
|
|
179
|
+
split(segmentsCount: number): Line2D[];
|
|
180
180
|
/**
|
|
181
181
|
* Returns the closest point on the line to the given point.
|
|
182
182
|
* @param point
|