@codexo/exojs 0.6.9 → 0.6.10
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 +39 -0
- package/dist/esm/math/geometry.js +3 -3
- package/dist/esm/math/geometry.js.map +1 -1
- package/dist/esm/math/triangulate.d.ts +17 -0
- package/dist/esm/math/triangulate.js +164 -0
- package/dist/esm/math/triangulate.js.map +1 -0
- package/dist/exo.esm.js +150 -620
- package/dist/exo.esm.js.map +1 -1
- package/package.json +2 -5
package/CHANGELOG.md
CHANGED
|
@@ -4,6 +4,45 @@ All notable changes to ExoJS are documented in this file.
|
|
|
4
4
|
|
|
5
5
|
The format follows [Keep a Changelog](https://keepachangelog.com/en/1.1.0/) and the project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html).
|
|
6
6
|
|
|
7
|
+
## [0.6.10] - 2026-05-02
|
|
8
|
+
|
|
9
|
+
ExoJS now ships with **zero runtime dependencies**. The single
|
|
10
|
+
remaining dependency (`earcut` — used for polygon triangulation
|
|
11
|
+
in `Graphics.drawPolygon` / `drawStar`) was replaced with an
|
|
12
|
+
in-house ear-clipping implementation.
|
|
13
|
+
|
|
14
|
+
### Changed
|
|
15
|
+
|
|
16
|
+
- **Polygon triangulation is now in-house.** New
|
|
17
|
+
`src/math/triangulate.ts` (~205 LOC) implements ear-clipping for
|
|
18
|
+
simple 2D polygons (no holes — the only mode `buildPolygon` ever
|
|
19
|
+
used). The function is module-internal; `buildPolygon` is the
|
|
20
|
+
sole consumer and its public behavior is unchanged.
|
|
21
|
+
- **`buildPolygon` output is identical in shape to the prior
|
|
22
|
+
earcut output.** Triangle counts, winding, and area coverage
|
|
23
|
+
match. Index ordering may differ (two valid triangulations of
|
|
24
|
+
the same polygon are equally correct), but visual output is the
|
|
25
|
+
same. All existing `buildPolygon` / `buildStar` / `Graphics`
|
|
26
|
+
tests pass without modification.
|
|
27
|
+
|
|
28
|
+
### Removed
|
|
29
|
+
|
|
30
|
+
- **`earcut` runtime dependency** — fully removed from
|
|
31
|
+
`package.json`. Library `dependencies` block is now empty.
|
|
32
|
+
- **`@types/earcut`** removed from `devDependencies`.
|
|
33
|
+
- **`external: ['earcut']`** entry removed from
|
|
34
|
+
`rollup.config.ts`'s `modules` config block.
|
|
35
|
+
|
|
36
|
+
### Notes
|
|
37
|
+
|
|
38
|
+
- After this change, `npm install @codexo/exojs` installs exactly
|
|
39
|
+
one package (the library itself). No transitive dependencies.
|
|
40
|
+
- Internal triangulation handles degenerate / collinear input
|
|
41
|
+
gracefully — emits whatever ears were found and returns; never
|
|
42
|
+
throws or hangs.
|
|
43
|
+
- 11 new unit tests for `triangulate` cover triangles, convex
|
|
44
|
+
quads (CW + CCW input), L-shapes, stars, and degenerate inputs.
|
|
45
|
+
|
|
7
46
|
## [0.6.9] - 2026-05-02
|
|
8
47
|
|
|
9
48
|
> **Heads-up — breaking change despite the patch number.** `Text`'s
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import
|
|
1
|
+
import { triangulate } from './triangulate.js';
|
|
2
2
|
import { Vector } from './Vector.js';
|
|
3
3
|
import { tau } from './utils.js';
|
|
4
4
|
|
|
@@ -203,13 +203,13 @@ const buildPolygon = (points) => {
|
|
|
203
203
|
throw new Error('At least three X/Y pairs are required to build a polygon.');
|
|
204
204
|
}
|
|
205
205
|
const length = points.length / 2;
|
|
206
|
-
const triangles =
|
|
206
|
+
const triangles = triangulate(points);
|
|
207
207
|
const vertices = new Float32Array(points.length);
|
|
208
208
|
for (let i = 0; i < length; i++) {
|
|
209
209
|
vertices[i * 2] = points[i * 2];
|
|
210
210
|
vertices[(i * 2) + 1] = points[(i * 2) + 1];
|
|
211
211
|
}
|
|
212
|
-
const indices =
|
|
212
|
+
const indices = new Uint16Array(triangles);
|
|
213
213
|
return { vertices, indices, points };
|
|
214
214
|
};
|
|
215
215
|
const buildRectangle = (x, y, width, height) => {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"geometry.js","sources":["../../../../src/math/geometry.ts"],"sourcesContent":[null],"names":[],"mappings":";;;;AAUO,MAAM,SAAS,GAAG,CAAC,MAAc,EAAE,MAAc,EAAE,IAAY,EAAE,IAAY,EAAE,KAAa,KAAsB;IACrH,MAAM,MAAM,GAAG,CAAC,MAAM,EAAE,MAAM,EAAE,IAAI,EAAE,IAAI,CAAC;AAC3C,IAAA,MAAM,QAAQ,GAAG,KAAK,GAAG,CAAC;IAC1B,MAAM,KAAK,GAAG,IAAI,MAAM,CAAC,MAAM,GAAG,IAAI,EAAE,MAAM,GAAG,IAAI,CAAC,CAAC,IAAI,EAAE,CAAC,SAAS,EAAE,CAAC,QAAQ,CAAC,QAAQ,CAAC;IAC5F,MAAM,KAAK,GAAG,IAAI,MAAM,CAAC,IAAI,GAAG,MAAM,EAAE,IAAI,GAAG,MAAM,CAAC,CAAC,IAAI,EAAE,CAAC,SAAS,EAAE,CAAC,QAAQ,CAAC,QAAQ,CAAC;AAE5F,IAAA,MAAM,QAAQ,GAAG,IAAI,YAAY,CAAC;QAC9B,MAAM,GAAG,KAAK,CAAC,CAAC,EAAE,MAAM,GAAG,KAAK,CAAC,CAAC;QAClC,MAAM,GAAG,KAAK,CAAC,CAAC,EAAE,MAAM,GAAG,KAAK,CAAC,CAAC;QAClC,IAAI,GAAG,KAAK,CAAC,CAAC,EAAE,IAAI,GAAG,KAAK,CAAC,CAAC;QAC9B,IAAI,GAAG,KAAK,CAAC,CAAC,EAAE,IAAI,GAAG,KAAK,CAAC,CAAC;AACjC,KAAA,CAAC;IAEF,KAAK,CAAC,OAAO,EAAE;IACf,KAAK,CAAC,OAAO,EAAE;AAEf,IAAA,MAAM,OAAO,GAAG,IAAI,WAAW,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC;AAEnD,IAAA,OAAO,EAAE,QAAQ,EAAE,OAAO,EAAE,MAAM,EAAE;AACxC;MAEa,SAAS,GAAG,CAAC,MAAqB,EAAE,KAAa,KAAsB;AAChF,IAAA,IAAI,MAAM,CAAC,MAAM,GAAG,CAAC,EAAE;AACnB,QAAA,MAAM,IAAI,KAAK,CAAC,sDAAsD,CAAC;IAC3E;AAEA,IAAA,MAAM,SAAS,GAAG,KAAK,GAAG,CAAC;AAC3B,IAAA,MAAM,UAAU,GAAG,IAAI,MAAM,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,MAAM,CAAC,CAAC,CAAC,CAAC;IACnD,MAAM,SAAS,GAAG,IAAI,MAAM,CAAC,MAAM,CAAC,MAAM,CAAC,MAAM,GAAG,CAAC,CAAC,EAAE,MAAM,CAAC,MAAM,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC;IAClF,MAAM,aAAa,GAAG,MAAM;AAE5B,IAAA,IAAI,UAAU,CAAC,CAAC,KAAK,SAAS,CAAC,CAAC,IAAI,UAAU,CAAC,CAAC,KAAK,SAAS,CAAC,CAAC,EAAE;AAC9D,QAAA,MAAM,GAAG,MAAM,CAAC,KAAK,EAAE;QAEvB,MAAM,CAAC,GAAG,EAAE;QACZ,MAAM,CAAC,GAAG,EAAE;QAEZ,SAAS,CAAC,GAAG,CAAC,MAAM,CAAC,MAAM,CAAC,MAAM,GAAG,CAAC,CAAC,EAAE,MAAM,CAAC,MAAM,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC;AAEnE,QAAA,MAAM,SAAS,GAAG,SAAS,CAAC,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC,GAAG,SAAS,CAAC,CAAC,IAAI,GAAG,CAAC;AACpE,QAAA,MAAM,SAAS,GAAG,SAAS,CAAC,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC,GAAG,SAAS,CAAC,CAAC,IAAI,GAAG,CAAC;AAEpE,QAAA,MAAM,CAAC,OAAO,CAAC,SAAS,EAAE,SAAS,CAAC;AACpC,QAAA,MAAM,CAAC,IAAI,CAAC,SAAS,EAAE,SAAS,CAAC;IACrC;IAEA,UAAU,CAAC,OAAO,EAAE;IACpB,SAAS,CAAC,OAAO,EAAE;AAEnB,IAAA,MAAM,MAAM,GAAG,MAAM,CAAC,MAAM,GAAG,CAAC;IAChC,MAAM,aAAa,GAAkB,EAAE;AAEvC,IAAA,IAAI,GAAG,GAAG,MAAM,CAAC,CAAC,CAAC;AACnB,IAAA,IAAI,GAAG,GAAG,MAAM,CAAC,CAAC,CAAC;AACnB,IAAA,IAAI,GAAG,GAAG,MAAM,CAAC,CAAC,CAAC;AACnB,IAAA,IAAI,GAAG,GAAG,MAAM,CAAC,CAAC,CAAC;IACnB,IAAI,GAAG,GAAG,CAAC;IACX,IAAI,GAAG,GAAG,CAAC;IAEX,IAAI,KAAK,GAAG,EAAE,GAAG,GAAG,GAAG,CAAC;AACxB,IAAA,IAAI,KAAK,GAAG,GAAG,GAAG,GAAG;IACrB,IAAI,MAAM,GAAG,CAAC;IACd,IAAI,MAAM,GAAG,CAAC;IACd,IAAI,MAAM,GAAG,CAAC;IACd,IAAI,MAAM,GAAG,CAAC;AAEd,IAAA,IAAI,IAAI,GAAG,IAAI,CAAC,IAAI,CAAC,CAAC,KAAK,GAAG,KAAK,KAAK,KAAK,GAAG,KAAK,CAAC,CAAC;IAEvD,KAAK,IAAI,IAAI;IACb,KAAK,IAAI,IAAI;IACb,KAAK,IAAI,SAAS;IAClB,KAAK,IAAI,SAAS;IAElB,aAAa,CAAC,IAAI,CAAC,GAAG,GAAG,KAAK,EAAE,GAAG,GAAG,KAAK,CAAC;IAC5C,aAAa,CAAC,IAAI,CAAC,GAAG,GAAG,KAAK,EAAE,GAAG,GAAG,KAAK,CAAC;AAE5C,IAAA,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,MAAM,GAAG,CAAC,EAAE,CAAC,EAAE,EAAE;QACjC,GAAG,GAAG,MAAM,CAAC,CAAC,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC;AACzB,QAAA,GAAG,GAAG,MAAM,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;AAE/B,QAAA,GAAG,GAAG,MAAM,CAAC,CAAC,GAAG,CAAC,CAAC;QACnB,GAAG,GAAG,MAAM,CAAC,CAAC,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC;QAEzB,GAAG,GAAG,MAAM,CAAC,CAAC,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC;AACzB,QAAA,GAAG,GAAG,MAAM,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;AAE/B,QAAA,KAAK,GAAG,EAAE,GAAG,GAAG,GAAG,CAAC;AACpB,QAAA,KAAK,GAAG,GAAG,GAAG,GAAG;AAEjB,QAAA,IAAI,GAAG,IAAI,CAAC,IAAI,CAAC,CAAC,KAAK,GAAG,KAAK,KAAK,KAAK,GAAG,KAAK,CAAC,CAAC;QAEnD,KAAK,IAAI,IAAI;QACb,KAAK,IAAI,IAAI;QACb,KAAK,IAAI,SAAS;QAClB,KAAK,IAAI,SAAS;AAElB,QAAA,MAAM,GAAG,EAAE,GAAG,GAAG,GAAG,CAAC;AACrB,QAAA,MAAM,GAAG,GAAG,GAAG,GAAG;AAElB,QAAA,IAAI,GAAG,IAAI,CAAC,IAAI,CAAC,CAAC,MAAM,GAAG,MAAM,KAAK,MAAM,GAAG,MAAM,CAAC,CAAC;QAEvD,MAAM,IAAI,IAAI;QACd,MAAM,IAAI,IAAI;QACd,MAAM,IAAI,SAAS;QACnB,MAAM,IAAI,SAAS;AAEnB,QAAA,MAAM,EAAE,GAAG,CAAC,CAAC,KAAK,GAAG,GAAG,KAAK,CAAC,KAAK,GAAG,GAAG,CAAC;AAC1C,QAAA,MAAM,EAAE,GAAG,CAAC,CAAC,KAAK,GAAG,GAAG,KAAK,CAAC,KAAK,GAAG,GAAG,CAAC;AAC1C,QAAA,MAAM,EAAE,GAAG,CAAC,CAAC,CAAC,KAAK,GAAG,GAAG,KAAK,CAAC,KAAK,GAAG,GAAG,CAAC,KAAK,CAAC,CAAC,KAAK,GAAG,GAAG,KAAK,CAAC,KAAK,GAAG,GAAG,CAAC,CAAC;AAChF,QAAA,MAAM,EAAE,GAAG,CAAC,CAAC,MAAM,GAAG,GAAG,KAAK,CAAC,MAAM,GAAG,GAAG,CAAC;AAC5C,QAAA,MAAM,EAAE,GAAG,CAAC,CAAC,MAAM,GAAG,GAAG,KAAK,CAAC,MAAM,GAAG,GAAG,CAAC;AAC5C,QAAA,MAAM,EAAE,GAAG,CAAC,CAAC,CAAC,MAAM,GAAG,GAAG,KAAK,CAAC,MAAM,GAAG,GAAG,CAAC,KAAK,CAAC,CAAC,MAAM,GAAG,GAAG,KAAK,CAAC,MAAM,GAAG,GAAG,CAAC,CAAC;AAEpF,QAAA,IAAI,KAAK,GAAG,CAAC,EAAE,GAAG,EAAE,KAAK,EAAE,GAAG,EAAE,CAAC;QAEjC,IAAI,IAAI,CAAC,GAAG,CAAC,KAAK,CAAC,GAAG,GAAG,EAAE;YACvB,KAAK,IAAI,IAAI;YAEb,aAAa,CAAC,IAAI,CAAC,GAAG,GAAG,KAAK,EAAE,GAAG,GAAG,KAAK,CAAC;YAC5C,aAAa,CAAC,IAAI,CAAC,GAAG,GAAG,KAAK,EAAE,GAAG,GAAG,KAAK,CAAC;YAE5C;QACJ;AAEA,QAAA,MAAM,EAAE,GAAG,CAAC,CAAC,EAAE,GAAG,EAAE,KAAK,EAAE,GAAG,EAAE,CAAC,IAAI,KAAK;AAC1C,QAAA,MAAM,EAAE,GAAG,CAAC,CAAC,EAAE,GAAG,EAAE,KAAK,EAAE,GAAG,EAAE,CAAC,IAAI,KAAK;AAC1C,QAAA,MAAM,KAAK,GAAG,CAAC,CAAC,EAAE,GAAG,GAAG,KAAK,EAAE,GAAG,GAAG,CAAC,KAAK,CAAC,EAAE,GAAG,GAAG,KAAK,EAAE,GAAG,GAAG,CAAC,CAAC;QAEnE,IAAI,KAAK,IAAI,GAAG,GAAG,SAAS,GAAG,SAAS,CAAC,EAAE;AACvC,YAAA,MAAM,GAAG,KAAK,GAAG,MAAM;AACvB,YAAA,MAAM,GAAG,KAAK,GAAG,MAAM;AAEvB,YAAA,IAAI,GAAG,IAAI,CAAC,IAAI,CAAC,CAAC,MAAM,GAAG,MAAM,KAAK,MAAM,GAAG,MAAM,CAAC,CAAC;YAEvD,MAAM,IAAI,IAAI;YACd,MAAM,IAAI,IAAI;YACd,MAAM,IAAI,SAAS;YACnB,MAAM,IAAI,SAAS;YAEnB,aAAa,CAAC,IAAI,CAAC,GAAG,GAAG,MAAM,EAAE,GAAG,GAAG,MAAM,CAAC;YAC9C,aAAa,CAAC,IAAI,CAAC,GAAG,GAAG,MAAM,EAAE,GAAG,GAAG,MAAM,CAAC;YAC9C,aAAa,CAAC,IAAI,CAAC,GAAG,GAAG,MAAM,EAAE,GAAG,GAAG,MAAM,CAAC;QAClD;aAAO;AACH,YAAA,aAAa,CAAC,IAAI,CAAC,EAAE,EAAE,EAAE,CAAC;AAC1B,YAAA,aAAa,CAAC,IAAI,CAAC,GAAG,IAAI,EAAE,GAAG,GAAG,CAAC,EAAE,GAAG,IAAI,EAAE,GAAG,GAAG,CAAC,CAAC;QAC1D;IACJ;IAEA,GAAG,GAAG,MAAM,CAAC,CAAC,MAAM,GAAG,CAAC,IAAI,CAAC,CAAC;AAC9B,IAAA,GAAG,GAAG,MAAM,CAAC,CAAC,CAAC,MAAM,GAAG,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;IAEpC,GAAG,GAAG,MAAM,CAAC,CAAC,MAAM,GAAG,CAAC,IAAI,CAAC,CAAC;AAC9B,IAAA,GAAG,GAAG,MAAM,CAAC,CAAC,CAAC,MAAM,GAAG,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;AAEpC,IAAA,KAAK,GAAG,EAAE,GAAG,GAAG,GAAG,CAAC;AACpB,IAAA,KAAK,GAAG,GAAG,GAAG,GAAG;AAEjB,IAAA,IAAI,GAAG,IAAI,CAAC,IAAI,CAAC,CAAC,KAAK,GAAG,KAAK,KAAK,KAAK,GAAG,KAAK,CAAC,CAAC;IAEnD,KAAK,IAAI,IAAI;IACb,KAAK,IAAI,IAAI;IACb,KAAK,IAAI,SAAS;IAClB,KAAK,IAAI,SAAS;IAElB,aAAa,CAAC,IAAI,CAAC,GAAG,GAAG,KAAK,EAAE,GAAG,GAAG,KAAK,CAAC;IAC5C,aAAa,CAAC,IAAI,CAAC,GAAG,GAAG,KAAK,EAAE,GAAG,GAAG,KAAK,CAAC;;;;;AAM5C,IAAA,MAAM,gBAAgB,GAAG,aAAa,CAAC,MAAM,GAAG,CAAC;AACjD,IAAA,MAAM,QAAQ,GAAG,IAAI,YAAY,CAAC,aAAa,CAAC;AAChD,IAAA,MAAM,aAAa,GAAG,gBAAgB,IAAI,CAAC,GAAG,gBAAgB,GAAG,CAAC,GAAG,CAAC;IACtE,MAAM,OAAO,GAAG,IAAI,WAAW,CAAC,aAAa,GAAG,CAAC,CAAC;AAElD,IAAA,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,aAAa,EAAE,CAAC,EAAE,EAAE;AACpC,QAAA,MAAM,IAAI,GAAG,CAAC,GAAG,CAAC;QAElB,IAAI,CAAC,CAAC,GAAG,CAAC,MAAM,CAAC,EAAE;AACf,YAAA,OAAO,CAAC,IAAI,CAAC,GAAG,CAAC;YACjB,OAAO,CAAC,IAAI,GAAG,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC;YACzB,OAAO,CAAC,IAAI,GAAG,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC;QAC7B;aAAO;AACH,YAAA,OAAO,CAAC,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC;AACrB,YAAA,OAAO,CAAC,IAAI,GAAG,CAAC,CAAC,GAAG,CAAC;YACrB,OAAO,CAAC,IAAI,GAAG,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC;QAC7B;IACJ;IAEA,OAAO,EAAE,QAAQ,EAAE,OAAO,EAAE,MAAM,EAAE,aAAa,EAAE;AACvD;AAEO,MAAM,WAAW,GAAG,CAAC,OAAe,EAAE,OAAe,EAAE,MAAc,KAAsB;AAC9F,IAAA,MAAM,MAAM,GAAG,IAAI,CAAC,KAAK,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,MAAM,GAAG,MAAM,CAAC,CAAC;IAC1D,MAAM,OAAO,GAAG,CAAC,IAAI,CAAC,EAAE,GAAG,CAAC,IAAI,MAAM;IACtC,MAAM,MAAM,GAAkB,EAAE;;AAGhC,IAAA,MAAM,QAAQ,GAAG,IAAI,YAAY,CAAC,CAAC,MAAM,GAAG,CAAC,IAAI,CAAC,CAAC;AAEnD,IAAA,QAAQ,CAAC,CAAC,CAAC,GAAG,OAAO;AACrB,IAAA,QAAQ,CAAC,CAAC,CAAC,GAAG,OAAO;AAErB,IAAA,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,MAAM,EAAE,CAAC,EAAE,EAAE;AAC7B,QAAA,MAAM,QAAQ,GAAG,OAAO,IAAI,IAAI,CAAC,GAAG,CAAC,OAAO,GAAG,CAAC,CAAC,GAAG,MAAM,CAAC;AAC3D,QAAA,MAAM,QAAQ,GAAG,OAAO,IAAI,IAAI,CAAC,GAAG,CAAC,OAAO,GAAG,CAAC,CAAC,GAAG,MAAM,CAAC;AAE3D,QAAA,MAAM,CAAC,IAAI,CAAC,QAAQ,EAAE,QAAQ,CAAC;QAE/B,MAAM,MAAM,GAAG,CAAC,CAAC,GAAG,CAAC,IAAI,CAAC;AAE1B,QAAA,QAAQ,CAAC,MAAM,CAAC,GAAG,QAAQ;AAC3B,QAAA,QAAQ,CAAC,MAAM,GAAG,CAAC,CAAC,GAAG,QAAQ;IACnC;IAEA,MAAM,OAAO,GAAG,IAAI,WAAW,CAAC,MAAM,GAAG,CAAC,CAAC;AAE3C,IAAA,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,MAAM,EAAE,CAAC,EAAE,EAAE;AAC7B,QAAA,MAAM,IAAI,GAAG,CAAC,GAAG,CAAC;AAElB,QAAA,OAAO,CAAC,IAAI,CAAC,GAAG,CAAC;QACjB,OAAO,CAAC,IAAI,GAAG,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC;QACzB,OAAO,CAAC,IAAI,GAAG,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,GAAG,MAAM,GAAG,CAAC,GAAG,CAAC,GAAG,CAAC;IAClD;AAEA,IAAA,OAAO,EAAE,QAAQ,EAAE,OAAO,EAAE,MAAM,EAAE;AACxC;AAEO,MAAM,YAAY,GAAG,CAAC,OAAe,EAAE,OAAe,EAAE,OAAe,EAAE,OAAe,KAAsB;AACjH,IAAA,MAAM,MAAM,GAAG,IAAI,CAAC,KAAK,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,OAAO,GAAG,OAAO,CAAC,CAAC;IAC5D,MAAM,OAAO,GAAG,CAAC,IAAI,CAAC,EAAE,GAAG,CAAC,IAAI,MAAM;IACtC,MAAM,MAAM,GAAkB,EAAE;AAEhC,IAAA,MAAM,QAAQ,GAAG,IAAI,YAAY,CAAC,CAAC,MAAM,GAAG,CAAC,IAAI,CAAC,CAAC;AAEnD,IAAA,QAAQ,CAAC,CAAC,CAAC,GAAG,OAAO;AACrB,IAAA,QAAQ,CAAC,CAAC,CAAC,GAAG,OAAO;AAErB,IAAA,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,MAAM,EAAE,CAAC,EAAE,EAAE;AAC7B,QAAA,MAAM,QAAQ,GAAG,OAAO,IAAI,IAAI,CAAC,GAAG,CAAC,OAAO,GAAG,CAAC,CAAC,GAAG,OAAO,CAAC;AAC5D,QAAA,MAAM,QAAQ,GAAG,OAAO,IAAI,IAAI,CAAC,GAAG,CAAC,OAAO,GAAG,CAAC,CAAC,GAAG,OAAO,CAAC;AAE5D,QAAA,MAAM,CAAC,IAAI,CAAC,QAAQ,EAAE,QAAQ,CAAC;QAE/B,MAAM,MAAM,GAAG,CAAC,CAAC,GAAG,CAAC,IAAI,CAAC;AAE1B,QAAA,QAAQ,CAAC,MAAM,CAAC,GAAG,QAAQ;AAC3B,QAAA,QAAQ,CAAC,MAAM,GAAG,CAAC,CAAC,GAAG,QAAQ;IACnC;IAEA,MAAM,OAAO,GAAG,IAAI,WAAW,CAAC,MAAM,GAAG,CAAC,CAAC;AAE3C,IAAA,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,MAAM,EAAE,CAAC,EAAE,EAAE;AAC7B,QAAA,MAAM,IAAI,GAAG,CAAC,GAAG,CAAC;AAElB,QAAA,OAAO,CAAC,IAAI,CAAC,GAAG,CAAC;QACjB,OAAO,CAAC,IAAI,GAAG,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC;QACzB,OAAO,CAAC,IAAI,GAAG,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,GAAG,MAAM,GAAG,CAAC,GAAG,CAAC,GAAG,CAAC;IAClD;AAEA,IAAA,OAAO,EAAE,QAAQ,EAAE,OAAO,EAAE,MAAM,EAAE;AACxC;AAEO,MAAM,YAAY,GAAG,CAAC,MAAqB,KAAsB;AACpE,IAAA,IAAI,MAAM,CAAC,MAAM,GAAG,CAAC,EAAE;AACnB,QAAA,MAAM,IAAI,KAAK,CAAC,2DAA2D,CAAC;IAChF;AAEA,IAAA,MAAM,MAAM,GAAG,MAAM,CAAC,MAAM,GAAG,CAAC;IAChC,MAAM,SAAS,GAAG,MAAM,CAAC,MAAM,EAAE,EAAE,EAAE,CAAC,CAAC;IACvC,MAAM,QAAQ,GAAG,IAAI,YAAY,CAAC,MAAM,CAAC,MAAM,CAAC;AAEhD,IAAA,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,MAAM,EAAE,CAAC,EAAE,EAAE;AAC7B,QAAA,QAAQ,CAAC,CAAC,GAAG,CAAC,CAAC,GAAG,MAAM,CAAC,CAAC,GAAG,CAAC,CAAC;QAC/B,QAAQ,CAAC,CAAC,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC,GAAG,MAAM,CAAC,CAAC,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC;IAC/C;AAEA,IAAA,MAAM,OAAO,GAAG,SAAS,GAAG,IAAI,WAAW,CAAC,SAAS,CAAC,GAAG,IAAI,WAAW,CAAC,CAAC,CAAC;AAE3E,IAAA,OAAO,EAAE,QAAQ,EAAE,OAAO,EAAE,MAAM,EAAE;AACxC;AAEO,MAAM,cAAc,GAAG,CAAC,CAAS,EAAE,CAAS,EAAE,KAAa,EAAE,MAAc,KAAsB;;AAEpG,IAAA,MAAM,QAAQ,GAAG,IAAI,YAAY,CAAC;QAC9B,CAAC,EAAE,CAAC;AACJ,QAAA,CAAC,GAAG,KAAK,EAAE,CAAC;AACZ,QAAA,CAAC,EAAE,CAAC,GAAG,MAAM;AACb,QAAA,CAAC,GAAG,KAAK,EAAE,CAAC,GAAG,MAAM;AACxB,KAAA,CAAC;AACF,IAAA,MAAM,OAAO,GAAG,IAAI,WAAW,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC;;IAEnD,MAAM,MAAM,GAAG,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,GAAG,KAAK,EAAE,CAAC,EAAE,CAAC,GAAG,KAAK,EAAE,CAAC,GAAG,MAAM,EAAE,CAAC,EAAE,CAAC,GAAG,MAAM,CAAC;AAEzE,IAAA,OAAO,EAAE,QAAQ,EAAE,OAAO,EAAE,MAAM,EAAE;AACxC;MAEa,SAAS,GAAG,CAAC,OAAe,EAAE,OAAe,EAAE,MAAc,EAAE,MAAc,EAAE,WAAA,GAAsB,MAAM,GAAG,CAAC,EAAE,QAAQ,GAAG,CAAC,KAAsB;AAC5J,IAAA,MAAM,UAAU,GAAG,CAAC,IAAI,CAAC,EAAE,GAAG,EAAE,IAAI,QAAQ;AAC5C,IAAA,MAAM,MAAM,GAAG,MAAM,GAAG,CAAC;AACzB,IAAA,MAAM,KAAK,GAAG,GAAG,GAAG,MAAM;IAC1B,MAAM,IAAI,GAAkB,EAAE;AAE9B,IAAA,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,MAAM,EAAE,CAAC,EAAE,EAAE;QAC7B,MAAM,KAAK,GAAG,UAAU,IAAI,CAAC,GAAG,KAAK,CAAC;AACtC,QAAA,MAAM,GAAG,GAAG,CAAC,GAAG,CAAC,GAAG,WAAW,GAAG,MAAM;AAExC,QAAA,IAAI,CAAC,IAAI,CACL,OAAO,IAAI,GAAG,GAAG,IAAI,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC,EACjC,OAAO,IAAI,GAAG,GAAG,IAAI,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC,CACpC;IACL;AAEA,IAAA,OAAO,YAAY,CAAC,IAAI,CAAC;AAC7B;;;;"}
|
|
1
|
+
{"version":3,"file":"geometry.js","sources":["../../../../src/math/geometry.ts"],"sourcesContent":[null],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Triangulate a simple 2D polygon by ear-clipping.
|
|
3
|
+
*
|
|
4
|
+
* Input: `vertices` is a flat sequence of (x, y) pairs (length must be even,
|
|
5
|
+
* minimum 6 = 3 vertices). Polygon may be CW or CCW; the algorithm normalises
|
|
6
|
+
* to CCW internally.
|
|
7
|
+
*
|
|
8
|
+
* Output: a `Uint32Array` of indices in groups of 3 (per triangle), referencing
|
|
9
|
+
* vertex positions (the i-th vertex spans `vertices[2*i], vertices[2*i + 1]`).
|
|
10
|
+
*
|
|
11
|
+
* Polygons that are degenerate (all collinear), zero-area, or self-intersecting
|
|
12
|
+
* may produce incomplete output but must not throw or hang.
|
|
13
|
+
*
|
|
14
|
+
* @param vertices flat (x, y) pairs
|
|
15
|
+
* @returns triangle index list (length is multiple of 3)
|
|
16
|
+
*/
|
|
17
|
+
export declare function triangulate(vertices: ArrayLike<number>): Uint32Array;
|
|
@@ -0,0 +1,164 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Triangulate a simple 2D polygon by ear-clipping.
|
|
3
|
+
*
|
|
4
|
+
* Input: `vertices` is a flat sequence of (x, y) pairs (length must be even,
|
|
5
|
+
* minimum 6 = 3 vertices). Polygon may be CW or CCW; the algorithm normalises
|
|
6
|
+
* to CCW internally.
|
|
7
|
+
*
|
|
8
|
+
* Output: a `Uint32Array` of indices in groups of 3 (per triangle), referencing
|
|
9
|
+
* vertex positions (the i-th vertex spans `vertices[2*i], vertices[2*i + 1]`).
|
|
10
|
+
*
|
|
11
|
+
* Polygons that are degenerate (all collinear), zero-area, or self-intersecting
|
|
12
|
+
* may produce incomplete output but must not throw or hang.
|
|
13
|
+
*
|
|
14
|
+
* @param vertices flat (x, y) pairs
|
|
15
|
+
* @returns triangle index list (length is multiple of 3)
|
|
16
|
+
*/
|
|
17
|
+
function triangulate(vertices) {
|
|
18
|
+
const n = vertices.length >> 1;
|
|
19
|
+
if (n < 3) {
|
|
20
|
+
return new Uint32Array(0);
|
|
21
|
+
}
|
|
22
|
+
if (n === 3) {
|
|
23
|
+
// Return in CCW order; swap if input triangle is CW.
|
|
24
|
+
const ax = vertices[0], ay = vertices[1];
|
|
25
|
+
const bx = vertices[2], by = vertices[3];
|
|
26
|
+
const cx = vertices[4], cy = vertices[5];
|
|
27
|
+
return isCcwTriangle(ax, ay, bx, by, cx, cy)
|
|
28
|
+
? new Uint32Array([0, 1, 2])
|
|
29
|
+
: new Uint32Array([2, 1, 0]);
|
|
30
|
+
}
|
|
31
|
+
// Build doubly-linked list of vertex indices.
|
|
32
|
+
const prev = new Uint32Array(n);
|
|
33
|
+
const next = new Uint32Array(n);
|
|
34
|
+
for (let i = 0; i < n; i++) {
|
|
35
|
+
prev[i] = (i + n - 1) % n;
|
|
36
|
+
next[i] = (i + 1) % n;
|
|
37
|
+
}
|
|
38
|
+
// Normalise to CCW: compute signed area; if negative (CW), reverse the list.
|
|
39
|
+
if (signedArea(vertices) < 0) {
|
|
40
|
+
for (let i = 0; i < n; i++) {
|
|
41
|
+
const tmp = prev[i];
|
|
42
|
+
prev[i] = next[i];
|
|
43
|
+
next[i] = tmp;
|
|
44
|
+
}
|
|
45
|
+
}
|
|
46
|
+
const maxTriangles = n - 2;
|
|
47
|
+
const out = new Uint32Array(maxTriangles * 3);
|
|
48
|
+
let outIdx = 0;
|
|
49
|
+
let remaining = n;
|
|
50
|
+
let current = 0;
|
|
51
|
+
// Ear-clipping: at most O(n^2) iterations; bail after one full pass finds no ear.
|
|
52
|
+
while (remaining > 3) {
|
|
53
|
+
// Try each remaining vertex as a potential ear, one full pass at a time.
|
|
54
|
+
let earFound = false;
|
|
55
|
+
const passStart = current;
|
|
56
|
+
do {
|
|
57
|
+
const p = prev[current];
|
|
58
|
+
const nx = next[current];
|
|
59
|
+
const v = current;
|
|
60
|
+
const ax = vertices[p * 2], ay = vertices[p * 2 + 1];
|
|
61
|
+
const bx = vertices[v * 2], by = vertices[v * 2 + 1];
|
|
62
|
+
const cx = vertices[nx * 2], cy = vertices[nx * 2 + 1];
|
|
63
|
+
if (isCcwTriangle(ax, ay, bx, by, cx, cy) && isEar(vertices, prev, next, p, v, nx)) {
|
|
64
|
+
// Emit triangle (prev, v, next).
|
|
65
|
+
out[outIdx++] = p;
|
|
66
|
+
out[outIdx++] = v;
|
|
67
|
+
out[outIdx++] = nx;
|
|
68
|
+
// Remove v from the list.
|
|
69
|
+
next[p] = nx;
|
|
70
|
+
prev[nx] = p;
|
|
71
|
+
remaining--;
|
|
72
|
+
earFound = true;
|
|
73
|
+
current = nx;
|
|
74
|
+
break;
|
|
75
|
+
}
|
|
76
|
+
current = next[current];
|
|
77
|
+
} while (current !== passStart);
|
|
78
|
+
if (!earFound) {
|
|
79
|
+
// Degenerate polygon: no ear found in a full pass; bail out.
|
|
80
|
+
break;
|
|
81
|
+
}
|
|
82
|
+
}
|
|
83
|
+
// Emit the final triangle if exactly 3 vertices remain.
|
|
84
|
+
// Emit in CCW order (the linked-list direction may be CW after prior clips on concave polygons).
|
|
85
|
+
if (remaining === 3) {
|
|
86
|
+
const pa = prev[current];
|
|
87
|
+
const nc = next[current];
|
|
88
|
+
const ax = vertices[pa * 2], ay = vertices[pa * 2 + 1];
|
|
89
|
+
const bx = vertices[current * 2], by = vertices[current * 2 + 1];
|
|
90
|
+
const cx = vertices[nc * 2], cy = vertices[nc * 2 + 1];
|
|
91
|
+
if (isCcwTriangle(ax, ay, bx, by, cx, cy)) {
|
|
92
|
+
out[outIdx++] = pa;
|
|
93
|
+
out[outIdx++] = current;
|
|
94
|
+
out[outIdx++] = nc;
|
|
95
|
+
}
|
|
96
|
+
else {
|
|
97
|
+
out[outIdx++] = nc;
|
|
98
|
+
out[outIdx++] = current;
|
|
99
|
+
out[outIdx++] = pa;
|
|
100
|
+
}
|
|
101
|
+
}
|
|
102
|
+
return out.subarray(0, outIdx);
|
|
103
|
+
}
|
|
104
|
+
/** Shoelace signed area. Positive = CCW (mathematical orientation), negative = CW. */
|
|
105
|
+
function signedArea(vertices) {
|
|
106
|
+
const n = vertices.length >> 1;
|
|
107
|
+
let area = 0;
|
|
108
|
+
for (let i = 0; i < n; i++) {
|
|
109
|
+
const j = (i + 1) % n;
|
|
110
|
+
const x0 = vertices[i * 2];
|
|
111
|
+
const y0 = vertices[i * 2 + 1];
|
|
112
|
+
const x1 = vertices[j * 2];
|
|
113
|
+
const y1 = vertices[j * 2 + 1];
|
|
114
|
+
area += (x0 * y1) - (x1 * y0);
|
|
115
|
+
}
|
|
116
|
+
return area; // Positive = CCW, negative = CW.
|
|
117
|
+
}
|
|
118
|
+
/**
|
|
119
|
+
* Returns true if the triangle (a, b, c) has a counter-clockwise (CCW) winding.
|
|
120
|
+
* Uses the cross product of (b-a) × (c-a); positive = CCW.
|
|
121
|
+
*/
|
|
122
|
+
function isCcwTriangle(ax, ay, bx, by, cx, cy) {
|
|
123
|
+
return ((bx - ax) * (cy - ay) - (by - ay) * (cx - ax)) > 0;
|
|
124
|
+
}
|
|
125
|
+
/**
|
|
126
|
+
* Returns true if point (px, py) lies strictly inside triangle (a, b, c).
|
|
127
|
+
* Uses sign-of-cross-products. Boundary points (including corners) return false.
|
|
128
|
+
*/
|
|
129
|
+
function pointInTriangle(px, py, ax, ay, bx, by, cx, cy) {
|
|
130
|
+
const d1 = (px - bx) * (ay - by) - (ax - bx) * (py - by);
|
|
131
|
+
const d2 = (px - cx) * (by - cy) - (bx - cx) * (py - cy);
|
|
132
|
+
const d3 = (px - ax) * (cy - ay) - (cx - ax) * (py - ay);
|
|
133
|
+
const hasNeg = (d1 < 0) || (d2 < 0) || (d3 < 0);
|
|
134
|
+
const hasPos = (d1 > 0) || (d2 > 0) || (d3 > 0);
|
|
135
|
+
// Strictly inside: all same sign and none are exactly zero (exclude boundary).
|
|
136
|
+
return !(hasNeg && hasPos) && (d1 !== 0) && (d2 !== 0) && (d3 !== 0);
|
|
137
|
+
}
|
|
138
|
+
/**
|
|
139
|
+
* Returns true if vertex v is an ear: the triangle (prevIdx, v, nextIdx) contains
|
|
140
|
+
* no other polygon vertex strictly inside it.
|
|
141
|
+
*/
|
|
142
|
+
function isEar(vertices, prev, next, prevIdx, v, nextIdx) {
|
|
143
|
+
const ax = vertices[prevIdx * 2], ay = vertices[prevIdx * 2 + 1];
|
|
144
|
+
const bx = vertices[v * 2], by = vertices[v * 2 + 1];
|
|
145
|
+
const cx = vertices[nextIdx * 2], cy = vertices[nextIdx * 2 + 1];
|
|
146
|
+
// Walk all remaining vertices and check if any lie strictly inside the ear triangle.
|
|
147
|
+
// Skip the three ear vertices themselves — they can never be "inside" by strict test,
|
|
148
|
+
// but we exclude them explicitly for clarity and to avoid floating-point edge cases.
|
|
149
|
+
let node = next[nextIdx];
|
|
150
|
+
while (node !== prevIdx) {
|
|
151
|
+
if (node !== v) {
|
|
152
|
+
const px = vertices[node * 2];
|
|
153
|
+
const py = vertices[node * 2 + 1];
|
|
154
|
+
if (pointInTriangle(px, py, ax, ay, bx, by, cx, cy)) {
|
|
155
|
+
return false;
|
|
156
|
+
}
|
|
157
|
+
}
|
|
158
|
+
node = next[node];
|
|
159
|
+
}
|
|
160
|
+
return true;
|
|
161
|
+
}
|
|
162
|
+
|
|
163
|
+
export { triangulate };
|
|
164
|
+
//# sourceMappingURL=triangulate.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"triangulate.js","sources":["../../../../src/math/triangulate.ts"],"sourcesContent":[null],"names":[],"mappings":"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"}
|