okgeometry-api 0.2.11 → 0.2.13
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 +69 -4
- package/dist/Circle.d.ts.map +1 -1
- package/dist/Circle.js +77 -5
- 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 +199 -72
- 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/Plane.d.ts +6 -1
- package/dist/Plane.d.ts.map +1 -1
- package/dist/Plane.js +29 -1
- package/dist/Plane.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 +54 -2
- package/dist/Polyline.d.ts.map +1 -1
- package/dist/Polyline.js +55 -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 +121 -0
- package/wasm/okgeometrycore_bg.wasm +0 -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,67 +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
|
-
|
|
194
|
-
|
|
195
|
-
|
|
196
|
-
|
|
276
|
+
// Include uAxis if present (11 floats), otherwise just 8
|
|
277
|
+
if (curve.uAxis) {
|
|
278
|
+
return new Float64Array([1 /* CurveTypeCode.Circle */,
|
|
279
|
+
curve.center.x, curve.center.y, curve.center.z,
|
|
280
|
+
curve.normal.x, curve.normal.y, curve.normal.z,
|
|
281
|
+
curve.radius,
|
|
282
|
+
curve.uAxis.x, curve.uAxis.y, curve.uAxis.z]);
|
|
283
|
+
}
|
|
284
|
+
else {
|
|
285
|
+
return new Float64Array([1 /* CurveTypeCode.Circle */,
|
|
286
|
+
curve.center.x, curve.center.y, curve.center.z,
|
|
287
|
+
curve.normal.x, curve.normal.y, curve.normal.z,
|
|
288
|
+
curve.radius]);
|
|
289
|
+
}
|
|
197
290
|
}
|
|
198
291
|
if (curve instanceof Arc) {
|
|
199
|
-
return new Float64Array([2
|
|
292
|
+
return new Float64Array([2 /* CurveTypeCode.Arc */,
|
|
200
293
|
curve.center.x, curve.center.y, curve.center.z,
|
|
201
294
|
curve.normal.x, curve.normal.y, curve.normal.z,
|
|
202
295
|
curve.radius, curve.startAngle, curve.endAngle]);
|
|
203
296
|
}
|
|
204
297
|
if (curve instanceof Polygon || curve instanceof Polyline) {
|
|
205
298
|
const pts = curve.points;
|
|
206
|
-
const
|
|
207
|
-
data
|
|
299
|
+
const coords = pointsToCoords(pts);
|
|
300
|
+
const data = new Float64Array(2 + coords.length);
|
|
301
|
+
data[0] = 3 /* CurveTypeCode.Polyline */;
|
|
208
302
|
data[1] = pts.length;
|
|
209
|
-
|
|
210
|
-
data[2 + i * 3] = pts[i].x;
|
|
211
|
-
data[2 + i * 3 + 1] = pts[i].y;
|
|
212
|
-
data[2 + i * 3 + 2] = pts[i].z;
|
|
213
|
-
}
|
|
303
|
+
data.set(coords, 2);
|
|
214
304
|
return data;
|
|
215
305
|
}
|
|
216
306
|
if (curve instanceof NurbsCurve) {
|
|
217
307
|
const n = curve.controlPoints.length;
|
|
218
308
|
const data = new Float64Array(3 + n * 3 + curve.weights.length + curve.knots.length);
|
|
219
|
-
data[0] = 4
|
|
309
|
+
data[0] = 4 /* CurveTypeCode.NurbsCurve */;
|
|
220
310
|
data[1] = curve.degree;
|
|
221
311
|
data[2] = n;
|
|
222
312
|
let idx = 3;
|
|
@@ -232,15 +322,13 @@ export class Mesh {
|
|
|
232
322
|
return data;
|
|
233
323
|
}
|
|
234
324
|
if (curve instanceof PolyCurve) {
|
|
235
|
-
|
|
236
|
-
const parts = [5, curve.segments.length];
|
|
325
|
+
const parts = [5 /* CurveTypeCode.PolyCurve */, curve.segments.length];
|
|
237
326
|
for (const seg of curve.segments) {
|
|
238
327
|
if (seg instanceof Line) {
|
|
239
|
-
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);
|
|
240
329
|
}
|
|
241
330
|
else {
|
|
242
|
-
|
|
243
|
-
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);
|
|
244
332
|
}
|
|
245
333
|
}
|
|
246
334
|
return new Float64Array(parts);
|
|
@@ -249,21 +337,29 @@ export class Mesh {
|
|
|
249
337
|
const pts = [];
|
|
250
338
|
for (let i = 0; i <= 32; i++)
|
|
251
339
|
pts.push(curve.pointAt(i / 32));
|
|
252
|
-
const
|
|
253
|
-
data
|
|
340
|
+
const coords = pointsToCoords(pts);
|
|
341
|
+
const data = new Float64Array(2 + coords.length);
|
|
342
|
+
data[0] = 3 /* CurveTypeCode.Polyline */;
|
|
254
343
|
data[1] = pts.length;
|
|
255
|
-
|
|
256
|
-
data[2 + i * 3] = pts[i].x;
|
|
257
|
-
data[2 + i * 3 + 1] = pts[i].y;
|
|
258
|
-
data[2 + i * 3 + 2] = pts[i].z;
|
|
259
|
-
}
|
|
344
|
+
data.set(coords, 2);
|
|
260
345
|
return data;
|
|
261
346
|
}
|
|
262
347
|
// ── Transforms ────────────────────────────────────────────────
|
|
348
|
+
/**
|
|
349
|
+
* Translate this mesh by an offset vector.
|
|
350
|
+
* @param offset - Translation vector
|
|
351
|
+
* @returns New translated mesh
|
|
352
|
+
*/
|
|
263
353
|
translate(offset) {
|
|
264
354
|
ensureInit();
|
|
265
355
|
return new Mesh(wasm.mesh_translate(this._vertexCount, this._buffer, offset.x, offset.y, offset.z));
|
|
266
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
|
+
*/
|
|
267
363
|
rotate(axis, angleRadians) {
|
|
268
364
|
ensureInit();
|
|
269
365
|
if ('start' in axis && 'end' in axis) {
|
|
@@ -275,71 +371,102 @@ export class Mesh {
|
|
|
275
371
|
}
|
|
276
372
|
return new Mesh(wasm.mesh_rotate(this._vertexCount, this._buffer, axis.x, axis.y, axis.z, angleRadians));
|
|
277
373
|
}
|
|
374
|
+
/**
|
|
375
|
+
* Scale this mesh uniformly.
|
|
376
|
+
* @param factor - Scale factor (1 = no change, 2 = double size)
|
|
377
|
+
* @returns New scaled mesh
|
|
378
|
+
*/
|
|
278
379
|
scale(factor) {
|
|
279
380
|
ensureInit();
|
|
280
381
|
return new Mesh(wasm.mesh_scale(this._vertexCount, this._buffer, factor, factor, factor));
|
|
281
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
|
+
*/
|
|
282
390
|
scaleXYZ(sx, sy, sz) {
|
|
283
391
|
ensureInit();
|
|
284
392
|
return new Mesh(wasm.mesh_scale(this._vertexCount, this._buffer, sx, sy, sz));
|
|
285
393
|
}
|
|
286
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
|
+
*/
|
|
287
400
|
union(other) {
|
|
288
401
|
ensureInit();
|
|
289
402
|
return new Mesh(wasm.mesh_boolean_union(this._vertexCount, this._buffer, other._vertexCount, other._buffer));
|
|
290
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
|
+
*/
|
|
291
409
|
subtract(other) {
|
|
292
410
|
ensureInit();
|
|
293
411
|
return new Mesh(wasm.mesh_boolean_subtraction(this._vertexCount, this._buffer, other._vertexCount, other._buffer));
|
|
294
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
|
+
*/
|
|
295
418
|
intersect(other) {
|
|
296
419
|
ensureInit();
|
|
297
420
|
return new Mesh(wasm.mesh_boolean_intersection(this._vertexCount, this._buffer, other._vertexCount, other._buffer));
|
|
298
421
|
}
|
|
299
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
|
+
*/
|
|
300
428
|
intersectPlane(plane) {
|
|
301
429
|
ensureInit();
|
|
302
430
|
const result = wasm.mesh_plane_intersect(this._vertexCount, this._buffer, plane.normal.x, plane.normal.y, plane.normal.z, plane.d);
|
|
303
|
-
return
|
|
431
|
+
return parsePolylineBuf(result).map(pts => new Polyline(pts));
|
|
304
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
|
+
*/
|
|
305
438
|
intersectMesh(other) {
|
|
306
439
|
ensureInit();
|
|
307
440
|
const result = wasm.mesh_mesh_intersect(this._vertexCount, this._buffer, other._vertexCount, other._buffer);
|
|
308
|
-
return
|
|
441
|
+
return parsePolylineBuf(result).map(pts => new Polyline(pts));
|
|
309
442
|
}
|
|
310
|
-
/**
|
|
443
|
+
/**
|
|
444
|
+
* Apply a 4x4 transformation matrix.
|
|
445
|
+
* @param matrix - Row-major flat array of 16 numbers
|
|
446
|
+
* @returns New transformed mesh
|
|
447
|
+
*/
|
|
311
448
|
applyMatrix(matrix) {
|
|
312
449
|
ensureInit();
|
|
313
450
|
return new Mesh(wasm.mesh_apply_matrix(this._vertexCount, this._buffer, new Float64Array(matrix)));
|
|
314
451
|
}
|
|
315
|
-
/**
|
|
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
|
+
*/
|
|
316
457
|
boundaryPolylines() {
|
|
317
458
|
ensureInit();
|
|
318
459
|
const buf = wasm.mesh_boundary_polylines(this._vertexCount, this._buffer);
|
|
319
|
-
return
|
|
460
|
+
return parsePolylineBuf(buf).map(pts => new Polyline(pts));
|
|
320
461
|
}
|
|
321
462
|
// ── Export ──────────────────────────────────────────────────────
|
|
463
|
+
/**
|
|
464
|
+
* Export this mesh to OBJ format.
|
|
465
|
+
* @returns OBJ file content as string
|
|
466
|
+
*/
|
|
322
467
|
toOBJ() {
|
|
323
468
|
ensureInit();
|
|
324
469
|
return wasm.mesh_export_obj(this._vertexCount, this._buffer);
|
|
325
470
|
}
|
|
326
471
|
}
|
|
327
|
-
/** Parse WASM polyline buffer: [num_polylines, n1, x,y,z,..., n2, x,y,z,...] */
|
|
328
|
-
function parsePolylineBuffer(buf) {
|
|
329
|
-
if (buf.length === 0)
|
|
330
|
-
return [];
|
|
331
|
-
const numPolylines = buf[0];
|
|
332
|
-
const result = [];
|
|
333
|
-
let idx = 1;
|
|
334
|
-
for (let i = 0; i < numPolylines; i++) {
|
|
335
|
-
const count = buf[idx++];
|
|
336
|
-
const pts = [];
|
|
337
|
-
for (let j = 0; j < count; j++) {
|
|
338
|
-
pts.push(new Point(buf[idx], buf[idx + 1], buf[idx + 2]));
|
|
339
|
-
idx += 3;
|
|
340
|
-
}
|
|
341
|
-
result.push(new Polyline(pts));
|
|
342
|
-
}
|
|
343
|
-
return result;
|
|
344
|
-
}
|
|
345
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"}
|