okgeometry-api 0.2.13 → 0.2.15

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,0mioBAA0mioB,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,8suoBAA8suoB,CAAC"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "okgeometry-api",
3
- "version": "0.2.13",
3
+ "version": "0.2.15",
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)
@@ -402,97 +410,3 @@ export function test_wasm(): string;
402
410
  * Get version info
403
411
  */
404
412
  export function version(): string;
405
-
406
- export type InitInput = RequestInfo | URL | Response | BufferSource | WebAssembly.Module;
407
-
408
- export interface InitOutput {
409
- readonly memory: WebAssembly.Memory;
410
- readonly arc_length: (a: number, b: number, c: number) => number;
411
- readonly arc_point_at: (a: number, b: number, c: number, d: number, e: number, f: number, g: number, h: number, i: number, j: number) => [number, number];
412
- readonly chamfer_polycurve: (a: number, b: number, c: number) => [number, number];
413
- readonly circle_length: (a: number) => number;
414
- readonly circle_point_at: (a: number, b: number, c: number, d: number, e: number, f: number, g: number, h: number) => [number, number];
415
- readonly create_arc: (a: number, b: number, c: number, d: number, e: number, f: number, g: number, h: number, i: number, j: number) => [number, number];
416
- readonly create_circle: (a: number, b: number, c: number, d: number, e: number, f: number, g: number, h: number) => [number, number];
417
- readonly create_line: (a: number, b: number, c: number, d: number, e: number, f: number, g: number) => [number, number];
418
- readonly create_polyline: (a: number, b: number, c: number) => [number, number];
419
- readonly curve_to_points: (a: number, b: number, c: number, d: number, e: number) => [number, number];
420
- readonly evaluate_nurbs_curve_at: (a: number, b: number, c: number) => [number, number];
421
- readonly extrude_circle: (a: number, b: number, c: number, d: number, e: number, f: number, g: number, h: number, i: number, j: number, k: number, l: number) => [number, number];
422
- readonly extrude_line: (a: number, b: number, c: number, d: number, e: number, f: number, g: number, h: number, i: number, j: number) => [number, number];
423
- readonly extrude_polyline: (a: number, b: number, c: number, d: number, e: number, f: number, g: number) => [number, number];
424
- readonly fillet_polycurve: (a: number, b: number, c: number, d: number, e: number, f: number) => [number, number];
425
- readonly line_length: (a: number, b: number, c: number, d: number, e: number, f: number) => number;
426
- readonly line_point_at: (a: number, b: number, c: number, d: number, e: number, f: number, g: number) => [number, number];
427
- readonly line_tangent: (a: number, b: number, c: number, d: number, e: number, f: number) => [number, number];
428
- readonly loft_circles: (a: number, b: number, c: number, d: number) => [number, number];
429
- readonly loft_nurbs_surface: (a: number, b: number) => [number, number];
430
- readonly loft_polylines: (a: number, b: number, c: number, d: number) => [number, number];
431
- readonly make_nurbs_curves_compatible: (a: number, b: number) => [number, number];
432
- readonly mesh_apply_matrix: (a: number, b: number, c: number, d: number, e: number) => [number, number];
433
- readonly mesh_boolean_intersection: (a: number, b: number, c: number, d: number, e: number, f: number) => [number, number];
434
- readonly mesh_boolean_operation: (a: number, b: number, c: number, d: number, e: number, f: number, g: number, h: number) => [number, number];
435
- readonly mesh_boolean_subtraction: (a: number, b: number, c: number, d: number, e: number, f: number) => [number, number];
436
- readonly mesh_boolean_union: (a: number, b: number, c: number, d: number, e: number, f: number) => [number, number];
437
- readonly mesh_boundary_polylines: (a: number, b: number, c: number) => [number, number];
438
- readonly mesh_chamfer_all_edges: (a: number, b: number, c: number, d: number, e: number) => [number, number];
439
- readonly mesh_create_box: (a: number, b: number, c: number) => [number, number];
440
- readonly mesh_create_cone: (a: number, b: number, c: number) => [number, number];
441
- readonly mesh_create_cylinder: (a: number, b: number, c: number) => [number, number];
442
- readonly mesh_create_prism: (a: number, b: number, c: number) => [number, number];
443
- readonly mesh_create_sphere: (a: number, b: number, c: number) => [number, number];
444
- readonly mesh_export_obj: (a: number, b: number, c: number) => [number, number];
445
- readonly mesh_get_stats: (a: number, b: number, c: number) => [number, number];
446
- readonly mesh_import_obj: (a: number, b: number) => [number, number];
447
- readonly mesh_mesh_intersect: (a: number, b: number, c: number, d: number, e: number, f: number) => [number, number];
448
- readonly mesh_plane_intersect: (a: number, b: number, c: number, d: number, e: number, f: number, g: number) => [number, number];
449
- readonly mesh_rotate: (a: number, b: number, c: number, d: number, e: number, f: number, g: number) => [number, number];
450
- readonly mesh_scale: (a: number, b: number, c: number, d: number, e: number, f: number) => [number, number];
451
- readonly mesh_translate: (a: number, b: number, c: number, d: number, e: number, f: number) => [number, number];
452
- readonly nurbs_curve_curve_intersect: (a: number, b: number, c: number, d: number) => [number, number];
453
- readonly nurbs_curve_plane_intersect: (a: number, b: number, c: number, d: number, e: number, f: number) => [number, number];
454
- readonly nurbs_surface_evaluate: (a: number, b: number, c: number, d: number) => [number, number];
455
- readonly nurbs_surface_plane_intersect: (a: number, b: number, c: number, d: number, e: number, f: number, g: number) => [number, number];
456
- readonly nurbs_surface_surface_intersect: (a: number, b: number, c: number, d: number, e: number) => [number, number];
457
- readonly offset_polyline_curve: (a: number, b: number, c: number, d: number, e: number, f: number) => [number, number];
458
- readonly polycurve_to_nurbs: (a: number, b: number) => [number, number];
459
- readonly polyline_length: (a: number, b: number) => number;
460
- readonly polyline_point_at: (a: number, b: number, c: number) => [number, number];
461
- readonly ray_closest_point: (a: number, b: number, c: number, d: number, e: number, f: number, g: number, h: number, i: number) => [number, number];
462
- readonly ray_closest_point_parameter: (a: number, b: number, c: number, d: number, e: number, f: number, g: number, h: number, i: number) => number;
463
- readonly ray_point_at: (a: number, b: number, c: number, d: number, e: number, f: number, g: number) => [number, number];
464
- readonly sample_nurbs_curve: (a: number, b: number, c: number) => [number, number];
465
- readonly sweep_curves: (a: number, b: number, c: number, d: number, e: number, f: number, g: number) => [number, number];
466
- readonly sweep_polylines: (a: number, b: number, c: number, d: number, e: number) => [number, number];
467
- readonly tessellate_nurbs_surface: (a: number, b: number) => [number, number];
468
- readonly test_wasm: () => [number, number];
469
- readonly version: () => [number, number];
470
- readonly ray_distance_to_point: (a: number, b: number, c: number, d: number, e: number, f: number, g: number, h: number, i: number) => number;
471
- readonly __wbindgen_externrefs: WebAssembly.Table;
472
- readonly __wbindgen_free: (a: number, b: number, c: number) => void;
473
- readonly __wbindgen_malloc: (a: number, b: number) => number;
474
- readonly __wbindgen_realloc: (a: number, b: number, c: number, d: number) => number;
475
- readonly __wbindgen_start: () => void;
476
- }
477
-
478
- export type SyncInitInput = BufferSource | WebAssembly.Module;
479
-
480
- /**
481
- * Instantiates the given `module`, which can either be bytes or
482
- * a precompiled `WebAssembly.Module`.
483
- *
484
- * @param {{ module: SyncInitInput }} module - Passing `SyncInitInput` directly is deprecated.
485
- *
486
- * @returns {InitOutput}
487
- */
488
- export function initSync(module: { module: SyncInitInput } | SyncInitInput): InitOutput;
489
-
490
- /**
491
- * If `module_or_path` is {RequestInfo} or {URL}, makes a request and
492
- * for everything else, calls `WebAssembly.instantiate` directly.
493
- *
494
- * @param {{ module_or_path: InitInput | Promise<InitInput> }} module_or_path - Passing `InitInput` directly is deprecated.
495
- *
496
- * @returns {Promise<InitOutput>}
497
- */
498
- export default function __wbg_init (module_or_path?: { module_or_path: InitInput | Promise<InitInput> } | InitInput | Promise<InitInput>): Promise<InitOutput>;
@@ -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, 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_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)
@@ -943,6 +963,87 @@ export function polyline_point_at(coords, t) {
943
963
  return v2;
944
964
  }
