okgeometry-api 0.2.14 → 0.2.16

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.
@@ -1 +1 @@
1
- {"version":3,"file":"wasm-base64.js","sourceRoot":"","sources":["../src/wasm-base64.ts"],"names":[],"mappings":"AAAA,+BAA+B;AAC/B,MAAM,CAAC,MAAM,QAAQ,GAAG,s7goBAAs7goB,CAAC"}
1
+ {"version":3,"file":"wasm-base64.js","sourceRoot":"","sources":["../src/wasm-base64.ts"],"names":[],"mappings":"AAAA,+BAA+B;AAC/B,MAAM,CAAC,MAAM,QAAQ,GAAG,s7xoBAAs7xoB,CAAC"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "okgeometry-api",
3
- "version": "0.2.14",
3
+ "version": "0.2.16",
4
4
  "description": "Geometry engine API for AEC applications — NURBS, meshes, booleans, intersections. Powered by Rust/WASM.",
5
5
  "type": "module",
6
6
  "main": "dist/index.js",
@@ -228,6 +228,14 @@ export function mesh_create_prism(radius: number, height: number, sides: number)
228
228
  */
229
229
  export function mesh_create_sphere(radius: number, segments: number, rings: number): Float64Array;
230
230
 
231
+ /**
232
+ * Evaluate a point on a mesh surface at parametric coordinates (u, v).
233
+ * Maps u ∈ [0,1] and v ∈ [0,1] to the mesh's AABB bounding box,
234
+ * then casts a ray perpendicular to the best-fit projection plane.
235
+ * Returns [x, y, z] of the intersection point, or [NaN, NaN, NaN] if no hit.
236
+ */
237
+ export function mesh_evaluate(vertex_count: number, buffer: Float64Array, u: number, v: number): Float64Array;
238
+
231
239
  /**
232
240
  * Export a mesh to OBJ format
233
241
  * Takes mesh buffers as input (same format as mesh_to_buffers output)
@@ -252,6 +260,14 @@ export function mesh_import_obj(obj_data: string): Float64Array;
252
260
  */
253
261
  export function mesh_mesh_intersect(va_count: number, buffer_a: Float64Array, vb_count: number, buffer_b: Float64Array): Float64Array;
254
262
 
263
+ /**
264
+ * Create a planar patch mesh from boundary points using CDT.
265
+ * Correctly handles concave polygons (unlike fan triangulation).
266
+ * Input: flat coordinate array [x1,y1,z1, x2,y2,z2, ...]
267
+ * Output: mesh buffer [vertexCount, x1,y1,z1,..., i0,i1,i2, ...]
268
+ */
269
+ export function mesh_patch_from_points(coords: Float64Array): Float64Array;
270
+
255
271
  /**
256
272
  * Intersect a mesh with a plane, returning polyline points.
257
273
  * Input: vertex_count, mesh_buffer..., nx, ny, nz, d
@@ -5,5 +5,5 @@ import { __wbg_set_wasm } from "./okgeometrycore_bg.js";
5
5
  __wbg_set_wasm(wasm);
6
6
  wasm.__wbindgen_start();
7
7
  export {
8
- arc_length, arc_point_at, chamfer_polycurve, circle_length, circle_point_at, create_arc, create_circle, create_line, create_polyline, curve_to_points, evaluate_nurbs_curve_at, extrude_circle, extrude_line, extrude_polyline, fillet_polycurve, line_length, line_point_at, line_tangent, loft_circles, loft_nurbs_surface, loft_polylines, make_nurbs_curves_compatible, mesh_apply_matrix, mesh_boolean_intersection, mesh_boolean_operation, mesh_boolean_subtraction, mesh_boolean_union, mesh_boundary_polylines, mesh_chamfer_all_edges, mesh_create_box, mesh_create_cone, mesh_create_cylinder, mesh_create_prism, mesh_create_sphere, mesh_export_obj, mesh_get_stats, mesh_import_obj, mesh_mesh_intersect, mesh_plane_intersect, mesh_rotate, mesh_scale, mesh_translate, nurbs_curve_curve_intersect, nurbs_curve_plane_intersect, nurbs_surface_evaluate, nurbs_surface_plane_intersect, nurbs_surface_surface_intersect, offset_polyline_curve, polycurve_to_nurbs, polyline_length, polyline_point_at, ray_closest_point, ray_closest_point_parameter, ray_distance_to_point, ray_point_at, sample_nurbs_curve, sweep_curves, sweep_polylines, tessellate_nurbs_surface, test_wasm, version
8
+ arc_length, arc_point_at, chamfer_polycurve, circle_length, circle_point_at, create_arc, create_circle, create_line, create_polyline, curve_to_points, evaluate_nurbs_curve_at, extrude_circle, extrude_line, extrude_polyline, fillet_polycurve, line_length, line_point_at, line_tangent, loft_circles, loft_nurbs_surface, loft_polylines, make_nurbs_curves_compatible, mesh_apply_matrix, mesh_boolean_intersection, mesh_boolean_operation, mesh_boolean_subtraction, mesh_boolean_union, mesh_boundary_polylines, mesh_chamfer_all_edges, mesh_create_box, mesh_create_cone, mesh_create_cylinder, mesh_create_prism, mesh_create_sphere, mesh_evaluate, mesh_export_obj, mesh_get_stats, mesh_import_obj, mesh_mesh_intersect, mesh_patch_from_points, mesh_plane_intersect, mesh_rotate, mesh_scale, mesh_translate, nurbs_curve_curve_intersect, nurbs_curve_plane_intersect, nurbs_surface_evaluate, nurbs_surface_plane_intersect, nurbs_surface_surface_intersect, offset_polyline_curve, polycurve_to_nurbs, polyline_length, polyline_point_at, ray_closest_point, ray_closest_point_parameter, ray_distance_to_point, ray_point_at, sample_nurbs_curve, sweep_curves, sweep_polylines, tessellate_nurbs_surface, test_wasm, version
9
9
  } from "./okgeometrycore_bg.js";
@@ -629,6 +629,26 @@ export function mesh_create_sphere(radius, segments, rings) {
629
629
  return v1;
630
630
  }
631
631
 
632
+ /**
633
+ * Evaluate a point on a mesh surface at parametric coordinates (u, v).
634
+ * Maps u ∈ [0,1] and v ∈ [0,1] to the mesh's AABB bounding box,
635
+ * then casts a ray perpendicular to the best-fit projection plane.
636
+ * Returns [x, y, z] of the intersection point, or [NaN, NaN, NaN] if no hit.
637
+ * @param {number} vertex_count
638
+ * @param {Float64Array} buffer
639
+ * @param {number} u
640
+ * @param {number} v
641
+ * @returns {Float64Array}
642
+ */
643
+ export function mesh_evaluate(vertex_count, buffer, u, v) {
644
+ const ptr0 = passArrayF64ToWasm0(buffer, wasm.__wbindgen_malloc);
645
+ const len0 = WASM_VECTOR_LEN;
646
+ const ret = wasm.mesh_evaluate(vertex_count, ptr0, len0, u, v);
647
+ var v2 = getArrayF64FromWasm0(ret[0], ret[1]).slice();
648
+ wasm.__wbindgen_free(ret[0], ret[1] * 8, 8);
649
+ return v2;
650
+ }
651
+
632
652
  /**
633
653
  * Export a mesh to OBJ format
634
654
  * Takes mesh buffers as input (same format as mesh_to_buffers output)
@@ -702,6 +722,23 @@ export function mesh_mesh_intersect(va_count, buffer_a, vb_count, buffer_b) {
702
722
  return v3;
703
723
  }
704
724
 
725
+ /**
726
+ * Create a planar patch mesh from boundary points using CDT.
727
+ * Correctly handles concave polygons (unlike fan triangulation).
728
+ * Input: flat coordinate array [x1,y1,z1, x2,y2,z2, ...]
729
+ * Output: mesh buffer [vertexCount, x1,y1,z1,..., i0,i1,i2, ...]
730
+ * @param {Float64Array} coords
731
+ * @returns {Float64Array}
732
+ */
733
+ export function mesh_patch_from_points(coords) {
734
+ const ptr0 = passArrayF64ToWasm0(coords, wasm.__wbindgen_malloc);
735
+ const len0 = WASM_VECTOR_LEN;
736
+ const ret = wasm.mesh_patch_from_points(ptr0, len0);
737
+ var v2 = getArrayF64FromWasm0(ret[0], ret[1]).slice();
738
+ wasm.__wbindgen_free(ret[0], ret[1] * 8, 8);
739
+ return v2;
740
+ }
741
+
705
742
  /**
706
743
  * Intersect a mesh with a plane, returning polyline points.
707
744
  * Input: vertex_count, mesh_buffer..., nx, ny, nz, d
Binary file
@@ -35,10 +35,12 @@ export const mesh_create_cone: (a: number, b: number, c: number) => [number, num
35
35
  export const mesh_create_cylinder: (a: number, b: number, c: number) => [number, number];
36
36
  export const mesh_create_prism: (a: number, b: number, c: number) => [number, number];
37
37
  export const mesh_create_sphere: (a: number, b: number, c: number) => [number, number];
38
+ export const mesh_evaluate: (a: number, b: number, c: number, d: number, e: number) => [number, number];
38
39
  export const mesh_export_obj: (a: number, b: number, c: number) => [number, number];
39
40
  export const mesh_get_stats: (a: number, b: number, c: number) => [number, number];
40
41
  export const mesh_import_obj: (a: number, b: number) => [number, number];
41
42
  export const mesh_mesh_intersect: (a: number, b: number, c: number, d: number, e: number, f: number) => [number, number];
43
+ export const mesh_patch_from_points: (a: number, b: number) => [number, number];
42
44
  export const mesh_plane_intersect: (a: number, b: number, c: number, d: number, e: number, f: number, g: number) => [number, number];
43
45
  export const mesh_rotate: (a: number, b: number, c: number, d: number, e: number, f: number, g: number) => [number, number];
44
46
  export const mesh_scale: (a: number, b: number, c: number, d: number, e: number, f: number) => [number, number];