okgeometry-api 0.4.1 → 0.4.2
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/Mesh.d.ts +102 -1
- package/dist/Mesh.d.ts.map +1 -1
- package/dist/Mesh.js +730 -8
- package/dist/Mesh.js.map +1 -1
- package/package.json +1 -1
package/dist/Mesh.d.ts
CHANGED
|
@@ -16,6 +16,7 @@ export declare class Mesh {
|
|
|
16
16
|
private _indexBuffer;
|
|
17
17
|
private _vertices;
|
|
18
18
|
private _faces;
|
|
19
|
+
private _edgeVertexPairs;
|
|
19
20
|
private constructor();
|
|
20
21
|
/**
|
|
21
22
|
* Float32 xyz positions for Three.js BufferGeometry.
|
|
@@ -135,6 +136,25 @@ export declare class Mesh {
|
|
|
135
136
|
* @returns New Mesh representing the swept surface
|
|
136
137
|
*/
|
|
137
138
|
static sweep(profilePoints: Point[], pathPoints: Point[], caps?: boolean): Mesh;
|
|
139
|
+
/**
|
|
140
|
+
* Compute a stable planar normal from ordered curve points.
|
|
141
|
+
* Closed curves use Newell's method; open curves use first non-collinear triple.
|
|
142
|
+
*/
|
|
143
|
+
static computePlanarCurveNormal(points: Point[], closed: boolean): Vec3;
|
|
144
|
+
/**
|
|
145
|
+
* Extrude a planar curve along a direction.
|
|
146
|
+
* Open curves return an uncapped polysurface; closed curves are capped solids.
|
|
147
|
+
*/
|
|
148
|
+
static extrudePlanarCurve(points: Point[], normal: Vec3, height: number, closed: boolean): Mesh;
|
|
149
|
+
/**
|
|
150
|
+
* Shift a closed cutter profile slightly opposite to travel direction and
|
|
151
|
+
* compensate height so the distal end remains at the user-intended depth.
|
|
152
|
+
*/
|
|
153
|
+
static prepareBooleanCutterCurve(points: Point[], closed: boolean, normal: Vec3, height: number): {
|
|
154
|
+
points: Point[];
|
|
155
|
+
height: number;
|
|
156
|
+
epsilon: number;
|
|
157
|
+
};
|
|
138
158
|
/**
|
|
139
159
|
* Sweep any curve type along any curve type.
|
|
140
160
|
* Passes exact curve data to WASM for native evaluation (no pre-sampling).
|
|
@@ -147,6 +167,16 @@ export declare class Mesh {
|
|
|
147
167
|
static sweepCurves(profile: SweepableCurve, path: SweepableCurve, segments?: number, caps?: boolean): Mesh;
|
|
148
168
|
/** Encode a curve into the WASM format for sweep_curves. */
|
|
149
169
|
private static encodeCurve;
|
|
170
|
+
private static mergeMeshes;
|
|
171
|
+
private static estimateCurveScale;
|
|
172
|
+
/**
|
|
173
|
+
* Build a mesh from raw position and index buffers.
|
|
174
|
+
*/
|
|
175
|
+
private static fromPositionsAndIndices;
|
|
176
|
+
/**
|
|
177
|
+
* Unique undirected triangle edges as vertex-index pairs.
|
|
178
|
+
*/
|
|
179
|
+
private getUniqueEdgeVertexPairs;
|
|
150
180
|
/**
|
|
151
181
|
* Translate this mesh by an offset vector.
|
|
152
182
|
* @param offset - Translation vector
|
|
@@ -212,7 +242,7 @@ export declare class Mesh {
|
|
|
212
242
|
applyMatrix(matrix: number[]): Mesh;
|
|
213
243
|
/**
|
|
214
244
|
* Evaluate a point on the mesh surface at parametric coordinates.
|
|
215
|
-
* Maps u
|
|
245
|
+
* Maps u ∈ [0,1] and v ∈ [0,1] across the mesh's bounding box and
|
|
216
246
|
* finds the corresponding surface point via ray casting.
|
|
217
247
|
*
|
|
218
248
|
* @param u - Parameter in first surface direction [0, 1]
|
|
@@ -226,6 +256,59 @@ export declare class Mesh {
|
|
|
226
256
|
* @returns Array of polylines representing open boundaries
|
|
227
257
|
*/
|
|
228
258
|
boundaryPolylines(): Polyline[];
|
|
259
|
+
/**
|
|
260
|
+
* Axis-aligned bounds of this mesh.
|
|
261
|
+
*/
|
|
262
|
+
getBounds(): {
|
|
263
|
+
min: Point;
|
|
264
|
+
max: Point;
|
|
265
|
+
};
|
|
266
|
+
/**
|
|
267
|
+
* Unit normal of a triangle face.
|
|
268
|
+
*/
|
|
269
|
+
getFaceNormal(faceIndex: number): Vec3;
|
|
270
|
+
/**
|
|
271
|
+
* Centroid of a triangle face.
|
|
272
|
+
*/
|
|
273
|
+
getFaceCentroid(faceIndex: number): Point;
|
|
274
|
+
/**
|
|
275
|
+
* Area of a triangle face.
|
|
276
|
+
*/
|
|
277
|
+
getFaceArea(faceIndex: number): number;
|
|
278
|
+
/**
|
|
279
|
+
* Find edge-connected coplanar triangles that belong to the same planar face.
|
|
280
|
+
*/
|
|
281
|
+
getCoplanarFaceIndices(faceIndex: number): number[];
|
|
282
|
+
/**
|
|
283
|
+
* Unique edge count for this triangulated mesh.
|
|
284
|
+
*/
|
|
285
|
+
getEdgeCount(): number;
|
|
286
|
+
/**
|
|
287
|
+
* Return edge endpoints by edge index in the unique edge list.
|
|
288
|
+
*/
|
|
289
|
+
getEdgeVertices(edgeIndex: number): [Point, Point];
|
|
290
|
+
/**
|
|
291
|
+
* Raycast against this mesh and return nearest hit.
|
|
292
|
+
*/
|
|
293
|
+
raycast(origin: Point, direction: Vec3, maxDistance?: number): {
|
|
294
|
+
point: Point;
|
|
295
|
+
normal: Vec3;
|
|
296
|
+
faceIndex: number;
|
|
297
|
+
distance: number;
|
|
298
|
+
} | null;
|
|
299
|
+
/**
|
|
300
|
+
* Raycast against this mesh and return all hits sorted by distance.
|
|
301
|
+
*/
|
|
302
|
+
raycastAll(origin: Point, direction: Vec3, maxDistance?: number): Array<{
|
|
303
|
+
point: Point;
|
|
304
|
+
normal: Vec3;
|
|
305
|
+
faceIndex: number;
|
|
306
|
+
distance: number;
|
|
307
|
+
}>;
|
|
308
|
+
/**
|
|
309
|
+
* Push/pull a planar face set by moving its coplanar connected region.
|
|
310
|
+
*/
|
|
311
|
+
extrudeFace(faceIndex: number, distance: number): Mesh;
|
|
229
312
|
/**
|
|
230
313
|
* Check if this triangulated mesh represents a closed volume.
|
|
231
314
|
* Returns true when no topological boundary edges are found.
|
|
@@ -239,11 +322,27 @@ export declare class Mesh {
|
|
|
239
322
|
* Uses majority vote across multiple ray directions for robustness.
|
|
240
323
|
*/
|
|
241
324
|
containsPoint(point: Point): boolean;
|
|
325
|
+
/**
|
|
326
|
+
* Find the coplanar + edge-connected face group containing a triangle.
|
|
327
|
+
*/
|
|
328
|
+
findFaceByTriangleIndex(triangleIndex: number): {
|
|
329
|
+
centroid: Point;
|
|
330
|
+
normal: Vec3;
|
|
331
|
+
} | null;
|
|
332
|
+
/**
|
|
333
|
+
* Find the best matching coplanar + edge-connected face group by normal
|
|
334
|
+
* similarity and optional point proximity.
|
|
335
|
+
*/
|
|
336
|
+
findFaceByNormal(targetNormal: Vec3, nearPoint?: Point): {
|
|
337
|
+
centroid: Point;
|
|
338
|
+
normal: Vec3;
|
|
339
|
+
} | null;
|
|
242
340
|
/**
|
|
243
341
|
* Count unique ray/triangle crossings from origin along direction.
|
|
244
342
|
* Distances are deduplicated to collapse paired hits on triangulated quads.
|
|
245
343
|
*/
|
|
246
344
|
private countRayCrossings;
|
|
345
|
+
private buildCoplanarConnectedFaceGroups;
|
|
247
346
|
/**
|
|
248
347
|
* Map each raw vertex index to a welded topological vertex index.
|
|
249
348
|
* Uses scale-aware quantization to merge duplicate seam vertices.
|
|
@@ -253,6 +352,8 @@ export declare class Mesh {
|
|
|
253
352
|
* Moller-Trumbore ray/triangle intersection distance.
|
|
254
353
|
*/
|
|
255
354
|
private static rayTriangleDistance;
|
|
355
|
+
private static triangleNormal;
|
|
356
|
+
private static edgeKey;
|
|
256
357
|
/**
|
|
257
358
|
* Export this mesh to OBJ format.
|
|
258
359
|
* @returns OBJ file content as string
|
package/dist/Mesh.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Mesh.d.ts","sourceRoot":"","sources":["../src/Mesh.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,KAAK,EAAE,MAAM,YAAY,CAAC;AACnC,OAAO,EAAE,IAAI,EAAE,MAAM,WAAW,CAAC;AACjC,OAAO,EAAE,KAAK,EAAE,MAAM,YAAY,CAAC;AACnC,OAAO,EAAE,QAAQ,EAAE,MAAM,eAAe,CAAC;AAOzC,OAAO,KAAK,EAAE,cAAc,EAAE,YAAY,EAAE,MAAM,YAAY,CAAC;AAK/D;;;;;GAKG;AACH,qBAAa,IAAI;IACf,OAAO,CAAC,OAAO,CAAe;IAC9B,OAAO,CAAC,YAAY,CAAS;IAG7B,OAAO,CAAC,eAAe,CAA6B;IACpD,OAAO,CAAC,YAAY,CAA4B;IAChD,OAAO,CAAC,SAAS,CAAwB;IACzC,OAAO,CAAC,MAAM,CAA2B;
|
|
1
|
+
{"version":3,"file":"Mesh.d.ts","sourceRoot":"","sources":["../src/Mesh.ts"],"names":[],"mappings":"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"}
|
package/dist/Mesh.js
CHANGED
|
@@ -1,6 +1,7 @@
|
|
|
1
1
|
import { ensureInit } from "./engine.js";
|
|
2
2
|
import { Point } from "./Point.js";
|
|
3
3
|
import { Vec3 } from "./Vec3.js";
|
|
4
|
+
import { Plane } from "./Plane.js";
|
|
4
5
|
import { Polyline } from "./Polyline.js";
|
|
5
6
|
import { Line } from "./Line.js";
|
|
6
7
|
import { Circle } from "./Circle.js";
|
|
@@ -23,10 +24,11 @@ export class Mesh {
|
|
|
23
24
|
this._indexBuffer = null;
|
|
24
25
|
this._vertices = null;
|
|
25
26
|
this._faces = null;
|
|
27
|
+
this._edgeVertexPairs = null;
|
|
26
28
|
this._buffer = buffer;
|
|
27
29
|
this._vertexCount = buffer.length > 0 ? buffer[0] : 0;
|
|
28
30
|
}
|
|
29
|
-
//
|
|
31
|
+
// ── GPU-ready buffers ──────────────────────────────────────────
|
|
30
32
|
/**
|
|
31
33
|
* Float32 xyz positions for Three.js BufferGeometry.
|
|
32
34
|
* Lazy-computed and cached.
|
|
@@ -64,7 +66,7 @@ export class Mesh {
|
|
|
64
66
|
get faceCount() {
|
|
65
67
|
return this.indexBuffer.length / 3;
|
|
66
68
|
}
|
|
67
|
-
//
|
|
69
|
+
// ── High-level accessors (lazy) ────────────────────────────────
|
|
68
70
|
/**
|
|
69
71
|
* Get all vertices as Point objects.
|
|
70
72
|
* Lazy-computed and cached.
|
|
@@ -100,7 +102,7 @@ export class Mesh {
|
|
|
100
102
|
get rawBuffer() {
|
|
101
103
|
return this._buffer;
|
|
102
104
|
}
|
|
103
|
-
//
|
|
105
|
+
// ── Static factories ───────────────────────────────────────────
|
|
104
106
|
/**
|
|
105
107
|
* Create a Mesh from a raw WASM buffer.
|
|
106
108
|
* @param buffer - Float64Array in mesh buffer format
|
|
@@ -238,6 +240,83 @@ export class Mesh {
|
|
|
238
240
|
ensureInit();
|
|
239
241
|
return new Mesh(wasm.sweep_polylines(pointsToCoords(profilePoints), pointsToCoords(pathPoints), caps));
|
|
240
242
|
}
|
|
243
|
+
/**
|
|
244
|
+
* Compute a stable planar normal from ordered curve points.
|
|
245
|
+
* Closed curves use Newell's method; open curves use first non-collinear triple.
|
|
246
|
+
*/
|
|
247
|
+
static computePlanarCurveNormal(points, closed) {
|
|
248
|
+
const n = points.length;
|
|
249
|
+
if (n < 3)
|
|
250
|
+
return Vec3.Y;
|
|
251
|
+
if (closed) {
|
|
252
|
+
let nx = 0;
|
|
253
|
+
let ny = 0;
|
|
254
|
+
let nz = 0;
|
|
255
|
+
for (let i = 0; i < n; i++) {
|
|
256
|
+
const a = points[i];
|
|
257
|
+
const b = points[(i + 1) % n];
|
|
258
|
+
nx += (a.y - b.y) * (a.z + b.z);
|
|
259
|
+
ny += (a.z - b.z) * (a.x + b.x);
|
|
260
|
+
nz += (a.x - b.x) * (a.y + b.y);
|
|
261
|
+
}
|
|
262
|
+
const normal = new Vec3(nx, ny, nz);
|
|
263
|
+
if (normal.length() >= 1e-10)
|
|
264
|
+
return normal.normalize();
|
|
265
|
+
}
|
|
266
|
+
for (let i = 0; i < n - 2; i++) {
|
|
267
|
+
const p0 = points[i];
|
|
268
|
+
const p1 = points[i + 1];
|
|
269
|
+
const p2 = points[i + 2];
|
|
270
|
+
const e1 = p1.sub(p0);
|
|
271
|
+
const e2 = p2.sub(p0);
|
|
272
|
+
const cross = e1.cross(e2);
|
|
273
|
+
if (cross.length() >= 1e-10)
|
|
274
|
+
return cross.normalize();
|
|
275
|
+
}
|
|
276
|
+
return Vec3.Y;
|
|
277
|
+
}
|
|
278
|
+
/**
|
|
279
|
+
* Extrude a planar curve along a direction.
|
|
280
|
+
* Open curves return an uncapped polysurface; closed curves are capped solids.
|
|
281
|
+
*/
|
|
282
|
+
static extrudePlanarCurve(points, normal, height, closed) {
|
|
283
|
+
if (points.length < 2)
|
|
284
|
+
return new Mesh(new Float64Array(0));
|
|
285
|
+
const topPoints = points.map((p) => new Point(p.x + normal.x * height, p.y + normal.y * height, p.z + normal.z * height));
|
|
286
|
+
if (!closed) {
|
|
287
|
+
const direction = new Vec3(normal.x * height, normal.y * height, normal.z * height);
|
|
288
|
+
return new Polyline(points).extrude(direction, 1, false);
|
|
289
|
+
}
|
|
290
|
+
const sideWalls = Mesh.loftPolylines([points, topPoints], 1, false);
|
|
291
|
+
const bottomCap = Mesh.patchFromPoints(points);
|
|
292
|
+
const topCap = Mesh.patchFromPoints(topPoints);
|
|
293
|
+
return Mesh.mergeMeshes([sideWalls, bottomCap, topCap]);
|
|
294
|
+
}
|
|
295
|
+
/**
|
|
296
|
+
* Shift a closed cutter profile slightly opposite to travel direction and
|
|
297
|
+
* compensate height so the distal end remains at the user-intended depth.
|
|
298
|
+
*/
|
|
299
|
+
static prepareBooleanCutterCurve(points, closed, normal, height) {
|
|
300
|
+
if (!closed) {
|
|
301
|
+
return { points, height, epsilon: 0 };
|
|
302
|
+
}
|
|
303
|
+
const absHeight = Math.abs(height);
|
|
304
|
+
if (absHeight < 1e-9) {
|
|
305
|
+
return { points, height, epsilon: 0 };
|
|
306
|
+
}
|
|
307
|
+
const scale = Mesh.estimateCurveScale(points);
|
|
308
|
+
const baseEpsilon = Math.max(1e-6, scale * 1e-5);
|
|
309
|
+
const epsilon = Math.max(1e-8, Math.min(baseEpsilon, absHeight * 0.25));
|
|
310
|
+
const delta = height >= 0 ? -epsilon : epsilon;
|
|
311
|
+
const offset = normal.scale(delta);
|
|
312
|
+
const shifted = points.map((p) => new Point(p.x + offset.x, p.y + offset.y, p.z + offset.z));
|
|
313
|
+
const offsetAlongNormal = offset.dot(normal);
|
|
314
|
+
return {
|
|
315
|
+
points: shifted,
|
|
316
|
+
height: height - offsetAlongNormal,
|
|
317
|
+
epsilon,
|
|
318
|
+
};
|
|
319
|
+
}
|
|
241
320
|
/**
|
|
242
321
|
* Sweep any curve type along any curve type.
|
|
243
322
|
* Passes exact curve data to WASM for native evaluation (no pre-sampling).
|
|
@@ -332,7 +411,105 @@ export class Mesh {
|
|
|
332
411
|
data.set(coords, 2);
|
|
333
412
|
return data;
|
|
334
413
|
}
|
|
335
|
-
|
|
414
|
+
static mergeMeshes(meshes) {
|
|
415
|
+
let totalVertexCount = 0;
|
|
416
|
+
let totalPositionValues = 0;
|
|
417
|
+
let totalIndexValues = 0;
|
|
418
|
+
for (const mesh of meshes) {
|
|
419
|
+
const raw = mesh.rawBuffer;
|
|
420
|
+
const vertexCount = raw.length > 0 ? Math.max(0, Math.floor(raw[0])) : 0;
|
|
421
|
+
const positionValues = vertexCount * 3;
|
|
422
|
+
const indexValues = Math.max(0, raw.length - 1 - positionValues);
|
|
423
|
+
totalVertexCount += vertexCount;
|
|
424
|
+
totalPositionValues += positionValues;
|
|
425
|
+
totalIndexValues += indexValues;
|
|
426
|
+
}
|
|
427
|
+
const out = new Float64Array(1 + totalPositionValues + totalIndexValues);
|
|
428
|
+
out[0] = totalVertexCount;
|
|
429
|
+
let writePos = 1;
|
|
430
|
+
let writeIdx = 1 + totalPositionValues;
|
|
431
|
+
let vertexOffset = 0;
|
|
432
|
+
for (const mesh of meshes) {
|
|
433
|
+
const raw = mesh.rawBuffer;
|
|
434
|
+
const vertexCount = raw.length > 0 ? Math.max(0, Math.floor(raw[0])) : 0;
|
|
435
|
+
const positionValues = vertexCount * 3;
|
|
436
|
+
const indexValues = Math.max(0, raw.length - 1 - positionValues);
|
|
437
|
+
out.set(raw.subarray(1, 1 + positionValues), writePos);
|
|
438
|
+
for (let i = 0; i < indexValues; i++) {
|
|
439
|
+
out[writeIdx + i] = raw[1 + positionValues + i] + vertexOffset;
|
|
440
|
+
}
|
|
441
|
+
writePos += positionValues;
|
|
442
|
+
writeIdx += indexValues;
|
|
443
|
+
vertexOffset += vertexCount;
|
|
444
|
+
}
|
|
445
|
+
return new Mesh(out);
|
|
446
|
+
}
|
|
447
|
+
static estimateCurveScale(points) {
|
|
448
|
+
if (points.length === 0)
|
|
449
|
+
return 1;
|
|
450
|
+
let minX = Number.POSITIVE_INFINITY;
|
|
451
|
+
let minY = Number.POSITIVE_INFINITY;
|
|
452
|
+
let minZ = Number.POSITIVE_INFINITY;
|
|
453
|
+
let maxX = Number.NEGATIVE_INFINITY;
|
|
454
|
+
let maxY = Number.NEGATIVE_INFINITY;
|
|
455
|
+
let maxZ = Number.NEGATIVE_INFINITY;
|
|
456
|
+
for (const p of points) {
|
|
457
|
+
if (p.x < minX)
|
|
458
|
+
minX = p.x;
|
|
459
|
+
if (p.y < minY)
|
|
460
|
+
minY = p.y;
|
|
461
|
+
if (p.z < minZ)
|
|
462
|
+
minZ = p.z;
|
|
463
|
+
if (p.x > maxX)
|
|
464
|
+
maxX = p.x;
|
|
465
|
+
if (p.y > maxY)
|
|
466
|
+
maxY = p.y;
|
|
467
|
+
if (p.z > maxZ)
|
|
468
|
+
maxZ = p.z;
|
|
469
|
+
}
|
|
470
|
+
const dx = maxX - minX;
|
|
471
|
+
const dy = maxY - minY;
|
|
472
|
+
const dz = maxZ - minZ;
|
|
473
|
+
const diag = Math.sqrt(dx * dx + dy * dy + dz * dz);
|
|
474
|
+
return Math.max(diag, 1);
|
|
475
|
+
}
|
|
476
|
+
/**
|
|
477
|
+
* Build a mesh from raw position and index buffers.
|
|
478
|
+
*/
|
|
479
|
+
static fromPositionsAndIndices(positions, indices) {
|
|
480
|
+
const vertexCount = positions.length / 3;
|
|
481
|
+
const out = new Float64Array(1 + positions.length + indices.length);
|
|
482
|
+
out[0] = vertexCount;
|
|
483
|
+
out.set(positions, 1);
|
|
484
|
+
for (let i = 0; i < indices.length; i++) {
|
|
485
|
+
out[1 + positions.length + i] = indices[i];
|
|
486
|
+
}
|
|
487
|
+
return new Mesh(out);
|
|
488
|
+
}
|
|
489
|
+
/**
|
|
490
|
+
* Unique undirected triangle edges as vertex-index pairs.
|
|
491
|
+
*/
|
|
492
|
+
getUniqueEdgeVertexPairs() {
|
|
493
|
+
if (this._edgeVertexPairs)
|
|
494
|
+
return this._edgeVertexPairs;
|
|
495
|
+
const unique = new Map();
|
|
496
|
+
const idx = this.indexBuffer;
|
|
497
|
+
for (let i = 0; i + 2 < idx.length; i += 3) {
|
|
498
|
+
const a = idx[i];
|
|
499
|
+
const b = idx[i + 1];
|
|
500
|
+
const c = idx[i + 2];
|
|
501
|
+
const edges = [[a, b], [b, c], [c, a]];
|
|
502
|
+
for (const [u, v] of edges) {
|
|
503
|
+
const key = Mesh.edgeKey(u, v);
|
|
504
|
+
if (!unique.has(key)) {
|
|
505
|
+
unique.set(key, [u, v]);
|
|
506
|
+
}
|
|
507
|
+
}
|
|
508
|
+
}
|
|
509
|
+
this._edgeVertexPairs = Array.from(unique.values());
|
|
510
|
+
return this._edgeVertexPairs;
|
|
511
|
+
}
|
|
512
|
+
// ── Transforms ────────────────────────────────────────────────
|
|
336
513
|
/**
|
|
337
514
|
* Translate this mesh by an offset vector.
|
|
338
515
|
* @param offset - Translation vector
|
|
@@ -379,7 +556,7 @@ export class Mesh {
|
|
|
379
556
|
ensureInit();
|
|
380
557
|
return new Mesh(wasm.mesh_scale(this._vertexCount, this._buffer, sx, sy, sz));
|
|
381
558
|
}
|
|
382
|
-
//
|
|
559
|
+
// ── Booleans ───────────────────────────────────────────────────
|
|
383
560
|
/**
|
|
384
561
|
* Compute boolean union with another mesh.
|
|
385
562
|
* @param other - Mesh to union with
|
|
@@ -407,7 +584,7 @@ export class Mesh {
|
|
|
407
584
|
ensureInit();
|
|
408
585
|
return new Mesh(wasm.mesh_boolean_intersection(this._vertexCount, this._buffer, other._vertexCount, other._buffer));
|
|
409
586
|
}
|
|
410
|
-
//
|
|
587
|
+
// ── Intersection queries ───────────────────────────────────────
|
|
411
588
|
/**
|
|
412
589
|
* Compute intersection curves with a plane.
|
|
413
590
|
* @param plane - Cutting plane
|
|
@@ -439,7 +616,7 @@ export class Mesh {
|
|
|
439
616
|
}
|
|
440
617
|
/**
|
|
441
618
|
* Evaluate a point on the mesh surface at parametric coordinates.
|
|
442
|
-
* Maps u
|
|
619
|
+
* Maps u ∈ [0,1] and v ∈ [0,1] across the mesh's bounding box and
|
|
443
620
|
* finds the corresponding surface point via ray casting.
|
|
444
621
|
*
|
|
445
622
|
* @param u - Parameter in first surface direction [0, 1]
|
|
@@ -461,6 +638,343 @@ export class Mesh {
|
|
|
461
638
|
const buf = wasm.mesh_boundary_polylines(this._vertexCount, this._buffer);
|
|
462
639
|
return parsePolylineBuf(buf).map(pts => new Polyline(pts));
|
|
463
640
|
}
|
|
641
|
+
/**
|
|
642
|
+
* Axis-aligned bounds of this mesh.
|
|
643
|
+
*/
|
|
644
|
+
getBounds() {
|
|
645
|
+
const pos = this.positionBuffer;
|
|
646
|
+
if (pos.length < 3) {
|
|
647
|
+
return { min: Point.ORIGIN, max: Point.ORIGIN };
|
|
648
|
+
}
|
|
649
|
+
let minX = Number.POSITIVE_INFINITY;
|
|
650
|
+
let minY = Number.POSITIVE_INFINITY;
|
|
651
|
+
let minZ = Number.POSITIVE_INFINITY;
|
|
652
|
+
let maxX = Number.NEGATIVE_INFINITY;
|
|
653
|
+
let maxY = Number.NEGATIVE_INFINITY;
|
|
654
|
+
let maxZ = Number.NEGATIVE_INFINITY;
|
|
655
|
+
for (let i = 0; i < pos.length; i += 3) {
|
|
656
|
+
const x = pos[i];
|
|
657
|
+
const y = pos[i + 1];
|
|
658
|
+
const z = pos[i + 2];
|
|
659
|
+
if (x < minX)
|
|
660
|
+
minX = x;
|
|
661
|
+
if (y < minY)
|
|
662
|
+
minY = y;
|
|
663
|
+
if (z < minZ)
|
|
664
|
+
minZ = z;
|
|
665
|
+
if (x > maxX)
|
|
666
|
+
maxX = x;
|
|
667
|
+
if (y > maxY)
|
|
668
|
+
maxY = y;
|
|
669
|
+
if (z > maxZ)
|
|
670
|
+
maxZ = z;
|
|
671
|
+
}
|
|
672
|
+
return {
|
|
673
|
+
min: new Point(minX, minY, minZ),
|
|
674
|
+
max: new Point(maxX, maxY, maxZ),
|
|
675
|
+
};
|
|
676
|
+
}
|
|
677
|
+
/**
|
|
678
|
+
* Unit normal of a triangle face.
|
|
679
|
+
*/
|
|
680
|
+
getFaceNormal(faceIndex) {
|
|
681
|
+
if (!Number.isFinite(faceIndex) || faceIndex < 0 || faceIndex >= this.faceCount) {
|
|
682
|
+
return Vec3.Y;
|
|
683
|
+
}
|
|
684
|
+
const idx = this.indexBuffer;
|
|
685
|
+
const pos = this.positionBuffer;
|
|
686
|
+
const i0 = idx[faceIndex * 3];
|
|
687
|
+
const i1 = idx[faceIndex * 3 + 1];
|
|
688
|
+
const i2 = idx[faceIndex * 3 + 2];
|
|
689
|
+
const off0 = i0 * 3;
|
|
690
|
+
const off1 = i1 * 3;
|
|
691
|
+
const off2 = i2 * 3;
|
|
692
|
+
const normal = Mesh.triangleNormal(pos[off0], pos[off0 + 1], pos[off0 + 2], pos[off1], pos[off1 + 1], pos[off1 + 2], pos[off2], pos[off2 + 1], pos[off2 + 2]);
|
|
693
|
+
return normal ?? Vec3.Y;
|
|
694
|
+
}
|
|
695
|
+
/**
|
|
696
|
+
* Centroid of a triangle face.
|
|
697
|
+
*/
|
|
698
|
+
getFaceCentroid(faceIndex) {
|
|
699
|
+
if (!Number.isFinite(faceIndex) || faceIndex < 0 || faceIndex >= this.faceCount) {
|
|
700
|
+
return Point.ORIGIN;
|
|
701
|
+
}
|
|
702
|
+
const idx = this.indexBuffer;
|
|
703
|
+
const pos = this.positionBuffer;
|
|
704
|
+
const i0 = idx[faceIndex * 3];
|
|
705
|
+
const i1 = idx[faceIndex * 3 + 1];
|
|
706
|
+
const i2 = idx[faceIndex * 3 + 2];
|
|
707
|
+
const off0 = i0 * 3;
|
|
708
|
+
const off1 = i1 * 3;
|
|
709
|
+
const off2 = i2 * 3;
|
|
710
|
+
return new Point((pos[off0] + pos[off1] + pos[off2]) / 3, (pos[off0 + 1] + pos[off1 + 1] + pos[off2 + 1]) / 3, (pos[off0 + 2] + pos[off1 + 2] + pos[off2 + 2]) / 3);
|
|
711
|
+
}
|
|
712
|
+
/**
|
|
713
|
+
* Area of a triangle face.
|
|
714
|
+
*/
|
|
715
|
+
getFaceArea(faceIndex) {
|
|
716
|
+
if (!Number.isFinite(faceIndex) || faceIndex < 0 || faceIndex >= this.faceCount) {
|
|
717
|
+
return 0;
|
|
718
|
+
}
|
|
719
|
+
const idx = this.indexBuffer;
|
|
720
|
+
const pos = this.positionBuffer;
|
|
721
|
+
const i0 = idx[faceIndex * 3];
|
|
722
|
+
const i1 = idx[faceIndex * 3 + 1];
|
|
723
|
+
const i2 = idx[faceIndex * 3 + 2];
|
|
724
|
+
const aoff = i0 * 3;
|
|
725
|
+
const boff = i1 * 3;
|
|
726
|
+
const coff = i2 * 3;
|
|
727
|
+
const e1x = pos[boff] - pos[aoff];
|
|
728
|
+
const e1y = pos[boff + 1] - pos[aoff + 1];
|
|
729
|
+
const e1z = pos[boff + 2] - pos[aoff + 2];
|
|
730
|
+
const e2x = pos[coff] - pos[aoff];
|
|
731
|
+
const e2y = pos[coff + 1] - pos[aoff + 1];
|
|
732
|
+
const e2z = pos[coff + 2] - pos[aoff + 2];
|
|
733
|
+
const cx = e1y * e2z - e1z * e2y;
|
|
734
|
+
const cy = e1z * e2x - e1x * e2z;
|
|
735
|
+
const cz = e1x * e2y - e1y * e2x;
|
|
736
|
+
return Math.sqrt(cx * cx + cy * cy + cz * cz) * 0.5;
|
|
737
|
+
}
|
|
738
|
+
/**
|
|
739
|
+
* Find edge-connected coplanar triangles that belong to the same planar face.
|
|
740
|
+
*/
|
|
741
|
+
getCoplanarFaceIndices(faceIndex) {
|
|
742
|
+
if (!Number.isFinite(faceIndex) || faceIndex < 0 || faceIndex >= this.faceCount) {
|
|
743
|
+
return [];
|
|
744
|
+
}
|
|
745
|
+
const targetNormal = this.getFaceNormal(faceIndex);
|
|
746
|
+
const targetCentroid = this.getFaceCentroid(faceIndex);
|
|
747
|
+
const EPSILON = 0.01;
|
|
748
|
+
const faceCount = this.faceCount;
|
|
749
|
+
const idx = this.indexBuffer;
|
|
750
|
+
const coplanarCandidates = [];
|
|
751
|
+
const candidateSet = new Set();
|
|
752
|
+
for (let i = 0; i < faceCount; i++) {
|
|
753
|
+
const n = this.getFaceNormal(i);
|
|
754
|
+
const dot = targetNormal.dot(n);
|
|
755
|
+
if (dot <= 1 - EPSILON)
|
|
756
|
+
continue;
|
|
757
|
+
const c = this.getFaceCentroid(i);
|
|
758
|
+
const dx = c.x - targetCentroid.x;
|
|
759
|
+
const dy = c.y - targetCentroid.y;
|
|
760
|
+
const dz = c.z - targetCentroid.z;
|
|
761
|
+
const planeDist = Math.abs(dx * targetNormal.x + dy * targetNormal.y + dz * targetNormal.z);
|
|
762
|
+
if (planeDist >= EPSILON)
|
|
763
|
+
continue;
|
|
764
|
+
coplanarCandidates.push(i);
|
|
765
|
+
candidateSet.add(i);
|
|
766
|
+
}
|
|
767
|
+
if (!candidateSet.has(faceIndex)) {
|
|
768
|
+
return [faceIndex];
|
|
769
|
+
}
|
|
770
|
+
const edgeToFaces = new Map();
|
|
771
|
+
const faceEdges = new Map();
|
|
772
|
+
for (const fi of coplanarCandidates) {
|
|
773
|
+
const a = idx[fi * 3];
|
|
774
|
+
const b = idx[fi * 3 + 1];
|
|
775
|
+
const c = idx[fi * 3 + 2];
|
|
776
|
+
const edges = [[a, b], [b, c], [c, a]];
|
|
777
|
+
const keys = [];
|
|
778
|
+
for (const [u, v] of edges) {
|
|
779
|
+
const lo = Math.min(u, v);
|
|
780
|
+
const hi = Math.max(u, v);
|
|
781
|
+
const key = `${lo}_${hi}`;
|
|
782
|
+
keys.push(key);
|
|
783
|
+
const faces = edgeToFaces.get(key);
|
|
784
|
+
if (faces) {
|
|
785
|
+
faces.push(fi);
|
|
786
|
+
}
|
|
787
|
+
else {
|
|
788
|
+
edgeToFaces.set(key, [fi]);
|
|
789
|
+
}
|
|
790
|
+
}
|
|
791
|
+
faceEdges.set(fi, keys);
|
|
792
|
+
}
|
|
793
|
+
const connected = [];
|
|
794
|
+
const visited = new Set();
|
|
795
|
+
const queue = [faceIndex];
|
|
796
|
+
visited.add(faceIndex);
|
|
797
|
+
while (queue.length > 0) {
|
|
798
|
+
const current = queue.shift();
|
|
799
|
+
connected.push(current);
|
|
800
|
+
const keys = faceEdges.get(current) ?? [];
|
|
801
|
+
for (const key of keys) {
|
|
802
|
+
const neighbors = edgeToFaces.get(key) ?? [];
|
|
803
|
+
for (const neighbor of neighbors) {
|
|
804
|
+
if (!candidateSet.has(neighbor) || visited.has(neighbor))
|
|
805
|
+
continue;
|
|
806
|
+
visited.add(neighbor);
|
|
807
|
+
queue.push(neighbor);
|
|
808
|
+
}
|
|
809
|
+
}
|
|
810
|
+
}
|
|
811
|
+
return connected;
|
|
812
|
+
}
|
|
813
|
+
/**
|
|
814
|
+
* Unique edge count for this triangulated mesh.
|
|
815
|
+
*/
|
|
816
|
+
getEdgeCount() {
|
|
817
|
+
return this.getUniqueEdgeVertexPairs().length;
|
|
818
|
+
}
|
|
819
|
+
/**
|
|
820
|
+
* Return edge endpoints by edge index in the unique edge list.
|
|
821
|
+
*/
|
|
822
|
+
getEdgeVertices(edgeIndex) {
|
|
823
|
+
const pairs = this.getUniqueEdgeVertexPairs();
|
|
824
|
+
if (!Number.isFinite(edgeIndex) || edgeIndex < 0 || edgeIndex >= pairs.length) {
|
|
825
|
+
return [Point.ORIGIN, Point.ORIGIN];
|
|
826
|
+
}
|
|
827
|
+
const [i0, i1] = pairs[Math.floor(edgeIndex)];
|
|
828
|
+
const pos = this.positionBuffer;
|
|
829
|
+
const off0 = i0 * 3;
|
|
830
|
+
const off1 = i1 * 3;
|
|
831
|
+
return [
|
|
832
|
+
new Point(pos[off0], pos[off0 + 1], pos[off0 + 2]),
|
|
833
|
+
new Point(pos[off1], pos[off1 + 1], pos[off1 + 2]),
|
|
834
|
+
];
|
|
835
|
+
}
|
|
836
|
+
/**
|
|
837
|
+
* Raycast against this mesh and return nearest hit.
|
|
838
|
+
*/
|
|
839
|
+
raycast(origin, direction, maxDistance = Number.POSITIVE_INFINITY) {
|
|
840
|
+
const hits = this.raycastAll(origin, direction, maxDistance);
|
|
841
|
+
return hits.length > 0 ? hits[0] : null;
|
|
842
|
+
}
|
|
843
|
+
/**
|
|
844
|
+
* Raycast against this mesh and return all hits sorted by distance.
|
|
845
|
+
*/
|
|
846
|
+
raycastAll(origin, direction, maxDistance = Number.POSITIVE_INFINITY) {
|
|
847
|
+
const dirLen = direction.length();
|
|
848
|
+
if (!Number.isFinite(dirLen) || dirLen < 1e-12)
|
|
849
|
+
return [];
|
|
850
|
+
const dir = direction.scale(1 / dirLen);
|
|
851
|
+
const hits = [];
|
|
852
|
+
const idx = this.indexBuffer;
|
|
853
|
+
const pos = this.positionBuffer;
|
|
854
|
+
const triCount = idx.length / 3;
|
|
855
|
+
for (let f = 0; f < triCount; f++) {
|
|
856
|
+
const i0 = idx[f * 3];
|
|
857
|
+
const i1 = idx[f * 3 + 1];
|
|
858
|
+
const i2 = idx[f * 3 + 2];
|
|
859
|
+
const off0 = i0 * 3;
|
|
860
|
+
const off1 = i1 * 3;
|
|
861
|
+
const off2 = i2 * 3;
|
|
862
|
+
const t = Mesh.rayTriangleDistance(origin.x, origin.y, origin.z, dir.x, dir.y, dir.z, pos[off0], pos[off0 + 1], pos[off0 + 2], pos[off1], pos[off1 + 1], pos[off1 + 2], pos[off2], pos[off2 + 1], pos[off2 + 2]);
|
|
863
|
+
if (t === null || !Number.isFinite(t) || t > maxDistance)
|
|
864
|
+
continue;
|
|
865
|
+
hits.push({
|
|
866
|
+
point: new Point(origin.x + dir.x * t, origin.y + dir.y * t, origin.z + dir.z * t),
|
|
867
|
+
normal: this.getFaceNormal(f),
|
|
868
|
+
faceIndex: f,
|
|
869
|
+
distance: t,
|
|
870
|
+
});
|
|
871
|
+
}
|
|
872
|
+
hits.sort((a, b) => a.distance - b.distance);
|
|
873
|
+
return hits;
|
|
874
|
+
}
|
|
875
|
+
/**
|
|
876
|
+
* Push/pull a planar face set by moving its coplanar connected region.
|
|
877
|
+
*/
|
|
878
|
+
extrudeFace(faceIndex, distance) {
|
|
879
|
+
if (!Number.isFinite(faceIndex) || faceIndex < 0 || faceIndex >= this.faceCount) {
|
|
880
|
+
return Mesh.fromBuffer(new Float64Array(this._buffer));
|
|
881
|
+
}
|
|
882
|
+
const pushNormal = this.getFaceNormal(faceIndex);
|
|
883
|
+
const coplanarFaces = this.getCoplanarFaceIndices(faceIndex);
|
|
884
|
+
const coplanarFaceSet = new Set(coplanarFaces);
|
|
885
|
+
const idx = this.indexBuffer;
|
|
886
|
+
const pos = this.positionBuffer;
|
|
887
|
+
const vertexCount = this.vertexCount;
|
|
888
|
+
const faceCount = this.faceCount;
|
|
889
|
+
const verts = new Float64Array(vertexCount * 3);
|
|
890
|
+
for (let i = 0; i < verts.length; i++) {
|
|
891
|
+
verts[i] = pos[i];
|
|
892
|
+
}
|
|
893
|
+
const coplanarVertexSet = new Set();
|
|
894
|
+
for (const fi of coplanarFaces) {
|
|
895
|
+
coplanarVertexSet.add(idx[fi * 3]);
|
|
896
|
+
coplanarVertexSet.add(idx[fi * 3 + 1]);
|
|
897
|
+
coplanarVertexSet.add(idx[fi * 3 + 2]);
|
|
898
|
+
}
|
|
899
|
+
const POS_EPSILON_SQ = 1e-10;
|
|
900
|
+
const NORMAL_EPSILON = 0.01;
|
|
901
|
+
const uniquePositions = [];
|
|
902
|
+
const assignedCoplanar = new Set();
|
|
903
|
+
for (const ci of coplanarVertexSet) {
|
|
904
|
+
if (assignedCoplanar.has(ci))
|
|
905
|
+
continue;
|
|
906
|
+
const cx = verts[ci * 3];
|
|
907
|
+
const cy = verts[ci * 3 + 1];
|
|
908
|
+
const cz = verts[ci * 3 + 2];
|
|
909
|
+
const allAtPos = [];
|
|
910
|
+
for (let vi = 0; vi < vertexCount; vi++) {
|
|
911
|
+
const dx = verts[vi * 3] - cx;
|
|
912
|
+
const dy = verts[vi * 3 + 1] - cy;
|
|
913
|
+
const dz = verts[vi * 3 + 2] - cz;
|
|
914
|
+
if (dx * dx + dy * dy + dz * dz < POS_EPSILON_SQ) {
|
|
915
|
+
allAtPos.push(vi);
|
|
916
|
+
if (coplanarVertexSet.has(vi)) {
|
|
917
|
+
assignedCoplanar.add(vi);
|
|
918
|
+
}
|
|
919
|
+
}
|
|
920
|
+
}
|
|
921
|
+
uniquePositions.push({ x: cx, y: cy, z: cz, allVertexIndices: allAtPos });
|
|
922
|
+
}
|
|
923
|
+
const refVi = idx[faceIndex * 3];
|
|
924
|
+
const pushOrigin = new Point(verts[refVi * 3] + pushNormal.x * distance, verts[refVi * 3 + 1] + pushNormal.y * distance, verts[refVi * 3 + 2] + pushNormal.z * distance);
|
|
925
|
+
const pushPlane = new Plane(pushOrigin, pushNormal);
|
|
926
|
+
const newVerts = new Float64Array(verts);
|
|
927
|
+
for (const upos of uniquePositions) {
|
|
928
|
+
const adjacentFaceIndices = [];
|
|
929
|
+
for (let fi = 0; fi < faceCount; fi++) {
|
|
930
|
+
if (coplanarFaceSet.has(fi))
|
|
931
|
+
continue;
|
|
932
|
+
for (let k = 0; k < 3; k++) {
|
|
933
|
+
const vi = idx[fi * 3 + k];
|
|
934
|
+
const dx = verts[vi * 3] - upos.x;
|
|
935
|
+
const dy = verts[vi * 3 + 1] - upos.y;
|
|
936
|
+
const dz = verts[vi * 3 + 2] - upos.z;
|
|
937
|
+
if (dx * dx + dy * dy + dz * dz < POS_EPSILON_SQ) {
|
|
938
|
+
adjacentFaceIndices.push(fi);
|
|
939
|
+
break;
|
|
940
|
+
}
|
|
941
|
+
}
|
|
942
|
+
}
|
|
943
|
+
const adjacentPlanes = [];
|
|
944
|
+
for (const fi of adjacentFaceIndices) {
|
|
945
|
+
const n = this.getFaceNormal(fi);
|
|
946
|
+
let merged = false;
|
|
947
|
+
for (const existing of adjacentPlanes) {
|
|
948
|
+
const dot = n.dot(existing.normal);
|
|
949
|
+
if (dot > 1 - NORMAL_EPSILON) {
|
|
950
|
+
merged = true;
|
|
951
|
+
break;
|
|
952
|
+
}
|
|
953
|
+
}
|
|
954
|
+
if (!merged) {
|
|
955
|
+
const rv = idx[fi * 3];
|
|
956
|
+
const origin = new Point(verts[rv * 3], verts[rv * 3 + 1], verts[rv * 3 + 2]);
|
|
957
|
+
adjacentPlanes.push(new Plane(origin, n));
|
|
958
|
+
}
|
|
959
|
+
}
|
|
960
|
+
let newPos = null;
|
|
961
|
+
if (adjacentPlanes.length >= 2) {
|
|
962
|
+
const pt = Plane.intersect3(pushPlane, adjacentPlanes[0], adjacentPlanes[1]);
|
|
963
|
+
if (pt) {
|
|
964
|
+
newPos = pt;
|
|
965
|
+
}
|
|
966
|
+
}
|
|
967
|
+
if (!newPos) {
|
|
968
|
+
newPos = new Point(upos.x + pushNormal.x * distance, upos.y + pushNormal.y * distance, upos.z + pushNormal.z * distance);
|
|
969
|
+
}
|
|
970
|
+
for (const vi of upos.allVertexIndices) {
|
|
971
|
+
newVerts[vi * 3] = newPos.x;
|
|
972
|
+
newVerts[vi * 3 + 1] = newPos.y;
|
|
973
|
+
newVerts[vi * 3 + 2] = newPos.z;
|
|
974
|
+
}
|
|
975
|
+
}
|
|
976
|
+
return Mesh.fromPositionsAndIndices(newVerts, idx);
|
|
977
|
+
}
|
|
464
978
|
/**
|
|
465
979
|
* Check if this triangulated mesh represents a closed volume.
|
|
466
980
|
* Returns true when no topological boundary edges are found.
|
|
@@ -525,6 +1039,53 @@ export class Mesh {
|
|
|
525
1039
|
}
|
|
526
1040
|
return insideVotes >= Math.ceil(directions.length / 2);
|
|
527
1041
|
}
|
|
1042
|
+
/**
|
|
1043
|
+
* Find the coplanar + edge-connected face group containing a triangle.
|
|
1044
|
+
*/
|
|
1045
|
+
findFaceByTriangleIndex(triangleIndex) {
|
|
1046
|
+
if (!Number.isFinite(triangleIndex) || triangleIndex < 0)
|
|
1047
|
+
return null;
|
|
1048
|
+
const groups = this.buildCoplanarConnectedFaceGroups();
|
|
1049
|
+
for (const group of groups) {
|
|
1050
|
+
if (group.triangleIndices.includes(Math.floor(triangleIndex))) {
|
|
1051
|
+
return { centroid: group.centroid, normal: group.normal };
|
|
1052
|
+
}
|
|
1053
|
+
}
|
|
1054
|
+
return null;
|
|
1055
|
+
}
|
|
1056
|
+
/**
|
|
1057
|
+
* Find the best matching coplanar + edge-connected face group by normal
|
|
1058
|
+
* similarity and optional point proximity.
|
|
1059
|
+
*/
|
|
1060
|
+
findFaceByNormal(targetNormal, nearPoint) {
|
|
1061
|
+
const groups = this.buildCoplanarConnectedFaceGroups();
|
|
1062
|
+
if (groups.length === 0)
|
|
1063
|
+
return null;
|
|
1064
|
+
let best = null;
|
|
1065
|
+
let bestScore = Number.NEGATIVE_INFINITY;
|
|
1066
|
+
for (const group of groups) {
|
|
1067
|
+
const normal = group.normal;
|
|
1068
|
+
const centroid = group.centroid;
|
|
1069
|
+
const normalScore = Math.max(0, normal.dot(targetNormal));
|
|
1070
|
+
let score;
|
|
1071
|
+
if (nearPoint) {
|
|
1072
|
+
const dx = centroid.x - nearPoint.x;
|
|
1073
|
+
const dy = centroid.y - nearPoint.y;
|
|
1074
|
+
const dz = centroid.z - nearPoint.z;
|
|
1075
|
+
const distSq = dx * dx + dy * dy + dz * dz;
|
|
1076
|
+
const proximityScore = 1.0 / (1.0 + distSq);
|
|
1077
|
+
score = proximityScore * (0.5 + 0.5 * normalScore);
|
|
1078
|
+
}
|
|
1079
|
+
else {
|
|
1080
|
+
score = normalScore;
|
|
1081
|
+
}
|
|
1082
|
+
if (score > bestScore) {
|
|
1083
|
+
bestScore = score;
|
|
1084
|
+
best = { centroid, normal };
|
|
1085
|
+
}
|
|
1086
|
+
}
|
|
1087
|
+
return best;
|
|
1088
|
+
}
|
|
528
1089
|
/**
|
|
529
1090
|
* Count unique ray/triangle crossings from origin along direction.
|
|
530
1091
|
* Distances are deduplicated to collapse paired hits on triangulated quads.
|
|
@@ -560,6 +1121,149 @@ export class Mesh {
|
|
|
560
1121
|
}
|
|
561
1122
|
return crossings;
|
|
562
1123
|
}
|
|
1124
|
+
buildCoplanarConnectedFaceGroups() {
|
|
1125
|
+
const NORMAL_GROUP_EPS = 0.05;
|
|
1126
|
+
const PLANE_EPS = 0.1;
|
|
1127
|
+
const idx = this.indexBuffer;
|
|
1128
|
+
const verts = this.positionBuffer;
|
|
1129
|
+
const triCount = idx.length / 3;
|
|
1130
|
+
const tris = [];
|
|
1131
|
+
for (let t = 0; t < triCount; t++) {
|
|
1132
|
+
const i0 = idx[t * 3];
|
|
1133
|
+
const i1 = idx[t * 3 + 1];
|
|
1134
|
+
const i2 = idx[t * 3 + 2];
|
|
1135
|
+
const aoff = i0 * 3;
|
|
1136
|
+
const boff = i1 * 3;
|
|
1137
|
+
const coff = i2 * 3;
|
|
1138
|
+
const ax = verts[aoff];
|
|
1139
|
+
const ay = verts[aoff + 1];
|
|
1140
|
+
const az = verts[aoff + 2];
|
|
1141
|
+
const bx = verts[boff];
|
|
1142
|
+
const by = verts[boff + 1];
|
|
1143
|
+
const bz = verts[boff + 2];
|
|
1144
|
+
const cx = verts[coff];
|
|
1145
|
+
const cy = verts[coff + 1];
|
|
1146
|
+
const cz = verts[coff + 2];
|
|
1147
|
+
const normal = Mesh.triangleNormal(ax, ay, az, bx, by, bz, cx, cy, cz);
|
|
1148
|
+
if (!normal)
|
|
1149
|
+
continue;
|
|
1150
|
+
tris.push({
|
|
1151
|
+
triIndex: t,
|
|
1152
|
+
i0,
|
|
1153
|
+
i1,
|
|
1154
|
+
i2,
|
|
1155
|
+
cx: (ax + bx + cx) / 3,
|
|
1156
|
+
cy: (ay + by + cy) / 3,
|
|
1157
|
+
cz: (az + bz + cz) / 3,
|
|
1158
|
+
nx: normal.x,
|
|
1159
|
+
ny: normal.y,
|
|
1160
|
+
nz: normal.z,
|
|
1161
|
+
});
|
|
1162
|
+
}
|
|
1163
|
+
if (tris.length === 0)
|
|
1164
|
+
return [];
|
|
1165
|
+
const triToNeighbors = new Map();
|
|
1166
|
+
const edgeToTris = new Map();
|
|
1167
|
+
for (let i = 0; i < tris.length; i++) {
|
|
1168
|
+
const tri = tris[i];
|
|
1169
|
+
const edges = [
|
|
1170
|
+
[tri.i0, tri.i1],
|
|
1171
|
+
[tri.i1, tri.i2],
|
|
1172
|
+
[tri.i2, tri.i0],
|
|
1173
|
+
];
|
|
1174
|
+
for (const [a, b] of edges) {
|
|
1175
|
+
const key = Mesh.edgeKey(a, b);
|
|
1176
|
+
const bucket = edgeToTris.get(key);
|
|
1177
|
+
if (bucket) {
|
|
1178
|
+
bucket.push(i);
|
|
1179
|
+
}
|
|
1180
|
+
else {
|
|
1181
|
+
edgeToTris.set(key, [i]);
|
|
1182
|
+
}
|
|
1183
|
+
}
|
|
1184
|
+
}
|
|
1185
|
+
for (const bucket of edgeToTris.values()) {
|
|
1186
|
+
for (let i = 0; i < bucket.length; i++) {
|
|
1187
|
+
const a = bucket[i];
|
|
1188
|
+
let set = triToNeighbors.get(a);
|
|
1189
|
+
if (!set) {
|
|
1190
|
+
set = new Set();
|
|
1191
|
+
triToNeighbors.set(a, set);
|
|
1192
|
+
}
|
|
1193
|
+
for (let j = 0; j < bucket.length; j++) {
|
|
1194
|
+
if (i === j)
|
|
1195
|
+
continue;
|
|
1196
|
+
set.add(bucket[j]);
|
|
1197
|
+
}
|
|
1198
|
+
}
|
|
1199
|
+
}
|
|
1200
|
+
const visited = new Uint8Array(tris.length);
|
|
1201
|
+
const groups = [];
|
|
1202
|
+
for (let seedIdx = 0; seedIdx < tris.length; seedIdx++) {
|
|
1203
|
+
if (visited[seedIdx])
|
|
1204
|
+
continue;
|
|
1205
|
+
const seed = tris[seedIdx];
|
|
1206
|
+
const queue = [seedIdx];
|
|
1207
|
+
visited[seedIdx] = 1;
|
|
1208
|
+
const groupTris = [];
|
|
1209
|
+
while (queue.length > 0) {
|
|
1210
|
+
const idxInTris = queue.pop();
|
|
1211
|
+
const tri = tris[idxInTris];
|
|
1212
|
+
groupTris.push(tri);
|
|
1213
|
+
const neighbors = triToNeighbors.get(idxInTris);
|
|
1214
|
+
if (!neighbors)
|
|
1215
|
+
continue;
|
|
1216
|
+
for (const nIdx of neighbors) {
|
|
1217
|
+
if (visited[nIdx])
|
|
1218
|
+
continue;
|
|
1219
|
+
const candidate = tris[nIdx];
|
|
1220
|
+
const dot = seed.nx * candidate.nx + seed.ny * candidate.ny + seed.nz * candidate.nz;
|
|
1221
|
+
if (dot < 1 - NORMAL_GROUP_EPS)
|
|
1222
|
+
continue;
|
|
1223
|
+
const seedPlane = seed.cx * seed.nx + seed.cy * seed.ny + seed.cz * seed.nz;
|
|
1224
|
+
const candidatePlane = candidate.cx * seed.nx + candidate.cy * seed.ny + candidate.cz * seed.nz;
|
|
1225
|
+
if (Math.abs(candidatePlane - seedPlane) >= PLANE_EPS)
|
|
1226
|
+
continue;
|
|
1227
|
+
visited[nIdx] = 1;
|
|
1228
|
+
queue.push(nIdx);
|
|
1229
|
+
}
|
|
1230
|
+
}
|
|
1231
|
+
if (groupTris.length === 0)
|
|
1232
|
+
continue;
|
|
1233
|
+
let cx = 0;
|
|
1234
|
+
let cy = 0;
|
|
1235
|
+
let cz = 0;
|
|
1236
|
+
let nx = 0;
|
|
1237
|
+
let ny = 0;
|
|
1238
|
+
let nz = 0;
|
|
1239
|
+
const triangleIndices = [];
|
|
1240
|
+
for (const tri of groupTris) {
|
|
1241
|
+
cx += tri.cx;
|
|
1242
|
+
cy += tri.cy;
|
|
1243
|
+
cz += tri.cz;
|
|
1244
|
+
nx += tri.nx;
|
|
1245
|
+
ny += tri.ny;
|
|
1246
|
+
nz += tri.nz;
|
|
1247
|
+
triangleIndices.push(tri.triIndex);
|
|
1248
|
+
}
|
|
1249
|
+
const invCount = 1 / groupTris.length;
|
|
1250
|
+
cx *= invCount;
|
|
1251
|
+
cy *= invCount;
|
|
1252
|
+
cz *= invCount;
|
|
1253
|
+
nx *= invCount;
|
|
1254
|
+
ny *= invCount;
|
|
1255
|
+
nz *= invCount;
|
|
1256
|
+
const len = Math.sqrt(nx * nx + ny * ny + nz * nz);
|
|
1257
|
+
if (len < 1e-12)
|
|
1258
|
+
continue;
|
|
1259
|
+
groups.push({
|
|
1260
|
+
triangleIndices,
|
|
1261
|
+
centroid: new Point(cx, cy, cz),
|
|
1262
|
+
normal: new Vec3(nx / len, ny / len, nz / len),
|
|
1263
|
+
});
|
|
1264
|
+
}
|
|
1265
|
+
return groups;
|
|
1266
|
+
}
|
|
563
1267
|
/**
|
|
564
1268
|
* Map each raw vertex index to a welded topological vertex index.
|
|
565
1269
|
* Uses scale-aware quantization to merge duplicate seam vertices.
|
|
@@ -651,7 +1355,25 @@ export class Mesh {
|
|
|
651
1355
|
const t = f * (e2x * qx + e2y * qy + e2z * qz);
|
|
652
1356
|
return t > EPSILON ? t : null;
|
|
653
1357
|
}
|
|
654
|
-
|
|
1358
|
+
static triangleNormal(ax, ay, az, bx, by, bz, cx, cy, cz) {
|
|
1359
|
+
const e1x = bx - ax;
|
|
1360
|
+
const e1y = by - ay;
|
|
1361
|
+
const e1z = bz - az;
|
|
1362
|
+
const e2x = cx - ax;
|
|
1363
|
+
const e2y = cy - ay;
|
|
1364
|
+
const e2z = cz - az;
|
|
1365
|
+
const nx = e1y * e2z - e1z * e2y;
|
|
1366
|
+
const ny = e1z * e2x - e1x * e2z;
|
|
1367
|
+
const nz = e1x * e2y - e1y * e2x;
|
|
1368
|
+
const len = Math.sqrt(nx * nx + ny * ny + nz * nz);
|
|
1369
|
+
if (len < 1e-12)
|
|
1370
|
+
return null;
|
|
1371
|
+
return new Vec3(nx / len, ny / len, nz / len);
|
|
1372
|
+
}
|
|
1373
|
+
static edgeKey(a, b) {
|
|
1374
|
+
return a < b ? `${a}:${b}` : `${b}:${a}`;
|
|
1375
|
+
}
|
|
1376
|
+
// ── Export ──────────────────────────────────────────────────────
|
|
655
1377
|
/**
|
|
656
1378
|
* Export this mesh to OBJ format.
|
|
657
1379
|
* @returns OBJ file content as string
|
package/dist/Mesh.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Mesh.js","sourceRoot":"","sources":["../src/Mesh.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"Mesh.js","sourceRoot":"","sources":["../src/Mesh.ts"],"names":[],"mappings":"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"}
|
package/package.json
CHANGED