945
965
 
966
+ /**
967
+ * Find the closest point on a ray to a given point.
968
+ * Returns [x, y, z] of the closest point on the ray.
969
+ * @param {number} ox
970
+ * @param {number} oy
971
+ * @param {number} oz
972
+ * @param {number} dx
973
+ * @param {number} dy
974
+ * @param {number} dz
975
+ * @param {number} px
976
+ * @param {number} py
977
+ * @param {number} pz
978
+ * @returns {Float64Array}
979
+ */
980
+ export function ray_closest_point(ox, oy, oz, dx, dy, dz, px, py, pz) {
981
+ const ret = wasm.ray_closest_point(ox, oy, oz, dx, dy, dz, px, py, pz);
982
+ var v1 = getArrayF64FromWasm0(ret[0], ret[1]).slice();
983
+ wasm.__wbindgen_free(ret[0], ret[1] * 8, 8);
984
+ return v1;
985
+ }
986
+
987
+ /**
988
+ * Find the parameter t for the closest point on a ray to a given point.
989
+ * The closest point is at: origin + t * direction
990
+ * Note: t can be negative if the closest point is "behind" the ray origin.
991
+ * @param {number} ox
992
+ * @param {number} oy
993
+ * @param {number} oz
994
+ * @param {number} dx
995
+ * @param {number} dy
996
+ * @param {number} dz
997
+ * @param {number} px
998
+ * @param {number} py
999
+ * @param {number} pz
1000
+ * @returns {number}
1001
+ */
1002
+ export function ray_closest_point_parameter(ox, oy, oz, dx, dy, dz, px, py, pz) {
1003
+ const ret = wasm.ray_closest_point_parameter(ox, oy, oz, dx, dy, dz, px, py, pz);
1004
+ return ret;
1005
+ }
1006
+
1007
+ /**
1008
+ * Compute the distance from a ray to a point.
1009
+ * Ray is defined by origin (ox, oy, oz) and direction (dx, dy, dz).
1010
+ * Direction should be normalized for accurate distance.
1011
+ * Returns the perpendicular distance from the ray to the point.
1012
+ * @param {number} ox
1013
+ * @param {number} oy
1014
+ * @param {number} oz
1015
+ * @param {number} dx
1016
+ * @param {number} dy
1017
+ * @param {number} dz
1018
+ * @param {number} px
1019
+ * @param {number} py
1020
+ * @param {number} pz
1021
+ * @returns {number}
1022
+ */
1023
+ export function ray_distance_to_point(ox, oy, oz, dx, dy, dz, px, py, pz) {
1024
+ const ret = wasm.ray_distance_to_point(ox, oy, oz, dx, dy, dz, px, py, pz);
1025
+ return ret;
1026
+ }
1027
+
1028
+ /**
1029
+ * Get a point along the ray at parameter t.
1030
+ * Returns [x, y, z] = origin + t * direction
1031
+ * @param {number} ox
1032
+ * @param {number} oy
1033
+ * @param {number} oz
1034
+ * @param {number} dx
1035
+ * @param {number} dy
1036
+ * @param {number} dz
1037
+ * @param {number} t
1038
+ * @returns {Float64Array}
1039
+ */
1040
+ export function ray_point_at(ox, oy, oz, dx, dy, dz, t) {
1041
+ const ret = wasm.ray_point_at(ox, oy, oz, dx, dy, dz, t);
1042
+ var v1 = getArrayF64FromWasm0(ret[0], ret[1]).slice();
1043
+ wasm.__wbindgen_free(ret[0], ret[1] * 8, 8);
1044
+ return v1;
1045
+ }
1046
+
946
1047
  /**
947
1048
  * Sample a NURBS curve.
948
1049
  * Input: degree, then flat control points [x,y,z,...], then flat weights, then flat knots
Binary file
@@ -35,6 +35,7 @@ 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];
@@ -52,12 +53,16 @@ export const offset_polyline_curve: (a: number, b: number, c: number, d: number,
52
53
  export const polycurve_to_nurbs: (a: number, b: number) => [number, number];
53
54
  export const polyline_length: (a: number, b: number) => number;
54
55
  export const polyline_point_at: (a: number, b: number, c: number) => [number, number];
56
+ export const ray_closest_point: (a: number, b: number, c: number, d: number, e: number, f: number, g: number, h: number, i: number) => [number, number];
57
+ export const ray_closest_point_parameter: (a: number, b: number, c: number, d: number, e: number, f: number, g: number, h: number, i: number) => number;
58
+ export const ray_point_at: (a: number, b: number, c: number, d: number, e: number, f: number, g: number) => [number, number];
55
59
  export const sample_nurbs_curve: (a: number, b: number, c: number) => [number, number];
56
60
  export const sweep_curves: (a: number, b: number, c: number, d: number, e: number, f: number, g: number) => [number, number];
57
61
  export const sweep_polylines: (a: number, b: number, c: number, d: number, e: number) => [number, number];
58
62
  export const tessellate_nurbs_surface: (a: number, b: number) => [number, number];
59
63
  export const test_wasm: () => [number, number];
60
64
  export const version: () => [number, number];
65
+ export const ray_distance_to_point: (a: number, b: number, c: number, d: number, e: number, f: number, g: number, h: number, i: number) => number;
61
66
  export const __wbindgen_externrefs: WebAssembly.Table;
62
67
  export const __wbindgen_free: (a: number, b: number, c: number) => void;
63
68
  export const __wbindgen_malloc: (a: number, b: number) => number;