okgeometry-api 1.2.0 → 1.2.1

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 (65) hide show
  1. package/dist/Line.d.ts +10 -1
  2. package/dist/Line.d.ts.map +1 -1
  3. package/dist/Line.js +11 -0
  4. package/dist/Line.js.map +1 -1
  5. package/dist/Mesh.d.ts +82 -9
  6. package/dist/Mesh.d.ts.map +1 -1
  7. package/dist/Mesh.js +329 -26
  8. package/dist/Mesh.js.map +1 -1
  9. package/dist/MeshSurface.d.ts +32 -0
  10. package/dist/MeshSurface.d.ts.map +1 -0
  11. package/dist/MeshSurface.js +51 -0
  12. package/dist/MeshSurface.js.map +1 -0
  13. package/dist/NurbsCurve.d.ts +24 -2
  14. package/dist/NurbsCurve.d.ts.map +1 -1
  15. package/dist/NurbsCurve.js +34 -2
  16. package/dist/NurbsCurve.js.map +1 -1
  17. package/dist/NurbsSurface.d.ts +9 -1
  18. package/dist/NurbsSurface.d.ts.map +1 -1
  19. package/dist/NurbsSurface.js +12 -3
  20. package/dist/NurbsSurface.js.map +1 -1
  21. package/dist/PolyCurve.d.ts +21 -3
  22. package/dist/PolyCurve.d.ts.map +1 -1
  23. package/dist/PolyCurve.js +82 -38
  24. package/dist/PolyCurve.js.map +1 -1
  25. package/dist/Polygon.d.ts +13 -2
  26. package/dist/Polygon.d.ts.map +1 -1
  27. package/dist/Polygon.js +21 -3
  28. package/dist/Polygon.js.map +1 -1
  29. package/dist/Polyline.d.ts +19 -2
  30. package/dist/Polyline.d.ts.map +1 -1
  31. package/dist/Polyline.js +38 -6
  32. package/dist/Polyline.js.map +1 -1
  33. package/dist/Surface.d.ts +17 -0
  34. package/dist/Surface.d.ts.map +1 -0
  35. package/dist/Surface.js +2 -0
  36. package/dist/Surface.js.map +1 -0
  37. package/dist/index.d.ts +4 -2
  38. package/dist/index.d.ts.map +1 -1
  39. package/dist/index.js +1 -0
  40. package/dist/index.js.map +1 -1
  41. package/dist/types.d.ts +13 -0
  42. package/dist/types.d.ts.map +1 -1
  43. package/dist/wasm-base64.d.ts +1 -1
  44. package/dist/wasm-base64.d.ts.map +1 -1
  45. package/dist/wasm-base64.js +1 -1
  46. package/dist/wasm-base64.js.map +1 -1
  47. package/dist/wasm-bindings.d.ts +65 -2
  48. package/dist/wasm-bindings.d.ts.map +1 -1
  49. package/dist/wasm-bindings.js +100 -2
  50. package/dist/wasm-bindings.js.map +1 -1
  51. package/package.json +1 -1
  52. package/src/Line.ts +38 -20
  53. package/src/Mesh.ts +538 -184
  54. package/src/MeshSurface.ts +72 -0
  55. package/src/NurbsCurve.ts +80 -26
  56. package/src/NurbsSurface.ts +28 -13
  57. package/src/PolyCurve.ts +157 -85
  58. package/src/Polygon.ts +34 -4
  59. package/src/Polyline.ts +74 -24
  60. package/src/Surface.ts +18 -0
  61. package/src/index.ts +5 -0
  62. package/src/types.ts +15 -0
  63. package/src/wasm-base64.ts +1 -1
  64. package/src/wasm-bindings.d.ts +43 -2
  65. package/src/wasm-bindings.js +105 -2
