okgeometry-api 0.4.2 → 0.4.3
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.
- package/dist/Line.d.ts.map +1 -1
- package/dist/Line.js +3 -3
- package/dist/Line.js.map +1 -1
- package/dist/Mesh.d.ts +12 -25
- package/dist/Mesh.d.ts.map +1 -1
- package/dist/Mesh.js +127 -736
- package/dist/Mesh.js.map +1 -1
- package/dist/wasm-base64.d.ts +1 -1
- package/dist/wasm-base64.d.ts.map +1 -1
- package/dist/wasm-base64.js +1 -1
- package/dist/wasm-base64.js.map +1 -1
- package/package.json +1 -1
- package/wasm/okgeometrycore.d.ts +99 -0
- package/wasm/okgeometrycore.js +1 -1
- package/wasm/okgeometrycore_bg.js +321 -0
- package/wasm/okgeometrycore_bg.wasm +0 -0
- package/wasm/okgeometrycore_bg.wasm.d.ts +18 -0
package/dist/wasm-base64.js.map
CHANGED
|
@@ -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,
|
|
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,0/+3BAA0/+3B,CAAC"}
|
package/package.json
CHANGED
package/wasm/okgeometrycore.d.ts
CHANGED
|
@@ -93,6 +93,12 @@ export function fillet_polycurve(coords: Float64Array, radius: number, nx: numbe
|
|
|
93
93
|
*/
|
|
94
94
|
export function line_length(x1: number, y1: number, z1: number, x2: number, y2: number, z2: number): number;
|
|
95
95
|
|
|
96
|
+
/**
|
|
97
|
+
* Offset a line segment perpendicular to line direction relative to reference normal.
|
|
98
|
+
* Returns [startX,startY,startZ,endX,endY,endZ]
|
|
99
|
+
*/
|
|
100
|
+
export function line_offset(x1: number, y1: number, z1: number, x2: number, y2: number, z2: number, distance: number, nx: number, ny: number, nz: number): Float64Array;
|
|
101
|
+
|
|
96
102
|
/**
|
|
97
103
|
* Evaluate a point on a line segment at parameter t ∈ [0,1].
|
|
98
104
|
* Returns [x, y, z].
|
|
@@ -189,6 +195,13 @@ export function mesh_boolean_union(vertex_count_a: number, buffer_a: Float64Arra
|
|
|
189
195
|
*/
|
|
190
196
|
export function mesh_boundary_polylines(vertex_count: number, buffer: Float64Array): Float64Array;
|
|
191
197
|
|
|
198
|
+
/**
|
|
199
|
+
* Coplanar connected face groups.
|
|
200
|
+
* Output format:
|
|
201
|
+
* [groupCount, triCount, tri..., centroidX,centroidY,centroidZ, normalX,normalY,normalZ, ...]
|
|
202
|
+
*/
|
|
203
|
+
export function mesh_build_coplanar_connected_face_groups(vertex_count: number, buffer: Float64Array): Float64Array;
|
|
204
|
+
|
|
192
205
|
/**
|
|
193
206
|
* Chamfer all edges of a primitive mesh (flat bevel)
|
|
194
207
|
*
|
|
@@ -202,6 +215,16 @@ export function mesh_boundary_polylines(vertex_count: number, buffer: Float64Arr
|
|
|
202
215
|
*/
|
|
203
216
|
export function mesh_chamfer_all_edges(mesh_type: string, params: Float64Array, offset: number): Float64Array;
|
|
204
217
|
|
|
218
|
+
/**
|
|
219
|
+
* Compute planar curve normal from ordered points.
|
|
220
|
+
*/
|
|
221
|
+
export function mesh_compute_planar_curve_normal(coords: Float64Array, closed: boolean): Float64Array;
|
|
222
|
+
|
|
223
|
+
/**
|
|
224
|
+
* Odd/even mesh containment test.
|
|
225
|
+
*/
|
|
226
|
+
export function mesh_contains_point(vertex_count: number, buffer: Float64Array, px: number, py: number, pz: number): boolean;
|
|
227
|
+
|
|
205
228
|
/**
|
|
206
229
|
* Create a box mesh and return buffers
|
|
207
230
|
* Returns [vertices..., indices...]
|
|
@@ -243,6 +266,53 @@ export function mesh_evaluate(vertex_count: number, buffer: Float64Array, u: num
|
|
|
243
266
|
*/
|
|
244
267
|
export function mesh_export_obj(vertex_count: number, buffer: Float64Array): string;
|
|
245
268
|
|
|
269
|
+
/**
|
|
270
|
+
* Push/pull a planar face set by moving its coplanar connected region.
|
|
271
|
+
*/
|
|
272
|
+
export function mesh_extrude_face(vertex_count: number, buffer: Float64Array, face_index: number, distance: number): Float64Array;
|
|
273
|
+
|
|
274
|
+
/**
|
|
275
|
+
* Extrude planar curve profile by normal * height.
|
|
276
|
+
*/
|
|
277
|
+
export function mesh_extrude_planar_curve(coords: Float64Array, nx: number, ny: number, nz: number, height: number, closed: boolean): Float64Array;
|
|
278
|
+
|
|
279
|
+
/**
|
|
280
|
+
* Axis-aligned bounding box as [minX, minY, minZ, maxX, maxY, maxZ].
|
|
281
|
+
*/
|
|
282
|
+
export function mesh_get_bounds(vertex_count: number, buffer: Float64Array): Float64Array;
|
|
283
|
+
|
|
284
|
+
/**
|
|
285
|
+
* Edge-connected coplanar triangle indices as [count, i0, i1, ...].
|
|
286
|
+
*/
|
|
287
|
+
export function mesh_get_coplanar_face_indices(vertex_count: number, buffer: Float64Array, face_index: number): Float64Array;
|
|
288
|
+
|
|
289
|
+
/**
|
|
290
|
+
* Coplanar connected face region projected to a plane basis.
|
|
291
|
+
* Output format:
|
|
292
|
+
* [faceCount, faceIndex0, faceIndex1, ..., uMin, uMax, vMin, vMax]
|
|
293
|
+
*/
|
|
294
|
+
export function mesh_get_coplanar_face_region(vertex_count: number, buffer: Float64Array, face_index: number, ox: number, oy: number, oz: number, ux: number, uy: number, uz: number, vx: number, vy: number, vz: number, margin_scale: number, min_margin: number): Float64Array;
|
|
295
|
+
|
|
296
|
+
/**
|
|
297
|
+
* Unique undirected triangle edges as [edgeCount, v0a, v0b, v1a, v1b, ...].
|
|
298
|
+
*/
|
|
299
|
+
export function mesh_get_edge_vertex_pairs(vertex_count: number, buffer: Float64Array): Float64Array;
|
|
300
|
+
|
|
301
|
+
/**
|
|
302
|
+
* Face area.
|
|
303
|
+
*/
|
|
304
|
+
export function mesh_get_face_area(vertex_count: number, buffer: Float64Array, face_index: number): number;
|
|
305
|
+
|
|
306
|
+
/**
|
|
307
|
+
* Face centroid as [x, y, z].
|
|
308
|
+
*/
|
|
309
|
+
export function mesh_get_face_centroid(vertex_count: number, buffer: Float64Array, face_index: number): Float64Array;
|
|
310
|
+
|
|
311
|
+
/**
|
|
312
|
+
* Face normal as [x, y, z].
|
|
313
|
+
*/
|
|
314
|
+
export function mesh_get_face_normal(vertex_count: number, buffer: Float64Array, face_index: number): Float64Array;
|
|
315
|
+
|
|
246
316
|
/**
|
|
247
317
|
* Get mesh statistics
|
|
248
318
|
* Returns [vertex_count, face_count, edge_count]
|
|
@@ -254,6 +324,17 @@ export function mesh_get_stats(vertex_count: number, buffer: Float64Array): Floa
|
|
|
254
324
|
*/
|
|
255
325
|
export function mesh_import_obj(obj_data: string): Float64Array;
|
|
256
326
|
|
|
327
|
+
/**
|
|
328
|
+
* Check if triangulated mesh is a closed volume (no welded boundary edges).
|
|
329
|
+
*/
|
|
330
|
+
export function mesh_is_closed_volume(vertex_count: number, buffer: Float64Array): boolean;
|
|
331
|
+
|
|
332
|
+
/**
|
|
333
|
+
* Merge multiple mesh buffers while preserving per-mesh vertex order and index remapping.
|
|
334
|
+
* Input format: [mesh_count, len1, mesh1..., len2, mesh2..., ...]
|
|
335
|
+
*/
|
|
336
|
+
export function mesh_merge(mesh_data: Float64Array): Float64Array;
|
|
337
|
+
|
|
257
338
|
/**
|
|
258
339
|
* Intersect two meshes, returning intersection polyline points.
|
|
259
340
|
* Returns: [num_polylines, n1, x,y,z,..., n2, x,y,z,...]
|
|
@@ -275,6 +356,24 @@ export function mesh_patch_from_points(coords: Float64Array): Float64Array;
|
|
|
275
356
|
*/
|
|
276
357
|
export function mesh_plane_intersect(vertex_count: number, buffer: Float64Array, nx: number, ny: number, nz: number, d: number): Float64Array;
|
|
277
358
|
|
|
359
|
+
/**
|
|
360
|
+
* Shift closed boolean cutter curve and adjust height.
|
|
361
|
+
* Returns [height, epsilon, pointCount, x,y,z,...]
|
|
362
|
+
*/
|
|
363
|
+
export function mesh_prepare_boolean_cutter_curve(coords: Float64Array, closed: boolean, nx: number, ny: number, nz: number, height: number): Float64Array;
|
|
364
|
+
|
|
365
|
+
/**
|
|
366
|
+
* Raycast against mesh and return closest hit.
|
|
367
|
+
* Output: [] when no hit, otherwise [pointX,pointY,pointZ, normalX,normalY,normalZ, faceIndex, distance]
|
|
368
|
+
*/
|
|
369
|
+
export function mesh_raycast(vertex_count: number, buffer: Float64Array, ox: number, oy: number, oz: number, dx: number, dy: number, dz: number, max_distance: number): Float64Array;
|
|
370
|
+
|
|
371
|
+
/**
|
|
372
|
+
* Raycast against mesh and return all hits sorted by distance.
|
|
373
|
+
* Output: [hitCount, (point, normal, faceIndex, distance)*]
|
|
374
|
+
*/
|
|
375
|
+
export function mesh_raycast_all(vertex_count: number, buffer: Float64Array, ox: number, oy: number, oz: number, dx: number, dy: number, dz: number, max_distance: number): Float64Array;
|
|
376
|
+
|
|
278
377
|
/**
|
|
279
378
|
* Rotate a mesh around an arbitrary axis and return new buffers
|
|
280
379
|
* Axis is defined by (ax, ay, az), angle in radians
|
package/wasm/okgeometrycore.js
CHANGED
|
@@ -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_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
|
|
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_offset, 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_build_coplanar_connected_face_groups, mesh_chamfer_all_edges, mesh_compute_planar_curve_normal, mesh_contains_point, mesh_create_box, mesh_create_cone, mesh_create_cylinder, mesh_create_prism, mesh_create_sphere, mesh_evaluate, mesh_export_obj, mesh_extrude_face, mesh_extrude_planar_curve, mesh_get_bounds, mesh_get_coplanar_face_indices, mesh_get_coplanar_face_region, mesh_get_edge_vertex_pairs, mesh_get_face_area, mesh_get_face_centroid, mesh_get_face_normal, mesh_get_stats, mesh_import_obj, mesh_is_closed_volume, mesh_merge, mesh_mesh_intersect, mesh_patch_from_points, mesh_plane_intersect, mesh_prepare_boolean_cutter_curve, mesh_raycast, mesh_raycast_all, 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";
|
|
@@ -289,6 +289,28 @@ export function line_length(x1, y1, z1, x2, y2, z2) {
|
|
|
289
289
|
return ret;
|
|
290
290
|
}
|
|
291
291
|
|
|
292
|
+
/**
|
|
293
|
+
* Offset a line segment perpendicular to line direction relative to reference normal.
|
|
294
|
+
* Returns [startX,startY,startZ,endX,endY,endZ]
|
|
295
|
+
* @param {number} x1
|
|
296
|
+
* @param {number} y1
|
|
297
|
+
* @param {number} z1
|
|
298
|
+
* @param {number} x2
|
|
299
|
+
* @param {number} y2
|
|
300
|
+
* @param {number} z2
|
|
301
|
+
* @param {number} distance
|
|
302
|
+
* @param {number} nx
|
|
303
|
+
* @param {number} ny
|
|
304
|
+
* @param {number} nz
|
|
305
|
+
* @returns {Float64Array}
|
|
306
|
+
*/
|
|
307
|
+
export function line_offset(x1, y1, z1, x2, y2, z2, distance, nx, ny, nz) {
|
|
308
|
+
const ret = wasm.line_offset(x1, y1, z1, x2, y2, z2, distance, nx, ny, nz);
|
|
309
|
+
var v1 = getArrayF64FromWasm0(ret[0], ret[1]).slice();
|
|
310
|
+
wasm.__wbindgen_free(ret[0], ret[1] * 8, 8);
|
|
311
|
+
return v1;
|
|
312
|
+
}
|
|
313
|
+
|
|
292
314
|
/**
|
|
293
315
|
* Evaluate a point on a line segment at parameter t ∈ [0,1].
|
|
294
316
|
* Returns [x, y, z].
|
|
@@ -532,6 +554,23 @@ export function mesh_boundary_polylines(vertex_count, buffer) {
|
|
|
532
554
|
return v2;
|
|
533
555
|
}
|
|
534
556
|
|
|
557
|
+
/**
|
|
558
|
+
* Coplanar connected face groups.
|
|
559
|
+
* Output format:
|
|
560
|
+
* [groupCount, triCount, tri..., centroidX,centroidY,centroidZ, normalX,normalY,normalZ, ...]
|
|
561
|
+
* @param {number} vertex_count
|
|
562
|
+
* @param {Float64Array} buffer
|
|
563
|
+
* @returns {Float64Array}
|
|
564
|
+
*/
|
|
565
|
+
export function mesh_build_coplanar_connected_face_groups(vertex_count, buffer) {
|
|
566
|
+
const ptr0 = passArrayF64ToWasm0(buffer, wasm.__wbindgen_malloc);
|
|
567
|
+
const len0 = WASM_VECTOR_LEN;
|
|
568
|
+
const ret = wasm.mesh_build_coplanar_connected_face_groups(vertex_count, ptr0, len0);
|
|
569
|
+
var v2 = getArrayF64FromWasm0(ret[0], ret[1]).slice();
|
|
570
|
+
wasm.__wbindgen_free(ret[0], ret[1] * 8, 8);
|
|
571
|
+
return v2;
|
|
572
|
+
}
|
|
573
|
+
|
|
535
574
|
/**
|
|
536
575
|
* Chamfer all edges of a primitive mesh (flat bevel)
|
|
537
576
|
*
|
|
@@ -558,6 +597,37 @@ export function mesh_chamfer_all_edges(mesh_type, params, offset) {
|
|
|
558
597
|
return v3;
|
|
559
598
|
}
|
|
560
599
|
|
|
600
|
+
/**
|
|
601
|
+
* Compute planar curve normal from ordered points.
|
|
602
|
+
* @param {Float64Array} coords
|
|
603
|
+
* @param {boolean} closed
|
|
604
|
+
* @returns {Float64Array}
|
|
605
|
+
*/
|
|
606
|
+
export function mesh_compute_planar_curve_normal(coords, closed) {
|
|
607
|
+
const ptr0 = passArrayF64ToWasm0(coords, wasm.__wbindgen_malloc);
|
|
608
|
+
const len0 = WASM_VECTOR_LEN;
|
|
609
|
+
const ret = wasm.mesh_compute_planar_curve_normal(ptr0, len0, closed);
|
|
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
|
+
* Odd/even mesh containment test.
|
|
617
|
+
* @param {number} vertex_count
|
|
618
|
+
* @param {Float64Array} buffer
|
|
619
|
+
* @param {number} px
|
|
620
|
+
* @param {number} py
|
|
621
|
+
* @param {number} pz
|
|
622
|
+
* @returns {boolean}
|
|
623
|
+
*/
|
|
624
|
+
export function mesh_contains_point(vertex_count, buffer, px, py, pz) {
|
|
625
|
+
const ptr0 = passArrayF64ToWasm0(buffer, wasm.__wbindgen_malloc);
|
|
626
|
+
const len0 = WASM_VECTOR_LEN;
|
|
627
|
+
const ret = wasm.mesh_contains_point(vertex_count, ptr0, len0, px, py, pz);
|
|
628
|
+
return ret !== 0;
|
|
629
|
+
}
|
|
630
|
+
|
|
561
631
|
/**
|
|
562
632
|
* Create a box mesh and return buffers
|
|
563
633
|
* Returns [vertices..., indices...]
|
|
@@ -672,6 +742,163 @@ export function mesh_export_obj(vertex_count, buffer) {
|
|
|
672
742
|
}
|
|
673
743
|
}
|
|
674
744
|
|
|
745
|
+
/**
|
|
746
|
+
* Push/pull a planar face set by moving its coplanar connected region.
|
|
747
|
+
* @param {number} vertex_count
|
|
748
|
+
* @param {Float64Array} buffer
|
|
749
|
+
* @param {number} face_index
|
|
750
|
+
* @param {number} distance
|
|
751
|
+
* @returns {Float64Array}
|
|
752
|
+
*/
|
|
753
|
+
export function mesh_extrude_face(vertex_count, buffer, face_index, distance) {
|
|
754
|
+
const ptr0 = passArrayF64ToWasm0(buffer, wasm.__wbindgen_malloc);
|
|
755
|
+
const len0 = WASM_VECTOR_LEN;
|
|
756
|
+
const ret = wasm.mesh_extrude_face(vertex_count, ptr0, len0, face_index, distance);
|
|
757
|
+
var v2 = getArrayF64FromWasm0(ret[0], ret[1]).slice();
|
|
758
|
+
wasm.__wbindgen_free(ret[0], ret[1] * 8, 8);
|
|
759
|
+
return v2;
|
|
760
|
+
}
|
|
761
|
+
|
|
762
|
+
/**
|
|
763
|
+
* Extrude planar curve profile by normal * height.
|
|
764
|
+
* @param {Float64Array} coords
|
|
765
|
+
* @param {number} nx
|
|
766
|
+
* @param {number} ny
|
|
767
|
+
* @param {number} nz
|
|
768
|
+
* @param {number} height
|
|
769
|
+
* @param {boolean} closed
|
|
770
|
+
* @returns {Float64Array}
|
|
771
|
+
*/
|
|
772
|
+
export function mesh_extrude_planar_curve(coords, nx, ny, nz, height, closed) {
|
|
773
|
+
const ptr0 = passArrayF64ToWasm0(coords, wasm.__wbindgen_malloc);
|
|
774
|
+
const len0 = WASM_VECTOR_LEN;
|
|
775
|
+
const ret = wasm.mesh_extrude_planar_curve(ptr0, len0, nx, ny, nz, height, closed);
|
|
776
|
+
var v2 = getArrayF64FromWasm0(ret[0], ret[1]).slice();
|
|
777
|
+
wasm.__wbindgen_free(ret[0], ret[1] * 8, 8);
|
|
778
|
+
return v2;
|
|
779
|
+
}
|
|
780
|
+
|
|
781
|
+
/**
|
|
782
|
+
* Axis-aligned bounding box as [minX, minY, minZ, maxX, maxY, maxZ].
|
|
783
|
+
* @param {number} vertex_count
|
|
784
|
+
* @param {Float64Array} buffer
|
|
785
|
+
* @returns {Float64Array}
|
|
786
|
+
*/
|
|
787
|
+
export function mesh_get_bounds(vertex_count, buffer) {
|
|
788
|
+
const ptr0 = passArrayF64ToWasm0(buffer, wasm.__wbindgen_malloc);
|
|
789
|
+
const len0 = WASM_VECTOR_LEN;
|
|
790
|
+
const ret = wasm.mesh_get_bounds(vertex_count, ptr0, len0);
|
|
791
|
+
var v2 = getArrayF64FromWasm0(ret[0], ret[1]).slice();
|
|
792
|
+
wasm.__wbindgen_free(ret[0], ret[1] * 8, 8);
|
|
793
|
+
return v2;
|
|
794
|
+
}
|
|
795
|
+
|
|
796
|
+
/**
|
|
797
|
+
* Edge-connected coplanar triangle indices as [count, i0, i1, ...].
|
|
798
|
+
* @param {number} vertex_count
|
|
799
|
+
* @param {Float64Array} buffer
|
|
800
|
+
* @param {number} face_index
|
|
801
|
+
* @returns {Float64Array}
|
|
802
|
+
*/
|
|
803
|
+
export function mesh_get_coplanar_face_indices(vertex_count, buffer, face_index) {
|
|
804
|
+
const ptr0 = passArrayF64ToWasm0(buffer, wasm.__wbindgen_malloc);
|
|
805
|
+
const len0 = WASM_VECTOR_LEN;
|
|
806
|
+
const ret = wasm.mesh_get_coplanar_face_indices(vertex_count, ptr0, len0, face_index);
|
|
807
|
+
var v2 = getArrayF64FromWasm0(ret[0], ret[1]).slice();
|
|
808
|
+
wasm.__wbindgen_free(ret[0], ret[1] * 8, 8);
|
|
809
|
+
return v2;
|
|
810
|
+
}
|
|
811
|
+
|
|
812
|
+
/**
|
|
813
|
+
* Coplanar connected face region projected to a plane basis.
|
|
814
|
+
* Output format:
|
|
815
|
+
* [faceCount, faceIndex0, faceIndex1, ..., uMin, uMax, vMin, vMax]
|
|
816
|
+
* @param {number} vertex_count
|
|
817
|
+
* @param {Float64Array} buffer
|
|
818
|
+
* @param {number} face_index
|
|
819
|
+
* @param {number} ox
|
|
820
|
+
* @param {number} oy
|
|
821
|
+
* @param {number} oz
|
|
822
|
+
* @param {number} ux
|
|
823
|
+
* @param {number} uy
|
|
824
|
+
* @param {number} uz
|
|
825
|
+
* @param {number} vx
|
|
826
|
+
* @param {number} vy
|
|
827
|
+
* @param {number} vz
|
|
828
|
+
* @param {number} margin_scale
|
|
829
|
+
* @param {number} min_margin
|
|
830
|
+
* @returns {Float64Array}
|
|
831
|
+
*/
|
|
832
|
+
export function mesh_get_coplanar_face_region(vertex_count, buffer, face_index, ox, oy, oz, ux, uy, uz, vx, vy, vz, margin_scale, min_margin) {
|
|
833
|
+
const ptr0 = passArrayF64ToWasm0(buffer, wasm.__wbindgen_malloc);
|
|
834
|
+
const len0 = WASM_VECTOR_LEN;
|
|
835
|
+
const ret = wasm.mesh_get_coplanar_face_region(vertex_count, ptr0, len0, face_index, ox, oy, oz, ux, uy, uz, vx, vy, vz, margin_scale, min_margin);
|
|
836
|
+
var v2 = getArrayF64FromWasm0(ret[0], ret[1]).slice();
|
|
837
|
+
wasm.__wbindgen_free(ret[0], ret[1] * 8, 8);
|
|
838
|
+
return v2;
|
|
839
|
+
}
|
|
840
|
+
|
|
841
|
+
/**
|
|
842
|
+
* Unique undirected triangle edges as [edgeCount, v0a, v0b, v1a, v1b, ...].
|
|
843
|
+
* @param {number} vertex_count
|
|
844
|
+
* @param {Float64Array} buffer
|
|
845
|
+
* @returns {Float64Array}
|
|
846
|
+
*/
|
|
847
|
+
export function mesh_get_edge_vertex_pairs(vertex_count, buffer) {
|
|
848
|
+
const ptr0 = passArrayF64ToWasm0(buffer, wasm.__wbindgen_malloc);
|
|
849
|
+
const len0 = WASM_VECTOR_LEN;
|
|
850
|
+
const ret = wasm.mesh_get_edge_vertex_pairs(vertex_count, ptr0, len0);
|
|
851
|
+
var v2 = getArrayF64FromWasm0(ret[0], ret[1]).slice();
|
|
852
|
+
wasm.__wbindgen_free(ret[0], ret[1] * 8, 8);
|
|
853
|
+
return v2;
|
|
854
|
+
}
|
|
855
|
+
|
|
856
|
+
/**
|
|
857
|
+
* Face area.
|
|
858
|
+
* @param {number} vertex_count
|
|
859
|
+
* @param {Float64Array} buffer
|
|
860
|
+
* @param {number} face_index
|
|
861
|
+
* @returns {number}
|
|
862
|
+
*/
|
|
863
|
+
export function mesh_get_face_area(vertex_count, buffer, face_index) {
|
|
864
|
+
const ptr0 = passArrayF64ToWasm0(buffer, wasm.__wbindgen_malloc);
|
|
865
|
+
const len0 = WASM_VECTOR_LEN;
|
|
866
|
+
const ret = wasm.mesh_get_face_area(vertex_count, ptr0, len0, face_index);
|
|
867
|
+
return ret;
|
|
868
|
+
}
|
|
869
|
+
|
|
870
|
+
/**
|
|
871
|
+
* Face centroid as [x, y, z].
|
|
872
|
+
* @param {number} vertex_count
|
|
873
|
+
* @param {Float64Array} buffer
|
|
874
|
+
* @param {number} face_index
|
|
875
|
+
* @returns {Float64Array}
|
|
876
|
+
*/
|
|
877
|
+
export function mesh_get_face_centroid(vertex_count, buffer, face_index) {
|
|
878
|
+
const ptr0 = passArrayF64ToWasm0(buffer, wasm.__wbindgen_malloc);
|
|
879
|
+
const len0 = WASM_VECTOR_LEN;
|
|
880
|
+
const ret = wasm.mesh_get_face_centroid(vertex_count, ptr0, len0, face_index);
|
|
881
|
+
var v2 = getArrayF64FromWasm0(ret[0], ret[1]).slice();
|
|
882
|
+
wasm.__wbindgen_free(ret[0], ret[1] * 8, 8);
|
|
883
|
+
return v2;
|
|
884
|
+
}
|
|
885
|
+
|
|
886
|
+
/**
|
|
887
|
+
* Face normal as [x, y, z].
|
|
888
|
+
* @param {number} vertex_count
|
|
889
|
+
* @param {Float64Array} buffer
|
|
890
|
+
* @param {number} face_index
|
|
891
|
+
* @returns {Float64Array}
|
|
892
|
+
*/
|
|
893
|
+
export function mesh_get_face_normal(vertex_count, buffer, face_index) {
|
|
894
|
+
const ptr0 = passArrayF64ToWasm0(buffer, wasm.__wbindgen_malloc);
|
|
895
|
+
const len0 = WASM_VECTOR_LEN;
|
|
896
|
+
const ret = wasm.mesh_get_face_normal(vertex_count, ptr0, len0, face_index);
|
|
897
|
+
var v2 = getArrayF64FromWasm0(ret[0], ret[1]).slice();
|
|
898
|
+
wasm.__wbindgen_free(ret[0], ret[1] * 8, 8);
|
|
899
|
+
return v2;
|
|
900
|
+
}
|
|
901
|
+
|
|
675
902
|
/**
|
|
676
903
|
* Get mesh statistics
|
|
677
904
|
* Returns [vertex_count, face_count, edge_count]
|
|
@@ -702,6 +929,34 @@ export function mesh_import_obj(obj_data) {
|
|
|
702
929
|
return v2;
|
|
703
930
|
}
|
|
704
931
|
|
|
932
|
+
/**
|
|
933
|
+
* Check if triangulated mesh is a closed volume (no welded boundary edges).
|
|
934
|
+
* @param {number} vertex_count
|
|
935
|
+
* @param {Float64Array} buffer
|
|
936
|
+
* @returns {boolean}
|
|
937
|
+
*/
|
|
938
|
+
export function mesh_is_closed_volume(vertex_count, buffer) {
|
|
939
|
+
const ptr0 = passArrayF64ToWasm0(buffer, wasm.__wbindgen_malloc);
|
|
940
|
+
const len0 = WASM_VECTOR_LEN;
|
|
941
|
+
const ret = wasm.mesh_is_closed_volume(vertex_count, ptr0, len0);
|
|
942
|
+
return ret !== 0;
|
|
943
|
+
}
|
|
944
|
+
|
|
945
|
+
/**
|
|
946
|
+
* Merge multiple mesh buffers while preserving per-mesh vertex order and index remapping.
|
|
947
|
+
* Input format: [mesh_count, len1, mesh1..., len2, mesh2..., ...]
|
|
948
|
+
* @param {Float64Array} mesh_data
|
|
949
|
+
* @returns {Float64Array}
|
|
950
|
+
*/
|
|
951
|
+
export function mesh_merge(mesh_data) {
|
|
952
|
+
const ptr0 = passArrayF64ToWasm0(mesh_data, wasm.__wbindgen_malloc);
|
|
953
|
+
const len0 = WASM_VECTOR_LEN;
|
|
954
|
+
const ret = wasm.mesh_merge(ptr0, len0);
|
|
955
|
+
var v2 = getArrayF64FromWasm0(ret[0], ret[1]).slice();
|
|
956
|
+
wasm.__wbindgen_free(ret[0], ret[1] * 8, 8);
|
|
957
|
+
return v2;
|
|
958
|
+
}
|
|
959
|
+
|
|
705
960
|
/**
|
|
706
961
|
* Intersect two meshes, returning intersection polyline points.
|
|
707
962
|
* Returns: [num_polylines, n1, x,y,z,..., n2, x,y,z,...]
|
|
@@ -760,6 +1015,72 @@ export function mesh_plane_intersect(vertex_count, buffer, nx, ny, nz, d) {
|
|
|
760
1015
|
return v2;
|
|
761
1016
|
}
|
|
762
1017
|
|
|
1018
|
+
/**
|
|
1019
|
+
* Shift closed boolean cutter curve and adjust height.
|
|
1020
|
+
* Returns [height, epsilon, pointCount, x,y,z,...]
|
|
1021
|
+
* @param {Float64Array} coords
|
|
1022
|
+
* @param {boolean} closed
|
|
1023
|
+
* @param {number} nx
|
|
1024
|
+
* @param {number} ny
|
|
1025
|
+
* @param {number} nz
|
|
1026
|
+
* @param {number} height
|
|
1027
|
+
* @returns {Float64Array}
|
|
1028
|
+
*/
|
|
1029
|
+
export function mesh_prepare_boolean_cutter_curve(coords, closed, nx, ny, nz, height) {
|
|
1030
|
+
const ptr0 = passArrayF64ToWasm0(coords, wasm.__wbindgen_malloc);
|
|
1031
|
+
const len0 = WASM_VECTOR_LEN;
|
|
1032
|
+
const ret = wasm.mesh_prepare_boolean_cutter_curve(ptr0, len0, closed, nx, ny, nz, height);
|
|
1033
|
+
var v2 = getArrayF64FromWasm0(ret[0], ret[1]).slice();
|
|
1034
|
+
wasm.__wbindgen_free(ret[0], ret[1] * 8, 8);
|
|
1035
|
+
return v2;
|
|
1036
|
+
}
|
|
1037
|
+
|
|
1038
|
+
/**
|
|
1039
|
+
* Raycast against mesh and return closest hit.
|
|
1040
|
+
* Output: [] when no hit, otherwise [pointX,pointY,pointZ, normalX,normalY,normalZ, faceIndex, distance]
|
|
1041
|
+
* @param {number} vertex_count
|
|
1042
|
+
* @param {Float64Array} buffer
|
|
1043
|
+
* @param {number} ox
|
|
1044
|
+
* @param {number} oy
|
|
1045
|
+
* @param {number} oz
|
|
1046
|
+
* @param {number} dx
|
|
1047
|
+
* @param {number} dy
|
|
1048
|
+
* @param {number} dz
|
|
1049
|
+
* @param {number} max_distance
|
|
1050
|
+
* @returns {Float64Array}
|
|
1051
|
+
*/
|
|
1052
|
+
export function mesh_raycast(vertex_count, buffer, ox, oy, oz, dx, dy, dz, max_distance) {
|
|
1053
|
+
const ptr0 = passArrayF64ToWasm0(buffer, wasm.__wbindgen_malloc);
|
|
1054
|
+
const len0 = WASM_VECTOR_LEN;
|
|
1055
|
+
const ret = wasm.mesh_raycast(vertex_count, ptr0, len0, ox, oy, oz, dx, dy, dz, max_distance);
|
|
1056
|
+
var v2 = getArrayF64FromWasm0(ret[0], ret[1]).slice();
|
|
1057
|
+
wasm.__wbindgen_free(ret[0], ret[1] * 8, 8);
|
|
1058
|
+
return v2;
|
|
1059
|
+
}
|
|
1060
|
+
|
|
1061
|
+
/**
|
|
1062
|
+
* Raycast against mesh and return all hits sorted by distance.
|
|
1063
|
+
* Output: [hitCount, (point, normal, faceIndex, distance)*]
|
|
1064
|
+
* @param {number} vertex_count
|
|
1065
|
+
* @param {Float64Array} buffer
|
|
1066
|
+
* @param {number} ox
|
|
1067
|
+
* @param {number} oy
|
|
1068
|
+
* @param {number} oz
|
|
1069
|
+
* @param {number} dx
|
|
1070
|
+
* @param {number} dy
|
|
1071
|
+
* @param {number} dz
|
|
1072
|
+
* @param {number} max_distance
|
|
1073
|
+
* @returns {Float64Array}
|
|
1074
|
+
*/
|
|
1075
|
+
export function mesh_raycast_all(vertex_count, buffer, ox, oy, oz, dx, dy, dz, max_distance) {
|
|
1076
|
+
const ptr0 = passArrayF64ToWasm0(buffer, wasm.__wbindgen_malloc);
|
|
1077
|
+
const len0 = WASM_VECTOR_LEN;
|
|
1078
|
+
const ret = wasm.mesh_raycast_all(vertex_count, ptr0, len0, ox, oy, oz, dx, dy, dz, max_distance);
|
|
1079
|
+
var v2 = getArrayF64FromWasm0(ret[0], ret[1]).slice();
|
|
1080
|
+
wasm.__wbindgen_free(ret[0], ret[1] * 8, 8);
|
|
1081
|
+
return v2;
|
|
1082
|
+
}
|
|
1083
|
+
|
|
763
1084
|
/**
|
|
764
1085
|
* Rotate a mesh around an arbitrary axis and return new buffers
|
|
765
1086
|
* Axis is defined by (ax, ay, az), angle in radians
|
|
Binary file
|
|
@@ -17,6 +17,7 @@ export const extrude_line: (a: number, b: number, c: number, d: number, e: numbe
|
|
|
17
17
|
export const extrude_polyline: (a: number, b: number, c: number, d: number, e: number, f: number, g: number) => [number, number];
|
|
18
18
|
export const fillet_polycurve: (a: number, b: number, c: number, d: number, e: number, f: number) => [number, number];
|
|
19
19
|
export const line_length: (a: number, b: number, c: number, d: number, e: number, f: number) => number;
|
|
20
|
+
export const line_offset: (a: number, b: number, c: number, d: number, e: number, f: number, g: number, h: number, i: number, j: number) => [number, number];
|
|
20
21
|
export const line_point_at: (a: number, b: number, c: number, d: number, e: number, f: number, g: number) => [number, number];
|
|
21
22
|
export const line_tangent: (a: number, b: number, c: number, d: number, e: number, f: number) => [number, number];
|
|
22
23
|
export const loft_circles: (a: number, b: number, c: number, d: number) => [number, number];
|
|
@@ -29,7 +30,10 @@ export const mesh_boolean_operation: (a: number, b: number, c: number, d: number
|
|
|
29
30
|
export const mesh_boolean_subtraction: (a: number, b: number, c: number, d: number, e: number, f: number) => [number, number];
|
|
30
31
|
export const mesh_boolean_union: (a: number, b: number, c: number, d: number, e: number, f: number) => [number, number];
|
|
31
32
|
export const mesh_boundary_polylines: (a: number, b: number, c: number) => [number, number];
|
|
33
|
+
export const mesh_build_coplanar_connected_face_groups: (a: number, b: number, c: number) => [number, number];
|
|
32
34
|
export const mesh_chamfer_all_edges: (a: number, b: number, c: number, d: number, e: number) => [number, number];
|
|
35
|
+
export const mesh_compute_planar_curve_normal: (a: number, b: number, c: number) => [number, number];
|
|
36
|
+
export const mesh_contains_point: (a: number, b: number, c: number, d: number, e: number, f: number) => number;
|
|
33
37
|
export const mesh_create_box: (a: number, b: number, c: number) => [number, number];
|
|
34
38
|
export const mesh_create_cone: (a: number, b: number, c: number) => [number, number];
|
|
35
39
|
export const mesh_create_cylinder: (a: number, b: number, c: number) => [number, number];
|
|
@@ -37,11 +41,25 @@ export const mesh_create_prism: (a: number, b: number, c: number) => [number, nu
|
|
|
37
41
|
export const mesh_create_sphere: (a: number, b: number, c: number) => [number, number];
|
|
38
42
|
export const mesh_evaluate: (a: number, b: number, c: number, d: number, e: number) => [number, number];
|
|
39
43
|
export const mesh_export_obj: (a: number, b: number, c: number) => [number, number];
|
|
44
|
+
export const mesh_extrude_face: (a: number, b: number, c: number, d: number, e: number) => [number, number];
|
|
45
|
+
export const mesh_extrude_planar_curve: (a: number, b: number, c: number, d: number, e: number, f: number, g: number) => [number, number];
|
|
46
|
+
export const mesh_get_bounds: (a: number, b: number, c: number) => [number, number];
|
|
47
|
+
export const mesh_get_coplanar_face_indices: (a: number, b: number, c: number, d: number) => [number, number];
|
|
48
|
+
export const mesh_get_coplanar_face_region: (a: number, b: number, c: number, d: number, e: number, f: number, g: number, h: number, i: number, j: number, k: number, l: number, m: number, n: number, o: number) => [number, number];
|
|
49
|
+
export const mesh_get_edge_vertex_pairs: (a: number, b: number, c: number) => [number, number];
|
|
50
|
+
export const mesh_get_face_area: (a: number, b: number, c: number, d: number) => number;
|
|
51
|
+
export const mesh_get_face_centroid: (a: number, b: number, c: number, d: number) => [number, number];
|
|
52
|
+
export const mesh_get_face_normal: (a: number, b: number, c: number, d: number) => [number, number];
|
|
40
53
|
export const mesh_get_stats: (a: number, b: number, c: number) => [number, number];
|
|
41
54
|
export const mesh_import_obj: (a: number, b: number) => [number, number];
|
|
55
|
+
export const mesh_is_closed_volume: (a: number, b: number, c: number) => number;
|
|
56
|
+
export const mesh_merge: (a: number, b: number) => [number, number];
|
|
42
57
|
export const mesh_mesh_intersect: (a: number, b: number, c: number, d: number, e: number, f: number) => [number, number];
|
|
43
58
|
export const mesh_patch_from_points: (a: number, b: number) => [number, number];
|
|
44
59
|
export const mesh_plane_intersect: (a: number, b: number, c: number, d: number, e: number, f: number, g: number) => [number, number];
|
|
60
|
+
export const mesh_prepare_boolean_cutter_curve: (a: number, b: number, c: number, d: number, e: number, f: number, g: number) => [number, number];
|
|
61
|
+
export const mesh_raycast: (a: number, b: number, c: number, d: number, e: number, f: number, g: number, h: number, i: number, j: number) => [number, number];
|
|
62
|
+
export const mesh_raycast_all: (a: number, b: number, c: number, d: number, e: number, f: number, g: number, h: number, i: number, j: number) => [number, number];
|
|
45
63
|
export const mesh_rotate: (a: number, b: number, c: number, d: number, e: number, f: number, g: number) => [number, number];
|
|
46
64
|
export const mesh_scale: (a: number, b: number, c: number, d: number, e: number, f: number) => [number, number];
|
|
47
65
|
export const mesh_translate: (a: number, b: number, c: number, d: number, e: number, f: number) => [number, number];
|