okgeometry-api 1.14.0 → 1.16.0

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.
@@ -61,6 +61,31 @@ export function brep_boolean_op(a_json, b_json, op, tolerance) {
61
61
  wasm.__wbindgen_free(deferred4_0, deferred4_1, 1);
62
62
  }
63
63
  }
64
+ /**
65
+ * Boolean-intersection clip of an exact NURBS curve against a CLOSED solid
66
+ * BREP: the curve is split exactly (knot insertion) at every boundary
67
+ * crossing and each piece is classified by containment. Every returned
68
+ * piece lies exactly on the input curve; closed curves merge the run
69
+ * spanning the parameter seam (same convention as `mesh_clip_polyline`).
70
+ *
71
+ * Packing: `[insideCount, (bufLen, curveData…)·insideCount,
72
+ * outsideCount, (bufLen, curveData…)·outsideCount]` — two concatenated
73
+ * multi-curve packings, inside pieces first. Returns an empty buffer on
74
+ * failure (malformed input, or a BREP that is not a closed solid).
75
+ * @param {Float64Array} curve_data
76
+ * @param {string} brep_json
77
+ * @returns {Float64Array}
78
+ */
79
+ export function brep_clip_curve_op(curve_data, brep_json) {
80
+ const ptr0 = passArrayF64ToWasm0(curve_data, wasm.__wbindgen_malloc);
81
+ const len0 = WASM_VECTOR_LEN;
82
+ const ptr1 = passStringToWasm0(brep_json, wasm.__wbindgen_malloc, wasm.__wbindgen_realloc);
83
+ const len1 = WASM_VECTOR_LEN;
84
+ const ret = wasm.brep_clip_curve_op(ptr0, len0, ptr1, len1);
85
+ var v3 = getArrayF64FromWasm0(ret[0], ret[1]).slice();
86
+ wasm.__wbindgen_free(ret[0], ret[1] * 8, 8);
87
+ return v3;
88
+ }
64
89
  /**
65
90
  * Closest BREP face to a 3D point. Returns [faceIndex, u, v, distance,
66
91
  * isNurbs] ((u, v) in the surface's KNOT domain) or empty on failure.
@@ -78,6 +103,33 @@ export function brep_closest_face(json, x, y, z) {
78
103
  wasm.__wbindgen_free(ret[0], ret[1] * 8, 8);
79
104
  return v2;
80
105
  }
106
+ /**
107
+ * Find all points where a NURBS curve pierces a BREP's faces: per face, the
108
+ * curve is intersected with the EXACT surface and kept only when the hit
109
+ * lies INSIDE the face's trimmed region; crossings on shared edges are
110
+ * deduplicated (smallest face index kept).
111
+ *
112
+ * `curve_data` is the standard NURBS curve encoding. Hits are sorted by
113
+ * curve parameter (normalized [0, 1]); (u, v) are in the face's OWN
114
+ * parameter space (knot domain for NURBS faces, plane-frame coordinates for
115
+ * planar faces).
116
+ *
117
+ * Packing: `[count, (x, y, z, curveParam, faceIndex, u, v)·count]`.
118
+ * Returns an empty buffer on malformed input.
119
+ * @param {string} brep_json
120
+ * @param {Float64Array} curve_data
121
+ * @returns {Float64Array}
122
+ */
123
+ export function brep_curve_intersection_op(brep_json, curve_data) {
124
+ const ptr0 = passStringToWasm0(brep_json, wasm.__wbindgen_malloc, wasm.__wbindgen_realloc);
125
+ const len0 = WASM_VECTOR_LEN;
126
+ const ptr1 = passArrayF64ToWasm0(curve_data, wasm.__wbindgen_malloc);
127
+ const len1 = WASM_VECTOR_LEN;
128
+ const ret = wasm.brep_curve_intersection_op(ptr0, len0, ptr1, len1);
129
+ var v3 = getArrayF64FromWasm0(ret[0], ret[1]).slice();
130
+ wasm.__wbindgen_free(ret[0], ret[1] * 8, 8);
131
+ return v3;
132
+ }
81
133
  /**
82
134
  * All BREP edges as polylines: [num_polylines, n1, x,y,z..., n2, ...].
83
135
  * @param {string} json
@@ -350,6 +402,64 @@ export function brep_info(json) {
350
402
  wasm.__wbindgen_free(ret[0], ret[1] * 8, 8);
351
403
  return v2;
352
404
  }
405
+ /**
406
+ * [`brep_intersection_curves_op`] with the per-face-pair pieces JOINED into
407
+ * maximal curves: greedy reversal-aware endpoint chaining, exact degree
408
+ * elevation to the chain maximum, exact `join_arcs` knot concatenation
409
+ * (junction multiplicity = degree, no re-parameterization), and a per-curve
410
+ * verification gate (dense samples within 5·tolerance of BOTH operands'
411
+ * surfaces — a chain failing the gate comes back unjoined, never corrupted).
412
+ * A closed intersection loop (e.g. plane through a cylinder) comes back as
413
+ * ONE closed curve.
414
+ *
415
+ * Packing: `[curveCount, (bufLen, curveData…)·curveCount]` (standard NURBS
416
+ * curve encoding). Returns an EMPTY buffer on failure (invalid BREP JSON or
417
+ * a pipeline error) — distinguishable from `[0]`, which means the operands
418
+ * genuinely do not intersect.
419
+ * @param {string} a_json
420
+ * @param {string} b_json
421
+ * @param {number} tolerance
422
+ * @returns {Float64Array}
423
+ */
424
+ export function brep_intersection_curves_joined_op(a_json, b_json, tolerance) {
425
+ const ptr0 = passStringToWasm0(a_json, wasm.__wbindgen_malloc, wasm.__wbindgen_realloc);
426
+ const len0 = WASM_VECTOR_LEN;
427
+ const ptr1 = passStringToWasm0(b_json, wasm.__wbindgen_malloc, wasm.__wbindgen_realloc);
428
+ const len1 = WASM_VECTOR_LEN;
429
+ const ret = wasm.brep_intersection_curves_joined_op(ptr0, len0, ptr1, len1, tolerance);
430
+ var v3 = getArrayF64FromWasm0(ret[0], ret[1]).slice();
431
+ wasm.__wbindgen_free(ret[0], ret[1] * 8, 8);
432
+ return v3;
433
+ }
434
+ /**
435
+ * TRIM-EXACT intersection curves between two BREPs (solids OR sheets): the
436
+ * parametric boolean's SSI → clip → convergence stages run and the fitted 3D
437
+ * intersection edges come back WITHOUT classification/assembly.
438
+ *
439
+ * A closed intersection loop may come back as several contiguous pieces
440
+ * (split at surface seams and face-boundary crossings); the pieces chain
441
+ * end-to-end exactly. Coincident (overlapping) face pairs contribute no
442
+ * curves.
443
+ *
444
+ * Packing: `[curveCount, (bufLen, curveData…)·curveCount]` (standard NURBS
445
+ * curve encoding). Returns an EMPTY buffer on failure (invalid BREP JSON or
446
+ * a pipeline error) — distinguishable from `[0]`, which means the operands
447
+ * genuinely do not intersect.
448
+ * @param {string} a_json
449
+ * @param {string} b_json
450
+ * @param {number} tolerance
451
+ * @returns {Float64Array}
452
+ */
453
+ export function brep_intersection_curves_op(a_json, b_json, tolerance) {
454
+ const ptr0 = passStringToWasm0(a_json, wasm.__wbindgen_malloc, wasm.__wbindgen_realloc);
455
+ const len0 = WASM_VECTOR_LEN;
456
+ const ptr1 = passStringToWasm0(b_json, wasm.__wbindgen_malloc, wasm.__wbindgen_realloc);
457
+ const len1 = WASM_VECTOR_LEN;
458
+ const ret = wasm.brep_intersection_curves_op(ptr0, len0, ptr1, len1, tolerance);
459
+ var v3 = getArrayF64FromWasm0(ret[0], ret[1]).slice();
460
+ wasm.__wbindgen_free(ret[0], ret[1] * 8, 8);
461
+ return v3;
462
+ }
353
463
  /**
354
464
  * Loft through profile curves into a BREP.
355
465
  * Input: [num_curves, curve1_data..., curve2_data...]. Returns JSON.
@@ -371,6 +481,32 @@ export function brep_loft_curves(data) {
371
481
  wasm.__wbindgen_free(deferred2_0, deferred2_1, 1);
372
482
  }
373
483
  }
484
+ /**
485
+ * Intersection curves between a BREP and a triangle mesh.
486
+ *
487
+ * TESSELLATION-BASED (documented approximation): the BREP is tessellated at
488
+ * `tolerance` (pass `<= 0` for the deterministic auto display tolerance)
489
+ * and intersected with the mesh via BVH-pruned tri-tri crossing + chaining.
490
+ *
491
+ * Mesh input is the standard `[vertexCount, positions..., indices...]`
492
+ * buffer. Returns the standard polyline group packing
493
+ * `[num_polylines, n1, x,y,z,..., n2, x,y,z,...]`; empty on failure.
494
+ * @param {string} brep_json
495
+ * @param {number} vertex_count
496
+ * @param {Float64Array} mesh_buffer
497
+ * @param {number} tolerance
498
+ * @returns {Float64Array}
499
+ */
500
+ export function brep_mesh_intersection_curves_op(brep_json, vertex_count, mesh_buffer, tolerance) {
501
+ const ptr0 = passStringToWasm0(brep_json, wasm.__wbindgen_malloc, wasm.__wbindgen_realloc);
502
+ const len0 = WASM_VECTOR_LEN;
503
+ const ptr1 = passArrayF64ToWasm0(mesh_buffer, wasm.__wbindgen_malloc);
504
+ const len1 = WASM_VECTOR_LEN;
505
+ const ret = wasm.brep_mesh_intersection_curves_op(ptr0, len0, vertex_count, ptr1, len1, tolerance);
506
+ var v3 = getArrayF64FromWasm0(ret[0], ret[1]).slice();
507
+ wasm.__wbindgen_free(ret[0], ret[1] * 8, 8);
508
+ return v3;
509
+ }
374
510
  /**
375
511
  * BREP primitives.
376
512
  * kind: "box" [minx,miny,minz, maxx,maxy,maxz]
@@ -1752,6 +1888,35 @@ export function mesh_clip_polyline(vertex_count, buffer, points, closed) {
1752
1888
  wasm.__wbindgen_free(ret[0], ret[1] * 8, 8);
1753
1889
  return v3;
1754
1890
  }
1891
+ /**
1892
+ * Clip a polyline by an OPEN oriented sheet: split it at every sheet
1893
+ * crossing and classify each piece by the SIGNED SIDE of the sheet. This is
1894
+ * side classification, NOT containment (unlike `mesh_clip_polyline`, which
1895
+ * requires a closed volume): pieces far from the sheet still classify by
1896
+ * the nearest facet's normal. `inside` = the positive side, in FRONT of the
1897
+ * sheet normal; `outside` = behind it. The sheet may be any non-empty
1898
+ * triangle mesh, open or closed; its stored winding defines the normals.
1899
+ *
1900
+ * Returns two concatenated polyline buffers — inside pieces first, then
1901
+ * outside pieces — each encoded as `[num_polylines, n1, x,y,z,..., ...]`
1902
+ * (identical packing to `mesh_clip_polyline`). Returns an empty buffer on
1903
+ * failure (degenerate polyline/sheet).
1904
+ * @param {number} vertex_count
1905
+ * @param {Float64Array} buffer
1906
+ * @param {Float64Array} points
1907
+ * @param {boolean} closed
1908
+ * @returns {Float64Array}
1909
+ */
1910
+ export function mesh_clip_polyline_by_sheet(vertex_count, buffer, points, closed) {
1911
+ const ptr0 = passArrayF64ToWasm0(buffer, wasm.__wbindgen_malloc);
1912
+ const len0 = WASM_VECTOR_LEN;
1913
+ const ptr1 = passArrayF64ToWasm0(points, wasm.__wbindgen_malloc);
1914
+ const len1 = WASM_VECTOR_LEN;
1915
+ const ret = wasm.mesh_clip_polyline_by_sheet(vertex_count, ptr0, len0, ptr1, len1, closed);
1916
+ var v3 = getArrayF64FromWasm0(ret[0], ret[1]).slice();
1917
+ wasm.__wbindgen_free(ret[0], ret[1] * 8, 8);
1918
+ return v3;
1919
+ }
1755
1920
  /**
1756
1921
  * Compute planar curve normal from ordered points.
1757
1922
  * @param {Float64Array} coords
@@ -2385,6 +2550,35 @@ export function mesh_plane_intersect(vertex_count, buffer, nx, ny, nz, d) {
2385
2550
  wasm.__wbindgen_free(ret[0], ret[1] * 8, 8);
2386
2551
  return v2;
2387
2552
  }
2553
+ /**
2554
+ * Compute all transversal crossing points of a polyline with a triangle
2555
+ * mesh. Works on OPEN meshes (sheets) — the mesh is NOT required to be a
2556
+ * closed volume, unlike `mesh_clip_polyline`.
2557
+ *
2558
+ * `points` is a flat [x,y,z, ...] vertex list; `closed` marks a closed loop
2559
+ * (segment `i` runs `points[i] → points[(i+1) % n]`; open polylines have
2560
+ * n−1 segments, closed ones n).
2561
+ *
2562
+ * Packing: `[count, (x, y, z, segmentIndex, segmentT, triangleIndex)·count]`,
2563
+ * sorted by (segmentIndex, segmentT). Shared-edge/vertex crossings dedupe to
2564
+ * one hit (smallest triangle index kept); coplanar sliding overlaps yield no
2565
+ * hits. Returns an empty buffer on failure (degenerate polyline/mesh).
2566
+ * @param {number} vertex_count
2567
+ * @param {Float64Array} buffer
2568
+ * @param {Float64Array} points
2569
+ * @param {boolean} closed
2570
+ * @returns {Float64Array}
2571
+ */
2572
+ export function mesh_polyline_intersection_points(vertex_count, buffer, points, closed) {
2573
+ const ptr0 = passArrayF64ToWasm0(buffer, wasm.__wbindgen_malloc);
2574
+ const len0 = WASM_VECTOR_LEN;
2575
+ const ptr1 = passArrayF64ToWasm0(points, wasm.__wbindgen_malloc);
2576
+ const len1 = WASM_VECTOR_LEN;
2577
+ const ret = wasm.mesh_polyline_intersection_points(vertex_count, ptr0, len0, ptr1, len1, closed);
2578
+ var v3 = getArrayF64FromWasm0(ret[0], ret[1]).slice();
2579
+ wasm.__wbindgen_free(ret[0], ret[1] * 8, 8);
2580
+ return v3;
2581
+ }
2388
2582
  /**
2389
2583
  * Shift closed boolean cutter curve and adjust height.
2390
2584
  * Returns [height, epsilon, pointCount, x,y,z,...]
@@ -2581,6 +2775,33 @@ export function mesh_split_by_surface_to_brep(vertex_count, buffer, surface_data
2581
2775
  wasm.__wbindgen_free(deferred3_0, deferred3_1, 1);
2582
2776
  }
2583
2777
  }
2778
+ /**
2779
+ * Intersect a polyline with a triangle mesh (open sheets allowed) and split
2780
+ * it into pieces at every crossing. Hit points become the shared endpoints
2781
+ * of adjacent pieces; a closed loop is opened at the first hit (N hits → N
2782
+ * pieces), an open polyline yields N + 1 pieces. With no crossings the
2783
+ * original polyline comes back as one piece.
2784
+ *
2785
+ * Packing: a single flat polyline-group buffer
2786
+ * `[num_polylines, n1, x,y,z,..., n2, x,y,z,...]` (same group encoding as
2787
+ * `mesh_clip_polyline`, but ONE list — pieces are not classified). Returns
2788
+ * an empty buffer on failure.
2789
+ * @param {number} vertex_count
2790
+ * @param {Float64Array} buffer
2791
+ * @param {Float64Array} points
2792
+ * @param {boolean} closed
2793
+ * @returns {Float64Array}
2794
+ */
2795
+ export function mesh_split_polyline(vertex_count, buffer, points, closed) {
2796
+ const ptr0 = passArrayF64ToWasm0(buffer, wasm.__wbindgen_malloc);
2797
+ const len0 = WASM_VECTOR_LEN;
2798
+ const ptr1 = passArrayF64ToWasm0(points, wasm.__wbindgen_malloc);
2799
+ const len1 = WASM_VECTOR_LEN;
2800
+ const ret = wasm.mesh_split_polyline(vertex_count, ptr0, len0, ptr1, len1, closed);
2801
+ var v3 = getArrayF64FromWasm0(ret[0], ret[1]).slice();
2802
+ wasm.__wbindgen_free(ret[0], ret[1] * 8, 8);
2803
+ return v3;
2804
+ }
2584
2805
  /**
2585
2806
  * Trim an OPEN host surface by all closed cutter meshes in one WASM call.
2586
2807
  *
@@ -2715,6 +2936,31 @@ export function nurbs_curve_curve_intersect(data_a, data_b) {
2715
2936
  wasm.__wbindgen_free(ret[0], ret[1] * 8, 8);
2716
2937
  return v3;
2717
2938
  }
2939
+ /**
2940
+ * Find all intersections between two NURBS curves, with exact parameters.
2941
+ *
2942
+ * Inputs are standard NURBS curve encodings
2943
+ * `[degree, num_cp, cp_xyz..., weights..., knots...]` (the same format
2944
+ * consumed by `sample_nurbs_curve` / produced by `build_nurbs_curve`).
2945
+ *
2946
+ * Packing: `[count, (x, y, z, paramA, paramB)·count]`. Parameters are
2947
+ * normalized to [0, 1]; results are sorted by `paramA`. Coincident
2948
+ * (overlapping) curve runs yield NO points (identical curves return
2949
+ * `[0]`). Returns an empty buffer on malformed input.
2950
+ * @param {Float64Array} curve_a_data
2951
+ * @param {Float64Array} curve_b_data
2952
+ * @returns {Float64Array}
2953
+ */
2954
+ export function nurbs_curve_curve_intersect_params(curve_a_data, curve_b_data) {
2955
+ const ptr0 = passArrayF64ToWasm0(curve_a_data, wasm.__wbindgen_malloc);
2956
+ const len0 = WASM_VECTOR_LEN;
2957
+ const ptr1 = passArrayF64ToWasm0(curve_b_data, wasm.__wbindgen_malloc);
2958
+ const len1 = WASM_VECTOR_LEN;
2959
+ const ret = wasm.nurbs_curve_curve_intersect_params(ptr0, len0, ptr1, len1);
2960
+ var v3 = getArrayF64FromWasm0(ret[0], ret[1]).slice();
2961
+ wasm.__wbindgen_free(ret[0], ret[1] * 8, 8);
2962
+ return v3;
2963
+ }
2718
2964
  /**
2719
2965
  * Intersect a NURBS curve with a plane.
2720
2966
  * Input: same curve format as sample_nurbs_curve + plane normal (nx,ny,nz) and d.
@@ -2734,6 +2980,66 @@ export function nurbs_curve_plane_intersect(data, nx, ny, nz, d) {
2734
2980
  wasm.__wbindgen_free(ret[0], ret[1] * 8, 8);
2735
2981
  return v2;
2736
2982
  }
2983
+ /**
2984
+ * Split a NURBS curve at multiple normalized parameters t ∈ [0, 1].
2985
+ *
2986
+ * Splitting is exact (knot insertion), so every returned piece lies exactly
2987
+ * on the input curve. Parameters are sorted/deduplicated/clamped internally;
2988
+ * closed curves are opened at the FIRST parameter (N interior parameters →
2989
+ * N pieces), open curves yield N + 1 pieces. With no valid parameters the
2990
+ * (clamped) curve comes back as the single piece.
2991
+ *
2992
+ * `closed_hint` is an explicit topology override: `> 0` forces closed
2993
+ * (seam-rejoin) semantics, `0` forces open semantics (an open curve whose
2994
+ * endpoints merely coincide keeps N + 1 pieces), `< 0` infers closedness
2995
+ * geometrically from the endpoint distance (the historical behavior).
2996
+ *
2997
+ * Packing: `[curveCount, (bufLen, curveData…)·curveCount]` where curveData
2998
+ * is the standard NURBS curve encoding (same multi-curve packing as
2999
+ * `brep_face_iso_curves_trimmed`). Returns an empty buffer on malformed
3000
+ * input.
3001
+ * @param {Float64Array} curve_data
3002
+ * @param {Float64Array} params
3003
+ * @param {number} closed_hint
3004
+ * @returns {Float64Array}
3005
+ */
3006
+ export function nurbs_curve_split_at_params(curve_data, params, closed_hint) {
3007
+ const ptr0 = passArrayF64ToWasm0(curve_data, wasm.__wbindgen_malloc);
3008
+ const len0 = WASM_VECTOR_LEN;
3009
+ const ptr1 = passArrayF64ToWasm0(params, wasm.__wbindgen_malloc);
3010
+ const len1 = WASM_VECTOR_LEN;
3011
+ const ret = wasm.nurbs_curve_split_at_params(ptr0, len0, ptr1, len1, closed_hint);
3012
+ var v3 = getArrayF64FromWasm0(ret[0], ret[1]).slice();
3013
+ wasm.__wbindgen_free(ret[0], ret[1] * 8, 8);
3014
+ return v3;
3015
+ }
3016
+ /**
3017
+ * Find all isolated intersections of a NURBS curve with a NURBS surface,
3018
+ * with exact parameters.
3019
+ *
3020
+ * `curve_data` is the standard NURBS curve encoding; `surface_data` is the
3021
+ * standard NURBS surface encoding `[degree_u, degree_v, num_u, num_v,
3022
+ * cp(flat)..., weights..., knots_u..., knots_v...]` (same as
3023
+ * `nurbs_surface_evaluate`).
3024
+ *
3025
+ * Packing: `[count, (x, y, z, t, u, v)·count]`. All parameters are
3026
+ * normalized to [0, 1]; results are sorted by `t`. Curve segments lying ON
3027
+ * the surface (coincident runs) yield no points. Returns an empty buffer on
3028
+ * malformed input.
3029
+ * @param {Float64Array} curve_data
3030
+ * @param {Float64Array} surface_data
3031
+ * @returns {Float64Array}
3032
+ */
3033
+ export function nurbs_curve_surface_intersect_exact(curve_data, surface_data) {
3034
+ const ptr0 = passArrayF64ToWasm0(curve_data, wasm.__wbindgen_malloc);
3035
+ const len0 = WASM_VECTOR_LEN;
3036
+ const ptr1 = passArrayF64ToWasm0(surface_data, wasm.__wbindgen_malloc);
3037
+ const len1 = WASM_VECTOR_LEN;
3038
+ const ret = wasm.nurbs_curve_surface_intersect_exact(ptr0, len0, ptr1, len1);
3039
+ var v3 = getArrayF64FromWasm0(ret[0], ret[1]).slice();
3040
+ wasm.__wbindgen_free(ret[0], ret[1] * 8, 8);
3041
+ return v3;
3042
+ }
2737
3043
  /**
2738
3044
  * Closest point on the surface to (x, y, z).
2739
3045
  * Returns [u, v, px, py, pz] with u, v normalized to [0,1].
@@ -3006,6 +3312,36 @@ export function nurbs_surface_surface_intersect(data_a, data_b, tess) {
3006
3312
  wasm.__wbindgen_free(ret[0], ret[1] * 8, 8);
3007
3313
  return v3;
3008
3314
  }
3315
+ /**
3316
+ * EXACT intersection curves of two FULL (untrimmed) NURBS surfaces: the
3317
+ * parametric boolean's SSI pipeline (seeded tri-tri, chaining, tangent-plane
3318
+ * relaxation) fitted to tolerance-verified interpolating NURBS curves —
3319
+ * unlike `nurbs_surface_surface_intersect`, which returns tessellated
3320
+ * polylines.
3321
+ *
3322
+ * Inputs are standard NURBS surface encodings; `tolerance` is absolute
3323
+ * (floored relative to the combined model scale kernel-side). Closed loops
3324
+ * come back as ONE closed curve; coincident (overlapping) surfaces yield no
3325
+ * curves (their overlap is a 2D region).
3326
+ *
3327
+ * Packing: `[curveCount, (bufLen, curveData…)·curveCount]` where curveData
3328
+ * is the standard NURBS curve encoding. Returns an empty buffer on
3329
+ * malformed input.
3330
+ * @param {Float64Array} surf_a_data
3331
+ * @param {Float64Array} surf_b_data
3332
+ * @param {number} tolerance
3333
+ * @returns {Float64Array}
3334
+ */
3335
+ export function nurbs_surface_surface_intersect_curves(surf_a_data, surf_b_data, tolerance) {
3336
+ const ptr0 = passArrayF64ToWasm0(surf_a_data, wasm.__wbindgen_malloc);
3337
+ const len0 = WASM_VECTOR_LEN;
3338
+ const ptr1 = passArrayF64ToWasm0(surf_b_data, wasm.__wbindgen_malloc);
3339
+ const len1 = WASM_VECTOR_LEN;
3340
+ const ret = wasm.nurbs_surface_surface_intersect_curves(ptr0, len0, ptr1, len1, tolerance);
3341
+ var v3 = getArrayF64FromWasm0(ret[0], ret[1]).slice();
3342
+ wasm.__wbindgen_free(ret[0], ret[1] * 8, 8);
3343
+ return v3;
3344
+ }
3009
3345
  /**
3010
3346
  * Curvature-adaptive tessellation against a chordal tolerance.
3011
3347
  * Returns the standard mesh buffer [vertexCount, positions..., indices...].