@@ -424,6 +424,13 @@ export function mesh_mesh_intersect(va_count: number, buffer_a: Float64Array, vb
424
424
  */
425
425
  export function mesh_patch_from_points(coords: Float64Array): Float64Array;
426
426
 
427
+ /**
428
+ * Evaluate a point on a planar mesh-face surface at normalized parameters.
429
+ * Parameters map across the face group's local 2D bounds.
430
+ * Returns [x, y, z] or [NaN, NaN, NaN] when the query falls outside the face region.
431
+ */
432
+ export function mesh_planar_face_evaluate(vertex_count: number, buffer: Float64Array, face_index: number, u: number, v: number): Float64Array;
433
+
427
434
  /**
428
435
  * Intersect a mesh with a plane, returning polyline points.
429
436
  * Input: vertex_count, mesh_buffer..., nx, ny, nz, d
@@ -508,12 +515,17 @@ export function nurbs_curve_curve_intersect(data_a: Float64Array, data_b: Float6
508
515
  export function nurbs_curve_plane_intersect(data: Float64Array, nx: number, ny: number, nz: number, d: number): Float64Array;
509
516
 
510
517
  /**
511
- * Evaluate a NURBS surface at (u, v) parameters.
512
- * Input format: same as tessellate but last 2 values are u, v instead of u_segs, v_segs
518
+ * Evaluate a NURBS surface at normalized parameters (u, v) in [0,1].
513
519
  * Returns [x, y, z]
514
520
  */
515
521
  export function nurbs_surface_evaluate(data: Float64Array, u: number, v: number): Float64Array;
516
522
 
523
+ /**
524
+ * Evaluate a NURBS surface unit normal at normalized parameters (u, v) in [0,1].
525
+ * Returns [x, y, z]
526
+ */
527
+ export function nurbs_surface_normal(data: Float64Array, u: number, v: number): Float64Array;
528
+
517
529
  /**
518
530
  * Intersect a NURBS surface with a plane.
519
531
  * Input: same surface format as tessellate_nurbs_surface, then plane (nx,ny,nz,d) appended.
@@ -527,6 +539,21 @@ export function nurbs_surface_plane_intersect(surface_data: Float64Array, nx: nu
527
539
  */
528
540
  export function nurbs_surface_surface_intersect(data_a: Float64Array, data_b: Float64Array, tess: number): Float64Array;
529
541
 
542
+ /**
543
+ * Offset a polycurve made of line and arc segments.
544
+ * Input format: [segment_count, type, ...data, ...]
545
+ * type 0 = Line: [sx,sy,sz, ex,ey,ez]
546
+ * type 1 = Arc: [cx,cy,cz, nx,ny,nz, radius, start_angle, end_angle]
547
+ * Output uses the same encoded segment format.
548
+ */
549
+ export function offset_polycurve(segment_data: Float64Array, distance: number, nx: number, ny: number, nz: number, join_style_code: number): Float64Array;
550
+
551
+ /**
552
+ * Offset a polycurve and return every exact result curve.
553
+ * Output format: [curve_count, curve_len, curve_data..., curve_len, curve_data..., ...]
554
+ */
555
+ export function offset_polycurve_all(segment_data: Float64Array, distance: number, nx: number, ny: number, nz: number, join_style_code: number): Float64Array;
556
+
530
557
  /**
531
558
  * Offset a polyline by a distance in a given plane.
532
559
  * If nx=ny=nz=0, the plane normal is auto-detected.
@@ -617,6 +644,15 @@ export function tessellate_nurbs_surface(data: Float64Array): Float64Array;
617
644
  */
618
645
  export function test_wasm(): string;
619
646
 
647
+ /**
648
+ * Thicken an open polycurve into a single closed loop.
649
+ * Input format: [segment_count, type, ...data, ...]
650
+ * type 0 = Line: [sx,sy,sz, ex,ey,ez]
651
+ * type 1 = Arc: [cx,cy,cz, nx,ny,nz, radius, start_angle, end_angle]
652
+ * Output uses the same encoded segment format.
653
+ */
654
+ export function thicken_polycurve(segment_data: Float64Array, distance: number, both_sides: boolean, nx: number, ny: number, nz: number, join_style_code: number): Float64Array;
655
+
620
656
  /**
621
657
  * Get version info
622
658
  */
@@ -707,6 +743,7 @@ export interface InitOutput {
707
743
  readonly mesh_merge: (a: number, b: number) => [number, number];
708
744
  readonly mesh_mesh_intersect: (a: number, b: number, c: number, d: number, e: number, f: number) => [number, number];
709
745
  readonly mesh_patch_from_points: (a: number, b: number) => [number, number];
746
+ readonly mesh_planar_face_evaluate: (a: number, b: number, c: number, d: number, e: number, f: number) => [number, number];
710
747
  readonly mesh_plane_intersect: (a: number, b: number, c: number, d: number, e: number, f: number, g: number) => [number, number];
711
748
  readonly mesh_prepare_boolean_cutter_curve: (a: number, b: number, c: number, d: number, e: number, f: number, g: number) => [number, number];
712
749
  readonly mesh_raycast: (a: number, b: number, c: number, d: number, e: number, f: number, g: number, h: number, i: number, j: number) => [number, number];
@@ -723,8 +760,11 @@ export interface InitOutput {
723
760
  readonly nurbs_curve_curve_intersect: (a: number, b: number, c: number, d: number) => [number, number];
724
761
  readonly nurbs_curve_plane_intersect: (a: number, b: number, c: number, d: number, e: number, f: number) => [number, number];
725
762
  readonly nurbs_surface_evaluate: (a: number, b: number, c: number, d: number) => [number, number];
763
+ readonly nurbs_surface_normal: (a: number, b: number, c: number, d: number) => [number, number];
726
764
  readonly nurbs_surface_plane_intersect: (a: number, b: number, c: number, d: number, e: number, f: number, g: number) => [number, number];
727
765
  readonly nurbs_surface_surface_intersect: (a: number, b: number, c: number, d: number, e: number) => [number, number];
766
+ readonly offset_polycurve: (a: number, b: number, c: number, d: number, e: number, f: number, g: number) => [number, number];
767
+ readonly offset_polycurve_all: (a: number, b: number, c: number, d: number, e: number, f: number, g: number) => [number, number];
728
768
  readonly offset_polyline_curve: (a: number, b: number, c: number, d: number, e: number, f: number) => [number, number];
729
769
  readonly polycurve_to_nurbs: (a: number, b: number) => [number, number];
730
770
  readonly polyline_length: (a: number, b: number) => number;
@@ -737,6 +777,7 @@ export interface InitOutput {
737
777
  readonly sweep_polylines: (a: number, b: number, c: number, d: number, e: number) => [number, number];
738
778
  readonly tessellate_nurbs_surface: (a: number, b: number) => [number, number];
739
779
  readonly test_wasm: () => [number, number];
780
+ readonly thicken_polycurve: (a: number, b: number, c: number, d: number, e: number, f: number, g: number, h: number) => [number, number];
740
781
  readonly version: () => [number, number];
741
782
  readonly ray_distance_to_point: (a: number, b: number, c: number, d: number, e: number, f: number, g: number, h: number, i: number) => number;
742
783
  readonly __wbindgen_externrefs: WebAssembly.Table;
@@ -1629,6 +1629,26 @@ export function mesh_patch_from_points(coords) {
1629
1629
  return v2;
1630
1630
  }
1631
1631
 
1632
+ /**
1633
+ * Evaluate a point on a planar mesh-face surface at normalized parameters.
1634
+ * Parameters map across the face group's local 2D bounds.
1635
+ * Returns [x, y, z] or [NaN, NaN, NaN] when the query falls outside the face region.
1636
+ * @param {number} vertex_count
1637
+ * @param {Float64Array} buffer
1638
+ * @param {number} face_index
1639
+ * @param {number} u
1640
+ * @param {number} v
1641
+ * @returns {Float64Array}
1642
+ */
1643
+ export function mesh_planar_face_evaluate(vertex_count, buffer, face_index, u, v) {
1644
+ const ptr0 = passArrayF64ToWasm0(buffer, wasm.__wbindgen_malloc);
1645
+ const len0 = WASM_VECTOR_LEN;
1646
+ const ret = wasm.mesh_planar_face_evaluate(vertex_count, ptr0, len0, face_index, u, v);
1647
+ var v2 = getArrayF64FromWasm0(ret[0], ret[1]).slice();
1648
+ wasm.__wbindgen_free(ret[0], ret[1] * 8, 8);
1649
+ return v2;
1650
+ }
1651
+
1632
1652
  /**
1633
1653
  * Intersect a mesh with a plane, returning polyline points.
1634
1654
  * Input: vertex_count, mesh_buffer..., nx, ny, nz, d
@@ -1933,8 +1953,7 @@ export function nurbs_curve_plane_intersect(data, nx, ny, nz, d) {
1933
1953
  }
1934
1954
 
1935
1955
  /**
1936
- * Evaluate a NURBS surface at (u, v) parameters.
1937
- * Input format: same as tessellate but last 2 values are u, v instead of u_segs, v_segs
1956
+ * Evaluate a NURBS surface at normalized parameters (u, v) in [0,1].
1938
1957
  * Returns [x, y, z]
1939
1958
  * @param {Float64Array} data
1940
1959
  * @param {number} u
@@ -1950,6 +1969,23 @@ export function nurbs_surface_evaluate(data, u, v) {
1950
1969
  return v2;
1951
1970
  }
1952
1971
 
1972
+ /**
1973
+ * Evaluate a NURBS surface unit normal at normalized parameters (u, v) in [0,1].
1974
+ * Returns [x, y, z]
1975
+ * @param {Float64Array} data
1976
+ * @param {number} u
1977
+ * @param {number} v
1978
+ * @returns {Float64Array}
1979
+ */
1980
+ export function nurbs_surface_normal(data, u, v) {
1981
+ const ptr0 = passArrayF64ToWasm0(data, wasm.__wbindgen_malloc);
1982
+ const len0 = WASM_VECTOR_LEN;
1983
+ const ret = wasm.nurbs_surface_normal(ptr0, len0, u, v);
1984
+ var v2 = getArrayF64FromWasm0(ret[0], ret[1]).slice();
1985
+ wasm.__wbindgen_free(ret[0], ret[1] * 8, 8);
1986
+ return v2;
1987
+ }
1988
+
1953
1989
  /**
1954
1990
  * Intersect a NURBS surface with a plane.
1955
1991
  * Input: same surface format as tessellate_nurbs_surface, then plane (nx,ny,nz,d) appended.
@@ -1990,6 +2026,49 @@ export function nurbs_surface_surface_intersect(data_a, data_b, tess) {
1990
2026
  return v3;
1991
2027
  }
1992
2028
 
2029
+ /**
2030
+ * Offset a polycurve made of line and arc segments.
2031
+ * Input format: [segment_count, type, ...data, ...]
2032
+ * type 0 = Line: [sx,sy,sz, ex,ey,ez]
2033
+ * type 1 = Arc: [cx,cy,cz, nx,ny,nz, radius, start_angle, end_angle]
2034
+ * Output uses the same encoded segment format.
2035
+ * @param {Float64Array} segment_data
2036
+ * @param {number} distance
2037
+ * @param {number} nx
2038
+ * @param {number} ny
2039
+ * @param {number} nz
2040
+ * @param {number} join_style_code
2041
+ * @returns {Float64Array}
2042
+ */
2043
+ export function offset_polycurve(segment_data, distance, nx, ny, nz, join_style_code) {
2044
+ const ptr0 = passArrayF64ToWasm0(segment_data, wasm.__wbindgen_malloc);
2045
+ const len0 = WASM_VECTOR_LEN;
2046
+ const ret = wasm.offset_polycurve(ptr0, len0, distance, nx, ny, nz, join_style_code);
2047
+ var v2 = getArrayF64FromWasm0(ret[0], ret[1]).slice();
2048
+ wasm.__wbindgen_free(ret[0], ret[1] * 8, 8);
2049
+ return v2;
2050
+ }
2051
+
2052
+ /**
2053
+ * Offset a polycurve and return every exact result curve.
2054
+ * Output format: [curve_count, curve_len, curve_data..., curve_len, curve_data..., ...]
2055
+ * @param {Float64Array} segment_data
2056
+ * @param {number} distance
2057
+ * @param {number} nx
2058
+ * @param {number} ny
2059
+ * @param {number} nz
2060
+ * @param {number} join_style_code
2061
+ * @returns {Float64Array}
2062
+ */
2063
+ export function offset_polycurve_all(segment_data, distance, nx, ny, nz, join_style_code) {
2064
+ const ptr0 = passArrayF64ToWasm0(segment_data, wasm.__wbindgen_malloc);
2065
+ const len0 = WASM_VECTOR_LEN;
2066
+ const ret = wasm.offset_polycurve_all(ptr0, len0, distance, nx, ny, nz, join_style_code);
2067
+ var v2 = getArrayF64FromWasm0(ret[0], ret[1]).slice();
2068
+ wasm.__wbindgen_free(ret[0], ret[1] * 8, 8);
2069
+ return v2;
2070
+ }
2071
+
1993
2072
  /**
1994
2073
  * Offset a polyline by a distance in a given plane.
1995
2074
  * If nx=ny=nz=0, the plane normal is auto-detected.
@@ -2232,6 +2311,30 @@ export function test_wasm() {
2232
2311
  }
2233
2312
  }
2234
2313
 
2314
+ /**
2315
+ * Thicken an open polycurve into a single closed loop.
2316
+ * Input format: [segment_count, type, ...data, ...]
2317
+ * type 0 = Line: [sx,sy,sz, ex,ey,ez]
2318
+ * type 1 = Arc: [cx,cy,cz, nx,ny,nz, radius, start_angle, end_angle]
2319
+ * Output uses the same encoded segment format.
2320
+ * @param {Float64Array} segment_data
2321
+ * @param {number} distance
2322
+ * @param {boolean} both_sides
2323
+ * @param {number} nx
2324
+ * @param {number} ny
2325
+ * @param {number} nz
2326
+ * @param {number} join_style_code
2327
+ * @returns {Float64Array}
2328
+ */
2329
+ export function thicken_polycurve(segment_data, distance, both_sides, nx, ny, nz, join_style_code) {
2330
+ const ptr0 = passArrayF64ToWasm0(segment_data, wasm.__wbindgen_malloc);
2331
+ const len0 = WASM_VECTOR_LEN;
2332
+ const ret = wasm.thicken_polycurve(ptr0, len0, distance, both_sides, nx, ny, nz, join_style_code);
2333
+ var v2 = getArrayF64FromWasm0(ret[0], ret[1]).slice();
2334
+ wasm.__wbindgen_free(ret[0], ret[1] * 8, 8);
2335
+ return v2;
2336
+ }
2337
+
2235
2338
  /**
2236
2339
  * Get version info
2237
2340
  * @returns {string}