okgeometry-api 0.2.12 → 0.2.14
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/Arc.d.ts +52 -2
- package/dist/Arc.d.ts.map +1 -1
- package/dist/Arc.js +50 -1
- package/dist/Arc.js.map +1 -1
- package/dist/BufferCodec.d.ts +118 -0
- package/dist/BufferCodec.d.ts.map +1 -0
- package/dist/BufferCodec.js +171 -0
- package/dist/BufferCodec.js.map +1 -0
- package/dist/Circle.d.ts +66 -12
- package/dist/Circle.d.ts.map +1 -1
- package/dist/Circle.js +64 -8
- package/dist/Circle.js.map +1 -1
- package/dist/Line.d.ts +53 -1
- package/dist/Line.d.ts.map +1 -1
- package/dist/Line.js +51 -0
- package/dist/Line.js.map +1 -1
- package/dist/Mesh.d.ts +167 -20
- package/dist/Mesh.d.ts.map +1 -1
- package/dist/Mesh.js +187 -70
- package/dist/Mesh.js.map +1 -1
- package/dist/NurbsCurve.d.ts +78 -8
- package/dist/NurbsCurve.d.ts.map +1 -1
- package/dist/NurbsCurve.js +76 -7
- package/dist/NurbsCurve.js.map +1 -1
- package/dist/NurbsSurface.d.ts +64 -14
- package/dist/NurbsSurface.d.ts.map +1 -1
- package/dist/NurbsSurface.js +65 -25
- package/dist/NurbsSurface.js.map +1 -1
- package/dist/Point.d.ts +65 -12
- package/dist/Point.d.ts.map +1 -1
- package/dist/Point.js +61 -2
- package/dist/Point.js.map +1 -1
- package/dist/PolyCurve.d.ts +4 -6
- package/dist/PolyCurve.d.ts.map +1 -1
- package/dist/PolyCurve.js +31 -16
- package/dist/PolyCurve.js.map +1 -1
- package/dist/Polygon.d.ts +35 -3
- package/dist/Polygon.d.ts.map +1 -1
- package/dist/Polygon.js +33 -2
- package/dist/Polygon.js.map +1 -1
- package/dist/Polyline.d.ts +67 -2
- package/dist/Polyline.d.ts.map +1 -1
- package/dist/Polyline.js +86 -13
- package/dist/Polyline.js.map +1 -1
- package/dist/Ray.d.ts +45 -0
- package/dist/Ray.d.ts.map +1 -0
- package/dist/Ray.js +68 -0
- package/dist/Ray.js.map +1 -0
- package/dist/Vec3.d.ts +76 -0
- package/dist/Vec3.d.ts.map +1 -1
- package/dist/Vec3.js +76 -0
- package/dist/Vec3.js.map +1 -1
- package/dist/engine.d.ts.map +1 -1
- package/dist/engine.js +3 -2
- package/dist/engine.js.map +1 -1
- package/dist/index.d.ts +6 -4
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +8 -2
- package/dist/index.js.map +1 -1
- package/dist/types.d.ts +67 -0
- package/dist/types.d.ts.map +1 -0
- package/dist/types.js +7 -0
- package/dist/types.js.map +1 -0
- package/dist/wasm-base64.d.ts +1 -1
- package/dist/wasm-base64.d.ts.map +1 -1
- package/dist/wasm-base64.js +1 -1
- package/dist/wasm-base64.js.map +1 -1
- package/package.json +1 -1
- package/wasm/okgeometrycore.d.ts +27 -0
- package/wasm/okgeometrycore.js +1 -1
- package/wasm/okgeometrycore_bg.js +81 -0
- package/wasm/okgeometrycore_bg.wasm +0 -0
- package/wasm/okgeometrycore_bg.wasm.d.ts +4 -0
package/dist/Mesh.js
CHANGED
|
@@ -8,9 +8,12 @@ import { Arc } from "./Arc.js";
|
|
|
8
8
|
import { Polygon } from "./Polygon.js";
|
|
9
9
|
import { NurbsCurve } from "./NurbsCurve.js";
|
|
10
10
|
import { PolyCurve } from "./PolyCurve.js";
|
|
11
|
+
import { pointsToCoords, parsePolylineBuffer as parsePolylineBuf } from "./BufferCodec.js";
|
|
11
12
|
import * as wasm from "../wasm/okgeometrycore_bg.js";
|
|
12
13
|
/**
|
|
13
|
-
* Buffer-backed mesh
|
|
14
|
+
* Buffer-backed triangle mesh with GPU-ready accessors.
|
|
15
|
+
* All geometry lives in a Float64Array from WASM.
|
|
16
|
+
*
|
|
14
17
|
* Buffer format: [vertexCount, x1,y1,z1, ..., i1,i2,i3, ...]
|
|
15
18
|
*/
|
|
16
19
|
export class Mesh {
|
|
@@ -24,7 +27,10 @@ export class Mesh {
|
|
|
24
27
|
this._vertexCount = buffer.length > 0 ? buffer[0] : 0;
|
|
25
28
|
}
|
|
26
29
|
// ── GPU-ready buffers ──────────────────────────────────────────
|
|
27
|
-
/**
|
|
30
|
+
/**
|
|
31
|
+
* Float32 xyz positions for Three.js BufferGeometry.
|
|
32
|
+
* Lazy-computed and cached.
|
|
33
|
+
*/
|
|
28
34
|
get positionBuffer() {
|
|
29
35
|
if (!this._positionBuffer) {
|
|
30
36
|
const n = this._vertexCount * 3;
|
|
@@ -35,7 +41,10 @@ export class Mesh {
|
|
|
35
41
|
}
|
|
36
42
|
return this._positionBuffer;
|
|
37
43
|
}
|
|
38
|
-
/**
|
|
44
|
+
/**
|
|
45
|
+
* Uint32 triangle indices for Three.js BufferGeometry.setIndex.
|
|
46
|
+
* Lazy-computed and cached.
|
|
47
|
+
*/
|
|
39
48
|
get indexBuffer() {
|
|
40
49
|
if (!this._indexBuffer) {
|
|
41
50
|
const start = 1 + this._vertexCount * 3;
|
|
@@ -47,13 +56,19 @@ export class Mesh {
|
|
|
47
56
|
}
|
|
48
57
|
return this._indexBuffer;
|
|
49
58
|
}
|
|
59
|
+
/** Number of vertices in this mesh */
|
|
50
60
|
get vertexCount() {
|
|
51
61
|
return this._vertexCount;
|
|
52
62
|
}
|
|
63
|
+
/** Number of triangular faces in this mesh */
|
|
53
64
|
get faceCount() {
|
|
54
65
|
return this.indexBuffer.length / 3;
|
|
55
66
|
}
|
|
56
67
|
// ── High-level accessors (lazy) ────────────────────────────────
|
|
68
|
+
/**
|
|
69
|
+
* Get all vertices as Point objects.
|
|
70
|
+
* Lazy-computed and cached.
|
|
71
|
+
*/
|
|
57
72
|
get vertices() {
|
|
58
73
|
if (!this._vertices) {
|
|
59
74
|
const pts = [];
|
|
@@ -65,6 +80,11 @@ export class Mesh {
|
|
|
65
80
|
}
|
|
66
81
|
return this._vertices;
|
|
67
82
|
}
|
|
83
|
+
/**
|
|
84
|
+
* Get all faces as arrays of vertex indices.
|
|
85
|
+
* Each face is [i0, i1, i2] for the three triangle vertices.
|
|
86
|
+
* Lazy-computed and cached.
|
|
87
|
+
*/
|
|
68
88
|
get faces() {
|
|
69
89
|
if (!this._faces) {
|
|
70
90
|
const idx = this.indexBuffer;
|
|
@@ -81,10 +101,19 @@ export class Mesh {
|
|
|
81
101
|
return this._buffer;
|
|
82
102
|
}
|
|
83
103
|
// ── Static factories ───────────────────────────────────────────
|
|
104
|
+
/**
|
|
105
|
+
* Create a Mesh from a raw WASM buffer.
|
|
106
|
+
* @param buffer - Float64Array in mesh buffer format
|
|
107
|
+
* @returns New Mesh instance
|
|
108
|
+
*/
|
|
84
109
|
static fromBuffer(buffer) {
|
|
85
110
|
return new Mesh(buffer);
|
|
86
111
|
}
|
|
87
|
-
/**
|
|
112
|
+
/**
|
|
113
|
+
* Create a planar patch mesh from boundary points using fan triangulation.
|
|
114
|
+
* @param pts - Boundary points defining the patch
|
|
115
|
+
* @returns New Mesh with n-2 triangles
|
|
116
|
+
*/
|
|
88
117
|
static patchFromPoints(pts) {
|
|
89
118
|
const n = pts.length;
|
|
90
119
|
// Buffer format: [vertexCount, x1,y1,z1, ..., i1,i2,i3, ...]
|
|
@@ -104,30 +133,77 @@ export class Mesh {
|
|
|
104
133
|
}
|
|
105
134
|
return new Mesh(buf);
|
|
106
135
|
}
|
|
136
|
+
/**
|
|
137
|
+
* Create an axis-aligned box centered at origin.
|
|
138
|
+
* @param width - Size along X axis
|
|
139
|
+
* @param height - Size along Y axis
|
|
140
|
+
* @param depth - Size along Z axis
|
|
141
|
+
* @returns New Mesh with 8 vertices and 12 triangles
|
|
142
|
+
*/
|
|
107
143
|
static createBox(width, height, depth) {
|
|
108
144
|
ensureInit();
|
|
109
145
|
return new Mesh(wasm.mesh_create_box(width, height, depth));
|
|
110
146
|
}
|
|
147
|
+
/**
|
|
148
|
+
* Create a UV sphere centered at origin.
|
|
149
|
+
* @param radius - Sphere radius
|
|
150
|
+
* @param segments - Number of longitudinal segments
|
|
151
|
+
* @param rings - Number of latitudinal rings
|
|
152
|
+
* @returns New Mesh representing the sphere
|
|
153
|
+
*/
|
|
111
154
|
static createSphere(radius, segments, rings) {
|
|
112
155
|
ensureInit();
|
|
113
156
|
return new Mesh(wasm.mesh_create_sphere(radius, segments, rings));
|
|
114
157
|
}
|
|
158
|
+
/**
|
|
159
|
+
* Create a cylinder centered at origin with axis along Y.
|
|
160
|
+
* @param radius - Cylinder radius
|
|
161
|
+
* @param height - Total height (extends height/2 above and below origin)
|
|
162
|
+
* @param segments - Number of circumferential segments
|
|
163
|
+
* @returns New Mesh with caps
|
|
164
|
+
*/
|
|
115
165
|
static createCylinder(radius, height, segments) {
|
|
116
166
|
ensureInit();
|
|
117
167
|
return new Mesh(wasm.mesh_create_cylinder(radius, height, segments));
|
|
118
168
|
}
|
|
169
|
+
/**
|
|
170
|
+
* Create a regular prism centered at origin.
|
|
171
|
+
* @param radius - Circumradius of the base polygon
|
|
172
|
+
* @param height - Total height
|
|
173
|
+
* @param sides - Number of sides (3 = triangular prism, 6 = hexagonal, etc.)
|
|
174
|
+
* @returns New Mesh with caps
|
|
175
|
+
*/
|
|
119
176
|
static createPrism(radius, height, sides) {
|
|
120
177
|
ensureInit();
|
|
121
178
|
return new Mesh(wasm.mesh_create_prism(radius, height, sides));
|
|
122
179
|
}
|
|
180
|
+
/**
|
|
181
|
+
* Create a cone centered at origin with apex at top.
|
|
182
|
+
* @param radius - Base radius
|
|
183
|
+
* @param height - Height from base to apex
|
|
184
|
+
* @param segments - Number of circumferential segments
|
|
185
|
+
* @returns New Mesh with base cap
|
|
186
|
+
*/
|
|
123
187
|
static createCone(radius, height, segments) {
|
|
124
188
|
ensureInit();
|
|
125
189
|
return new Mesh(wasm.mesh_create_cone(radius, height, segments));
|
|
126
190
|
}
|
|
191
|
+
/**
|
|
192
|
+
* Import a mesh from OBJ format string.
|
|
193
|
+
* @param objString - OBJ file content
|
|
194
|
+
* @returns New Mesh parsed from OBJ
|
|
195
|
+
*/
|
|
127
196
|
static fromOBJ(objString) {
|
|
128
197
|
ensureInit();
|
|
129
198
|
return new Mesh(wasm.mesh_import_obj(objString));
|
|
130
199
|
}
|
|
200
|
+
/**
|
|
201
|
+
* Loft through multiple circles to create a surface of revolution.
|
|
202
|
+
* @param circles - Array of circle definitions (center, normal, radius)
|
|
203
|
+
* @param segments - Number of circumferential segments
|
|
204
|
+
* @param caps - Whether to cap the ends (default false)
|
|
205
|
+
* @returns New Mesh representing the lofted surface
|
|
206
|
+
*/
|
|
131
207
|
static loftCircles(circles, segments, caps = false) {
|
|
132
208
|
ensureInit();
|
|
133
209
|
const data = new Float64Array(circles.length * 7);
|
|
@@ -144,6 +220,13 @@ export class Mesh {
|
|
|
144
220
|
}
|
|
145
221
|
return new Mesh(wasm.loft_circles(data, segments, caps));
|
|
146
222
|
}
|
|
223
|
+
/**
|
|
224
|
+
* Loft through multiple polylines to create a ruled surface.
|
|
225
|
+
* @param polylines - Array of point arrays defining cross-sections
|
|
226
|
+
* @param segments - Interpolation segments between sections
|
|
227
|
+
* @param caps - Whether to cap the ends (default false)
|
|
228
|
+
* @returns New Mesh representing the lofted surface
|
|
229
|
+
*/
|
|
147
230
|
static loftPolylines(polylines, segments, caps = false) {
|
|
148
231
|
ensureInit();
|
|
149
232
|
// Format: [count1, x,y,z,..., count2, x,y,z,...]
|
|
@@ -156,77 +239,74 @@ export class Mesh {
|
|
|
156
239
|
}
|
|
157
240
|
return new Mesh(wasm.loft_polylines(new Float64Array(parts), segments, caps));
|
|
158
241
|
}
|
|
242
|
+
/**
|
|
243
|
+
* Sweep a profile polyline along a path polyline.
|
|
244
|
+
* @param profilePoints - Profile cross-section points
|
|
245
|
+
* @param pathPoints - Path points to sweep along
|
|
246
|
+
* @param caps - Whether to cap the ends (default false)
|
|
247
|
+
* @returns New Mesh representing the swept surface
|
|
248
|
+
*/
|
|
159
249
|
static sweep(profilePoints, pathPoints, caps = false) {
|
|
160
250
|
ensureInit();
|
|
161
|
-
|
|
162
|
-
|
|
163
|
-
|
|
164
|
-
|
|
165
|
-
|
|
166
|
-
|
|
167
|
-
|
|
168
|
-
|
|
169
|
-
|
|
170
|
-
|
|
171
|
-
|
|
172
|
-
}
|
|
173
|
-
return new Mesh(wasm.sweep_polylines(profileCoords, pathCoords, caps));
|
|
174
|
-
}
|
|
175
|
-
/** Sweep any curve type along any curve type.
|
|
176
|
-
* Passes exact curve data to WASM for native evaluation (no pre-sampling). */
|
|
251
|
+
return new Mesh(wasm.sweep_polylines(pointsToCoords(profilePoints), pointsToCoords(pathPoints), caps));
|
|
252
|
+
}
|
|
253
|
+
/**
|
|
254
|
+
* Sweep any curve type along any curve type.
|
|
255
|
+
* Passes exact curve data to WASM for native evaluation (no pre-sampling).
|
|
256
|
+
* @param profile - Profile curve (cross-section)
|
|
257
|
+
* @param path - Path curve to sweep along
|
|
258
|
+
* @param segments - Number of samples along path (default 32)
|
|
259
|
+
* @param caps - Whether to cap the ends (default false)
|
|
260
|
+
* @returns New Mesh representing the swept surface
|
|
261
|
+
*/
|
|
177
262
|
static sweepCurves(profile, path, segments = 32, caps = false) {
|
|
178
263
|
ensureInit();
|
|
179
264
|
const profileData = Mesh.encodeCurve(profile);
|
|
180
265
|
const pathData = Mesh.encodeCurve(path);
|
|
181
266
|
return new Mesh(wasm.sweep_curves(profileData, pathData, segments, segments, caps));
|
|
182
267
|
}
|
|
183
|
-
/** Encode a curve into the WASM format for sweep_curves.
|
|
184
|
-
* type 0: Line, type 1: Circle, type 2: Arc, type 3: Polyline,
|
|
185
|
-
* type 4: NurbsCurve, type 5: PolyCurve */
|
|
268
|
+
/** Encode a curve into the WASM format for sweep_curves. */
|
|
186
269
|
static encodeCurve(curve) {
|
|
187
270
|
if (curve instanceof Line) {
|
|
188
|
-
return new Float64Array([0
|
|
271
|
+
return new Float64Array([0 /* CurveTypeCode.Line */,
|
|
189
272
|
curve.start.x, curve.start.y, curve.start.z,
|
|
190
273
|
curve.end.x, curve.end.y, curve.end.z]);
|
|
191
274
|
}
|
|
192
275
|
if (curve instanceof Circle) {
|
|
193
276
|
// Include uAxis if present (11 floats), otherwise just 8
|
|
194
277
|
if (curve.uAxis) {
|
|
195
|
-
return new Float64Array([1
|
|
278
|
+
return new Float64Array([1 /* CurveTypeCode.Circle */,
|
|
196
279
|
curve.center.x, curve.center.y, curve.center.z,
|
|
197
280
|
curve.normal.x, curve.normal.y, curve.normal.z,
|
|
198
281
|
curve.radius,
|
|
199
282
|
curve.uAxis.x, curve.uAxis.y, curve.uAxis.z]);
|
|
200
283
|
}
|
|
201
284
|
else {
|
|
202
|
-
return new Float64Array([1
|
|
285
|
+
return new Float64Array([1 /* CurveTypeCode.Circle */,
|
|
203
286
|
curve.center.x, curve.center.y, curve.center.z,
|
|
204
287
|
curve.normal.x, curve.normal.y, curve.normal.z,
|
|
205
288
|
curve.radius]);
|
|
206
289
|
}
|
|
207
290
|
}
|
|
208
291
|
if (curve instanceof Arc) {
|
|
209
|
-
return new Float64Array([2
|
|
292
|
+
return new Float64Array([2 /* CurveTypeCode.Arc */,
|
|
210
293
|
curve.center.x, curve.center.y, curve.center.z,
|
|
211
294
|
curve.normal.x, curve.normal.y, curve.normal.z,
|
|
212
295
|
curve.radius, curve.startAngle, curve.endAngle]);
|
|
213
296
|
}
|
|
214
297
|
if (curve instanceof Polygon || curve instanceof Polyline) {
|
|
215
298
|
const pts = curve.points;
|
|
216
|
-
const
|
|
217
|
-
data
|
|
299
|
+
const coords = pointsToCoords(pts);
|
|
300
|
+
const data = new Float64Array(2 + coords.length);
|
|
301
|
+
data[0] = 3 /* CurveTypeCode.Polyline */;
|
|
218
302
|
data[1] = pts.length;
|
|
219
|
-
|
|
220
|
-
data[2 + i * 3] = pts[i].x;
|
|
221
|
-
data[2 + i * 3 + 1] = pts[i].y;
|
|
222
|
-
data[2 + i * 3 + 2] = pts[i].z;
|
|
223
|
-
}
|
|
303
|
+
data.set(coords, 2);
|
|
224
304
|
return data;
|
|
225
305
|
}
|
|
226
306
|
if (curve instanceof NurbsCurve) {
|
|
227
307
|
const n = curve.controlPoints.length;
|
|
228
308
|
const data = new Float64Array(3 + n * 3 + curve.weights.length + curve.knots.length);
|
|
229
|
-
data[0] = 4
|
|
309
|
+
data[0] = 4 /* CurveTypeCode.NurbsCurve */;
|
|
230
310
|
data[1] = curve.degree;
|
|
231
311
|
data[2] = n;
|
|
232
312
|
let idx = 3;
|
|
@@ -242,15 +322,13 @@ export class Mesh {
|
|
|
242
322
|
return data;
|
|
243
323
|
}
|
|
244
324
|
if (curve instanceof PolyCurve) {
|
|
245
|
-
|
|
246
|
-
const parts = [5, curve.segments.length];
|
|
325
|
+
const parts = [5 /* CurveTypeCode.PolyCurve */, curve.segments.length];
|
|
247
326
|
for (const seg of curve.segments) {
|
|
248
327
|
if (seg instanceof Line) {
|
|
249
|
-
parts.push(0
|
|
328
|
+
parts.push(0 /* SegmentTypeCode.Line */, seg.start.x, seg.start.y, seg.start.z, seg.end.x, seg.end.y, seg.end.z);
|
|
250
329
|
}
|
|
251
330
|
else {
|
|
252
|
-
|
|
253
|
-
parts.push(2, seg.center.x, seg.center.y, seg.center.z, seg.normal.x, seg.normal.y, seg.normal.z, seg.radius, seg.startAngle, seg.endAngle);
|
|
331
|
+
parts.push(2 /* CurveTypeCode.Arc */, seg.center.x, seg.center.y, seg.center.z, seg.normal.x, seg.normal.y, seg.normal.z, seg.radius, seg.startAngle, seg.endAngle);
|
|
254
332
|
}
|
|
255
333
|
}
|
|
256
334
|
return new Float64Array(parts);
|
|
@@ -259,21 +337,29 @@ export class Mesh {
|
|
|
259
337
|
const pts = [];
|
|
260
338
|
for (let i = 0; i <= 32; i++)
|
|
261
339
|
pts.push(curve.pointAt(i / 32));
|
|
262
|
-
const
|
|
263
|
-
data
|
|
340
|
+
const coords = pointsToCoords(pts);
|
|
341
|
+
const data = new Float64Array(2 + coords.length);
|
|
342
|
+
data[0] = 3 /* CurveTypeCode.Polyline */;
|
|
264
343
|
data[1] = pts.length;
|
|
265
|
-
|
|
266
|
-
data[2 + i * 3] = pts[i].x;
|
|
267
|
-
data[2 + i * 3 + 1] = pts[i].y;
|
|
268
|
-
data[2 + i * 3 + 2] = pts[i].z;
|
|
269
|
-
}
|
|
344
|
+
data.set(coords, 2);
|
|
270
345
|
return data;
|
|
271
346
|
}
|
|
272
347
|
// ── Transforms ────────────────────────────────────────────────
|
|
348
|
+
/**
|
|
349
|
+
* Translate this mesh by an offset vector.
|
|
350
|
+
* @param offset - Translation vector
|
|
351
|
+
* @returns New translated mesh
|
|
352
|
+
*/
|
|
273
353
|
translate(offset) {
|
|
274
354
|
ensureInit();
|
|
275
355
|
return new Mesh(wasm.mesh_translate(this._vertexCount, this._buffer, offset.x, offset.y, offset.z));
|
|
276
356
|
}
|
|
357
|
+
/**
|
|
358
|
+
* Rotate this mesh around an axis.
|
|
359
|
+
* @param axis - Rotation axis (Vec3 through origin, or Line for arbitrary axis)
|
|
360
|
+
* @param angleRadians - Rotation angle in radians
|
|
361
|
+
* @returns New rotated mesh
|
|
362
|
+
*/
|
|
277
363
|
rotate(axis, angleRadians) {
|
|
278
364
|
ensureInit();
|
|
279
365
|
if ('start' in axis && 'end' in axis) {
|
|
@@ -285,71 +371,102 @@ export class Mesh {
|
|
|
285
371
|
}
|
|
286
372
|
return new Mesh(wasm.mesh_rotate(this._vertexCount, this._buffer, axis.x, axis.y, axis.z, angleRadians));
|
|
287
373
|
}
|
|
374
|
+
/**
|
|
375
|
+
* Scale this mesh uniformly.
|
|
376
|
+
* @param factor - Scale factor (1 = no change, 2 = double size)
|
|
377
|
+
* @returns New scaled mesh
|
|
378
|
+
*/
|
|
288
379
|
scale(factor) {
|
|
289
380
|
ensureInit();
|
|
290
381
|
return new Mesh(wasm.mesh_scale(this._vertexCount, this._buffer, factor, factor, factor));
|
|
291
382
|
}
|
|
383
|
+
/**
|
|
384
|
+
* Scale this mesh non-uniformly along each axis.
|
|
385
|
+
* @param sx - Scale factor along X
|
|
386
|
+
* @param sy - Scale factor along Y
|
|
387
|
+
* @param sz - Scale factor along Z
|
|
388
|
+
* @returns New scaled mesh
|
|
389
|
+
*/
|
|
292
390
|
scaleXYZ(sx, sy, sz) {
|
|
293
391
|
ensureInit();
|
|
294
392
|
return new Mesh(wasm.mesh_scale(this._vertexCount, this._buffer, sx, sy, sz));
|
|
295
393
|
}
|
|
296
394
|
// ── Booleans ───────────────────────────────────────────────────
|
|
395
|
+
/**
|
|
396
|
+
* Compute boolean union with another mesh.
|
|
397
|
+
* @param other - Mesh to union with
|
|
398
|
+
* @returns New mesh containing volume of both inputs
|
|
399
|
+
*/
|
|
297
400
|
union(other) {
|
|
298
401
|
ensureInit();
|
|
299
402
|
return new Mesh(wasm.mesh_boolean_union(this._vertexCount, this._buffer, other._vertexCount, other._buffer));
|
|
300
403
|
}
|
|
404
|
+
/**
|
|
405
|
+
* Compute boolean subtraction with another mesh.
|
|
406
|
+
* @param other - Mesh to subtract
|
|
407
|
+
* @returns New mesh with other's volume removed from this
|
|
408
|
+
*/
|
|
301
409
|
subtract(other) {
|
|
302
410
|
ensureInit();
|
|
303
411
|
return new Mesh(wasm.mesh_boolean_subtraction(this._vertexCount, this._buffer, other._vertexCount, other._buffer));
|
|
304
412
|
}
|
|
413
|
+
/**
|
|
414
|
+
* Compute boolean intersection with another mesh.
|
|
415
|
+
* @param other - Mesh to intersect with
|
|
416
|
+
* @returns New mesh containing only the overlapping volume
|
|
417
|
+
*/
|
|
305
418
|
intersect(other) {
|
|
306
419
|
ensureInit();
|
|
307
420
|
return new Mesh(wasm.mesh_boolean_intersection(this._vertexCount, this._buffer, other._vertexCount, other._buffer));
|
|
308
421
|
}
|
|
309
422
|
// ── Intersection queries ───────────────────────────────────────
|
|
423
|
+
/**
|
|
424
|
+
* Compute intersection curves with a plane.
|
|
425
|
+
* @param plane - Cutting plane
|
|
426
|
+
* @returns Array of polylines representing intersection curves
|
|
427
|
+
*/
|
|
310
428
|
intersectPlane(plane) {
|
|
311
429
|
ensureInit();
|
|
312
430
|
const result = wasm.mesh_plane_intersect(this._vertexCount, this._buffer, plane.normal.x, plane.normal.y, plane.normal.z, plane.d);
|
|
313
|
-
return
|
|
431
|
+
return parsePolylineBuf(result).map(pts => new Polyline(pts));
|
|
314
432
|
}
|
|
433
|
+
/**
|
|
434
|
+
* Compute intersection curves with another mesh.
|
|
435
|
+
* @param other - Mesh to intersect with
|
|
436
|
+
* @returns Array of polylines representing intersection curves
|
|
437
|
+
*/
|
|
315
438
|
intersectMesh(other) {
|
|
316
439
|
ensureInit();
|
|
317
440
|
const result = wasm.mesh_mesh_intersect(this._vertexCount, this._buffer, other._vertexCount, other._buffer);
|
|
318
|
-
return
|
|
441
|
+
return parsePolylineBuf(result).map(pts => new Polyline(pts));
|
|
319
442
|
}
|
|
320
|
-
/**
|
|
443
|
+
/**
|
|
444
|
+
* Apply a 4x4 transformation matrix.
|
|
445
|
+
* @param matrix - Row-major flat array of 16 numbers
|
|
446
|
+
* @returns New transformed mesh
|
|
447
|
+
*/
|
|
321
448
|
applyMatrix(matrix) {
|
|
322
449
|
ensureInit();
|
|
323
450
|
return new Mesh(wasm.mesh_apply_matrix(this._vertexCount, this._buffer, new Float64Array(matrix)));
|
|
324
451
|
}
|
|
325
|
-
/**
|
|
452
|
+
/**
|
|
453
|
+
* Extract boundary (perimeter) edges as polylines.
|
|
454
|
+
* Boundary edges are edges that belong to only one face.
|
|
455
|
+
* @returns Array of polylines representing open boundaries
|
|
456
|
+
*/
|
|
326
457
|
boundaryPolylines() {
|
|
327
458
|
ensureInit();
|
|
328
459
|
const buf = wasm.mesh_boundary_polylines(this._vertexCount, this._buffer);
|
|
329
|
-
return
|
|
460
|
+
return parsePolylineBuf(buf).map(pts => new Polyline(pts));
|
|
330
461
|
}
|
|
331
462
|
// ── Export ──────────────────────────────────────────────────────
|
|
463
|
+
/**
|
|
464
|
+
* Export this mesh to OBJ format.
|
|
465
|
+
* @returns OBJ file content as string
|
|
466
|
+
*/
|
|
332
467
|
toOBJ() {
|
|
333
468
|
ensureInit();
|
|
334
469
|
return wasm.mesh_export_obj(this._vertexCount, this._buffer);
|
|
335
470
|
}
|
|
336
471
|
}
|
|
337
|
-
/** Parse WASM polyline buffer: [num_polylines, n1, x,y,z,..., n2, x,y,z,...] */
|
|
338
|
-
function parsePolylineBuffer(buf) {
|
|
339
|
-
if (buf.length === 0)
|
|
340
|
-
return [];
|
|
341
|
-
const numPolylines = buf[0];
|
|
342
|
-
const result = [];
|
|
343
|
-
let idx = 1;
|
|
344
|
-
for (let i = 0; i < numPolylines; i++) {
|
|
345
|
-
const count = buf[idx++];
|
|
346
|
-
const pts = [];
|
|
347
|
-
for (let j = 0; j < count; j++) {
|
|
348
|
-
pts.push(new Point(buf[idx], buf[idx + 1], buf[idx + 2]));
|
|
349
|
-
idx += 3;
|
|
350
|
-
}
|
|
351
|
-
result.push(new Polyline(pts));
|
|
352
|
-
}
|
|
353
|
-
return result;
|
|
354
|
-
}
|
|
355
472
|
//# sourceMappingURL=Mesh.js.map
|
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/dist/NurbsCurve.d.ts
CHANGED
|
@@ -4,9 +4,12 @@ import { Plane } from "./Plane.js";
|
|
|
4
4
|
import { Polyline } from "./Polyline.js";
|
|
5
5
|
import type { Line } from "./Line.js";
|
|
6
6
|
import type { Arc } from "./Arc.js";
|
|
7
|
+
import type { RotationAxis } from "./types.js";
|
|
7
8
|
/**
|
|
8
|
-
* NURBS curve backed by WASM.
|
|
9
|
-
*
|
|
9
|
+
* Non-Uniform Rational B-Spline (NURBS) curve backed by WASM.
|
|
10
|
+
* Provides exact representation for complex curves including conics.
|
|
11
|
+
*
|
|
12
|
+
* WASM data format: [degree, num_pts, x0,y0,z0, ..., w0,w1,..., k0,k1,...]
|
|
10
13
|
*/
|
|
11
14
|
export declare class NurbsCurve {
|
|
12
15
|
readonly degree: number;
|
|
@@ -14,23 +17,90 @@ export declare class NurbsCurve {
|
|
|
14
17
|
readonly weights: number[];
|
|
15
18
|
readonly knots: number[];
|
|
16
19
|
private _data;
|
|
20
|
+
/**
|
|
21
|
+
* Create a new NURBS curve.
|
|
22
|
+
* @param degree - Polynomial degree (1 = linear, 2 = quadratic, 3 = cubic)
|
|
23
|
+
* @param controlPoints - Control points defining the curve shape
|
|
24
|
+
* @param weights - Rational weights for each control point (use 1 for non-rational)
|
|
25
|
+
* @param knots - Knot vector (length = num_points + degree + 1)
|
|
26
|
+
*/
|
|
17
27
|
constructor(degree: number, controlPoints: Point[], weights: number[], knots: number[]);
|
|
18
|
-
/**
|
|
28
|
+
/**
|
|
29
|
+
* Evaluate a point on the curve at normalized parameter t.
|
|
30
|
+
* @param t - Parameter in [0, 1] (0 = start, 1 = end)
|
|
31
|
+
* @returns Point on curve at parameter t
|
|
32
|
+
*/
|
|
19
33
|
pointAt(t: number): Point;
|
|
34
|
+
/**
|
|
35
|
+
* Sample the curve into evenly-spaced points.
|
|
36
|
+
* @param n - Number of points to generate
|
|
37
|
+
* @returns Array of n points along the curve
|
|
38
|
+
*/
|
|
20
39
|
sample(n: number): Point[];
|
|
40
|
+
/**
|
|
41
|
+
* Find intersection points with a plane.
|
|
42
|
+
* @param plane - Cutting plane
|
|
43
|
+
* @returns Array of intersection points
|
|
44
|
+
*/
|
|
21
45
|
intersectPlane(plane: Plane): Point[];
|
|
46
|
+
/**
|
|
47
|
+
* Find intersection points with another NURBS curve.
|
|
48
|
+
* @param other - Other curve to intersect with
|
|
49
|
+
* @returns Array of intersection points
|
|
50
|
+
*/
|
|
22
51
|
intersectCurve(other: NurbsCurve): Point[];
|
|
52
|
+
/**
|
|
53
|
+
* Translate this curve by an offset vector.
|
|
54
|
+
* @param offset - Translation vector
|
|
55
|
+
* @returns New translated curve
|
|
56
|
+
*/
|
|
23
57
|
translate(offset: Vec3): NurbsCurve;
|
|
24
|
-
|
|
58
|
+
/**
|
|
59
|
+
* Rotate this curve around an axis.
|
|
60
|
+
* @param axis - Rotation axis (Vec3 through origin, or Line for arbitrary axis)
|
|
61
|
+
* @param angle - Rotation angle in radians
|
|
62
|
+
* @returns New rotated curve
|
|
63
|
+
*/
|
|
64
|
+
rotate(axis: RotationAxis, angle: number): NurbsCurve;
|
|
65
|
+
/**
|
|
66
|
+
* Project this curve onto a plane.
|
|
67
|
+
* @param plane - Target plane
|
|
68
|
+
* @param direction - Optional projection direction (default: perpendicular to plane)
|
|
69
|
+
* @returns New projected curve
|
|
70
|
+
*/
|
|
25
71
|
projectOntoPlane(plane: Plane, direction?: Vec3): NurbsCurve;
|
|
72
|
+
/**
|
|
73
|
+
* Offset this curve by a distance.
|
|
74
|
+
* Note: NURBS offset is approximated by sampling and offsetting as polyline.
|
|
75
|
+
* @param distance - Offset distance
|
|
76
|
+
* @param normal - Reference normal for determining offset direction
|
|
77
|
+
* @param samples - Number of sample points (default 64)
|
|
78
|
+
* @returns Offset polyline approximation
|
|
79
|
+
*/
|
|
26
80
|
offset(distance: number, normal?: Vec3, samples?: number): Polyline;
|
|
27
|
-
/**
|
|
81
|
+
/**
|
|
82
|
+
* Decode a NurbsCurve from WASM flat buffer.
|
|
83
|
+
* @param data - Buffer in format [degree, num_cp, xyz..., w..., k...]
|
|
84
|
+
* @returns New NurbsCurve instance
|
|
85
|
+
*/
|
|
28
86
|
static fromData(data: Float64Array | number[]): NurbsCurve;
|
|
29
|
-
/**
|
|
87
|
+
/**
|
|
88
|
+
* Create exact degree-1 NURBS from a Line.
|
|
89
|
+
* @param line - Source line
|
|
90
|
+
* @returns Degree-1 NURBS representing the line exactly
|
|
91
|
+
*/
|
|
30
92
|
static fromLine(line: Line): NurbsCurve;
|
|
31
|
-
/**
|
|
93
|
+
/**
|
|
94
|
+
* Create exact degree-2 rational NURBS from an Arc.
|
|
95
|
+
* Uses WASM circle_arc for exact conic representation.
|
|
96
|
+
* @param arc - Source arc
|
|
97
|
+
* @returns Degree-2 rational NURBS representing the arc exactly
|
|
98
|
+
*/
|
|
32
99
|
static fromArc(arc: Arc): NurbsCurve;
|
|
33
|
-
/**
|
|
100
|
+
/**
|
|
101
|
+
* Get internal WASM data buffer.
|
|
102
|
+
* For advanced use cases requiring direct WASM interop.
|
|
103
|
+
*/
|
|
34
104
|
get data(): Float64Array;
|
|
35
105
|
/** Encode to WASM format */
|
|
36
106
|
private static encode;
|
package/dist/NurbsCurve.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"NurbsCurve.d.ts","sourceRoot":"","sources":["../src/NurbsCurve.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;AACzC,OAAO,KAAK,EAAE,IAAI,EAAE,MAAM,WAAW,CAAC;AACtC,OAAO,KAAK,EAAE,GAAG,EAAE,MAAM,UAAU,CAAC;
|
|
1
|
+
{"version":3,"file":"NurbsCurve.d.ts","sourceRoot":"","sources":["../src/NurbsCurve.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;AACzC,OAAO,KAAK,EAAE,IAAI,EAAE,MAAM,WAAW,CAAC;AACtC,OAAO,KAAK,EAAE,GAAG,EAAE,MAAM,UAAU,CAAC;AACpC,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,YAAY,CAAC;AAI/C;;;;;GAKG;AACH,qBAAa,UAAU;aAWH,MAAM,EAAE,MAAM;aACd,aAAa,EAAE,KAAK,EAAE;aACtB,OAAO,EAAE,MAAM,EAAE;aACjB,KAAK,EAAE,MAAM,EAAE;IAbjC,OAAO,CAAC,KAAK,CAAe;IAE5B;;;;;;OAMG;gBAEe,MAAM,EAAE,MAAM,EACd,aAAa,EAAE,KAAK,EAAE,EACtB,OAAO,EAAE,MAAM,EAAE,EACjB,KAAK,EAAE,MAAM,EAAE;IAKjC;;;;OAIG;IACH,OAAO,CAAC,CAAC,EAAE,MAAM,GAAG,KAAK;IAMzB;;;;OAIG;IACH,MAAM,CAAC,CAAC,EAAE,MAAM,GAAG,KAAK,EAAE;IAU1B;;;;OAIG;IACH,cAAc,CAAC,KAAK,EAAE,KAAK,GAAG,KAAK,EAAE;IAiBrC;;;;OAIG;IACH,cAAc,CAAC,KAAK,EAAE,UAAU,GAAG,KAAK,EAAE;IAa1C;;;;OAIG;IACH,SAAS,CAAC,MAAM,EAAE,IAAI,GAAG,UAAU;IASnC;;;;;OAKG;IACH,MAAM,CAAC,IAAI,EAAE,YAAY,EAAE,KAAK,EAAE,MAAM,GAAG,UAAU;IASrD;;;;;OAKG;IACH,gBAAgB,CAAC,KAAK,EAAE,KAAK,EAAE,SAAS,CAAC,EAAE,IAAI,GAAG,UAAU;IAU5D;;;;;;;OAOG;IACH,MAAM,CAAC,QAAQ,EAAE,MAAM,EAAE,MAAM,CAAC,EAAE,IAAI,EAAE,OAAO,SAAK,GAAG,QAAQ;IAM/D;;;;OAIG;IACH,MAAM,CAAC,QAAQ,CAAC,IAAI,EAAE,YAAY,GAAG,MAAM,EAAE,GAAG,UAAU;IAgB1D;;;;OAIG;IACH,MAAM,CAAC,QAAQ,CAAC,IAAI,EAAE,IAAI,GAAG,UAAU;IAIvC;;;;;OAKG;IACH,MAAM,CAAC,OAAO,CAAC,GAAG,EAAE,GAAG,GAAG,UAAU;IAapC;;;OAGG;IACH,IAAI,IAAI,IAAI,YAAY,CAEvB;IAED,4BAA4B;IAC5B,OAAO,CAAC,MAAM,CAAC,MAAM;CAoBtB"}
|