@immugio/three-math-extensions 0.2.22 → 0.2.24

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 CHANGED
@@ -7,56 +7,26 @@ 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.2.22](https://github.com/Immugio/three-math-extensions/compare/16.15.10...0.2.22)
10
+ ## [0.2.24](https://github.com/Immugio/three-math-extensions/compare/0.2.23...0.2.24)
11
+
12
+ ### Commits
13
+
14
+ - Add Polygon.containsPoint and Polygon.perimeter [`9bdf2dd`](https://github.com/Immugio/three-math-extensions/commit/9bdf2ddb5823878b5d41dadf14a225f7a1f0fd8f)
15
+
16
+ ## [0.2.23](https://github.com/Immugio/three-math-extensions/compare/0.2.22...0.2.23) - 2024-04-16
17
+
18
+ ### Commits
19
+
20
+ - Add Line2D.getParallelLineInTheSameDirection [`d2e0846`](https://github.com/Immugio/three-math-extensions/commit/d2e0846024fbb29cf0a29bd5889f6e5c6811e4cb)
21
+ - Correct test file extension [`91b5e2a`](https://github.com/Immugio/three-math-extensions/commit/91b5e2ad338e8404704381a36813dcce5f00d978)
22
+
23
+ ## [0.2.22](https://github.com/Immugio/three-math-extensions/compare/0.2.21...0.2.22) - 2024-04-15
11
24
 
12
25
  ### Commits
13
26
 
14
- - Three dependency update [`7cf5cf3`](https://github.com/Immugio/three-math-extensions/commit/7cf5cf3ece28c408b544d5dcc8626a9fe005b9a5)
15
- - Packages update [`0d85b39`](https://github.com/Immugio/three-math-extensions/commit/0d85b392029f7bbaa5063cd0494e34f593d62ea5)
16
- - Add eslint [`98e4912`](https://github.com/Immugio/three-math-extensions/commit/98e4912d637b42ba80e2f3267638b43296113019)
17
- - Update jest packages [`af23b4f`](https://github.com/Immugio/three-math-extensions/commit/af23b4f08154bba3407f05b773865215e7e1cba8)
18
- - Add Rectangle, update Polygon [`58ee875`](https://github.com/Immugio/three-math-extensions/commit/58ee87539af8f9ade186e5250cba9e01926da514)
19
27
  - Documentation update [`905d178`](https://github.com/Immugio/three-math-extensions/commit/905d1787ed7ffffa370b77454222ee04e76f35b5)
20
28
  - Documentation update [`70a5f24`](https://github.com/Immugio/three-math-extensions/commit/70a5f243f8af83da3ad5d30e223788cbd877b5f0)
21
- - Add isPointInPolygon [`a59eb4b`](https://github.com/Immugio/three-math-extensions/commit/a59eb4be026f17a3106070ae626a0588cd4f4411)
22
- - Packages update [`c2ef857`](https://github.com/Immugio/three-math-extensions/commit/c2ef857c01792e64c1558424fdd2f401f72720d0)
23
- - Improve Line2D.closestPointToPoint, add Vec2.signedAngle [`151f214`](https://github.com/Immugio/three-math-extensions/commit/151f21462e0358057ad8e9d75d5782563a1061f6)
24
29
  - Add Line2D.containsPoint, Line2D.covers, Improve Line2D.equals, Line2D.overlaps, add unit tests [`7b6daf7`](https://github.com/Immugio/three-math-extensions/commit/7b6daf7028303313b6937c16514838604d89515d)
25
- - Improve documentation [`d0fcb51`](https://github.com/Immugio/three-math-extensions/commit/d0fcb5132f127b4382ac5f7291575a061b8ec121)
26
- - Add isContinuousClosedShape, add Line2D.groupConnectedLines [`4ef8c2f`](https://github.com/Immugio/three-math-extensions/commit/4ef8c2fe83fdc71dd87fee4cbc478ddf0a086442)
27
- - Vec3, Line3D - update documentation [`67d9c32`](https://github.com/Immugio/three-math-extensions/commit/67d9c328e08cc0a5599932d2f0529e97f31c9213)
28
- - Add Polygon [`629cff8`](https://github.com/Immugio/three-math-extensions/commit/629cff8ecbb963477e8ea76d7f8b16d95435cbad)
29
- - Line3D.groupConnectedLines added [`29f372b`](https://github.com/Immugio/three-math-extensions/commit/29f372bc984c06b00c50fcd9428ce9a7b9cab799)
30
- - Dependencies update and remove now duplicate Vec2.angleTo implementation [`4774abb`](https://github.com/Immugio/three-math-extensions/commit/4774abb81d882082df0da606c79a3c7bd3aecc57)
31
- - Line2D.isCloserToHorizontal [`b6f1429`](https://github.com/Immugio/three-math-extensions/commit/b6f14292d1d2765f7314c45e4c74be91280ac764)
32
- - Add Vec2.angleTo and tests [`dcf1e53`](https://github.com/Immugio/three-math-extensions/commit/dcf1e531aecf8c115f323e14e5e44059e5c5d15c)
33
- - Add Vec2.signedAngle [`863c8f2`](https://github.com/Immugio/three-math-extensions/commit/863c8f27f11288cbda535e21bb688206259269ed)
34
- - Add parallelism check to Line2D [`18064ee`](https://github.com/Immugio/three-math-extensions/commit/18064ee35a28e2c4d656f3dfb543b545044167dd)
35
- - Add Vec2.fromPoints to accept multiple points [`a261402`](https://github.com/Immugio/three-math-extensions/commit/a2614027cf5fb8263189b48f7e0bb9a23a552c15)
36
- - Add Vec2.parallelTo [`989874d`](https://github.com/Immugio/three-math-extensions/commit/989874dcfe122d3ee84d8d56d79cb88e4e441736)
37
- - Line2D.intersect - enable line segments intersection only [`1f1470e`](https://github.com/Immugio/three-math-extensions/commit/1f1470e1cf00118e643f5c44a135e0baf6b76d41)
38
- - Line3D.groupConnectedLines now supports line breaks [`417a9ea`](https://github.com/Immugio/three-math-extensions/commit/417a9ea471bf4c539f73f5fb170c962a78ee4ab4)
39
- - Add Line2D.projectOn [`4c52c5c`](https://github.com/Immugio/three-math-extensions/commit/4c52c5c2e649fbddb72ce3fca60cfd3f1319f72f)
40
- - Add functionality for incrementing x, y, z coordinates [`b292dcc`](https://github.com/Immugio/three-math-extensions/commit/b292dcc4e8f7f0f2a63e1810c482d96ca6bebebe)
41
- - Add Line3D.index [`7ed13d2`](https://github.com/Immugio/three-math-extensions/commit/7ed13d213748056c9dafd86288c3bcec9a28d1ba)
42
- - Polygon from bounding size [`eae6701`](https://github.com/Immugio/three-math-extensions/commit/eae67012f57f426f8b5259b765000447ce06d608)
43
- - Add Vec3.fromPoints [`62684d7`](https://github.com/Immugio/three-math-extensions/commit/62684d7f6dc1318d345ed74288bb6afd5394e1d3)
44
- - Line2D and Line3D to return this instead of specific type [`761ef6a`](https://github.com/Immugio/three-math-extensions/commit/761ef6a9d8cc4e35120b666576794e521aa3b991)
45
- - Line2D.in3DSpace added [`a6ce0ec`](https://github.com/Immugio/three-math-extensions/commit/a6ce0ecb67f5c7b2a75fcc283c28af626153a4af)
46
- - Line3D.connectsTo added [`6d2cfa0`](https://github.com/Immugio/three-math-extensions/commit/6d2cfa0f5335c665f325a694a32c57b574ec326d)
47
- - Line2D.hasIntersectionWithAngle to support optional tolerance [`b313bbe`](https://github.com/Immugio/three-math-extensions/commit/b313bbe118d435d53750deefd9a9e29ba6ec5c71)
48
- - Line2D.hasIntersectionWithAngle - modulo all angles [`5409aa0`](https://github.com/Immugio/three-math-extensions/commit/5409aa0bc41510efa86d548e91837e44e5b6c343)
49
- - Use Vec2 instead of Vector2 [`7e6a6ea`](https://github.com/Immugio/three-math-extensions/commit/7e6a6ea272f4441ef4bc78b3fdec23fc783fa1db)
50
- - Update release instructions [`5b41a2e`](https://github.com/Immugio/three-math-extensions/commit/5b41a2ed7e15450dbb6088a7f7ed0031a013badc)
51
- - Add Polygon to exports [`ed66775`](https://github.com/Immugio/three-math-extensions/commit/ed66775c33e961835b23843222b822cfd9c16b1d)
52
- - Vec2.fromPoint and Vec3.fromPoint should accept null [`4b871af`](https://github.com/Immugio/three-math-extensions/commit/4b871af297bdcbe8584f1e2b99d602247b77687c)
53
- - Add HalfPI [`7a6614c`](https://github.com/Immugio/three-math-extensions/commit/7a6614c3d6f59ac216e58986927112f94207a755)
54
- - Dependencies update [`e8def7e`](https://github.com/Immugio/three-math-extensions/commit/e8def7e94575720cc25296681f844c4e53a9fc5c)
55
- - Use double quotes [`c1f19db`](https://github.com/Immugio/three-math-extensions/commit/c1f19db2d0886a6ff5555bdbf353dfca20a70f0a)
56
- - Documentation update [`d5c7a07`](https://github.com/Immugio/three-math-extensions/commit/d5c7a0765f6097f5d3a3be01967d4059f19682fb)
57
- - Excluded files from build [`ec70614`](https://github.com/Immugio/three-math-extensions/commit/ec70614bc7df7a98f854c7a6693365118e04faf7)
58
-
59
- ## [16.15.10](https://github.com/Immugio/three-math-extensions/compare/0.2.21...16.15.10) - 2023-01-02
60
30
 
61
31
  ## [0.2.21](https://github.com/Immugio/three-math-extensions/compare/0.2.20...0.2.21) - 2024-04-03
62
32
 
@@ -171,11 +141,7 @@ Generated by [`auto-changelog`](https://github.com/CookPete/auto-changelog).
171
141
  - Improve documentation [`d0fcb51`](https://github.com/Immugio/three-math-extensions/commit/d0fcb5132f127b4382ac5f7291575a061b8ec121)
172
142
  - Excluded files from build [`ec70614`](https://github.com/Immugio/three-math-extensions/commit/ec70614bc7df7a98f854c7a6693365118e04faf7)
173
143
 
174
- ## [0.2.5](https://github.com/Immugio/three-math-extensions/compare/0.2.4...0.2.5) - 2023-04-11
175
-
176
- ## [0.2.4](https://github.com/Immugio/three-math-extensions/compare/0.2.3...0.2.4) - 2023-04-11
177
-
178
- ## [0.2.3](https://github.com/Immugio/three-math-extensions/compare/0.2.2...0.2.3) - 2023-04-11
144
+ ## [0.2.5](https://github.com/Immugio/three-math-extensions/compare/0.2.2...0.2.5) - 2023-04-11
179
145
 
180
146
  ### Commits
181
147
 
@@ -285,62 +251,15 @@ Generated by [`auto-changelog`](https://github.com/CookPete/auto-changelog).
285
251
 
286
252
  ## [0.0.7](https://github.com/Immugio/three-math-extensions/compare/0.0.6...0.0.7) - 2022-11-21
287
253
 
288
- ## [0.0.6](https://github.com/Immugio/three-math-extensions/compare/0.0.5...0.0.6) - 2022-11-24
289
-
290
- ## [0.0.5](https://github.com/Immugio/three-math-extensions/compare/0.0.4...0.0.5) - 2023-09-01
254
+ ## [0.0.6](https://github.com/Immugio/three-math-extensions/compare/0.0.4...0.0.6) - 2022-11-24
291
255
 
292
256
  ### Commits
293
257
 
294
- - Generate documentation using TSDoc [`304c3a8`](https://github.com/Immugio/three-math-extensions/commit/304c3a84b5dcc49183db57083f550d134ae641b2)
295
- - Add eslint [`98e4912`](https://github.com/Immugio/three-math-extensions/commit/98e4912d637b42ba80e2f3267638b43296113019)
296
- - Update jest packages [`af23b4f`](https://github.com/Immugio/three-math-extensions/commit/af23b4f08154bba3407f05b773865215e7e1cba8)
297
- - Add Rectangle, update Polygon [`58ee875`](https://github.com/Immugio/three-math-extensions/commit/58ee87539af8f9ade186e5250cba9e01926da514)
298
- - Add isPointInPolygon [`a59eb4b`](https://github.com/Immugio/three-math-extensions/commit/a59eb4be026f17a3106070ae626a0588cd4f4411)
299
- - Improve Line2D.closestPointToPoint, add Vec2.signedAngle [`151f214`](https://github.com/Immugio/three-math-extensions/commit/151f21462e0358057ad8e9d75d5782563a1061f6)
300
- - Improve documentation [`d0fcb51`](https://github.com/Immugio/three-math-extensions/commit/d0fcb5132f127b4382ac5f7291575a061b8ec121)
301
- - Vec3, Line3D - update documentation [`67d9c32`](https://github.com/Immugio/three-math-extensions/commit/67d9c328e08cc0a5599932d2f0529e97f31c9213)
302
- - Add Polygon [`629cff8`](https://github.com/Immugio/three-math-extensions/commit/629cff8ecbb963477e8ea76d7f8b16d95435cbad)
303
258
  - Improve API, minor bug fix, improve test coverage [`881a5f0`](https://github.com/Immugio/three-math-extensions/commit/881a5f096823f0d5fd90faa76cd602f076291bc5)
304
- - Line3D.groupConnectedLines added [`29f372b`](https://github.com/Immugio/three-math-extensions/commit/29f372bc984c06b00c50fcd9428ce9a7b9cab799)
305
- - Dependencies update and remove now duplicate Vec2.angleTo implementation [`4774abb`](https://github.com/Immugio/three-math-extensions/commit/4774abb81d882082df0da606c79a3c7bd3aecc57)
306
- - Line2D.isCloserToHorizontal [`b6f1429`](https://github.com/Immugio/three-math-extensions/commit/b6f14292d1d2765f7314c45e4c74be91280ac764)
307
- - Add Vec2.angleTo and tests [`dcf1e53`](https://github.com/Immugio/three-math-extensions/commit/dcf1e531aecf8c115f323e14e5e44059e5c5d15c)
308
- - Add Vec2.signedAngle [`863c8f2`](https://github.com/Immugio/three-math-extensions/commit/863c8f27f11288cbda535e21bb688206259269ed)
309
- - Add intersect method to Line3D [`6fe47de`](https://github.com/Immugio/three-math-extensions/commit/6fe47de7caaa1807b47a4363e551510c463757d7)
310
- - Add Line2D.extendToOrTrimAtIntersection [`ab82a36`](https://github.com/Immugio/three-math-extensions/commit/ab82a36db52b9ae83cf8bfb848362d295140d073)
311
- - Add Vec2.fromPoints to accept multiple points [`a261402`](https://github.com/Immugio/three-math-extensions/commit/a2614027cf5fb8263189b48f7e0bb9a23a552c15)
312
- - Improve documentation for Vec2 and Vec3 [`6a2373d`](https://github.com/Immugio/three-math-extensions/commit/6a2373d8b6754a87720dcaea5d98336bfa7bc5b5)
313
- - Add Vec2.parallelTo [`989874d`](https://github.com/Immugio/three-math-extensions/commit/989874dcfe122d3ee84d8d56d79cb88e4e441736)
314
- - Line2D.intersect - enable line segments intersection only [`1f1470e`](https://github.com/Immugio/three-math-extensions/commit/1f1470e1cf00118e643f5c44a135e0baf6b76d41)
315
- - Line3D.groupConnectedLines now supports line breaks [`417a9ea`](https://github.com/Immugio/three-math-extensions/commit/417a9ea471bf4c539f73f5fb170c962a78ee4ab4)
316
- - Add Line2D.projectOn [`4c52c5c`](https://github.com/Immugio/three-math-extensions/commit/4c52c5c2e649fbddb72ce3fca60cfd3f1319f72f)
317
- - Added "isNear" to Vec2 & Vec3 as a shorthand for distanceTo <= maxDistance [`a27cff8`](https://github.com/Immugio/three-math-extensions/commit/a27cff8421472f625ed240439b9e6a7d2c430db8)
318
- - Add Line3D.index [`7ed13d2`](https://github.com/Immugio/three-math-extensions/commit/7ed13d213748056c9dafd86288c3bcec9a28d1ba)
319
259
  - Add .npmignore [`f58329a`](https://github.com/Immugio/three-math-extensions/commit/f58329a86b96589bb574d6ebed37d4cc4474663a)
320
- - Polygon from bounding size [`eae6701`](https://github.com/Immugio/three-math-extensions/commit/eae67012f57f426f8b5259b765000447ce06d608)
321
- - Add Vec2 documentation [`f625e66`](https://github.com/Immugio/three-math-extensions/commit/f625e66b60ee0d90c5c788a80989f64013d60265)
322
- - Clean up documentation [`70c8d5e`](https://github.com/Immugio/three-math-extensions/commit/70c8d5efe8b7095d7a03af637df3af5d46615293)
323
- - Line2D and Line3D to return this instead of specific type [`761ef6a`](https://github.com/Immugio/three-math-extensions/commit/761ef6a9d8cc4e35120b666576794e521aa3b991)
324
- - Line2D.in3DSpace added [`a6ce0ec`](https://github.com/Immugio/three-math-extensions/commit/a6ce0ecb67f5c7b2a75fcc283c28af626153a4af)
325
- - Line3D.connectsTo added [`6d2cfa0`](https://github.com/Immugio/three-math-extensions/commit/6d2cfa0f5335c665f325a694a32c57b574ec326d)
326
- - Line2D.hasIntersectionWithAngle to support optional tolerance [`b313bbe`](https://github.com/Immugio/three-math-extensions/commit/b313bbe118d435d53750deefd9a9e29ba6ec5c71)
327
- - Add Vec2.moveTowards [`b46ba12`](https://github.com/Immugio/three-math-extensions/commit/b46ba1286f9924cd9bfecfb37200664202e964ba)
328
- - Line2D.hasIntersectionWithAngle - modulo all angles [`5409aa0`](https://github.com/Immugio/three-math-extensions/commit/5409aa0bc41510efa86d548e91837e44e5b6c343)
329
- - Use Vec2 instead of Vector2 [`7e6a6ea`](https://github.com/Immugio/three-math-extensions/commit/7e6a6ea272f4441ef4bc78b3fdec23fc783fa1db)
330
- - Add release instructions into README.md [`03653b1`](https://github.com/Immugio/three-math-extensions/commit/03653b1ffa55be606d3f9cd588e28a6084462c2e)
331
- - Documentation improvements [`160db8b`](https://github.com/Immugio/three-math-extensions/commit/160db8ba6d6e5eb63a4e91ed9c40efd6fa70181a)
332
- - Update release instructions [`5b41a2e`](https://github.com/Immugio/three-math-extensions/commit/5b41a2ed7e15450dbb6088a7f7ed0031a013badc)
333
- - Add Polygon to exports [`ed66775`](https://github.com/Immugio/three-math-extensions/commit/ed66775c33e961835b23843222b822cfd9c16b1d)
334
- - Vec2.fromPoint and Vec3.fromPoint should accept null [`4b871af`](https://github.com/Immugio/three-math-extensions/commit/4b871af297bdcbe8584f1e2b99d602247b77687c)
335
- - Documentation improvements [`2f3e676`](https://github.com/Immugio/three-math-extensions/commit/2f3e6768b3b0139b60688fc151a4084f15566f8d)
336
- - Documentation update [`d5c7a07`](https://github.com/Immugio/three-math-extensions/commit/d5c7a0765f6097f5d3a3be01967d4059f19682fb)
337
- - Fix peer dependency version [`00dd116`](https://github.com/Immugio/three-math-extensions/commit/00dd1169f578d5769207031fa625f29c96a38c31)
338
- - Add Line2D.extendToOrTrimAtIntersection [`b22aa12`](https://github.com/Immugio/three-math-extensions/commit/b22aa120b5eb02562cebc4573374ebb61e2dba14)
339
260
  - Correct change log version [`c6244bf`](https://github.com/Immugio/three-math-extensions/commit/c6244bf1488ad21bcc5589d1dff62c41d8182d48)
340
261
  - Release 0.0.4 - tag pattern 6 [`c1c5454`](https://github.com/Immugio/three-math-extensions/commit/c1c54541ed400e1ad49bf42fe8926cd5293efefd)
341
262
  - Release 0.0.4 - tag pattern 5 [`5245eed`](https://github.com/Immugio/three-math-extensions/commit/5245eed60195103e989c0fadf9bd642f39ef4589)
342
- - Excluded files from build [`ec70614`](https://github.com/Immugio/three-math-extensions/commit/ec70614bc7df7a98f854c7a6693365118e04faf7)
343
- - Revert npm ignore [`590b26a`](https://github.com/Immugio/three-math-extensions/commit/590b26a9e57fc41466b51e711f3f5c648e2d56ed)
344
263
 
345
264
  ## 0.0.4 - 2022-11-21
346
265
 
package/cjs/Line2D.js CHANGED
@@ -3,7 +3,6 @@ Object.defineProperty(exports, "__esModule", { value: true });
3
3
  exports.Line2D = void 0;
4
4
  const three_1 = require("three");
5
5
  const Vec2_1 = require("./Vec2");
6
- const three_2 = require("three");
7
6
  const MathConstants_1 = require("./MathConstants");
8
7
  const Line3D_1 = require("./Line3D");
9
8
  const directions2d_1 = require("./directions2d");
@@ -160,6 +159,23 @@ class Line2D {
160
159
  const closestPointToPoint = this.closestPointToPoint(p, clampToLine, this.#target);
161
160
  return closestPointToPoint.distanceTo(p);
162
161
  }
162
+ /**
163
+ * Returns a copy of @other line, the direction of @other is reversed if needed.
164
+ * Returns null if lines are not parallel.
165
+ * @param other
166
+ * @param parallelTolerance
167
+ */
168
+ getParallelLineInTheSameDirection(other, parallelTolerance = 0) {
169
+ const direction = this.direction;
170
+ if (direction.angleTo(other.direction) <= parallelTolerance) {
171
+ return other.clone();
172
+ }
173
+ const otherLineOppositeDirection = other.clone().flip();
174
+ if (otherLineOppositeDirection.direction.angleTo(direction) <= parallelTolerance) {
175
+ return otherLineOppositeDirection;
176
+ }
177
+ return null;
178
+ }
163
179
  /**
164
180
  * Returns the direction of this line.
165
181
  */
@@ -171,9 +187,9 @@ class Line2D {
171
187
  * Modifies this line.
172
188
  */
173
189
  flip() {
174
- const temp = this.start.clone();
190
+ this.#target.copy(this.start);
175
191
  this.start.copy(this.end);
176
- this.end.copy(temp);
192
+ this.end.copy(this.#target);
177
193
  return this;
178
194
  }
179
195
  /**
@@ -422,7 +438,7 @@ class Line2D {
422
438
  const startEnd_startP = _startEnd.dot(_startP);
423
439
  let t = startEnd_startP / startEnd2;
424
440
  if (clampToLine) {
425
- t = three_2.MathUtils.clamp(t, 0, 1);
441
+ t = three_1.MathUtils.clamp(t, 0, 1);
426
442
  }
427
443
  return t;
428
444
  }
package/cjs/Polygon.js CHANGED
@@ -4,6 +4,8 @@ exports.Polygon = void 0;
4
4
  const Vec2_1 = require("./Vec2");
5
5
  const Rectangle_1 = require("./Rectangle");
6
6
  const BoundingBox_1 = require("./BoundingBox");
7
+ const polygonPerimeter_1 = require("./polygonPerimeter");
8
+ const isPointInPolygon_1 = require("./isPointInPolygon");
7
9
  class Polygon {
8
10
  contour;
9
11
  holes;
@@ -87,6 +89,12 @@ class Polygon {
87
89
  this.holes?.forEach(hole => this.flipSingle(centerX, hole));
88
90
  return this;
89
91
  }
92
+ perimeter() {
93
+ return (0, polygonPerimeter_1.polygonPerimeter)(this.contour);
94
+ }
95
+ containsPoint(point) {
96
+ return (0, isPointInPolygon_1.isPointInPolygon)(this.contour, point) && (this.holes || []).every(hole => !(0, isPointInPolygon_1.isPointInPolygon)(hole, point));
97
+ }
90
98
  flipSingle(centerX, poly) {
91
99
  for (const point of poly) {
92
100
  const xDistanceToCenter = Math.abs(centerX - point.x);
package/cjs/index.js CHANGED
@@ -1,6 +1,6 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.isContinuousClosedShape = exports.directions2d = exports.directions = exports.isPointInPolygon = exports.HalfPI = exports.TwoPI = exports.normalizeAngleRadians = exports.normalizeAngleDegrees = exports.Rectangle = exports.BoundingBox = exports.Polygon = exports.Size2 = exports.Line3D = exports.Line2D = exports.Vec3 = exports.Vec2 = void 0;
3
+ exports.polygonPerimeter = exports.isContinuousClosedShape = exports.directions2d = exports.directions = exports.isPointInPolygon = exports.HalfPI = exports.TwoPI = exports.normalizeAngleRadians = exports.normalizeAngleDegrees = exports.Rectangle = exports.BoundingBox = exports.Polygon = exports.Size2 = exports.Line3D = exports.Line2D = exports.Vec3 = exports.Vec2 = void 0;
4
4
  var Vec2_1 = require("./Vec2");
5
5
  Object.defineProperty(exports, "Vec2", { enumerable: true, get: function () { return Vec2_1.Vec2; } });
6
6
  var Vec3_1 = require("./Vec3");
@@ -32,3 +32,5 @@ var directions2d_1 = require("./directions2d");
32
32
  Object.defineProperty(exports, "directions2d", { enumerable: true, get: function () { return directions2d_1.directions2d; } });
33
33
  var isContinuousClosedShape_1 = require("./isContinuousClosedShape");
34
34
  Object.defineProperty(exports, "isContinuousClosedShape", { enumerable: true, get: function () { return isContinuousClosedShape_1.isContinuousClosedShape; } });
35
+ var polygonPerimeter_1 = require("./polygonPerimeter");
36
+ Object.defineProperty(exports, "polygonPerimeter", { enumerable: true, get: function () { return polygonPerimeter_1.polygonPerimeter; } });
@@ -0,0 +1,15 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.polygonPerimeter = void 0;
4
+ function polygonPerimeter(polygon, forceClosedPolygon = false) {
5
+ if (forceClosedPolygon && !polygon[0].equals(polygon.at(-1))) {
6
+ polygon = [...polygon];
7
+ polygon.push(polygon[0].clone());
8
+ }
9
+ let length = 0;
10
+ for (let i = 0; i < polygon.length - 1; i++) {
11
+ length += polygon[i].distanceTo(polygon[i + 1]);
12
+ }
13
+ return length;
14
+ }
15
+ exports.polygonPerimeter = polygonPerimeter;
@@ -44,7 +44,7 @@
44
44
 
45
45
  #### Defined in
46
46
 
47
- [src/BoundingBox.ts:4](https://github.com/Immugio/three-math-extensions/blob/905d178/src/BoundingBox.ts#L4)
47
+ [src/BoundingBox.ts:4](https://github.com/Immugio/three-math-extensions/blob/336678b/src/BoundingBox.ts#L4)
48
48
 
49
49
  ## Properties
50
50
 
@@ -54,7 +54,7 @@
54
54
 
55
55
  #### Defined in
56
56
 
57
- [src/BoundingBox.ts:4](https://github.com/Immugio/three-math-extensions/blob/905d178/src/BoundingBox.ts#L4)
57
+ [src/BoundingBox.ts:4](https://github.com/Immugio/three-math-extensions/blob/336678b/src/BoundingBox.ts#L4)
58
58
 
59
59
  ___
60
60
 
@@ -64,7 +64,7 @@ ___
64
64
 
65
65
  #### Defined in
66
66
 
67
- [src/BoundingBox.ts:4](https://github.com/Immugio/three-math-extensions/blob/905d178/src/BoundingBox.ts#L4)
67
+ [src/BoundingBox.ts:4](https://github.com/Immugio/three-math-extensions/blob/336678b/src/BoundingBox.ts#L4)
68
68
 
69
69
  ___
70
70
 
@@ -74,7 +74,7 @@ ___
74
74
 
75
75
  #### Defined in
76
76
 
77
- [src/BoundingBox.ts:4](https://github.com/Immugio/three-math-extensions/blob/905d178/src/BoundingBox.ts#L4)
77
+ [src/BoundingBox.ts:4](https://github.com/Immugio/three-math-extensions/blob/336678b/src/BoundingBox.ts#L4)
78
78
 
79
79
  ___
80
80
 
@@ -84,7 +84,7 @@ ___
84
84
 
85
85
  #### Defined in
86
86
 
87
- [src/BoundingBox.ts:4](https://github.com/Immugio/three-math-extensions/blob/905d178/src/BoundingBox.ts#L4)
87
+ [src/BoundingBox.ts:4](https://github.com/Immugio/three-math-extensions/blob/336678b/src/BoundingBox.ts#L4)
88
88
 
89
89
  ## Accessors
90
90
 
@@ -98,7 +98,7 @@ ___
98
98
 
99
99
  #### Defined in
100
100
 
101
- [src/BoundingBox.ts:11](https://github.com/Immugio/three-math-extensions/blob/905d178/src/BoundingBox.ts#L11)
101
+ [src/BoundingBox.ts:11](https://github.com/Immugio/three-math-extensions/blob/336678b/src/BoundingBox.ts#L11)
102
102
 
103
103
  ## Methods
104
104
 
@@ -118,4 +118,4 @@ ___
118
118
 
119
119
  #### Defined in
120
120
 
121
- [src/BoundingBox.ts:7](https://github.com/Immugio/three-math-extensions/blob/905d178/src/BoundingBox.ts#L7)
121
+ [src/BoundingBox.ts:7](https://github.com/Immugio/three-math-extensions/blob/336678b/src/BoundingBox.ts#L7)