okgeometry-api 0.2.6 → 0.2.9

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.
Files changed (61) hide show
  1. package/dist/Arc.d.ts +3 -0
  2. package/dist/Arc.d.ts.map +1 -1
  3. package/dist/Arc.js +12 -0
  4. package/dist/Arc.js.map +1 -1
  5. package/dist/Circle.d.ts +3 -0
  6. package/dist/Circle.d.ts.map +1 -1
  7. package/dist/Circle.js +13 -0
  8. package/dist/Circle.js.map +1 -1
  9. package/dist/Geometry.d.ts +16 -0
  10. package/dist/Geometry.d.ts.map +1 -0
  11. package/dist/Geometry.js +37 -0
  12. package/dist/Geometry.js.map +1 -0
  13. package/dist/Line.d.ts +3 -0
  14. package/dist/Line.d.ts.map +1 -1
  15. package/dist/Line.js +11 -0
  16. package/dist/Line.js.map +1 -1
  17. package/dist/Mesh.d.ts +8 -1
  18. package/dist/Mesh.d.ts.map +1 -1
  19. package/dist/Mesh.js +56 -1
  20. package/dist/Mesh.js.map +1 -1
  21. package/dist/NurbsCurve.d.ts +15 -0
  22. package/dist/NurbsCurve.d.ts.map +1 -1
  23. package/dist/NurbsCurve.js +51 -0
  24. package/dist/NurbsCurve.js.map +1 -1
  25. package/dist/NurbsSurface.d.ts +18 -0
  26. package/dist/NurbsSurface.d.ts.map +1 -1
  27. package/dist/NurbsSurface.js +122 -1
  28. package/dist/NurbsSurface.js.map +1 -1
  29. package/dist/Point.d.ts +7 -0
  30. package/dist/Point.d.ts.map +1 -1
  31. package/dist/Point.js +24 -0
  32. package/dist/Point.js.map +1 -1
  33. package/dist/PolyCurve.d.ts +9 -0
  34. package/dist/PolyCurve.d.ts.map +1 -1
  35. package/dist/PolyCurve.js +36 -0
  36. package/dist/PolyCurve.js.map +1 -1
  37. package/dist/Polygon.d.ts +4 -0
  38. package/dist/Polygon.d.ts.map +1 -1
  39. package/dist/Polygon.js +12 -0
  40. package/dist/Polygon.js.map +1 -1
  41. package/dist/Polyline.d.ts +3 -0
  42. package/dist/Polyline.d.ts.map +1 -1
  43. package/dist/Polyline.js +16 -0
  44. package/dist/Polyline.js.map +1 -1
  45. package/dist/index.d.ts +2 -0
  46. package/dist/index.d.ts.map +1 -1
  47. package/dist/index.js +1 -0
  48. package/dist/index.js.map +1 -1
  49. package/dist/wasm-base64.d.ts +1 -1
  50. package/dist/wasm-base64.d.ts.map +1 -1
  51. package/dist/wasm-base64.js +1 -1
  52. package/dist/wasm-base64.js.map +1 -1
  53. package/package.json +1 -1
  54. package/wasm/README.md +102 -0
  55. package/wasm/okgeometrycore.d.ts +347 -0
  56. package/wasm/okgeometrycore.js +9 -0
  57. package/wasm/okgeometrycore_bg.d.ts +3 -0
  58. package/wasm/okgeometrycore_bg.js +1089 -0
  59. package/wasm/okgeometrycore_bg.wasm +0 -0
  60. package/wasm/okgeometrycore_bg.wasm.d.ts +61 -0
  61. package/wasm/package.json +21 -0
