okgeometry-api 0.4.4 → 0.4.5
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/Mesh.d.ts +66 -3
- package/dist/Mesh.d.ts.map +1 -1
- package/dist/Mesh.js +338 -6
- package/dist/Mesh.js.map +1 -1
- package/dist/index.d.ts +2 -1
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +1 -1
- package/dist/index.js.map +1 -1
- package/dist/mesh-boolean.pool.d.ts +37 -0
- package/dist/mesh-boolean.pool.d.ts.map +1 -0
- package/dist/mesh-boolean.pool.js +336 -0
- package/dist/mesh-boolean.pool.js.map +1 -0
- package/dist/mesh-boolean.protocol.d.ts +85 -0
- package/dist/mesh-boolean.protocol.d.ts.map +1 -0
- package/dist/mesh-boolean.protocol.js +9 -0
- package/dist/mesh-boolean.protocol.js.map +1 -0
- package/dist/mesh-boolean.worker.d.ts +2 -0
- package/dist/mesh-boolean.worker.d.ts.map +1 -0
- package/dist/mesh-boolean.worker.js +105 -0
- package/dist/mesh-boolean.worker.js.map +1 -0
- package/package.json +1 -1
- package/wasm/okgeometrycore.d.ts +118 -0
- package/wasm/okgeometrycore.js +1784 -7
- package/wasm/okgeometrycore_bg.js +5 -443
- package/wasm/package.json +0 -2
|
@@ -289,28 +289,6 @@ 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
|
-
|
|
314
292
|
/**
|
|
315
293
|
* Evaluate a point on a line segment at parameter t ∈ [0,1].
|
|
316
294
|
* Returns [x, y, z].
|
|
@@ -394,20 +372,20 @@ export function loft_nurbs_surface(data) {
|
|
|
394
372
|
* # Parameters
|
|
395
373
|
* * `polyline_data` - Flat array where each polyline is prefixed by its point count:
|
|
396
374
|
* [count1, x1, y1, z1, x2, y2, z2, ..., count2, x1, y1, z1, ...]
|
|
397
|
-
* * `
|
|
398
|
-
* * `with_caps` - Whether to create end caps
|
|
375
|
+
* * `segments` - Number of segments to sample along each curve
|
|
376
|
+
* * `with_caps` - Whether to create end caps
|
|
399
377
|
*
|
|
400
378
|
* # Returns
|
|
401
379
|
* Mesh buffers for the lofted surface
|
|
402
380
|
* @param {Float64Array} polyline_data
|
|
403
|
-
* @param {number}
|
|
381
|
+
* @param {number} segments
|
|
404
382
|
* @param {boolean} with_caps
|
|
405
383
|
* @returns {Float64Array}
|
|
406
384
|
*/
|
|
407
|
-
export function loft_polylines(polyline_data,
|
|
385
|
+
export function loft_polylines(polyline_data, segments, with_caps) {
|
|
408
386
|
const ptr0 = passArrayF64ToWasm0(polyline_data, wasm.__wbindgen_malloc);
|
|
409
387
|
const len0 = WASM_VECTOR_LEN;
|
|
410
|
-
const ret = wasm.loft_polylines(ptr0, len0,
|
|
388
|
+
const ret = wasm.loft_polylines(ptr0, len0, segments, with_caps);
|
|
411
389
|
var v2 = getArrayF64FromWasm0(ret[0], ret[1]).slice();
|
|
412
390
|
wasm.__wbindgen_free(ret[0], ret[1] * 8, 8);
|
|
413
391
|
return v2;
|
|
@@ -554,23 +532,6 @@ export function mesh_boundary_polylines(vertex_count, buffer) {
|
|
|
554
532
|
return v2;
|
|
555
533
|
}
|
|
556
534
|
|
|
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
|
-
|
|
574
535
|
/**
|
|
575
536
|
* Chamfer all edges of a primitive mesh (flat bevel)
|
|
576
537
|
*
|
|
@@ -597,37 +558,6 @@ export function mesh_chamfer_all_edges(mesh_type, params, offset) {
|
|
|
597
558
|
return v3;
|
|
598
559
|
}
|
|
599
560
|
|
|
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
|
-
|
|
631
561
|
/**
|
|
632
562
|
* Create a box mesh and return buffers
|
|
633
563
|
* Returns [vertices..., indices...]
|
|
@@ -699,26 +629,6 @@ export function mesh_create_sphere(radius, segments, rings) {
|
|
|
699
629
|
return v1;
|
|
700
630
|
}
|
|
701
631
|
|
|
702
|
-
/**
|
|
703
|
-
* Evaluate a point on a mesh surface at parametric coordinates (u, v).
|
|
704
|
-
* Maps u ∈ [0,1] and v ∈ [0,1] to the mesh's AABB bounding box,
|
|
705
|
-
* then casts a ray perpendicular to the best-fit projection plane.
|
|
706
|
-
* Returns [x, y, z] of the intersection point, or [NaN, NaN, NaN] if no hit.
|
|
707
|
-
* @param {number} vertex_count
|
|
708
|
-
* @param {Float64Array} buffer
|
|
709
|
-
* @param {number} u
|
|
710
|
-
* @param {number} v
|
|
711
|
-
* @returns {Float64Array}
|
|
712
|
-
*/
|
|
713
|
-
export function mesh_evaluate(vertex_count, buffer, u, v) {
|
|
714
|
-
const ptr0 = passArrayF64ToWasm0(buffer, wasm.__wbindgen_malloc);
|
|
715
|
-
const len0 = WASM_VECTOR_LEN;
|
|
716
|
-
const ret = wasm.mesh_evaluate(vertex_count, ptr0, len0, u, v);
|
|
717
|
-
var v2 = getArrayF64FromWasm0(ret[0], ret[1]).slice();
|
|
718
|
-
wasm.__wbindgen_free(ret[0], ret[1] * 8, 8);
|
|
719
|
-
return v2;
|
|
720
|
-
}
|
|
721
|
-
|
|
722
632
|
/**
|
|
723
633
|
* Export a mesh to OBJ format
|
|
724
634
|
* Takes mesh buffers as input (same format as mesh_to_buffers output)
|
|
@@ -742,220 +652,6 @@ export function mesh_export_obj(vertex_count, buffer) {
|
|
|
742
652
|
}
|
|
743
653
|
}
|
|
744
654
|
|
|
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
|
-
* Find the best matching coplanar connected face group by normal and optional near-point.
|
|
783
|
-
* Output format: [centroidX, centroidY, centroidZ, normalX, normalY, normalZ] or [].
|
|
784
|
-
* @param {number} vertex_count
|
|
785
|
-
* @param {Float64Array} buffer
|
|
786
|
-
* @param {number} nx
|
|
787
|
-
* @param {number} ny
|
|
788
|
-
* @param {number} nz
|
|
789
|
-
* @param {number} near_x
|
|
790
|
-
* @param {number} near_y
|
|
791
|
-
* @param {number} near_z
|
|
792
|
-
* @param {boolean} use_near_point
|
|
793
|
-
* @returns {Float64Array}
|
|
794
|
-
*/
|
|
795
|
-
export function mesh_find_face_group_by_normal(vertex_count, buffer, nx, ny, nz, near_x, near_y, near_z, use_near_point) {
|
|
796
|
-
const ptr0 = passArrayF64ToWasm0(buffer, wasm.__wbindgen_malloc);
|
|
797
|
-
const len0 = WASM_VECTOR_LEN;
|
|
798
|
-
const ret = wasm.mesh_find_face_group_by_normal(vertex_count, ptr0, len0, nx, ny, nz, near_x, near_y, near_z, use_near_point);
|
|
799
|
-
var v2 = getArrayF64FromWasm0(ret[0], ret[1]).slice();
|
|
800
|
-
wasm.__wbindgen_free(ret[0], ret[1] * 8, 8);
|
|
801
|
-
return v2;
|
|
802
|
-
}
|
|
803
|
-
|
|
804
|
-
/**
|
|
805
|
-
* Find the coplanar connected face group containing triangle_index.
|
|
806
|
-
* Output format: [centroidX, centroidY, centroidZ, normalX, normalY, normalZ] or [].
|
|
807
|
-
* @param {number} vertex_count
|
|
808
|
-
* @param {Float64Array} buffer
|
|
809
|
-
* @param {number} triangle_index
|
|
810
|
-
* @returns {Float64Array}
|
|
811
|
-
*/
|
|
812
|
-
export function mesh_find_face_group_by_triangle_index(vertex_count, buffer, triangle_index) {
|
|
813
|
-
const ptr0 = passArrayF64ToWasm0(buffer, wasm.__wbindgen_malloc);
|
|
814
|
-
const len0 = WASM_VECTOR_LEN;
|
|
815
|
-
const ret = wasm.mesh_find_face_group_by_triangle_index(vertex_count, ptr0, len0, triangle_index);
|
|
816
|
-
var v2 = getArrayF64FromWasm0(ret[0], ret[1]).slice();
|
|
817
|
-
wasm.__wbindgen_free(ret[0], ret[1] * 8, 8);
|
|
818
|
-
return v2;
|
|
819
|
-
}
|
|
820
|
-
|
|
821
|
-
/**
|
|
822
|
-
* Axis-aligned bounding box as [minX, minY, minZ, maxX, maxY, maxZ].
|
|
823
|
-
* @param {number} vertex_count
|
|
824
|
-
* @param {Float64Array} buffer
|
|
825
|
-
* @returns {Float64Array}
|
|
826
|
-
*/
|
|
827
|
-
export function mesh_get_bounds(vertex_count, buffer) {
|
|
828
|
-
const ptr0 = passArrayF64ToWasm0(buffer, wasm.__wbindgen_malloc);
|
|
829
|
-
const len0 = WASM_VECTOR_LEN;
|
|
830
|
-
const ret = wasm.mesh_get_bounds(vertex_count, ptr0, len0);
|
|
831
|
-
var v2 = getArrayF64FromWasm0(ret[0], ret[1]).slice();
|
|
832
|
-
wasm.__wbindgen_free(ret[0], ret[1] * 8, 8);
|
|
833
|
-
return v2;
|
|
834
|
-
}
|
|
835
|
-
|
|
836
|
-
/**
|
|
837
|
-
* Coplanar connected face-group centroid containing a given triangle face index.
|
|
838
|
-
* Output format: [x, y, z] or [] when unavailable.
|
|
839
|
-
* @param {number} vertex_count
|
|
840
|
-
* @param {Float64Array} buffer
|
|
841
|
-
* @param {number} face_index
|
|
842
|
-
* @returns {Float64Array}
|
|
843
|
-
*/
|
|
844
|
-
export function mesh_get_coplanar_face_group_centroid(vertex_count, buffer, face_index) {
|
|
845
|
-
const ptr0 = passArrayF64ToWasm0(buffer, wasm.__wbindgen_malloc);
|
|
846
|
-
const len0 = WASM_VECTOR_LEN;
|
|
847
|
-
const ret = wasm.mesh_get_coplanar_face_group_centroid(vertex_count, ptr0, len0, face_index);
|
|
848
|
-
var v2 = getArrayF64FromWasm0(ret[0], ret[1]).slice();
|
|
849
|
-
wasm.__wbindgen_free(ret[0], ret[1] * 8, 8);
|
|
850
|
-
return v2;
|
|
851
|
-
}
|
|
852
|
-
|
|
853
|
-
/**
|
|
854
|
-
* Edge-connected coplanar triangle indices as [count, i0, i1, ...].
|
|
855
|
-
* @param {number} vertex_count
|
|
856
|
-
* @param {Float64Array} buffer
|
|
857
|
-
* @param {number} face_index
|
|
858
|
-
* @returns {Float64Array}
|
|
859
|
-
*/
|
|
860
|
-
export function mesh_get_coplanar_face_indices(vertex_count, buffer, face_index) {
|
|
861
|
-
const ptr0 = passArrayF64ToWasm0(buffer, wasm.__wbindgen_malloc);
|
|
862
|
-
const len0 = WASM_VECTOR_LEN;
|
|
863
|
-
const ret = wasm.mesh_get_coplanar_face_indices(vertex_count, ptr0, len0, face_index);
|
|
864
|
-
var v2 = getArrayF64FromWasm0(ret[0], ret[1]).slice();
|
|
865
|
-
wasm.__wbindgen_free(ret[0], ret[1] * 8, 8);
|
|
866
|
-
return v2;
|
|
867
|
-
}
|
|
868
|
-
|
|
869
|
-
/**
|
|
870
|
-
* Coplanar connected face region projected to a plane basis.
|
|
871
|
-
* Output format:
|
|
872
|
-
* [faceCount, faceIndex0, faceIndex1, ..., uMin, uMax, vMin, vMax]
|
|
873
|
-
* @param {number} vertex_count
|
|
874
|
-
* @param {Float64Array} buffer
|
|
875
|
-
* @param {number} face_index
|
|
876
|
-
* @param {number} ox
|
|
877
|
-
* @param {number} oy
|
|
878
|
-
* @param {number} oz
|
|
879
|
-
* @param {number} ux
|
|
880
|
-
* @param {number} uy
|
|
881
|
-
* @param {number} uz
|
|
882
|
-
* @param {number} vx
|
|
883
|
-
* @param {number} vy
|
|
884
|
-
* @param {number} vz
|
|
885
|
-
* @param {number} margin_scale
|
|
886
|
-
* @param {number} min_margin
|
|
887
|
-
* @returns {Float64Array}
|
|
888
|
-
*/
|
|
889
|
-
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) {
|
|
890
|
-
const ptr0 = passArrayF64ToWasm0(buffer, wasm.__wbindgen_malloc);
|
|
891
|
-
const len0 = WASM_VECTOR_LEN;
|
|
892
|
-
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);
|
|
893
|
-
var v2 = getArrayF64FromWasm0(ret[0], ret[1]).slice();
|
|
894
|
-
wasm.__wbindgen_free(ret[0], ret[1] * 8, 8);
|
|
895
|
-
return v2;
|
|
896
|
-
}
|
|
897
|
-
|
|
898
|
-
/**
|
|
899
|
-
* Unique undirected triangle edges as [edgeCount, v0a, v0b, v1a, v1b, ...].
|
|
900
|
-
* @param {number} vertex_count
|
|
901
|
-
* @param {Float64Array} buffer
|
|
902
|
-
* @returns {Float64Array}
|
|
903
|
-
*/
|
|
904
|
-
export function mesh_get_edge_vertex_pairs(vertex_count, buffer) {
|
|
905
|
-
const ptr0 = passArrayF64ToWasm0(buffer, wasm.__wbindgen_malloc);
|
|
906
|
-
const len0 = WASM_VECTOR_LEN;
|
|
907
|
-
const ret = wasm.mesh_get_edge_vertex_pairs(vertex_count, ptr0, len0);
|
|
908
|
-
var v2 = getArrayF64FromWasm0(ret[0], ret[1]).slice();
|
|
909
|
-
wasm.__wbindgen_free(ret[0], ret[1] * 8, 8);
|
|
910
|
-
return v2;
|
|
911
|
-
}
|
|
912
|
-
|
|
913
|
-
/**
|
|
914
|
-
* Face area.
|
|
915
|
-
* @param {number} vertex_count
|
|
916
|
-
* @param {Float64Array} buffer
|
|
917
|
-
* @param {number} face_index
|
|
918
|
-
* @returns {number}
|
|
919
|
-
*/
|
|
920
|
-
export function mesh_get_face_area(vertex_count, buffer, face_index) {
|
|
921
|
-
const ptr0 = passArrayF64ToWasm0(buffer, wasm.__wbindgen_malloc);
|
|
922
|
-
const len0 = WASM_VECTOR_LEN;
|
|
923
|
-
const ret = wasm.mesh_get_face_area(vertex_count, ptr0, len0, face_index);
|
|
924
|
-
return ret;
|
|
925
|
-
}
|
|
926
|
-
|
|
927
|
-
/**
|
|
928
|
-
* Face centroid as [x, y, z].
|
|
929
|
-
* @param {number} vertex_count
|
|
930
|
-
* @param {Float64Array} buffer
|
|
931
|
-
* @param {number} face_index
|
|
932
|
-
* @returns {Float64Array}
|
|
933
|
-
*/
|
|
934
|
-
export function mesh_get_face_centroid(vertex_count, buffer, face_index) {
|
|
935
|
-
const ptr0 = passArrayF64ToWasm0(buffer, wasm.__wbindgen_malloc);
|
|
936
|
-
const len0 = WASM_VECTOR_LEN;
|
|
937
|
-
const ret = wasm.mesh_get_face_centroid(vertex_count, ptr0, len0, face_index);
|
|
938
|
-
var v2 = getArrayF64FromWasm0(ret[0], ret[1]).slice();
|
|
939
|
-
wasm.__wbindgen_free(ret[0], ret[1] * 8, 8);
|
|
940
|
-
return v2;
|
|
941
|
-
}
|
|
942
|
-
|
|
943
|
-
/**
|
|
944
|
-
* Face normal as [x, y, z].
|
|
945
|
-
* @param {number} vertex_count
|
|
946
|
-
* @param {Float64Array} buffer
|
|
947
|
-
* @param {number} face_index
|
|
948
|
-
* @returns {Float64Array}
|
|
949
|
-
*/
|
|
950
|
-
export function mesh_get_face_normal(vertex_count, buffer, face_index) {
|
|
951
|
-
const ptr0 = passArrayF64ToWasm0(buffer, wasm.__wbindgen_malloc);
|
|
952
|
-
const len0 = WASM_VECTOR_LEN;
|
|
953
|
-
const ret = wasm.mesh_get_face_normal(vertex_count, ptr0, len0, face_index);
|
|
954
|
-
var v2 = getArrayF64FromWasm0(ret[0], ret[1]).slice();
|
|
955
|
-
wasm.__wbindgen_free(ret[0], ret[1] * 8, 8);
|
|
956
|
-
return v2;
|
|
957
|
-
}
|
|
958
|
-
|
|
959
655
|
/**
|
|
960
656
|
* Get mesh statistics
|
|
961
657
|
* Returns [vertex_count, face_count, edge_count]
|
|
@@ -986,34 +682,6 @@ export function mesh_import_obj(obj_data) {
|
|
|
986
682
|
return v2;
|
|
987
683
|
}
|
|
988
684
|
|
|
989
|
-
/**
|
|
990
|
-
* Check if triangulated mesh is a closed volume (no welded boundary edges).
|
|
991
|
-
* @param {number} vertex_count
|
|
992
|
-
* @param {Float64Array} buffer
|
|
993
|
-
* @returns {boolean}
|
|
994
|
-
*/
|
|
995
|
-
export function mesh_is_closed_volume(vertex_count, buffer) {
|
|
996
|
-
const ptr0 = passArrayF64ToWasm0(buffer, wasm.__wbindgen_malloc);
|
|
997
|
-
const len0 = WASM_VECTOR_LEN;
|
|
998
|
-
const ret = wasm.mesh_is_closed_volume(vertex_count, ptr0, len0);
|
|
999
|
-
return ret !== 0;
|
|
1000
|
-
}
|
|
1001
|
-
|
|
1002
|
-
/**
|
|
1003
|
-
* Merge multiple mesh buffers while preserving per-mesh vertex order and index remapping.
|
|
1004
|
-
* Input format: [mesh_count, len1, mesh1..., len2, mesh2..., ...]
|
|
1005
|
-
* @param {Float64Array} mesh_data
|
|
1006
|
-
* @returns {Float64Array}
|
|
1007
|
-
*/
|
|
1008
|
-
export function mesh_merge(mesh_data) {
|
|
1009
|
-
const ptr0 = passArrayF64ToWasm0(mesh_data, wasm.__wbindgen_malloc);
|
|
1010
|
-
const len0 = WASM_VECTOR_LEN;
|
|
1011
|
-
const ret = wasm.mesh_merge(ptr0, len0);
|
|
1012
|
-
var v2 = getArrayF64FromWasm0(ret[0], ret[1]).slice();
|
|
1013
|
-
wasm.__wbindgen_free(ret[0], ret[1] * 8, 8);
|
|
1014
|
-
return v2;
|
|
1015
|
-
}
|
|
1016
|
-
|
|
1017
685
|
/**
|
|
1018
686
|
* Intersect two meshes, returning intersection polyline points.
|
|
1019
687
|
* Returns: [num_polylines, n1, x,y,z,..., n2, x,y,z,...]
|
|
@@ -1034,23 +702,6 @@ export function mesh_mesh_intersect(va_count, buffer_a, vb_count, buffer_b) {
|
|
|
1034
702
|
return v3;
|
|
1035
703
|
}
|
|
1036
704
|
|
|
1037
|
-
/**
|
|
1038
|
-
* Create a planar patch mesh from boundary points using CDT.
|
|
1039
|
-
* Correctly handles concave polygons (unlike fan triangulation).
|
|
1040
|
-
* Input: flat coordinate array [x1,y1,z1, x2,y2,z2, ...]
|
|
1041
|
-
* Output: mesh buffer [vertexCount, x1,y1,z1,..., i0,i1,i2, ...]
|
|
1042
|
-
* @param {Float64Array} coords
|
|
1043
|
-
* @returns {Float64Array}
|
|
1044
|
-
*/
|
|
1045
|
-
export function mesh_patch_from_points(coords) {
|
|
1046
|
-
const ptr0 = passArrayF64ToWasm0(coords, wasm.__wbindgen_malloc);
|
|
1047
|
-
const len0 = WASM_VECTOR_LEN;
|
|
1048
|
-
const ret = wasm.mesh_patch_from_points(ptr0, len0);
|
|
1049
|
-
var v2 = getArrayF64FromWasm0(ret[0], ret[1]).slice();
|
|
1050
|
-
wasm.__wbindgen_free(ret[0], ret[1] * 8, 8);
|
|
1051
|
-
return v2;
|
|
1052
|
-
}
|
|
1053
|
-
|
|
1054
705
|
/**
|
|
1055
706
|
* Intersect a mesh with a plane, returning polyline points.
|
|
1056
707
|
* Input: vertex_count, mesh_buffer..., nx, ny, nz, d
|
|
@@ -1072,95 +723,6 @@ export function mesh_plane_intersect(vertex_count, buffer, nx, ny, nz, d) {
|
|
|
1072
723
|
return v2;
|
|
1073
724
|
}
|
|
1074
725
|
|
|
1075
|
-
/**
|
|
1076
|
-
* Shift closed boolean cutter curve and adjust height.
|
|
1077
|
-
* Returns [height, epsilon, pointCount, x,y,z,...]
|
|
1078
|
-
* @param {Float64Array} coords
|
|
1079
|
-
* @param {boolean} closed
|
|
1080
|
-
* @param {number} nx
|
|
1081
|
-
* @param {number} ny
|
|
1082
|
-
* @param {number} nz
|
|
1083
|
-
* @param {number} height
|
|
1084
|
-
* @returns {Float64Array}
|
|
1085
|
-
*/
|
|
1086
|
-
export function mesh_prepare_boolean_cutter_curve(coords, closed, nx, ny, nz, height) {
|
|
1087
|
-
const ptr0 = passArrayF64ToWasm0(coords, wasm.__wbindgen_malloc);
|
|
1088
|
-
const len0 = WASM_VECTOR_LEN;
|
|
1089
|
-
const ret = wasm.mesh_prepare_boolean_cutter_curve(ptr0, len0, closed, nx, ny, nz, height);
|
|
1090
|
-
var v2 = getArrayF64FromWasm0(ret[0], ret[1]).slice();
|
|
1091
|
-
wasm.__wbindgen_free(ret[0], ret[1] * 8, 8);
|
|
1092
|
-
return v2;
|
|
1093
|
-
}
|
|
1094
|
-
|
|
1095
|
-
/**
|
|
1096
|
-
* Raycast against mesh and return closest hit.
|
|
1097
|
-
* Output: [] when no hit, otherwise [pointX,pointY,pointZ, normalX,normalY,normalZ, faceIndex, distance]
|
|
1098
|
-
* @param {number} vertex_count
|
|
1099
|
-
* @param {Float64Array} buffer
|
|
1100
|
-
* @param {number} ox
|
|
1101
|
-
* @param {number} oy
|
|
1102
|
-
* @param {number} oz
|
|
1103
|
-
* @param {number} dx
|
|
1104
|
-
* @param {number} dy
|
|
1105
|
-
* @param {number} dz
|
|
1106
|
-
* @param {number} max_distance
|
|
1107
|
-
* @returns {Float64Array}
|
|
1108
|
-
*/
|
|
1109
|
-
export function mesh_raycast(vertex_count, buffer, ox, oy, oz, dx, dy, dz, max_distance) {
|
|
1110
|
-
const ptr0 = passArrayF64ToWasm0(buffer, wasm.__wbindgen_malloc);
|
|
1111
|
-
const len0 = WASM_VECTOR_LEN;
|
|
1112
|
-
const ret = wasm.mesh_raycast(vertex_count, ptr0, len0, ox, oy, oz, dx, dy, dz, max_distance);
|
|
1113
|
-
var v2 = getArrayF64FromWasm0(ret[0], ret[1]).slice();
|
|
1114
|
-
wasm.__wbindgen_free(ret[0], ret[1] * 8, 8);
|
|
1115
|
-
return v2;
|
|
1116
|
-
}
|
|
1117
|
-
|
|
1118
|
-
/**
|
|
1119
|
-
* Raycast against mesh and return all hits sorted by distance.
|
|
1120
|
-
* Output: [hitCount, (point, normal, faceIndex, distance)*]
|
|
1121
|
-
* @param {number} vertex_count
|
|
1122
|
-
* @param {Float64Array} buffer
|
|
1123
|
-
* @param {number} ox
|
|
1124
|
-
* @param {number} oy
|
|
1125
|
-
* @param {number} oz
|
|
1126
|
-
* @param {number} dx
|
|
1127
|
-
* @param {number} dy
|
|
1128
|
-
* @param {number} dz
|
|
1129
|
-
* @param {number} max_distance
|
|
1130
|
-
* @returns {Float64Array}
|
|
1131
|
-
*/
|
|
1132
|
-
export function mesh_raycast_all(vertex_count, buffer, ox, oy, oz, dx, dy, dz, max_distance) {
|
|
1133
|
-
const ptr0 = passArrayF64ToWasm0(buffer, wasm.__wbindgen_malloc);
|
|
1134
|
-
const len0 = WASM_VECTOR_LEN;
|
|
1135
|
-
const ret = wasm.mesh_raycast_all(vertex_count, ptr0, len0, ox, oy, oz, dx, dy, dz, max_distance);
|
|
1136
|
-
var v2 = getArrayF64FromWasm0(ret[0], ret[1]).slice();
|
|
1137
|
-
wasm.__wbindgen_free(ret[0], ret[1] * 8, 8);
|
|
1138
|
-
return v2;
|
|
1139
|
-
}
|
|
1140
|
-
|
|
1141
|
-
/**
|
|
1142
|
-
* Raycast against many meshes packed as:
|
|
1143
|
-
* [meshCount, meshLen0, meshRaw0..., meshLen1, meshRaw1..., ...]
|
|
1144
|
-
* Output: [hitCount, meshIndex, pointX,pointY,pointZ, normalX,normalY,normalZ, faceIndex, distance, ...]
|
|
1145
|
-
* @param {Float64Array} mesh_data
|
|
1146
|
-
* @param {number} ox
|
|
1147
|
-
* @param {number} oy
|
|
1148
|
-
* @param {number} oz
|
|
1149
|
-
* @param {number} dx
|
|
1150
|
-
* @param {number} dy
|
|
1151
|
-
* @param {number} dz
|
|
1152
|
-
* @param {number} max_distance
|
|
1153
|
-
* @returns {Float64Array}
|
|
1154
|
-
*/
|
|
1155
|
-
export function mesh_raycast_many(mesh_data, ox, oy, oz, dx, dy, dz, max_distance) {
|
|
1156
|
-
const ptr0 = passArrayF64ToWasm0(mesh_data, wasm.__wbindgen_malloc);
|
|
1157
|
-
const len0 = WASM_VECTOR_LEN;
|
|
1158
|
-
const ret = wasm.mesh_raycast_many(ptr0, len0, ox, oy, oz, dx, dy, dz, max_distance);
|
|
1159
|
-
var v2 = getArrayF64FromWasm0(ret[0], ret[1]).slice();
|
|
1160
|
-
wasm.__wbindgen_free(ret[0], ret[1] * 8, 8);
|
|
1161
|
-
return v2;
|
|
1162
|
-
}
|
|
1163
|
-
|
|
1164
726
|
/**
|
|
1165
727
|
* Rotate a mesh around an arbitrary axis and return new buffers
|
|
1166
728
|
* Axis is defined by (ax, ay, az), angle in radians
|
package/wasm/package.json
CHANGED
|
@@ -9,13 +9,11 @@
|
|
|
9
9
|
"files": [
|
|
10
10
|
"okgeometrycore_bg.wasm",
|
|
11
11
|
"okgeometrycore.js",
|
|
12
|
-
"okgeometrycore_bg.js",
|
|
13
12
|
"okgeometrycore.d.ts"
|
|
14
13
|
],
|
|
15
14
|
"main": "okgeometrycore.js",
|
|
16
15
|
"types": "okgeometrycore.d.ts",
|
|
17
16
|
"sideEffects": [
|
|
18
|
-
"./okgeometrycore.js",
|
|
19
17
|
"./snippets/*"
|
|
20
18
|
]
|
|
21
19
|
}
|