@@ -0,0 +1,1089 @@
1
+ /**
2
+ * Get the length of an arc.
3
+ * @param {number} radius
4
+ * @param {number} start_angle
5
+ * @param {number} end_angle
6
+ * @returns {number}
7
+ */
8
+ export function arc_length(radius, start_angle, end_angle) {
9
+ const ret = wasm.arc_length(radius, start_angle, end_angle);
10
+ return ret;
11
+ }
12
+
13
+ /**
14
+ * Evaluate a point on an arc at parameter t ∈ [0,1].
15
+ * Returns [x, y, z].
16
+ * @param {number} cx
17
+ * @param {number} cy
18
+ * @param {number} cz
19
+ * @param {number} nx
20
+ * @param {number} ny
21
+ * @param {number} nz
22
+ * @param {number} radius
23
+ * @param {number} start_angle
24
+ * @param {number} end_angle
25
+ * @param {number} t
26
+ * @returns {Float64Array}
27
+ */
28
+ export function arc_point_at(cx, cy, cz, nx, ny, nz, radius, start_angle, end_angle, t) {
29
+ const ret = wasm.arc_point_at(cx, cy, cz, nx, ny, nz, radius, start_angle, end_angle, t);
30
+ var v1 = getArrayF64FromWasm0(ret[0], ret[1]).slice();
31
+ wasm.__wbindgen_free(ret[0], ret[1] * 8, 8);
32
+ return v1;
33
+ }
34
+
35
+ /**
36
+ * Get the circumference of a circle.
37
+ * @param {number} radius
38
+ * @returns {number}
39
+ */
40
+ export function circle_length(radius) {
41
+ const ret = wasm.circle_length(radius);
42
+ return ret;
43
+ }
44
+
45
+ /**
46
+ * Evaluate a point on a circle at parameter t ∈ [0,1].
47
+ * Returns [x, y, z].
48
+ * @param {number} cx
49
+ * @param {number} cy
50
+ * @param {number} cz
51
+ * @param {number} nx
52
+ * @param {number} ny
53
+ * @param {number} nz
54
+ * @param {number} radius
55
+ * @param {number} t
56
+ * @returns {Float64Array}
57
+ */
58
+ export function circle_point_at(cx, cy, cz, nx, ny, nz, radius, t) {
59
+ const ret = wasm.circle_point_at(cx, cy, cz, nx, ny, nz, radius, t);
60
+ var v1 = getArrayF64FromWasm0(ret[0], ret[1]).slice();
61
+ wasm.__wbindgen_free(ret[0], ret[1] * 8, 8);
62
+ return v1;
63
+ }
64
+
65
+ /**
66
+ * Create an arc and return sampled points
67
+ * @param {number} cx
68
+ * @param {number} cy
69
+ * @param {number} cz
70
+ * @param {number} nx
71
+ * @param {number} ny
72
+ * @param {number} nz
73
+ * @param {number} radius
74
+ * @param {number} start_angle
75
+ * @param {number} end_angle
76
+ * @param {number} samples
77
+ * @returns {Float64Array}
78
+ */
79
+ export function create_arc(cx, cy, cz, nx, ny, nz, radius, start_angle, end_angle, samples) {
80
+ const ret = wasm.create_arc(cx, cy, cz, nx, ny, nz, radius, start_angle, end_angle, samples);
81
+ var v1 = getArrayF64FromWasm0(ret[0], ret[1]).slice();
82
+ wasm.__wbindgen_free(ret[0], ret[1] * 8, 8);
83
+ return v1;
84
+ }
85
+
86
+ /**
87
+ * Create a circle and return sampled points
88
+ * @param {number} cx
89
+ * @param {number} cy
90
+ * @param {number} cz
91
+ * @param {number} nx
92
+ * @param {number} ny
93
+ * @param {number} nz
94
+ * @param {number} radius
95
+ * @param {number} samples
96
+ * @returns {Float64Array}
97
+ */
98
+ export function create_circle(cx, cy, cz, nx, ny, nz, radius, samples) {
99
+ const ret = wasm.create_circle(cx, cy, cz, nx, ny, nz, radius, samples);
100
+ var v1 = getArrayF64FromWasm0(ret[0], ret[1]).slice();
101
+ wasm.__wbindgen_free(ret[0], ret[1] * 8, 8);
102
+ return v1;
103
+ }
104
+
105
+ /**
106
+ * Create a line segment and return sampled points
107
+ * @param {number} x1
108
+ * @param {number} y1
109
+ * @param {number} z1
110
+ * @param {number} x2
111
+ * @param {number} y2
112
+ * @param {number} z2
113
+ * @param {number} samples
114
+ * @returns {Float64Array}
115
+ */
116
+ export function create_line(x1, y1, z1, x2, y2, z2, samples) {
117
+ const ret = wasm.create_line(x1, y1, z1, x2, y2, z2, samples);
118
+ var v1 = getArrayF64FromWasm0(ret[0], ret[1]).slice();
119
+ wasm.__wbindgen_free(ret[0], ret[1] * 8, 8);
120
+ return v1;
121
+ }
122
+
123
+ /**
124
+ * Create a polyline and return the points
125
+ * @param {Float64Array} coords
126
+ * @param {number} samples_per_segment
127
+ * @returns {Float64Array}
128
+ */
129
+ export function create_polyline(coords, samples_per_segment) {
130
+ const ptr0 = passArrayF64ToWasm0(coords, wasm.__wbindgen_malloc);
131
+ const len0 = WASM_VECTOR_LEN;
132
+ const ret = wasm.create_polyline(ptr0, len0, samples_per_segment);
133
+ var v2 = getArrayF64FromWasm0(ret[0], ret[1]).slice();
134
+ wasm.__wbindgen_free(ret[0], ret[1] * 8, 8);
135
+ return v2;
136
+ }
137
+
138
+ /**
139
+ * Serialize a curve to a list of points for Three.js rendering
140
+ * Returns a flat array of coordinates: [x1, y1, z1, x2, y2, z2, ...]
141
+ * @param {string} curve_type
142
+ * @param {Float64Array} params
143
+ * @param {number} samples
144
+ * @returns {Float64Array}
145
+ */
146
+ export function curve_to_points(curve_type, params, samples) {
147
+ const ptr0 = passStringToWasm0(curve_type, wasm.__wbindgen_malloc, wasm.__wbindgen_realloc);
148
+ const len0 = WASM_VECTOR_LEN;
149
+ const ptr1 = passArrayF64ToWasm0(params, wasm.__wbindgen_malloc);
150
+ const len1 = WASM_VECTOR_LEN;
151
+ const ret = wasm.curve_to_points(ptr0, len0, ptr1, len1, samples);
152
+ var v3 = getArrayF64FromWasm0(ret[0], ret[1]).slice();
153
+ wasm.__wbindgen_free(ret[0], ret[1] * 8, 8);
154
+ return v3;
155
+ }
156
+
157
+ /**
158
+ * Extrude a circle and return mesh buffers
159
+ * @param {number} cx
160
+ * @param {number} cy
161
+ * @param {number} cz
162
+ * @param {number} nx
163
+ * @param {number} ny
164
+ * @param {number} nz
165
+ * @param {number} radius
166
+ * @param {number} dx
167
+ * @param {number} dy
168
+ * @param {number} dz
169
+ * @param {number} segments
170
+ * @param {boolean} with_caps
171
+ * @returns {Float64Array}
172
+ */
173
+ export function extrude_circle(cx, cy, cz, nx, ny, nz, radius, dx, dy, dz, segments, with_caps) {
174
+ const ret = wasm.extrude_circle(cx, cy, cz, nx, ny, nz, radius, dx, dy, dz, segments, with_caps);
175
+ var v1 = getArrayF64FromWasm0(ret[0], ret[1]).slice();
176
+ wasm.__wbindgen_free(ret[0], ret[1] * 8, 8);
177
+ return v1;
178
+ }
179
+
180
+ /**
181
+ * Extrude a line segment and return mesh buffers
182
+ * @param {number} x1
183
+ * @param {number} y1
184
+ * @param {number} z1
185
+ * @param {number} x2
186
+ * @param {number} y2
187
+ * @param {number} z2
188
+ * @param {number} dx
189
+ * @param {number} dy
190
+ * @param {number} dz
191
+ * @param {number} segments
192
+ * @returns {Float64Array}
193
+ */
194
+ export function extrude_line(x1, y1, z1, x2, y2, z2, dx, dy, dz, segments) {
195
+ const ret = wasm.extrude_line(x1, y1, z1, x2, y2, z2, dx, dy, dz, segments);
196
+ var v1 = getArrayF64FromWasm0(ret[0], ret[1]).slice();
197
+ wasm.__wbindgen_free(ret[0], ret[1] * 8, 8);
198
+ return v1;
199
+ }
200
+
201
+ /**
202
+ * Extrude a polyline and return mesh buffers.
203
+ * Uses the polyline's actual vertices (no resampling) to preserve sharp corners.
204
+ * @param {Float64Array} coords
205
+ * @param {number} dx
206
+ * @param {number} dy
207
+ * @param {number} dz
208
+ * @param {number} _segments
209
+ * @param {boolean} with_caps
210
+ * @returns {Float64Array}
211
+ */
212
+ export function extrude_polyline(coords, dx, dy, dz, _segments, with_caps) {
213
+ const ptr0 = passArrayF64ToWasm0(coords, wasm.__wbindgen_malloc);
214
+ const len0 = WASM_VECTOR_LEN;
215
+ const ret = wasm.extrude_polyline(ptr0, len0, dx, dy, dz, _segments, with_caps);
216
+ var v2 = getArrayF64FromWasm0(ret[0], ret[1]).slice();
217
+ wasm.__wbindgen_free(ret[0], ret[1] * 8, 8);
218
+ return v2;
219
+ }
220
+
221
+ /**
222
+ * Get the length of a line segment.
223
+ * @param {number} x1
224
+ * @param {number} y1
225
+ * @param {number} z1
226
+ * @param {number} x2
227
+ * @param {number} y2
228
+ * @param {number} z2
229
+ * @returns {number}
230
+ */
231
+ export function line_length(x1, y1, z1, x2, y2, z2) {
232
+ const ret = wasm.line_length(x1, y1, z1, x2, y2, z2);
233
+ return ret;
234
+ }
235
+
236
+ /**
237
+ * Evaluate a point on a line segment at parameter t ∈ [0,1].
238
+ * Returns [x, y, z].
239
+ * @param {number} x1
240
+ * @param {number} y1
241
+ * @param {number} z1
242
+ * @param {number} x2
243
+ * @param {number} y2
244
+ * @param {number} z2
245
+ * @param {number} t
246
+ * @returns {Float64Array}
247
+ */
248
+ export function line_point_at(x1, y1, z1, x2, y2, z2, t) {
249
+ const ret = wasm.line_point_at(x1, y1, z1, x2, y2, z2, t);
250
+ var v1 = getArrayF64FromWasm0(ret[0], ret[1]).slice();
251
+ wasm.__wbindgen_free(ret[0], ret[1] * 8, 8);
252
+ return v1;
253
+ }
254
+
255
+ /**
256
+ * Get the tangent direction of a line segment. Returns [x, y, z].
257
+ * @param {number} x1
258
+ * @param {number} y1
259
+ * @param {number} z1
260
+ * @param {number} x2
261
+ * @param {number} y2
262
+ * @param {number} z2
263
+ * @returns {Float64Array}
264
+ */
265
+ export function line_tangent(x1, y1, z1, x2, y2, z2) {
266
+ const ret = wasm.line_tangent(x1, y1, z1, x2, y2, z2);
267
+ var v1 = getArrayF64FromWasm0(ret[0], ret[1]).slice();
268
+ wasm.__wbindgen_free(ret[0], ret[1] * 8, 8);
269
+ return v1;
270
+ }
271
+
272
+ /**
273
+ * Loft between multiple circles
274
+ *
275
+ * # Parameters
276
+ * * `circle_data` - Flat array of circle definitions [cx, cy, cz, nx, ny, nz, radius, ...]
277
+ * * `segments` - Number of segments to sample along each curve
278
+ * * `with_caps` - Whether to create end caps
279
+ *
280
+ * # Returns
281
+ * Mesh buffers for the lofted surface
282
+ * @param {Float64Array} circle_data
283
+ * @param {number} segments
284
+ * @param {boolean} with_caps
285
+ * @returns {Float64Array}
286
+ */
287
+ export function loft_circles(circle_data, segments, with_caps) {
288
+ const ptr0 = passArrayF64ToWasm0(circle_data, wasm.__wbindgen_malloc);
289
+ const len0 = WASM_VECTOR_LEN;
290
+ const ret = wasm.loft_circles(ptr0, len0, segments, with_caps);
291
+ var v2 = getArrayF64FromWasm0(ret[0], ret[1]).slice();
292
+ wasm.__wbindgen_free(ret[0], ret[1] * 8, 8);
293
+ return v2;
294
+ }
295
+
296
+ /**
297
+ * Loft a NURBS surface through multiple NURBS curves.
298
+ * Input: [num_curves, degree_v, curve1_data..., curve2_data..., ...]
299
+ * Each curve_data: [degree, num_pts, x,y,z,..., w0,w1,..., k0,k1,...]
300
+ * Returns the NurbsSurface data (same format as tessellate input, without u_segs/v_segs).
301
+ * @param {Float64Array} data
302
+ * @returns {Float64Array}
303
+ */
304
+ export function loft_nurbs_surface(data) {
305
+ const ptr0 = passArrayF64ToWasm0(data, wasm.__wbindgen_malloc);
306
+ const len0 = WASM_VECTOR_LEN;
307
+ const ret = wasm.loft_nurbs_surface(ptr0, len0);
308
+ var v2 = getArrayF64FromWasm0(ret[0], ret[1]).slice();
309
+ wasm.__wbindgen_free(ret[0], ret[1] * 8, 8);
310
+ return v2;
311
+ }
312
+
313
+ /**
314
+ * Loft between multiple polylines
315
+ *
316
+ * # Parameters
317
+ * * `polyline_data` - Flat array where each polyline is prefixed by its point count:
318
+ * [count1, x1, y1, z1, x2, y2, z2, ..., count2, x1, y1, z1, ...]
319
+ * * `segments` - Number of segments to sample along each curve
320
+ * * `with_caps` - Whether to create end caps
321
+ *
322
+ * # Returns
323
+ * Mesh buffers for the lofted surface
324
+ * @param {Float64Array} polyline_data
325
+ * @param {number} segments
326
+ * @param {boolean} with_caps
327
+ * @returns {Float64Array}
328
+ */
329
+ export function loft_polylines(polyline_data, segments, with_caps) {
330
+ const ptr0 = passArrayF64ToWasm0(polyline_data, wasm.__wbindgen_malloc);
331
+ const len0 = WASM_VECTOR_LEN;
332
+ const ret = wasm.loft_polylines(ptr0, len0, segments, with_caps);
333
+ var v2 = getArrayF64FromWasm0(ret[0], ret[1]).slice();
334
+ wasm.__wbindgen_free(ret[0], ret[1] * 8, 8);
335
+ return v2;
336
+ }
337
+
338
+ /**
339
+ * Make multiple NURBS curves compatible (same knot vectors, same CP count).
340
+ * Input: [curve_count, curve1_data..., curve2_data..., ...]
341
+ * Each curve: [degree, num_cp, cp_xyz..., weights..., knots...]
342
+ * Output: same format with unified curves.
343
+ * @param {Float64Array} curves_data
344
+ * @returns {Float64Array}
345
+ */
346
+ export function make_nurbs_curves_compatible(curves_data) {
347
+ const ptr0 = passArrayF64ToWasm0(curves_data, wasm.__wbindgen_malloc);
348
+ const len0 = WASM_VECTOR_LEN;
349
+ const ret = wasm.make_nurbs_curves_compatible(ptr0, len0);
350
+ var v2 = getArrayF64FromWasm0(ret[0], ret[1]).slice();
351
+ wasm.__wbindgen_free(ret[0], ret[1] * 8, 8);
352
+ return v2;
353
+ }
354
+
355
+ /**
356
+ * Apply a 4x4 transformation matrix to a mesh.
357
+ * matrix: flat [m00,m01,m02,m03, m10,m11,..., m30,m31,m32,m33] (16 elements, row-major)
358
+ * @param {number} vertex_count
359
+ * @param {Float64Array} buffer
360
+ * @param {Float64Array} matrix
361
+ * @returns {Float64Array}
362
+ */
363
+ export function mesh_apply_matrix(vertex_count, buffer, matrix) {
364
+ const ptr0 = passArrayF64ToWasm0(buffer, wasm.__wbindgen_malloc);
365
+ const len0 = WASM_VECTOR_LEN;
366
+ const ptr1 = passArrayF64ToWasm0(matrix, wasm.__wbindgen_malloc);
367
+ const len1 = WASM_VECTOR_LEN;
368
+ const ret = wasm.mesh_apply_matrix(vertex_count, ptr0, len0, ptr1, len1);
369
+ var v3 = getArrayF64FromWasm0(ret[0], ret[1]).slice();
370
+ wasm.__wbindgen_free(ret[0], ret[1] * 8, 8);
371
+ return v3;
372
+ }
373
+
374
+ /**
375
+ * Perform boolean intersection on two meshes
376
+ * @param {number} vertex_count_a
377
+ * @param {Float64Array} buffer_a
378
+ * @param {number} vertex_count_b
379
+ * @param {Float64Array} buffer_b
380
+ * @returns {Float64Array}
381
+ */
382
+ export function mesh_boolean_intersection(vertex_count_a, buffer_a, vertex_count_b, buffer_b) {
383
+ const ptr0 = passArrayF64ToWasm0(buffer_a, wasm.__wbindgen_malloc);
384
+ const len0 = WASM_VECTOR_LEN;
385
+ const ptr1 = passArrayF64ToWasm0(buffer_b, wasm.__wbindgen_malloc);
386
+ const len1 = WASM_VECTOR_LEN;
387
+ const ret = wasm.mesh_boolean_intersection(vertex_count_a, ptr0, len0, vertex_count_b, ptr1, len1);
388
+ var v3 = getArrayF64FromWasm0(ret[0], ret[1]).slice();
389
+ wasm.__wbindgen_free(ret[0], ret[1] * 8, 8);
390
+ return v3;
391
+ }
392
+
393
+ /**
394
+ * Perform boolean operation on two meshes
395
+ *
396
+ * # Parameters
397
+ * * `vertex_count_a` - Number of vertices in mesh A
398
+ * * `buffer_a` - Buffer for mesh A [vertices..., indices...]
399
+ * * `vertex_count_b` - Number of vertices in mesh B
400
+ * * `buffer_b` - Buffer for mesh B [vertices..., indices...]
401
+ * * `operation` - Operation type: "union", "intersection", or "subtraction"
402
+ *
403
+ * # Returns
404
+ * Result mesh buffer [vertices..., indices...]
405
+ * @param {number} vertex_count_a
406
+ * @param {Float64Array} buffer_a
407
+ * @param {number} vertex_count_b
408
+ * @param {Float64Array} buffer_b
409
+ * @param {string} operation
410
+ * @returns {Float64Array}
411
+ */
412
+ export function mesh_boolean_operation(vertex_count_a, buffer_a, vertex_count_b, buffer_b, operation) {
413
+ const ptr0 = passArrayF64ToWasm0(buffer_a, wasm.__wbindgen_malloc);
414
+ const len0 = WASM_VECTOR_LEN;
415
+ const ptr1 = passArrayF64ToWasm0(buffer_b, wasm.__wbindgen_malloc);
416
+ const len1 = WASM_VECTOR_LEN;
417
+ const ptr2 = passStringToWasm0(operation, wasm.__wbindgen_malloc, wasm.__wbindgen_realloc);
418
+ const len2 = WASM_VECTOR_LEN;
419
+ const ret = wasm.mesh_boolean_operation(vertex_count_a, ptr0, len0, vertex_count_b, ptr1, len1, ptr2, len2);
420
+ var v4 = getArrayF64FromWasm0(ret[0], ret[1]).slice();
421
+ wasm.__wbindgen_free(ret[0], ret[1] * 8, 8);
422
+ return v4;
423
+ }
424
+
425
+ /**
426
+ * Perform boolean subtraction on two meshes (A - B)
427
+ * @param {number} vertex_count_a
428
+ * @param {Float64Array} buffer_a
429
+ * @param {number} vertex_count_b
430
+ * @param {Float64Array} buffer_b
431
+ * @returns {Float64Array}
432
+ */
433
+ export function mesh_boolean_subtraction(vertex_count_a, buffer_a, vertex_count_b, buffer_b) {
434
+ const ptr0 = passArrayF64ToWasm0(buffer_a, wasm.__wbindgen_malloc);
435
+ const len0 = WASM_VECTOR_LEN;
436
+ const ptr1 = passArrayF64ToWasm0(buffer_b, wasm.__wbindgen_malloc);
437
+ const len1 = WASM_VECTOR_LEN;
438
+ const ret = wasm.mesh_boolean_subtraction(vertex_count_a, ptr0, len0, vertex_count_b, ptr1, len1);
439
+ var v3 = getArrayF64FromWasm0(ret[0], ret[1]).slice();
440
+ wasm.__wbindgen_free(ret[0], ret[1] * 8, 8);
441
+ return v3;
442
+ }
443
+
444
+ /**
445
+ * Perform boolean union on two meshes
446
+ * @param {number} vertex_count_a
447
+ * @param {Float64Array} buffer_a
448
+ * @param {number} vertex_count_b
449
+ * @param {Float64Array} buffer_b
450
+ * @returns {Float64Array}
451
+ */
452
+ export function mesh_boolean_union(vertex_count_a, buffer_a, vertex_count_b, buffer_b) {
453
+ const ptr0 = passArrayF64ToWasm0(buffer_a, wasm.__wbindgen_malloc);
454
+ const len0 = WASM_VECTOR_LEN;
455
+ const ptr1 = passArrayF64ToWasm0(buffer_b, wasm.__wbindgen_malloc);
456
+ const len1 = WASM_VECTOR_LEN;
457
+ const ret = wasm.mesh_boolean_union(vertex_count_a, ptr0, len0, vertex_count_b, ptr1, len1);
458
+ var v3 = getArrayF64FromWasm0(ret[0], ret[1]).slice();
459
+ wasm.__wbindgen_free(ret[0], ret[1] * 8, 8);
460
+ return v3;
461
+ }
462
+
463
+ /**
464
+ * Extract boundary (perimeter) edges from a mesh as polylines.
465
+ * Returns polyline buffer: [num_polylines, n1, x,y,z,..., n2, x,y,z,...]
466
+ * @param {number} vertex_count
467
+ * @param {Float64Array} buffer
468
+ * @returns {Float64Array}
469
+ */
470
+ export function mesh_boundary_polylines(vertex_count, buffer) {
471
+ const ptr0 = passArrayF64ToWasm0(buffer, wasm.__wbindgen_malloc);
472
+ const len0 = WASM_VECTOR_LEN;
473
+ const ret = wasm.mesh_boundary_polylines(vertex_count, ptr0, len0);
474
+ var v2 = getArrayF64FromWasm0(ret[0], ret[1]).slice();
475
+ wasm.__wbindgen_free(ret[0], ret[1] * 8, 8);
476
+ return v2;
477
+ }
478
+
479
+ /**
480
+ * Chamfer all edges of a primitive mesh (flat bevel)
481
+ *
482
+ * # Arguments
483
+ * * `mesh_type` - "box", "cylinder", or "prism"
484
+ * * `params` - Parameters: [width,height,depth] for box, [radius,height,segments] for cylinder/prism
485
+ * * `offset` - Chamfer offset distance
486
+ *
487
+ * # Returns
488
+ * Result mesh buffer [vertexCount, vertices..., indices...]
489
+ * @param {string} mesh_type
490
+ * @param {Float64Array} params
491
+ * @param {number} offset
492
+ * @returns {Float64Array}
493
+ */
494
+ export function mesh_chamfer_all_edges(mesh_type, params, offset) {
495
+ const ptr0 = passStringToWasm0(mesh_type, wasm.__wbindgen_malloc, wasm.__wbindgen_realloc);
496
+ const len0 = WASM_VECTOR_LEN;
497
+ const ptr1 = passArrayF64ToWasm0(params, wasm.__wbindgen_malloc);
498
+ const len1 = WASM_VECTOR_LEN;
499
+ const ret = wasm.mesh_chamfer_all_edges(ptr0, len0, ptr1, len1, offset);
500
+ var v3 = getArrayF64FromWasm0(ret[0], ret[1]).slice();
501
+ wasm.__wbindgen_free(ret[0], ret[1] * 8, 8);
502
+ return v3;
503
+ }
504
+
505
+ /**
506
+ * Create a box mesh and return buffers
507
+ * Returns [vertices..., indices...]
508
+ * @param {number} width
509
+ * @param {number} height
510
+ * @param {number} depth
511
+ * @returns {Float64Array}
512
+ */
513
+ export function mesh_create_box(width, height, depth) {
514
+ const ret = wasm.mesh_create_box(width, height, depth);
515
+ var v1 = getArrayF64FromWasm0(ret[0], ret[1]).slice();
516
+ wasm.__wbindgen_free(ret[0], ret[1] * 8, 8);
517
+ return v1;
518
+ }
519
+
520
+ /**
521
+ * Create a cone mesh and return buffers
522
+ * @param {number} radius
523
+ * @param {number} height
524
+ * @param {number} segments
525
+ * @returns {Float64Array}
526
+ */
527
+ export function mesh_create_cone(radius, height, segments) {
528
+ const ret = wasm.mesh_create_cone(radius, height, segments);
529
+ var v1 = getArrayF64FromWasm0(ret[0], ret[1]).slice();
530
+ wasm.__wbindgen_free(ret[0], ret[1] * 8, 8);
531
+ return v1;
532
+ }
533
+
534
+ /**
535
+ * Create a cylinder mesh and return buffers
536
+ * @param {number} radius
537
+ * @param {number} height
538
+ * @param {number} segments
539
+ * @returns {Float64Array}
540
+ */
541
+ export function mesh_create_cylinder(radius, height, segments) {
542
+ const ret = wasm.mesh_create_cylinder(radius, height, segments);
543
+ var v1 = getArrayF64FromWasm0(ret[0], ret[1]).slice();
544
+ wasm.__wbindgen_free(ret[0], ret[1] * 8, 8);
545
+ return v1;
546
+ }
547
+
548
+ /**
549
+ * Create a prism mesh and return buffers
550
+ * @param {number} radius
551
+ * @param {number} height
552
+ * @param {number} sides
553
+ * @returns {Float64Array}
554
+ */
555
+ export function mesh_create_prism(radius, height, sides) {
556
+ const ret = wasm.mesh_create_prism(radius, height, sides);
557
+ var v1 = getArrayF64FromWasm0(ret[0], ret[1]).slice();
558
+ wasm.__wbindgen_free(ret[0], ret[1] * 8, 8);
559
+ return v1;
560
+ }
561
+
562
+ /**
563
+ * Create a sphere mesh and return buffers
564
+ * @param {number} radius
565
+ * @param {number} segments
566
+ * @param {number} rings
567
+ * @returns {Float64Array}
568
+ */
569
+ export function mesh_create_sphere(radius, segments, rings) {
570
+ const ret = wasm.mesh_create_sphere(radius, segments, rings);
571
+ var v1 = getArrayF64FromWasm0(ret[0], ret[1]).slice();
572
+ wasm.__wbindgen_free(ret[0], ret[1] * 8, 8);
573
+ return v1;
574
+ }
575
+
576
+ /**
577
+ * Export a mesh to OBJ format
578
+ * Takes mesh buffers as input (same format as mesh_to_buffers output)
579
+ * Returns OBJ string
580
+ * @param {number} vertex_count
581
+ * @param {Float64Array} buffer
582
+ * @returns {string}
583
+ */
584
+ export function mesh_export_obj(vertex_count, buffer) {
585
+ let deferred2_0;
586
+ let deferred2_1;
587
+ try {
588
+ const ptr0 = passArrayF64ToWasm0(buffer, wasm.__wbindgen_malloc);
589
+ const len0 = WASM_VECTOR_LEN;
590
+ const ret = wasm.mesh_export_obj(vertex_count, ptr0, len0);
591
+ deferred2_0 = ret[0];
592
+ deferred2_1 = ret[1];
593
+ return getStringFromWasm0(ret[0], ret[1]);
594
+ } finally {
595
+ wasm.__wbindgen_free(deferred2_0, deferred2_1, 1);
596
+ }
597
+ }
598
+
599
+ /**
600
+ * Get mesh statistics
601
+ * Returns [vertex_count, face_count, edge_count]
602
+ * @param {number} vertex_count
603
+ * @param {Float64Array} buffer
604
+ * @returns {Float64Array}
605
+ */
606
+ export function mesh_get_stats(vertex_count, buffer) {
607
+ const ptr0 = passArrayF64ToWasm0(buffer, wasm.__wbindgen_malloc);
608
+ const len0 = WASM_VECTOR_LEN;
609
+ const ret = wasm.mesh_get_stats(vertex_count, ptr0, len0);
610
+ var v2 = getArrayF64FromWasm0(ret[0], ret[1]).slice();
611
+ wasm.__wbindgen_free(ret[0], ret[1] * 8, 8);
612
+ return v2;
613
+ }
614
+
615
+ /**
616
+ * Import OBJ data and return mesh buffers
617
+ * @param {string} obj_data
618
+ * @returns {Float64Array}
619
+ */
620
+ export function mesh_import_obj(obj_data) {
621
+ const ptr0 = passStringToWasm0(obj_data, wasm.__wbindgen_malloc, wasm.__wbindgen_realloc);
622
+ const len0 = WASM_VECTOR_LEN;
623
+ const ret = wasm.mesh_import_obj(ptr0, len0);
624
+ var v2 = getArrayF64FromWasm0(ret[0], ret[1]).slice();
625
+ wasm.__wbindgen_free(ret[0], ret[1] * 8, 8);
626
+ return v2;
627
+ }
628
+
629
+ /**
630
+ * Intersect two meshes, returning intersection polyline points.
631
+ * Returns: [num_polylines, n1, x,y,z,..., n2, x,y,z,...]
632
+ * @param {number} va_count
633
+ * @param {Float64Array} buffer_a
634
+ * @param {number} vb_count
635
+ * @param {Float64Array} buffer_b
636
+ * @returns {Float64Array}
637
+ */
638
+ export function mesh_mesh_intersect(va_count, buffer_a, vb_count, buffer_b) {
639
+ const ptr0 = passArrayF64ToWasm0(buffer_a, wasm.__wbindgen_malloc);
640
+ const len0 = WASM_VECTOR_LEN;
641
+ const ptr1 = passArrayF64ToWasm0(buffer_b, wasm.__wbindgen_malloc);
642
+ const len1 = WASM_VECTOR_LEN;
643
+ const ret = wasm.mesh_mesh_intersect(va_count, ptr0, len0, vb_count, ptr1, len1);
644
+ var v3 = getArrayF64FromWasm0(ret[0], ret[1]).slice();
645
+ wasm.__wbindgen_free(ret[0], ret[1] * 8, 8);
646
+ return v3;
647
+ }
648
+
649
+ /**
650
+ * Intersect a mesh with a plane, returning polyline points.
651
+ * Input: vertex_count, mesh_buffer..., nx, ny, nz, d
652
+ * Returns: [num_polylines, n1, x,y,z,..., n2, x,y,z,...]
653
+ * @param {number} vertex_count
654
+ * @param {Float64Array} buffer
655
+ * @param {number} nx
656
+ * @param {number} ny
657
+ * @param {number} nz
658
+ * @param {number} d
659
+ * @returns {Float64Array}
660
+ */
661
+ export function mesh_plane_intersect(vertex_count, buffer, nx, ny, nz, d) {
662
+ const ptr0 = passArrayF64ToWasm0(buffer, wasm.__wbindgen_malloc);
663
+ const len0 = WASM_VECTOR_LEN;
664
+ const ret = wasm.mesh_plane_intersect(vertex_count, ptr0, len0, nx, ny, nz, d);
665
+ var v2 = getArrayF64FromWasm0(ret[0], ret[1]).slice();
666
+ wasm.__wbindgen_free(ret[0], ret[1] * 8, 8);
667
+ return v2;
668
+ }
669
+
670
+ /**
671
+ * Rotate a mesh around an arbitrary axis and return new buffers
672
+ * Axis is defined by (ax, ay, az), angle in radians
673
+ * @param {number} vertex_count
674
+ * @param {Float64Array} buffer
675
+ * @param {number} ax
676
+ * @param {number} ay
677
+ * @param {number} az
678
+ * @param {number} angle
679
+ * @returns {Float64Array}
680
+ */
681
+ export function mesh_rotate(vertex_count, buffer, ax, ay, az, angle) {
682
+ const ptr0 = passArrayF64ToWasm0(buffer, wasm.__wbindgen_malloc);
683
+ const len0 = WASM_VECTOR_LEN;
684
+ const ret = wasm.mesh_rotate(vertex_count, ptr0, len0, ax, ay, az, angle);
685
+ var v2 = getArrayF64FromWasm0(ret[0], ret[1]).slice();
686
+ wasm.__wbindgen_free(ret[0], ret[1] * 8, 8);
687
+ return v2;
688
+ }
689
+
690
+ /**
691
+ * Scale a mesh non-uniformly and return new buffers
692
+ * @param {number} vertex_count
693
+ * @param {Float64Array} buffer
694
+ * @param {number} sx
695
+ * @param {number} sy
696
+ * @param {number} sz
697
+ * @returns {Float64Array}
698
+ */
699
+ export function mesh_scale(vertex_count, buffer, sx, sy, sz) {
700
+ const ptr0 = passArrayF64ToWasm0(buffer, wasm.__wbindgen_malloc);
701
+ const len0 = WASM_VECTOR_LEN;
702
+ const ret = wasm.mesh_scale(vertex_count, ptr0, len0, sx, sy, sz);
703
+ var v2 = getArrayF64FromWasm0(ret[0], ret[1]).slice();
704
+ wasm.__wbindgen_free(ret[0], ret[1] * 8, 8);
705
+ return v2;
706
+ }
707
+
708
+ /**
709
+ * Translate a mesh by an offset vector and return new buffers
710
+ * @param {number} vertex_count
711
+ * @param {Float64Array} buffer
712
+ * @param {number} dx
713
+ * @param {number} dy
714
+ * @param {number} dz
715
+ * @returns {Float64Array}
716
+ */
717
+ export function mesh_translate(vertex_count, buffer, dx, dy, dz) {
718
+ const ptr0 = passArrayF64ToWasm0(buffer, wasm.__wbindgen_malloc);
719
+ const len0 = WASM_VECTOR_LEN;
720
+ const ret = wasm.mesh_translate(vertex_count, ptr0, len0, dx, dy, dz);
721
+ var v2 = getArrayF64FromWasm0(ret[0], ret[1]).slice();
722
+ wasm.__wbindgen_free(ret[0], ret[1] * 8, 8);
723
+ return v2;
724
+ }
725
+
726
+ /**
727
+ * Intersect two NURBS curves.
728
+ * Returns: [num_points, x,y,z, ...]
729
+ * @param {Float64Array} data_a
730
+ * @param {Float64Array} data_b
731
+ * @returns {Float64Array}
732
+ */
733
+ export function nurbs_curve_curve_intersect(data_a, data_b) {
734
+ const ptr0 = passArrayF64ToWasm0(data_a, wasm.__wbindgen_malloc);
735
+ const len0 = WASM_VECTOR_LEN;
736
+ const ptr1 = passArrayF64ToWasm0(data_b, wasm.__wbindgen_malloc);
737
+ const len1 = WASM_VECTOR_LEN;
738
+ const ret = wasm.nurbs_curve_curve_intersect(ptr0, len0, ptr1, len1);
739
+ var v3 = getArrayF64FromWasm0(ret[0], ret[1]).slice();
740
+ wasm.__wbindgen_free(ret[0], ret[1] * 8, 8);
741
+ return v3;
742
+ }
743
+
744
+ /**
745
+ * Intersect a NURBS curve with a plane.
746
+ * Input: same curve format as sample_nurbs_curve + plane normal (nx,ny,nz) and d.
747
+ * Returns: [num_points, x,y,z, x,y,z, ...]
748
+ * @param {Float64Array} data
749
+ * @param {number} nx
750
+ * @param {number} ny
751
+ * @param {number} nz
752
+ * @param {number} d
753
+ * @returns {Float64Array}
754
+ */
755
+ export function nurbs_curve_plane_intersect(data, nx, ny, nz, d) {
756
+ const ptr0 = passArrayF64ToWasm0(data, wasm.__wbindgen_malloc);
757
+ const len0 = WASM_VECTOR_LEN;
758
+ const ret = wasm.nurbs_curve_plane_intersect(ptr0, len0, nx, ny, nz, d);
759
+ var v2 = getArrayF64FromWasm0(ret[0], ret[1]).slice();
760
+ wasm.__wbindgen_free(ret[0], ret[1] * 8, 8);
761
+ return v2;
762
+ }
763
+
764
+ /**
765
+ * Evaluate a NURBS surface at (u, v) parameters.
766
+ * Input format: same as tessellate but last 2 values are u, v instead of u_segs, v_segs
767
+ * Returns [x, y, z]
768
+ * @param {Float64Array} data
769
+ * @param {number} u
770
+ * @param {number} v
771
+ * @returns {Float64Array}
772
+ */
773
+ export function nurbs_surface_evaluate(data, u, v) {
774
+ const ptr0 = passArrayF64ToWasm0(data, wasm.__wbindgen_malloc);
775
+ const len0 = WASM_VECTOR_LEN;
776
+ const ret = wasm.nurbs_surface_evaluate(ptr0, len0, u, v);
777
+ var v2 = getArrayF64FromWasm0(ret[0], ret[1]).slice();
778
+ wasm.__wbindgen_free(ret[0], ret[1] * 8, 8);
779
+ return v2;
780
+ }
781
+
782
+ /**
783
+ * Intersect a NURBS surface with a plane.
784
+ * Input: same surface format as tessellate_nurbs_surface, then plane (nx,ny,nz,d) appended.
785
+ * Returns polyline buffer: [num_polylines, n1, x,y,z,..., n2, x,y,z,...]
786
+ * @param {Float64Array} surface_data
787
+ * @param {number} nx
788
+ * @param {number} ny
789
+ * @param {number} nz
790
+ * @param {number} d
791
+ * @param {number} tess
792
+ * @returns {Float64Array}
793
+ */
794
+ export function nurbs_surface_plane_intersect(surface_data, nx, ny, nz, d, tess) {
795
+ const ptr0 = passArrayF64ToWasm0(surface_data, wasm.__wbindgen_malloc);
796
+ const len0 = WASM_VECTOR_LEN;
797
+ const ret = wasm.nurbs_surface_plane_intersect(ptr0, len0, nx, ny, nz, d, tess);
798
+ var v2 = getArrayF64FromWasm0(ret[0], ret[1]).slice();
799
+ wasm.__wbindgen_free(ret[0], ret[1] * 8, 8);
800
+ return v2;
801
+ }
802
+
803
+ /**
804
+ * Intersect two NURBS surfaces.
805
+ * Returns polyline buffer.
806
+ * @param {Float64Array} data_a
807
+ * @param {Float64Array} data_b
808
+ * @param {number} tess
809
+ * @returns {Float64Array}
810
+ */
811
+ export function nurbs_surface_surface_intersect(data_a, data_b, tess) {
812
+ const ptr0 = passArrayF64ToWasm0(data_a, wasm.__wbindgen_malloc);
813
+ const len0 = WASM_VECTOR_LEN;
814
+ const ptr1 = passArrayF64ToWasm0(data_b, wasm.__wbindgen_malloc);
815
+ const len1 = WASM_VECTOR_LEN;
816
+ const ret = wasm.nurbs_surface_surface_intersect(ptr0, len0, ptr1, len1, tess);
817
+ var v3 = getArrayF64FromWasm0(ret[0], ret[1]).slice();
818
+ wasm.__wbindgen_free(ret[0], ret[1] * 8, 8);
819
+ return v3;
820
+ }
821
+
822
+ /**
823
+ * Offset a polyline by a distance in a given plane.
824
+ * If nx=ny=nz=0, the plane normal is auto-detected.
825
+ * Returns flat [x1,y1,z1, x2,y2,z2, ...] of the offset polyline.
826
+ * @param {Float64Array} coords
827
+ * @param {number} distance
828
+ * @param {number} nx
829
+ * @param {number} ny
830
+ * @param {number} nz
831
+ * @returns {Float64Array}
832
+ */
833
+ export function offset_polyline_curve(coords, distance, nx, ny, nz) {
834
+ const ptr0 = passArrayF64ToWasm0(coords, wasm.__wbindgen_malloc);
835
+ const len0 = WASM_VECTOR_LEN;
836
+ const ret = wasm.offset_polyline_curve(ptr0, len0, distance, nx, ny, nz);
837
+ var v2 = getArrayF64FromWasm0(ret[0], ret[1]).slice();
838
+ wasm.__wbindgen_free(ret[0], ret[1] * 8, 8);
839
+ return v2;
840
+ }
841
+
842
+ /**
843
+ * Convert a polycurve (Line/Arc segments) to an exact NURBS curve.
844
+ * Input format: [segment_count, type1, ...data1..., type2, ...data2..., ...]
845
+ * type 0 = Line (6 floats: start_xyz, end_xyz)
846
+ * type 1 = Arc (9 floats: center_xyz, normal_xyz, radius, start_angle, end_angle)
847
+ * Output format: [degree, num_cp, cp_x1,y1,z1,..., w1,w2,..., k1,k2,...]
848
+ * @param {Float64Array} segment_data
849
+ * @returns {Float64Array}
850
+ */
851
+ export function polycurve_to_nurbs(segment_data) {
852
+ const ptr0 = passArrayF64ToWasm0(segment_data, wasm.__wbindgen_malloc);
853
+ const len0 = WASM_VECTOR_LEN;
854
+ const ret = wasm.polycurve_to_nurbs(ptr0, len0);
855
+ var v2 = getArrayF64FromWasm0(ret[0], ret[1]).slice();
856
+ wasm.__wbindgen_free(ret[0], ret[1] * 8, 8);
857
+ return v2;
858
+ }
859
+
860
+ /**
861
+ * Get the total length of a polyline.
862
+ * Input: flat coords [x1,y1,z1, x2,y2,z2, ...]
863
+ * @param {Float64Array} coords
864
+ * @returns {number}
865
+ */
866
+ export function polyline_length(coords) {
867
+ const ptr0 = passArrayF64ToWasm0(coords, wasm.__wbindgen_malloc);
868
+ const len0 = WASM_VECTOR_LEN;
869
+ const ret = wasm.polyline_length(ptr0, len0);
870
+ return ret;
871
+ }
872
+
873
+ /**
874
+ * Evaluate a point on a polyline at parameter t ∈ [0,1].
875
+ * Input: flat coords [x1,y1,z1, x2,y2,z2, ...]
876
+ * Returns [x, y, z].
877
+ * @param {Float64Array} coords
878
+ * @param {number} t
879
+ * @returns {Float64Array}
880
+ */
881
+ export function polyline_point_at(coords, t) {
882
+ const ptr0 = passArrayF64ToWasm0(coords, wasm.__wbindgen_malloc);
883
+ const len0 = WASM_VECTOR_LEN;
884
+ const ret = wasm.polyline_point_at(ptr0, len0, t);
885
+ var v2 = getArrayF64FromWasm0(ret[0], ret[1]).slice();
886
+ wasm.__wbindgen_free(ret[0], ret[1] * 8, 8);
887
+ return v2;
888
+ }
889
+
890
+ /**
891
+ * Sample a NURBS curve.
892
+ * Input: degree, then flat control points [x,y,z,...], then flat weights, then flat knots
893
+ * Format: [degree, num_pts, x0,y0,z0, ..., w0,w1,..., k0,k1,...]
894
+ * @param {Float64Array} data
895
+ * @param {number} samples
896
+ * @returns {Float64Array}
897
+ */
898
+ export function sample_nurbs_curve(data, samples) {
899
+ const ptr0 = passArrayF64ToWasm0(data, wasm.__wbindgen_malloc);
900
+ const len0 = WASM_VECTOR_LEN;
901
+ const ret = wasm.sample_nurbs_curve(ptr0, len0, samples);
902
+ var v2 = getArrayF64FromWasm0(ret[0], ret[1]).slice();
903
+ wasm.__wbindgen_free(ret[0], ret[1] * 8, 8);
904
+ return v2;
905
+ }
906
+
907
+ /**
908
+ * Sweep a profile polyline along a path polyline.
909
+ * profile_coords: flat [x,y,z,...] for profile curve
910
+ * path_coords: flat [x,y,z,...] for path curve
911
+ * with_caps: whether to close the ends
912
+ * Returns mesh buffers.
913
+ * @param {Float64Array} profile_coords
914
+ * @param {Float64Array} path_coords
915
+ * @param {boolean} with_caps
916
+ * @returns {Float64Array}
917
+ */
918
+ export function sweep_polylines(profile_coords, path_coords, with_caps) {
919
+ const ptr0 = passArrayF64ToWasm0(profile_coords, wasm.__wbindgen_malloc);
920
+ const len0 = WASM_VECTOR_LEN;
921
+ const ptr1 = passArrayF64ToWasm0(path_coords, wasm.__wbindgen_malloc);
922
+ const len1 = WASM_VECTOR_LEN;
923
+ const ret = wasm.sweep_polylines(ptr0, len0, ptr1, len1, with_caps);
924
+ var v3 = getArrayF64FromWasm0(ret[0], ret[1]).slice();
925
+ wasm.__wbindgen_free(ret[0], ret[1] * 8, 8);
926
+ return v3;
927
+ }
928
+
929
+ /**
930
+ * Tessellate a NURBS surface to a mesh buffer.
931
+ * Input format: [degree_u, degree_v, num_u, num_v, ...control_points(flat)..., ...weights(flat)..., ...knots_u..., ...knots_v..., u_segs, v_segs]
932
+ * @param {Float64Array} data
933
+ * @returns {Float64Array}
934
+ */
935
+ export function tessellate_nurbs_surface(data) {
936
+ const ptr0 = passArrayF64ToWasm0(data, wasm.__wbindgen_malloc);
937
+ const len0 = WASM_VECTOR_LEN;
938
+ const ret = wasm.tessellate_nurbs_surface(ptr0, len0);
939
+ var v2 = getArrayF64FromWasm0(ret[0], ret[1]).slice();
940
+ wasm.__wbindgen_free(ret[0], ret[1] * 8, 8);
941
+ return v2;
942
+ }
943
+
944
+ /**
945
+ * Simple test function to verify WASM is working
946
+ * @returns {string}
947
+ */
948
+ export function test_wasm() {
949
+ let deferred1_0;
950
+ let deferred1_1;
951
+ try {
952
+ const ret = wasm.test_wasm();
953
+ deferred1_0 = ret[0];
954
+ deferred1_1 = ret[1];
955
+ return getStringFromWasm0(ret[0], ret[1]);
956
+ } finally {
957
+ wasm.__wbindgen_free(deferred1_0, deferred1_1, 1);
958
+ }
959
+ }
960
+
961
+ /**
962
+ * Get version info
963
+ * @returns {string}
964
+ */
965
+ export function version() {
966
+ let deferred1_0;
967
+ let deferred1_1;
968
+ try {
969
+ const ret = wasm.version();
970
+ deferred1_0 = ret[0];
971
+ deferred1_1 = ret[1];
972
+ return getStringFromWasm0(ret[0], ret[1]);
973
+ } finally {
974
+ wasm.__wbindgen_free(deferred1_0, deferred1_1, 1);
975
+ }
976
+ }
977
+ export function __wbindgen_init_externref_table() {
978
+ const table = wasm.__wbindgen_externrefs;
979
+ const offset = table.grow(4);
980
+ table.set(0, undefined);
981
+ table.set(offset + 0, undefined);
982
+ table.set(offset + 1, null);
983
+ table.set(offset + 2, true);
984
+ table.set(offset + 3, false);
985
+ }
986
+ function getArrayF64FromWasm0(ptr, len) {
987
+ ptr = ptr >>> 0;
988
+ return getFloat64ArrayMemory0().subarray(ptr / 8, ptr / 8 + len);
989
+ }
990
+
991
+ let cachedFloat64ArrayMemory0 = null;
992
+ function getFloat64ArrayMemory0() {
993
+ if (cachedFloat64ArrayMemory0 === null || cachedFloat64ArrayMemory0.byteLength === 0) {
994
+ cachedFloat64ArrayMemory0 = new Float64Array(wasm.memory.buffer);
995
+ }
996
+ return cachedFloat64ArrayMemory0;
997
+ }
998
+
999
+ function getStringFromWasm0(ptr, len) {
1000
+ ptr = ptr >>> 0;
1001
+ return decodeText(ptr, len);
1002
+ }
1003
+
1004
+ let cachedUint8ArrayMemory0 = null;
1005
+ function getUint8ArrayMemory0() {
1006
+ if (cachedUint8ArrayMemory0 === null || cachedUint8ArrayMemory0.byteLength === 0) {
1007
+ cachedUint8ArrayMemory0 = new Uint8Array(wasm.memory.buffer);
1008
+ }
1009
+ return cachedUint8ArrayMemory0;
1010
+ }
1011
+
1012
+ function passArrayF64ToWasm0(arg, malloc) {
1013
+ const ptr = malloc(arg.length * 8, 8) >>> 0;
1014
+ getFloat64ArrayMemory0().set(arg, ptr / 8);
1015
+ WASM_VECTOR_LEN = arg.length;
1016
+ return ptr;
1017
+ }
1018
+
1019
+ function passStringToWasm0(arg, malloc, realloc) {
1020
+ if (realloc === undefined) {
1021
+ const buf = cachedTextEncoder.encode(arg);
1022
+ const ptr = malloc(buf.length, 1) >>> 0;
1023
+ getUint8ArrayMemory0().subarray(ptr, ptr + buf.length).set(buf);
1024
+ WASM_VECTOR_LEN = buf.length;
1025
+ return ptr;
1026
+ }
1027
+
1028
+ let len = arg.length;
1029
+ let ptr = malloc(len, 1) >>> 0;
1030
+
1031
+ const mem = getUint8ArrayMemory0();
1032
+
1033
+ let offset = 0;
1034
+
1035
+ for (; offset < len; offset++) {
1036
+ const code = arg.charCodeAt(offset);
1037
+ if (code > 0x7F) break;
1038
+ mem[ptr + offset] = code;
1039
+ }
1040
+ if (offset !== len) {
1041
+ if (offset !== 0) {
1042
+ arg = arg.slice(offset);
1043
+ }
1044
+ ptr = realloc(ptr, len, len = offset + arg.length * 3, 1) >>> 0;
1045
+ const view = getUint8ArrayMemory0().subarray(ptr + offset, ptr + len);
1046
+ const ret = cachedTextEncoder.encodeInto(arg, view);
1047
+
1048
+ offset += ret.written;
1049
+ ptr = realloc(ptr, len, offset, 1) >>> 0;
1050
+ }
1051
+
1052
+ WASM_VECTOR_LEN = offset;
1053
+ return ptr;
1054
+ }
1055
+
1056
+ let cachedTextDecoder = new TextDecoder('utf-8', { ignoreBOM: true, fatal: true });
1057
+ cachedTextDecoder.decode();
1058
+ const MAX_SAFARI_DECODE_BYTES = 2146435072;
1059
+ let numBytesDecoded = 0;
1060
+ function decodeText(ptr, len) {
1061
+ numBytesDecoded += len;
1062
+ if (numBytesDecoded >= MAX_SAFARI_DECODE_BYTES) {
1063
+ cachedTextDecoder = new TextDecoder('utf-8', { ignoreBOM: true, fatal: true });
1064
+ cachedTextDecoder.decode();
1065
+ numBytesDecoded = len;
1066
+ }
1067
+ return cachedTextDecoder.decode(getUint8ArrayMemory0().subarray(ptr, ptr + len));
1068
+ }
1069
+
1070
+ const cachedTextEncoder = new TextEncoder();
1071
+
1072
+ if (!('encodeInto' in cachedTextEncoder)) {
1073
+ cachedTextEncoder.encodeInto = function (arg, view) {
1074
+ const buf = cachedTextEncoder.encode(arg);
1075
+ view.set(buf);
1076
+ return {
1077
+ read: arg.length,
1078
+ written: buf.length
1079
+ };
1080
+ };
1081
+ }
1082
+
1083
+ let WASM_VECTOR_LEN = 0;
1084
+
1085
+
1086
+ let wasm;
1087
+ export function __wbg_set_wasm(val) {
1088
+ wasm = val;
1089
+ }