libigl 2.6.2.dev0__tar.gz → 2.6.3.dev2__tar.gz
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.
- {libigl-2.6.2.dev0 → libigl-2.6.3.dev2}/.github/workflows/wheels.yml +14 -8
- {libigl-2.6.2.dev0 → libigl-2.6.3.dev2}/.gitignore +1 -0
- {libigl-2.6.2.dev0 → libigl-2.6.3.dev2}/PKG-INFO +4 -2
- {libigl-2.6.2.dev0 → libigl-2.6.3.dev2}/README.md +3 -1
- libigl-2.6.3.dev2/memory/MEMORY.md +26 -0
- {libigl-2.6.2.dev0 → libigl-2.6.3.dev2}/pyproject.toml +2 -3
- libigl-2.6.3.dev2/src/accumarray.cpp +48 -0
- libigl-2.6.3.dev2/src/barycentric_interpolation.cpp +36 -0
- libigl-2.6.3.dev2/src/bezier.cpp +48 -0
- libigl-2.6.3.dev2/src/bounding_box_diagonal.cpp +25 -0
- libigl-2.6.3.dev2/src/centroid.cpp +40 -0
- libigl-2.6.3.dev2/src/colormap.cpp +62 -0
- libigl-2.6.3.dev2/src/comb_cross_field.cpp +39 -0
- libigl-2.6.3.dev2/src/comb_frame_field.cpp +47 -0
- libigl-2.6.3.dev2/src/combine.cpp +33 -0
- libigl-2.6.3.dev2/src/compute_frame_field_bisectors.cpp +71 -0
- libigl-2.6.3.dev2/src/copyleft/cgal/coplanar.cpp +24 -0
- libigl-2.6.3.dev2/src/copyleft/cgal/delaunay_triangulation.cpp +26 -0
- libigl-2.6.3.dev2/src/copyleft/cgal/extract_cells.cpp +35 -0
- libigl-2.6.3.dev2/src/copyleft/cgal/outer_hull.cpp +42 -0
- libigl-2.6.3.dev2/src/copyleft/cgal/peel_outer_hull_layers.cpp +36 -0
- libigl-2.6.3.dev2/src/copyleft/cgal/peel_winding_number_layers.cpp +34 -0
- libigl-2.6.3.dev2/src/copyleft/marching_cubes.cpp +68 -0
- libigl-2.6.3.dev2/src/copyleft/quadprog.cpp +49 -0
- libigl-2.6.3.dev2/src/copyleft/tetgen/cdt.cpp +57 -0
- libigl-2.6.3.dev2/src/copyleft/tetgen/mesh_with_skeleton.cpp +61 -0
- libigl-2.6.3.dev2/src/cross_field_mismatch.cpp +45 -0
- libigl-2.6.3.dev2/src/curved_hessian_energy.cpp +46 -0
- libigl-2.6.3.dev2/src/dijkstra.cpp +84 -0
- libigl-2.6.3.dev2/src/directed_edge_parents.cpp +26 -0
- libigl-2.6.3.dev2/src/edge_topology.cpp +32 -0
- libigl-2.6.3.dev2/src/edges_to_path.cpp +36 -0
- libigl-2.6.3.dev2/src/embree/bone_visible.cpp +40 -0
- libigl-2.6.3.dev2/src/embree/line_mesh_intersection.cpp +44 -0
- libigl-2.6.3.dev2/src/euler_characteristic.cpp +20 -0
- libigl-2.6.3.dev2/src/exterior_edges.cpp +26 -0
- libigl-2.6.3.dev2/src/extract_manifold_patches.cpp +30 -0
- libigl-2.6.3.dev2/src/face_occurrences.cpp +26 -0
- libigl-2.6.3.dev2/src/find_cross_field_singularities.cpp +64 -0
- libigl-2.6.3.dev2/src/fit_plane.cpp +30 -0
- libigl-2.6.3.dev2/src/flipped_triangles.cpp +29 -0
- libigl-2.6.3.dev2/src/flood_fill.cpp +31 -0
- {libigl-2.6.2.dev0 → libigl-2.6.3.dev2}/src/harmonic.cpp +24 -1
- libigl-2.6.3.dev2/src/hausdorff.cpp +37 -0
- libigl-2.6.3.dev2/src/hessian.cpp +48 -0
- libigl-2.6.3.dev2/src/hessian_energy.cpp +47 -0
- libigl-2.6.3.dev2/src/hsv_to_rgb.cpp +26 -0
- libigl-2.6.3.dev2/src/is_boundary_edge.cpp +55 -0
- libigl-2.6.3.dev2/src/is_delaunay.cpp +30 -0
- libigl-2.6.3.dev2/src/is_intrinsic_delaunay.cpp +33 -0
- libigl-2.6.3.dev2/src/is_irregular_vertex.cpp +22 -0
- libigl-2.6.3.dev2/src/iterative_closest_point.cpp +45 -0
- libigl-2.6.3.dev2/src/lbs_matrix.cpp +34 -0
- libigl-2.6.3.dev2/src/look_at.cpp +36 -0
- libigl-2.6.3.dev2/src/mvc.cpp +31 -0
- libigl-2.6.3.dev2/src/orient_outward.cpp +39 -0
- libigl-2.6.3.dev2/src/orientable_patches.cpp +45 -0
- libigl-2.6.3.dev2/src/per_corner_normals.cpp +34 -0
- libigl-2.6.3.dev2/src/per_edge_normals.cpp +47 -0
- libigl-2.6.3.dev2/src/per_vertex_attribute_smoothing.cpp +32 -0
- libigl-2.6.3.dev2/src/polar_dec.cpp +57 -0
- libigl-2.6.3.dev2/src/procrustes.cpp +41 -0
- libigl-2.6.3.dev2/src/pseudonormal_test.cpp +56 -0
- libigl-2.6.3.dev2/src/random_dir.cpp +28 -0
- libigl-2.6.3.dev2/src/ray_sphere_intersect.cpp +41 -0
- libigl-2.6.3.dev2/src/ray_triangle_intersect.cpp +50 -0
- libigl-2.6.3.dev2/src/readCSV.cpp +29 -0
- libigl-2.6.3.dev2/src/readSTL.cpp +42 -0
- libigl-2.6.3.dev2/src/rgb_to_hsv.cpp +26 -0
- libigl-2.6.3.dev2/src/rigid_alignment.cpp +36 -0
- libigl-2.6.3.dev2/src/rotate_vectors.cpp +28 -0
- libigl-2.6.3.dev2/src/rotation_matrix_from_directions.cpp +31 -0
- libigl-2.6.3.dev2/src/sample_edges.cpp +34 -0
- libigl-2.6.3.dev2/src/segment_segment_intersect.cpp +49 -0
- libigl-2.6.3.dev2/src/sharp_edges.cpp +32 -0
- libigl-2.6.3.dev2/src/signed_angle.cpp +32 -0
- libigl-2.6.3.dev2/src/snap_points.cpp +34 -0
- libigl-2.6.3.dev2/src/solid_angle.cpp +35 -0
- libigl-2.6.3.dev2/src/super_fibonacci.cpp +28 -0
- libigl-2.6.3.dev2/src/tet_tet_adjacency.cpp +30 -0
- libigl-2.6.3.dev2/src/tri_tri_intersect.cpp +73 -0
- libigl-2.6.3.dev2/src/triangle/cdt.cpp +47 -0
- libigl-2.6.3.dev2/src/triangle/refine.cpp +39 -0
- libigl-2.6.3.dev2/src/turning_number.cpp +20 -0
- libigl-2.6.3.dev2/src/uniformly_sample_two_manifold.cpp +38 -0
- libigl-2.6.3.dev2/src/vector_area_matrix.cpp +29 -0
- libigl-2.6.3.dev2/src/voronoi_mass.cpp +29 -0
- libigl-2.6.3.dev2/src/writeOFF.cpp +52 -0
- libigl-2.6.3.dev2/src/writeSTL.cpp +37 -0
- libigl-2.6.3.dev2/tests/test_all.py +1375 -0
- libigl-2.6.2.dev0/tests/test_all.py +0 -592
- {libigl-2.6.2.dev0 → libigl-2.6.3.dev2}/.github/workflows/pip.yml +0 -0
- {libigl-2.6.2.dev0 → libigl-2.6.3.dev2}/CMakeLists.txt +0 -0
- {libigl-2.6.2.dev0 → libigl-2.6.3.dev2}/LICENSE.GPL +0 -0
- {libigl-2.6.2.dev0 → libigl-2.6.3.dev2}/LICENSE.MPL2 +0 -0
- {libigl-2.6.2.dev0 → libigl-2.6.3.dev2}/attic/copyleft/tetgen_tetrahedralize.cpp +0 -0
- {libigl-2.6.2.dev0 → libigl-2.6.3.dev2}/attic/copyleft/triangle_triangulate.cpp +0 -0
- {libigl-2.6.2.dev0 → libigl-2.6.3.dev2}/attic/skip/SolverStatus.cpp +0 -0
- {libigl-2.6.2.dev0 → libigl-2.6.3.dev2}/attic/skip/WindingNumberMethod.cpp +0 -0
- {libigl-2.6.2.dev0 → libigl-2.6.3.dev2}/attic/skip/angular_distance.cpp +0 -0
- {libigl-2.6.2.dev0 → libigl-2.6.3.dev2}/attic/skip/canonical_quaternions.cpp +0 -0
- {libigl-2.6.2.dev0 → libigl-2.6.3.dev2}/attic/skip/column_to_quats.cpp +0 -0
- {libigl-2.6.2.dev0 → libigl-2.6.3.dev2}/attic/skip/comiso_nrosy.cpp +0 -0
- {libigl-2.6.2.dev0 → libigl-2.6.3.dev2}/attic/skip/covariance_scatter_matrix.cpp +0 -0
- {libigl-2.6.2.dev0 → libigl-2.6.3.dev2}/attic/skip/file_contents_as_string.cpp +0 -0
- {libigl-2.6.2.dev0 → libigl-2.6.3.dev2}/attic/skip/fit_rotations.cpp +0 -0
- {libigl-2.6.2.dev0 → libigl-2.6.3.dev2}/attic/skip/frame_field_deformer.cpp +0 -0
- {libigl-2.6.2.dev0 → libigl-2.6.3.dev2}/attic/skip/frame_to_cross_field.cpp +0 -0
- {libigl-2.6.2.dev0 → libigl-2.6.3.dev2}/attic/skip/frustum.cpp +0 -0
- {libigl-2.6.2.dev0 → libigl-2.6.3.dev2}/attic/skip/group_sum_matrix.cpp +0 -0
- {libigl-2.6.2.dev0 → libigl-2.6.3.dev2}/attic/skip/harwell_boeing.cpp +0 -0
- {libigl-2.6.2.dev0 → libigl-2.6.3.dev2}/attic/skip/histc.cpp +0 -0
- {libigl-2.6.2.dev0 → libigl-2.6.3.dev2}/attic/skip/hsv_to_rgb.cpp +0 -0
- {libigl-2.6.2.dev0 → libigl-2.6.3.dev2}/attic/skip/infinite_cost_stopping_condition.cpp +0 -0
- {libigl-2.6.2.dev0 → libigl-2.6.3.dev2}/attic/skip/intersect.cpp +0 -0
- {libigl-2.6.2.dev0 → libigl-2.6.3.dev2}/attic/skip/invert_diag.cpp +0 -0
- {libigl-2.6.2.dev0 → libigl-2.6.3.dev2}/attic/skip/is_planar.cpp +0 -0
- {libigl-2.6.2.dev0 → libigl-2.6.3.dev2}/attic/skip/limit_faces.cpp +0 -0
- {libigl-2.6.2.dev0 → libigl-2.6.3.dev2}/attic/skip/line_field_missmatch.cpp +0 -0
- {libigl-2.6.2.dev0 → libigl-2.6.3.dev2}/attic/skip/line_search.cpp +0 -0
- {libigl-2.6.2.dev0 → libigl-2.6.3.dev2}/attic/skip/mat_to_quat.cpp +0 -0
- {libigl-2.6.2.dev0 → libigl-2.6.3.dev2}/attic/skip/material_colors.cpp +0 -0
- {libigl-2.6.2.dev0 → libigl-2.6.3.dev2}/attic/skip/max_faces_stopping_condition.cpp +0 -0
- {libigl-2.6.2.dev0 → libigl-2.6.3.dev2}/attic/skip/min_quad_dense.cpp +0 -0
- {libigl-2.6.2.dev0 → libigl-2.6.3.dev2}/attic/skip/normalize_quat.cpp +0 -0
- {libigl-2.6.2.dev0 → libigl-2.6.3.dev2}/attic/skip/on_boundary.cpp +0 -0
- {libigl-2.6.2.dev0 → libigl-2.6.3.dev2}/attic/skip/opengl2_draw_beach_ball.cpp +0 -0
- {libigl-2.6.2.dev0 → libigl-2.6.3.dev2}/attic/skip/opengl2_draw_floor.cpp +0 -0
- {libigl-2.6.2.dev0 → libigl-2.6.3.dev2}/attic/skip/opengl2_draw_mesh.cpp +0 -0
- {libigl-2.6.2.dev0 → libigl-2.6.3.dev2}/attic/skip/opengl2_draw_point.cpp +0 -0
- {libigl-2.6.2.dev0 → libigl-2.6.3.dev2}/attic/skip/opengl2_draw_rectangular_marquee.cpp +0 -0
- {libigl-2.6.2.dev0 → libigl-2.6.3.dev2}/attic/skip/opengl2_draw_skeleton_3d.cpp +0 -0
- {libigl-2.6.2.dev0 → libigl-2.6.3.dev2}/attic/skip/opengl2_draw_skeleton_vector_graphics.cpp +0 -0
- {libigl-2.6.2.dev0 → libigl-2.6.3.dev2}/attic/skip/opengl2_flare_textures.cpp +0 -0
- {libigl-2.6.2.dev0 → libigl-2.6.3.dev2}/attic/skip/opengl2_model_proj_viewport.cpp +0 -0
- {libigl-2.6.2.dev0 → libigl-2.6.3.dev2}/attic/skip/opengl2_print_gl_get.cpp +0 -0
- {libigl-2.6.2.dev0 → libigl-2.6.3.dev2}/attic/skip/opengl2_project.cpp +0 -0
- {libigl-2.6.2.dev0 → libigl-2.6.3.dev2}/attic/skip/opengl2_right_axis.cpp +0 -0
- {libigl-2.6.2.dev0 → libigl-2.6.3.dev2}/attic/skip/opengl2_shine_textures.cpp +0 -0
- {libigl-2.6.2.dev0 → libigl-2.6.3.dev2}/attic/skip/opengl2_sort_triangles.cpp +0 -0
- {libigl-2.6.2.dev0 → libigl-2.6.3.dev2}/attic/skip/opengl2_unproject.cpp +0 -0
- {libigl-2.6.2.dev0 → libigl-2.6.3.dev2}/attic/skip/opengl2_unproject_to_zero_plane.cpp +0 -0
- {libigl-2.6.2.dev0 → libigl-2.6.3.dev2}/attic/skip/opengl2_up_axis.cpp +0 -0
- {libigl-2.6.2.dev0 → libigl-2.6.3.dev2}/attic/skip/opengl2_view_axis.cpp +0 -0
- {libigl-2.6.2.dev0 → libigl-2.6.3.dev2}/attic/skip/opengl_create_shader_program.cpp +0 -0
- {libigl-2.6.2.dev0 → libigl-2.6.3.dev2}/attic/skip/opengl_destroy_shader_program.cpp +0 -0
- {libigl-2.6.2.dev0 → libigl-2.6.3.dev2}/attic/skip/opengl_gl_type_size.cpp +0 -0
- {libigl-2.6.2.dev0 → libigl-2.6.3.dev2}/attic/skip/opengl_glfw_background_window.cpp +0 -0
- {libigl-2.6.2.dev0 → libigl-2.6.3.dev2}/attic/skip/opengl_glfw_imgui_ImGuiHelpers.cpp +0 -0
- {libigl-2.6.2.dev0 → libigl-2.6.3.dev2}/attic/skip/opengl_init_render_to_texture.cpp +0 -0
- {libigl-2.6.2.dev0 → libigl-2.6.3.dev2}/attic/skip/opengl_load_shader.cpp +0 -0
- {libigl-2.6.2.dev0 → libigl-2.6.3.dev2}/attic/skip/opengl_print_program_info_log.cpp +0 -0
- {libigl-2.6.2.dev0 → libigl-2.6.3.dev2}/attic/skip/opengl_print_shader_info_log.cpp +0 -0
- {libigl-2.6.2.dev0 → libigl-2.6.3.dev2}/attic/skip/opengl_report_gl_error.cpp +0 -0
- {libigl-2.6.2.dev0 → libigl-2.6.3.dev2}/attic/skip/opengl_uniform_type_to_string.cpp +0 -0
- {libigl-2.6.2.dev0 → libigl-2.6.3.dev2}/attic/skip/ortho.cpp +0 -0
- {libigl-2.6.2.dev0 → libigl-2.6.3.dev2}/attic/skip/parallel_transport_angles.cpp +0 -0
- {libigl-2.6.2.dev0 → libigl-2.6.3.dev2}/attic/skip/polar_svd.cpp +0 -0
- {libigl-2.6.2.dev0 → libigl-2.6.3.dev2}/attic/skip/polar_svd3x3.cpp +0 -0
- {libigl-2.6.2.dev0 → libigl-2.6.3.dev2}/attic/skip/qslim_optimal_collapse_edge_callbacks.cpp +0 -0
- {libigl-2.6.2.dev0 → libigl-2.6.3.dev2}/attic/skip/quadric_binary_plus_operator.cpp +0 -0
- {libigl-2.6.2.dev0 → libigl-2.6.3.dev2}/attic/skip/quat_conjugate.cpp +0 -0
- {libigl-2.6.2.dev0 → libigl-2.6.3.dev2}/attic/skip/quat_mult.cpp +0 -0
- {libigl-2.6.2.dev0 → libigl-2.6.3.dev2}/attic/skip/quat_to_axis_angle.cpp +0 -0
- {libigl-2.6.2.dev0 → libigl-2.6.3.dev2}/attic/skip/quat_to_mat.cpp +0 -0
- {libigl-2.6.2.dev0 → libigl-2.6.3.dev2}/attic/skip/quats_to_column.cpp +0 -0
- {libigl-2.6.2.dev0 → libigl-2.6.3.dev2}/attic/skip/random_quaternion.cpp +0 -0
- {libigl-2.6.2.dev0 → libigl-2.6.3.dev2}/attic/skip/readBF.cpp +0 -0
- {libigl-2.6.2.dev0 → libigl-2.6.3.dev2}/attic/skip/readNODE.cpp +0 -0
- {libigl-2.6.2.dev0 → libigl-2.6.3.dev2}/attic/skip/readPLY.cpp +0 -0
- {libigl-2.6.2.dev0 → libigl-2.6.3.dev2}/attic/skip/readSTL.cpp +0 -0
- {libigl-2.6.2.dev0 → libigl-2.6.3.dev2}/attic/skip/rgb_to_hsv.cpp +0 -0
- {libigl-2.6.2.dev0 → libigl-2.6.3.dev2}/attic/skip/rotate_by_quat.cpp +0 -0
- {libigl-2.6.2.dev0 → libigl-2.6.3.dev2}/attic/skip/rotation_matrix_from_directions.cpp +0 -0
- {libigl-2.6.2.dev0 → libigl-2.6.3.dev2}/attic/skip/snap_to_canonical_view_quat.cpp +0 -0
- {libigl-2.6.2.dev0 → libigl-2.6.3.dev2}/attic/skip/snap_to_fixed_up.cpp +0 -0
- {libigl-2.6.2.dev0 → libigl-2.6.3.dev2}/attic/skip/sort_angles.cpp +0 -0
- {libigl-2.6.2.dev0 → libigl-2.6.3.dev2}/attic/skip/sort_triangles.cpp +0 -0
- {libigl-2.6.2.dev0 → libigl-2.6.3.dev2}/attic/skip/sort_vectors_ccw.cpp +0 -0
- {libigl-2.6.2.dev0 → libigl-2.6.3.dev2}/attic/skip/svd3x3.cpp +0 -0
- {libigl-2.6.2.dev0 → libigl-2.6.3.dev2}/attic/skip/svd3x3_avx.cpp +0 -0
- {libigl-2.6.2.dev0 → libigl-2.6.3.dev2}/attic/skip/svd3x3_sse.cpp +0 -0
- {libigl-2.6.2.dev0 → libigl-2.6.3.dev2}/attic/skip/trackball.cpp +0 -0
- {libigl-2.6.2.dev0 → libigl-2.6.3.dev2}/attic/skip/transpose_blocks.cpp +0 -0
- {libigl-2.6.2.dev0 → libigl-2.6.3.dev2}/attic/skip/unique_rows.cpp +0 -0
- {libigl-2.6.2.dev0 → libigl-2.6.3.dev2}/attic/skip/voxel_grid.cpp +0 -0
- {libigl-2.6.2.dev0 → libigl-2.6.3.dev2}/attic/skip/writePLY.cpp +0 -0
- {libigl-2.6.2.dev0 → libigl-2.6.3.dev2}/attic/skip/writeSTL.cpp +0 -0
- {libigl-2.6.2.dev0 → libigl-2.6.3.dev2}/attic/skip/writeWRL.cpp +0 -0
- {libigl-2.6.2.dev0 → libigl-2.6.3.dev2}/attic/todo-old/MeshBooleanType.cpp +0 -0
- {libigl-2.6.2.dev0 → libigl-2.6.3.dev2}/attic/todo-old/NormalType.cpp +0 -0
- {libigl-2.6.2.dev0 → libigl-2.6.3.dev2}/attic/todo-old/collapse_edge.cpp +0 -0
- {libigl-2.6.2.dev0 → libigl-2.6.3.dev2}/attic/todo-old/copyleft/copyleft_cgal_assign.cpp +0 -0
- {libigl-2.6.2.dev0 → libigl-2.6.3.dev2}/attic/todo-old/copyleft/copyleft_cgal_assign_scalar.cpp +0 -0
- {libigl-2.6.2.dev0 → libigl-2.6.3.dev2}/attic/todo-old/copyleft/copyleft_cgal_cell_adjacency.cpp +0 -0
- {libigl-2.6.2.dev0 → libigl-2.6.3.dev2}/attic/todo-old/copyleft/copyleft_cgal_closest_facet.cpp +0 -0
- {libigl-2.6.2.dev0 → libigl-2.6.3.dev2}/attic/todo-old/copyleft/copyleft_cgal_complex_to_mesh.cpp +0 -0
- {libigl-2.6.2.dev0 → libigl-2.6.3.dev2}/attic/todo-old/copyleft/copyleft_cgal_component_inside_component.cpp +0 -0
- {libigl-2.6.2.dev0 → libigl-2.6.3.dev2}/attic/todo-old/copyleft/copyleft_cgal_convex_hull.cpp +0 -0
- {libigl-2.6.2.dev0 → libigl-2.6.3.dev2}/attic/todo-old/copyleft/copyleft_cgal_delaunay_triangulation.cpp +0 -0
- {libigl-2.6.2.dev0 → libigl-2.6.3.dev2}/attic/todo-old/copyleft/copyleft_cgal_extract_cells.cpp +0 -0
- {libigl-2.6.2.dev0 → libigl-2.6.3.dev2}/attic/todo-old/copyleft/copyleft_cgal_extract_feature.cpp +0 -0
- {libigl-2.6.2.dev0 → libigl-2.6.3.dev2}/attic/todo-old/copyleft/copyleft_cgal_fast_winding_number.cpp +0 -0
- {libigl-2.6.2.dev0 → libigl-2.6.3.dev2}/attic/todo-old/copyleft/copyleft_cgal_half_space_box.cpp +0 -0
- {libigl-2.6.2.dev0 → libigl-2.6.3.dev2}/attic/todo-old/copyleft/copyleft_cgal_hausdorff.cpp +0 -0
- {libigl-2.6.2.dev0 → libigl-2.6.3.dev2}/attic/todo-old/copyleft/copyleft_cgal_incircle.cpp +0 -0
- {libigl-2.6.2.dev0 → libigl-2.6.3.dev2}/attic/todo-old/copyleft/copyleft_cgal_insert_into_cdt.cpp +0 -0
- {libigl-2.6.2.dev0 → libigl-2.6.3.dev2}/attic/todo-old/copyleft/copyleft_cgal_insphere.cpp +0 -0
- {libigl-2.6.2.dev0 → libigl-2.6.3.dev2}/attic/todo-old/copyleft/copyleft_cgal_intersect_other.cpp +0 -0
- {libigl-2.6.2.dev0 → libigl-2.6.3.dev2}/attic/todo-old/copyleft/copyleft_cgal_intersect_with_half_space.cpp +0 -0
- {libigl-2.6.2.dev0 → libigl-2.6.3.dev2}/attic/todo-old/copyleft/copyleft_cgal_lexicographic_triangulation.cpp +0 -0
- {libigl-2.6.2.dev0 → libigl-2.6.3.dev2}/attic/todo-old/copyleft/copyleft_cgal_mesh_boolean.cpp +0 -0
- {libigl-2.6.2.dev0 → libigl-2.6.3.dev2}/attic/todo-old/copyleft/copyleft_cgal_mesh_boolean_type_to_funcs.cpp +0 -0
- {libigl-2.6.2.dev0 → libigl-2.6.3.dev2}/attic/todo-old/copyleft/copyleft_cgal_mesh_to_cgal_triangle_list.cpp +0 -0
- {libigl-2.6.2.dev0 → libigl-2.6.3.dev2}/attic/todo-old/copyleft/copyleft_cgal_mesh_to_polyhedron.cpp +0 -0
- {libigl-2.6.2.dev0 → libigl-2.6.3.dev2}/attic/todo-old/copyleft/copyleft_cgal_minkowski_sum.cpp +0 -0
- {libigl-2.6.2.dev0 → libigl-2.6.3.dev2}/attic/todo-old/copyleft/copyleft_cgal_order_facets_around_edge.cpp +0 -0
- {libigl-2.6.2.dev0 → libigl-2.6.3.dev2}/attic/todo-old/copyleft/copyleft_cgal_order_facets_around_edges.cpp +0 -0
- {libigl-2.6.2.dev0 → libigl-2.6.3.dev2}/attic/todo-old/copyleft/copyleft_cgal_orient2D.cpp +0 -0
- {libigl-2.6.2.dev0 → libigl-2.6.3.dev2}/attic/todo-old/copyleft/copyleft_cgal_orient3D.cpp +0 -0
- {libigl-2.6.2.dev0 → libigl-2.6.3.dev2}/attic/todo-old/copyleft/copyleft_cgal_outer_element.cpp +0 -0
- {libigl-2.6.2.dev0 → libigl-2.6.3.dev2}/attic/todo-old/copyleft/copyleft_cgal_outer_facet.cpp +0 -0
- {libigl-2.6.2.dev0 → libigl-2.6.3.dev2}/attic/todo-old/copyleft/copyleft_cgal_outer_hull.cpp +0 -0
- {libigl-2.6.2.dev0 → libigl-2.6.3.dev2}/attic/todo-old/copyleft/copyleft_cgal_peel_outer_hull_layers.cpp +0 -0
- {libigl-2.6.2.dev0 → libigl-2.6.3.dev2}/attic/todo-old/copyleft/copyleft_cgal_peel_winding_number_layers.cpp +0 -0
- {libigl-2.6.2.dev0 → libigl-2.6.3.dev2}/attic/todo-old/copyleft/copyleft_cgal_piecewise_constant_winding_number.cpp +0 -0
- {libigl-2.6.2.dev0 → libigl-2.6.3.dev2}/attic/todo-old/copyleft/copyleft_cgal_point_areas.cpp +0 -0
- {libigl-2.6.2.dev0 → libigl-2.6.3.dev2}/attic/todo-old/copyleft/copyleft_cgal_point_mesh_squared_distance.cpp +0 -0
- {libigl-2.6.2.dev0 → libigl-2.6.3.dev2}/attic/todo-old/copyleft/copyleft_cgal_point_segment_squared_distance.cpp +0 -0
- {libigl-2.6.2.dev0 → libigl-2.6.3.dev2}/attic/todo-old/copyleft/copyleft_cgal_point_solid_signed_squared_distance.cpp +0 -0
- {libigl-2.6.2.dev0 → libigl-2.6.3.dev2}/attic/todo-old/copyleft/copyleft_cgal_point_triangle_squared_distance.cpp +0 -0
- {libigl-2.6.2.dev0 → libigl-2.6.3.dev2}/attic/todo-old/copyleft/copyleft_cgal_points_inside_component.cpp +0 -0
- {libigl-2.6.2.dev0 → libigl-2.6.3.dev2}/attic/todo-old/copyleft/copyleft_cgal_polyhedron_to_mesh.cpp +0 -0
- {libigl-2.6.2.dev0 → libigl-2.6.3.dev2}/attic/todo-old/copyleft/copyleft_cgal_projected_cdt.cpp +0 -0
- {libigl-2.6.2.dev0 → libigl-2.6.3.dev2}/attic/todo-old/copyleft/copyleft_cgal_projected_delaunay.cpp +0 -0
- {libigl-2.6.2.dev0 → libigl-2.6.3.dev2}/attic/todo-old/copyleft/copyleft_cgal_propagate_winding_numbers.cpp +0 -0
- {libigl-2.6.2.dev0 → libigl-2.6.3.dev2}/attic/todo-old/copyleft/copyleft_cgal_read_triangle_mesh.cpp +0 -0
- {libigl-2.6.2.dev0 → libigl-2.6.3.dev2}/attic/todo-old/copyleft/copyleft_cgal_relabel_small_immersed_cells.cpp +0 -0
- {libigl-2.6.2.dev0 → libigl-2.6.3.dev2}/attic/todo-old/copyleft/copyleft_cgal_remesh_intersections.cpp +0 -0
- {libigl-2.6.2.dev0 → libigl-2.6.3.dev2}/attic/todo-old/copyleft/copyleft_cgal_remesh_self_intersections.cpp +0 -0
- {libigl-2.6.2.dev0 → libigl-2.6.3.dev2}/attic/todo-old/copyleft/copyleft_cgal_resolve_intersections.cpp +0 -0
- {libigl-2.6.2.dev0 → libigl-2.6.3.dev2}/attic/todo-old/copyleft/copyleft_cgal_row_to_point.cpp +0 -0
- {libigl-2.6.2.dev0 → libigl-2.6.3.dev2}/attic/todo-old/copyleft/copyleft_cgal_segment_segment_squared_distance.cpp +0 -0
- {libigl-2.6.2.dev0 → libigl-2.6.3.dev2}/attic/todo-old/copyleft/copyleft_cgal_signed_distance_isosurface.cpp +0 -0
- {libigl-2.6.2.dev0 → libigl-2.6.3.dev2}/attic/todo-old/copyleft/copyleft_cgal_snap_rounding.cpp +0 -0
- {libigl-2.6.2.dev0 → libigl-2.6.3.dev2}/attic/todo-old/copyleft/copyleft_cgal_string_to_mesh_boolean_type.cpp +0 -0
- {libigl-2.6.2.dev0 → libigl-2.6.3.dev2}/attic/todo-old/copyleft/copyleft_cgal_subdivide_segments.cpp +0 -0
- {libigl-2.6.2.dev0 → libigl-2.6.3.dev2}/attic/todo-old/copyleft/copyleft_cgal_submesh_aabb_tree.cpp +0 -0
- {libigl-2.6.2.dev0 → libigl-2.6.3.dev2}/attic/todo-old/copyleft/copyleft_cgal_triangle_triangle_squared_distance.cpp +0 -0
- {libigl-2.6.2.dev0 → libigl-2.6.3.dev2}/attic/todo-old/copyleft/copyleft_cgal_trim_with_solid.cpp +0 -0
- {libigl-2.6.2.dev0 → libigl-2.6.3.dev2}/attic/todo-old/copyleft/copyleft_cgal_wire_mesh.cpp +0 -0
- {libigl-2.6.2.dev0 → libigl-2.6.3.dev2}/attic/todo-old/copyleft/copyleft_comiso_miq.cpp +0 -0
- {libigl-2.6.2.dev0 → libigl-2.6.3.dev2}/attic/todo-old/copyleft/copyleft_cork_mesh_boolean.cpp +0 -0
- {libigl-2.6.2.dev0 → libigl-2.6.3.dev2}/attic/todo-old/copyleft/copyleft_marching_cubes.cpp +0 -0
- {libigl-2.6.2.dev0 → libigl-2.6.3.dev2}/attic/todo-old/copyleft/copyleft_offset_surface.cpp +0 -0
- {libigl-2.6.2.dev0 → libigl-2.6.3.dev2}/attic/todo-old/copyleft/copyleft_opengl2_render_to_tga.cpp +0 -0
- {libigl-2.6.2.dev0 → libigl-2.6.3.dev2}/attic/todo-old/copyleft/copyleft_opengl2_texture_from_tga.cpp +0 -0
- {libigl-2.6.2.dev0 → libigl-2.6.3.dev2}/attic/todo-old/copyleft/copyleft_progressive_hulls.cpp +0 -0
- {libigl-2.6.2.dev0 → libigl-2.6.3.dev2}/attic/todo-old/copyleft/copyleft_progressive_hulls_cost_and_placement.cpp +0 -0
- {libigl-2.6.2.dev0 → libigl-2.6.3.dev2}/attic/todo-old/copyleft/copyleft_quadprog.cpp +0 -0
- {libigl-2.6.2.dev0 → libigl-2.6.3.dev2}/attic/todo-old/copyleft/copyleft_swept_volume.cpp +0 -0
- {libigl-2.6.2.dev0 → libigl-2.6.3.dev2}/attic/todo-old/copyleft/copyleft_tetgen_mesh_with_skeleton.cpp +0 -0
- {libigl-2.6.2.dev0 → libigl-2.6.3.dev2}/attic/todo-old/copyleft/copyleft_tetgen_read_into_tetgenio.cpp +0 -0
- {libigl-2.6.2.dev0 → libigl-2.6.3.dev2}/attic/todo-old/copyleft/copyleft_tetgen_tetrahedralize.cpp +0 -0
- {libigl-2.6.2.dev0 → libigl-2.6.3.dev2}/attic/todo-old/dijkstra.cpp +0 -0
- {libigl-2.6.2.dev0 → libigl-2.6.3.dev2}/attic/todo-old/embree_bone_heat.cpp +0 -0
- {libigl-2.6.2.dev0 → libigl-2.6.3.dev2}/attic/todo-old/embree_reorient_facets_raycast.cpp +0 -0
- {libigl-2.6.2.dev0 → libigl-2.6.3.dev2}/attic/todo-old/fast_winding_number.cpp +0 -0
- {libigl-2.6.2.dev0 → libigl-2.6.3.dev2}/attic/todo-old/flip_edge.cpp +0 -0
- {libigl-2.6.2.dev0 → libigl-2.6.3.dev2}/attic/todo-old/knn.cpp +0 -0
- {libigl-2.6.2.dev0 → libigl-2.6.3.dev2}/attic/todo-old/mosek_mosek_guarded.cpp +0 -0
- {libigl-2.6.2.dev0 → libigl-2.6.3.dev2}/attic/todo-old/mosek_mosek_linprog.cpp +0 -0
- {libigl-2.6.2.dev0 → libigl-2.6.3.dev2}/attic/todo-old/octree.cpp +0 -0
- {libigl-2.6.2.dev0 → libigl-2.6.3.dev2}/attic/todo-old/per_vertex_point_to_plane_quadrics.cpp +0 -0
- {libigl-2.6.2.dev0 → libigl-2.6.3.dev2}/attic/todo-old/png_readPNG.cpp +0 -0
- {libigl-2.6.2.dev0 → libigl-2.6.3.dev2}/attic/todo-old/png_render_to_png.cpp +0 -0
- {libigl-2.6.2.dev0 → libigl-2.6.3.dev2}/attic/todo-old/png_render_to_png_async.cpp +0 -0
- {libigl-2.6.2.dev0 → libigl-2.6.3.dev2}/attic/todo-old/png_texture_from_file.cpp +0 -0
- {libigl-2.6.2.dev0 → libigl-2.6.3.dev2}/attic/todo-old/png_texture_from_png.cpp +0 -0
- {libigl-2.6.2.dev0 → libigl-2.6.3.dev2}/attic/todo-old/png_writePNG.cpp +0 -0
- {libigl-2.6.2.dev0 → libigl-2.6.3.dev2}/attic/todo-old/pseudonormal_test.cpp +0 -0
- {libigl-2.6.2.dev0 → libigl-2.6.3.dev2}/attic/todo-old/readWRL.cpp +0 -0
- {libigl-2.6.2.dev0 → libigl-2.6.3.dev2}/attic/todo-old/remesh_along_isoline.cpp +0 -0
- {libigl-2.6.2.dev0 → libigl-2.6.3.dev2}/attic/todo-old/seam_edges.cpp +0 -0
- {libigl-2.6.2.dev0 → libigl-2.6.3.dev2}/attic/todo-old/shortest_edge_and_midpoint.cpp +0 -0
- {libigl-2.6.2.dev0 → libigl-2.6.3.dev2}/attic/todo-old/squared_edge_lengths.cpp +0 -0
- {libigl-2.6.2.dev0 → libigl-2.6.3.dev2}/attic/todo-old/straighten_seams.cpp +0 -0
- {libigl-2.6.2.dev0 → libigl-2.6.3.dev2}/attic/todo-old/swept_volume_signed_distance.cpp +0 -0
- {libigl-2.6.2.dev0 → libigl-2.6.3.dev2}/attic/todo-old/triangle_cdt.cpp +0 -0
- {libigl-2.6.2.dev0 → libigl-2.6.3.dev2}/attic/todo-old/unzip_corners.cpp +0 -0
- {libigl-2.6.2.dev0 → libigl-2.6.3.dev2}/attic/todo-old/writeBF.cpp +0 -0
- {libigl-2.6.2.dev0 → libigl-2.6.3.dev2}/attic/todo-old/writeDMAT.cpp +0 -0
- {libigl-2.6.2.dev0 → libigl-2.6.3.dev2}/attic/todo-old/writeMESH.cpp +0 -0
- {libigl-2.6.2.dev0 → libigl-2.6.3.dev2}/attic/todo-old/writeTGF.cpp +0 -0
- {libigl-2.6.2.dev0 → libigl-2.6.3.dev2}/attic/todo-old/xml_writeDAE.cpp +0 -0
- {libigl-2.6.2.dev0 → libigl-2.6.3.dev2}/attic/todo-old/xml_write_triangle_mesh.cpp +0 -0
- {libigl-2.6.2.dev0 → libigl-2.6.3.dev2}/classes/AABB.cpp +0 -0
- {libigl-2.6.2.dev0 → libigl-2.6.3.dev2}/classes/classes.cpp +0 -0
- {libigl-2.6.2.dev0 → libigl-2.6.3.dev2}/cmake/CXXFeatures.cmake +0 -0
- {libigl-2.6.2.dev0 → libigl-2.6.3.dev2}/cmake/FindLIBIGL.cmake +0 -0
- {libigl-2.6.2.dev0 → libigl-2.6.3.dev2}/cmake/UseColors.cmake +0 -0
- {libigl-2.6.2.dev0 → libigl-2.6.3.dev2}/cmake/Warnings.cmake +0 -0
- {libigl-2.6.2.dev0 → libigl-2.6.3.dev2}/include/default_types.h +0 -0
- {libigl-2.6.2.dev0 → libigl-2.6.3.dev2}/missing.sh +0 -0
- {libigl-2.6.2.dev0 → libigl-2.6.3.dev2}/mkdocs.yml +0 -0
- {libigl-2.6.2.dev0 → libigl-2.6.3.dev2}/postBuild +0 -0
- {libigl-2.6.2.dev0 → libigl-2.6.3.dev2}/priority.txt +0 -0
- {libigl-2.6.2.dev0 → libigl-2.6.3.dev2}/scripts/basic_function.mako +0 -0
- {libigl-2.6.2.dev0 → libigl-2.6.3.dev2}/scripts/blender_igl_export.py +0 -0
- {libigl-2.6.2.dev0 → libigl-2.6.3.dev2}/scripts/generate_bindings.py +0 -0
- {libigl-2.6.2.dev0 → libigl-2.6.3.dev2}/scripts/make_lean.py +0 -0
- {libigl-2.6.2.dev0 → libigl-2.6.3.dev2}/scripts/parser.py +0 -0
- {libigl-2.6.2.dev0 → libigl-2.6.3.dev2}/src/AABB.cpp +0 -0
- {libigl-2.6.2.dev0 → libigl-2.6.3.dev2}/src/FileEncoding.cpp +0 -0
- {libigl-2.6.2.dev0 → libigl-2.6.3.dev2}/src/MappingEnergyType.cpp +0 -0
- {libigl-2.6.2.dev0 → libigl-2.6.3.dev2}/src/MassMatrixType.cpp +0 -0
- {libigl-2.6.2.dev0 → libigl-2.6.3.dev2}/src/OrientedBoundingBoxMinimizeType.cpp +0 -0
- {libigl-2.6.2.dev0 → libigl-2.6.3.dev2}/src/adjacency_list.cpp +0 -0
- {libigl-2.6.2.dev0 → libigl-2.6.3.dev2}/src/adjacency_matrix.cpp +0 -0
- {libigl-2.6.2.dev0 → libigl-2.6.3.dev2}/src/all_pairs_distances.cpp +0 -0
- {libigl-2.6.2.dev0 → libigl-2.6.3.dev2}/src/arap.cpp +0 -0
- {libigl-2.6.2.dev0 → libigl-2.6.3.dev2}/src/average_from_edges_onto_vertices.cpp +0 -0
- {libigl-2.6.2.dev0 → libigl-2.6.3.dev2}/src/average_onto_faces.cpp +0 -0
- {libigl-2.6.2.dev0 → libigl-2.6.3.dev2}/src/average_onto_vertices.cpp +0 -0
- {libigl-2.6.2.dev0 → libigl-2.6.3.dev2}/src/avg_edge_length.cpp +0 -0
- {libigl-2.6.2.dev0 → libigl-2.6.3.dev2}/src/barycenter.cpp +0 -0
- {libigl-2.6.2.dev0 → libigl-2.6.3.dev2}/src/barycentric_coordinates.cpp +0 -0
- {libigl-2.6.2.dev0 → libigl-2.6.3.dev2}/src/bbw.cpp +0 -0
- {libigl-2.6.2.dev0 → libigl-2.6.3.dev2}/src/bfs_orient.cpp +0 -0
- {libigl-2.6.2.dev0 → libigl-2.6.3.dev2}/src/biharmonic_coordinates.cpp +0 -0
- {libigl-2.6.2.dev0 → libigl-2.6.3.dev2}/src/bijective_composite_harmonic_mapping.cpp +0 -0
- {libigl-2.6.2.dev0 → libigl-2.6.3.dev2}/src/blue_noise.cpp +0 -0
- {libigl-2.6.2.dev0 → libigl-2.6.3.dev2}/src/boundary_facets.cpp +0 -0
- {libigl-2.6.2.dev0 → libigl-2.6.3.dev2}/src/boundary_loop.cpp +0 -0
- {libigl-2.6.2.dev0 → libigl-2.6.3.dev2}/src/bounding_box.cpp +0 -0
- {libigl-2.6.2.dev0 → libigl-2.6.3.dev2}/src/circulation.cpp +0 -0
- {libigl-2.6.2.dev0 → libigl-2.6.3.dev2}/src/circumradius.cpp +0 -0
- {libigl-2.6.2.dev0 → libigl-2.6.3.dev2}/src/collapse_edge.cpp +0 -0
- {libigl-2.6.2.dev0 → libigl-2.6.3.dev2}/src/connected_components.cpp +0 -0
- {libigl-2.6.2.dev0 → libigl-2.6.3.dev2}/src/copyleft/cgal/convex_hull.cpp +0 -0
- {libigl-2.6.2.dev0 → libigl-2.6.3.dev2}/src/copyleft/cgal/fast_winding_number.cpp +0 -0
- {libigl-2.6.2.dev0 → libigl-2.6.3.dev2}/src/copyleft/cgal/intersect_other.cpp +0 -0
- {libigl-2.6.2.dev0 → libigl-2.6.3.dev2}/src/copyleft/cgal/intersect_with_half_space.cpp +0 -0
- {libigl-2.6.2.dev0 → libigl-2.6.3.dev2}/src/copyleft/cgal/mesh_boolean.cpp +0 -0
- {libigl-2.6.2.dev0 → libigl-2.6.3.dev2}/src/copyleft/cgal/module.cpp +0 -0
- {libigl-2.6.2.dev0 → libigl-2.6.3.dev2}/src/copyleft/cgal/oriented_bounding_box.cpp +0 -0
- {libigl-2.6.2.dev0 → libigl-2.6.3.dev2}/src/copyleft/cgal/point_areas.cpp +0 -0
- {libigl-2.6.2.dev0 → libigl-2.6.3.dev2}/src/copyleft/cgal/remesh_self_intersections.cpp +0 -0
- {libigl-2.6.2.dev0 → libigl-2.6.3.dev2}/src/copyleft/cgal/trim_with_solid.cpp +0 -0
- {libigl-2.6.2.dev0 → libigl-2.6.3.dev2}/src/copyleft/module.cpp +0 -0
- {libigl-2.6.2.dev0 → libigl-2.6.3.dev2}/src/copyleft/progressive_hulls.cpp +0 -0
- {libigl-2.6.2.dev0 → libigl-2.6.3.dev2}/src/copyleft/tetgen/module.cpp +0 -0
- {libigl-2.6.2.dev0 → libigl-2.6.3.dev2}/src/copyleft/tetgen/tetrahedralize.cpp +0 -0
- {libigl-2.6.2.dev0 → libigl-2.6.3.dev2}/src/cotmatrix.cpp +0 -0
- {libigl-2.6.2.dev0 → libigl-2.6.3.dev2}/src/cotmatrix_entries.cpp +0 -0
- {libigl-2.6.2.dev0 → libigl-2.6.3.dev2}/src/cotmatrix_intrinsic.cpp +0 -0
- {libigl-2.6.2.dev0 → libigl-2.6.3.dev2}/src/crouzeix_raviart_cotmatrix.cpp +0 -0
- {libigl-2.6.2.dev0 → libigl-2.6.3.dev2}/src/crouzeix_raviart_massmatrix.cpp +0 -0
- {libigl-2.6.2.dev0 → libigl-2.6.3.dev2}/src/cut_mesh.cpp +0 -0
- {libigl-2.6.2.dev0 → libigl-2.6.3.dev2}/src/cut_mesh_from_singularities.cpp +0 -0
- {libigl-2.6.2.dev0 → libigl-2.6.3.dev2}/src/cut_to_disk.cpp +0 -0
- {libigl-2.6.2.dev0 → libigl-2.6.3.dev2}/src/cylinder.cpp +0 -0
- {libigl-2.6.2.dev0 → libigl-2.6.3.dev2}/src/decimate.cpp +0 -0
- {libigl-2.6.2.dev0 → libigl-2.6.3.dev2}/src/dihedral_angles.cpp +0 -0
- {libigl-2.6.2.dev0 → libigl-2.6.3.dev2}/src/dihedral_angles_intrinsic.cpp +0 -0
- {libigl-2.6.2.dev0 → libigl-2.6.3.dev2}/src/doublearea.cpp +0 -0
- {libigl-2.6.2.dev0 → libigl-2.6.3.dev2}/src/dual_contouring.cpp +0 -0
- {libigl-2.6.2.dev0 → libigl-2.6.3.dev2}/src/ears.cpp +0 -0
- {libigl-2.6.2.dev0 → libigl-2.6.3.dev2}/src/edge_flaps.cpp +0 -0
- {libigl-2.6.2.dev0 → libigl-2.6.3.dev2}/src/edge_lengths.cpp +0 -0
- {libigl-2.6.2.dev0 → libigl-2.6.3.dev2}/src/edges.cpp +0 -0
- {libigl-2.6.2.dev0 → libigl-2.6.3.dev2}/src/embree/EmbreeIntersector.cpp +0 -0
- {libigl-2.6.2.dev0 → libigl-2.6.3.dev2}/src/embree/ambient_occlusion.cpp +0 -0
- {libigl-2.6.2.dev0 → libigl-2.6.3.dev2}/src/embree/module.cpp +0 -0
- {libigl-2.6.2.dev0 → libigl-2.6.3.dev2}/src/embree/reorient_facets_raycast.cpp +0 -0
- {libigl-2.6.2.dev0 → libigl-2.6.3.dev2}/src/embree/shape_diameter_function.cpp +0 -0
- {libigl-2.6.2.dev0 → libigl-2.6.3.dev2}/src/exact_geodesic.cpp +0 -0
- {libigl-2.6.2.dev0 → libigl-2.6.3.dev2}/src/face_areas.cpp +0 -0
- {libigl-2.6.2.dev0 → libigl-2.6.3.dev2}/src/facet_adjacency_matrix.cpp +0 -0
- {libigl-2.6.2.dev0 → libigl-2.6.3.dev2}/src/facet_components.cpp +0 -0
- {libigl-2.6.2.dev0 → libigl-2.6.3.dev2}/src/false_barycentric_subdivision.cpp +0 -0
- {libigl-2.6.2.dev0 → libigl-2.6.3.dev2}/src/fast_winding_number.cpp +0 -0
- {libigl-2.6.2.dev0 → libigl-2.6.3.dev2}/src/gaussian_curvature.cpp +0 -0
- {libigl-2.6.2.dev0 → libigl-2.6.3.dev2}/src/grad.cpp +0 -0
- {libigl-2.6.2.dev0 → libigl-2.6.3.dev2}/src/grid.cpp +0 -0
- {libigl-2.6.2.dev0 → libigl-2.6.3.dev2}/src/heat_geodesics.cpp +0 -0
- {libigl-2.6.2.dev0 → libigl-2.6.3.dev2}/src/icosahedron.cpp +0 -0
- {libigl-2.6.2.dev0 → libigl-2.6.3.dev2}/src/in_element.cpp +0 -0
- {libigl-2.6.2.dev0 → libigl-2.6.3.dev2}/src/inradius.cpp +0 -0
- {libigl-2.6.2.dev0 → libigl-2.6.3.dev2}/src/internal_angles.cpp +0 -0
- {libigl-2.6.2.dev0 → libigl-2.6.3.dev2}/src/intrinsic_delaunay_cotmatrix.cpp +0 -0
- {libigl-2.6.2.dev0 → libigl-2.6.3.dev2}/src/intrinsic_delaunay_triangulation.cpp +0 -0
- {libigl-2.6.2.dev0 → libigl-2.6.3.dev2}/src/is_border_vertex.cpp +0 -0
- {libigl-2.6.2.dev0 → libigl-2.6.3.dev2}/src/is_edge_manifold.cpp +0 -0
- {libigl-2.6.2.dev0 → libigl-2.6.3.dev2}/src/is_vertex_manifold.cpp +0 -0
- {libigl-2.6.2.dev0 → libigl-2.6.3.dev2}/src/ismember_rows.cpp +0 -0
- {libigl-2.6.2.dev0 → libigl-2.6.3.dev2}/src/isolines.cpp +0 -0
- {libigl-2.6.2.dev0 → libigl-2.6.3.dev2}/src/isolines_intrinsic.cpp +0 -0
- {libigl-2.6.2.dev0 → libigl-2.6.3.dev2}/src/kelvinlets.cpp +0 -0
- {libigl-2.6.2.dev0 → libigl-2.6.3.dev2}/src/knn.cpp +0 -0
- {libigl-2.6.2.dev0 → libigl-2.6.3.dev2}/src/lipschitz_octree.cpp +0 -0
- {libigl-2.6.2.dev0 → libigl-2.6.3.dev2}/src/local_basis.cpp +0 -0
- {libigl-2.6.2.dev0 → libigl-2.6.3.dev2}/src/loop.cpp +0 -0
- {libigl-2.6.2.dev0 → libigl-2.6.3.dev2}/src/lscm.cpp +0 -0
- {libigl-2.6.2.dev0 → libigl-2.6.3.dev2}/src/map_vertices_to_circle.cpp +0 -0
- {libigl-2.6.2.dev0 → libigl-2.6.3.dev2}/src/marching_cubes.cpp +0 -0
- {libigl-2.6.2.dev0 → libigl-2.6.3.dev2}/src/massmatrix.cpp +0 -0
- {libigl-2.6.2.dev0 → libigl-2.6.3.dev2}/src/massmatrix_intrinsic.cpp +0 -0
- {libigl-2.6.2.dev0 → libigl-2.6.3.dev2}/src/matlab_format.cpp +0 -0
- {libigl-2.6.2.dev0 → libigl-2.6.3.dev2}/src/min_quad_with_fixed.cpp +0 -0
- {libigl-2.6.2.dev0 → libigl-2.6.3.dev2}/src/module.cpp +0 -0
- {libigl-2.6.2.dev0 → libigl-2.6.3.dev2}/src/moments.cpp +0 -0
- {libigl-2.6.2.dev0 → libigl-2.6.3.dev2}/src/noop.cpp +0 -0
- {libigl-2.6.2.dev0 → libigl-2.6.3.dev2}/src/octree.cpp +0 -0
- {libigl-2.6.2.dev0 → libigl-2.6.3.dev2}/src/offset_surface.cpp +0 -0
- {libigl-2.6.2.dev0 → libigl-2.6.3.dev2}/src/on_boundary.cpp +0 -0
- {libigl-2.6.2.dev0 → libigl-2.6.3.dev2}/src/orient_halfedges.cpp +0 -0
- {libigl-2.6.2.dev0 → libigl-2.6.3.dev2}/src/oriented_bounding_box.cpp +0 -0
- {libigl-2.6.2.dev0 → libigl-2.6.3.dev2}/src/oriented_facets.cpp +0 -0
- {libigl-2.6.2.dev0 → libigl-2.6.3.dev2}/src/per_face_normals.cpp +0 -0
- {libigl-2.6.2.dev0 → libigl-2.6.3.dev2}/src/per_vertex_normals.cpp +0 -0
- {libigl-2.6.2.dev0 → libigl-2.6.3.dev2}/src/point_mesh_squared_distance.cpp +0 -0
- {libigl-2.6.2.dev0 → libigl-2.6.3.dev2}/src/polar_svd.cpp +0 -0
- {libigl-2.6.2.dev0 → libigl-2.6.3.dev2}/src/polygon_corners.cpp +0 -0
- {libigl-2.6.2.dev0 → libigl-2.6.3.dev2}/src/polygons_to_triangles.cpp +0 -0
- {libigl-2.6.2.dev0 → libigl-2.6.3.dev2}/src/principal_curvature.cpp +0 -0
- {libigl-2.6.2.dev0 → libigl-2.6.3.dev2}/src/project.cpp +0 -0
- {libigl-2.6.2.dev0 → libigl-2.6.3.dev2}/src/project_to_line.cpp +0 -0
- {libigl-2.6.2.dev0 → libigl-2.6.3.dev2}/src/project_to_line_segment.cpp +0 -0
- {libigl-2.6.2.dev0 → libigl-2.6.3.dev2}/src/qslim.cpp +0 -0
- {libigl-2.6.2.dev0 → libigl-2.6.3.dev2}/src/quad_grid.cpp +0 -0
- {libigl-2.6.2.dev0 → libigl-2.6.3.dev2}/src/random_points_on_mesh.cpp +0 -0
- {libigl-2.6.2.dev0 → libigl-2.6.3.dev2}/src/ray_mesh_intersect.cpp +0 -0
- {libigl-2.6.2.dev0 → libigl-2.6.3.dev2}/src/readDMAT.cpp +0 -0
- {libigl-2.6.2.dev0 → libigl-2.6.3.dev2}/src/readMESH.cpp +0 -0
- {libigl-2.6.2.dev0 → libigl-2.6.3.dev2}/src/readMSH.cpp +0 -0
- {libigl-2.6.2.dev0 → libigl-2.6.3.dev2}/src/readOBJ.cpp +0 -0
- {libigl-2.6.2.dev0 → libigl-2.6.3.dev2}/src/readOFF.cpp +0 -0
- {libigl-2.6.2.dev0 → libigl-2.6.3.dev2}/src/read_triangle_mesh.cpp +0 -0
- {libigl-2.6.2.dev0 → libigl-2.6.3.dev2}/src/remove_duplicate_vertices.cpp +0 -0
- {libigl-2.6.2.dev0 → libigl-2.6.3.dev2}/src/remove_unreferenced.cpp +0 -0
- {libigl-2.6.2.dev0 → libigl-2.6.3.dev2}/src/signed_distance.cpp +0 -0
- {libigl-2.6.2.dev0 → libigl-2.6.3.dev2}/src/slim.cpp +0 -0
- {libigl-2.6.2.dev0 → libigl-2.6.3.dev2}/src/sparse_map_noop.cpp +0 -0
- {libigl-2.6.2.dev0 → libigl-2.6.3.dev2}/src/sparse_map_shape.cpp +0 -0
- {libigl-2.6.2.dev0 → libigl-2.6.3.dev2}/src/sparse_noop.cpp +0 -0
- {libigl-2.6.2.dev0 → libigl-2.6.3.dev2}/src/sparse_shape.cpp +0 -0
- {libigl-2.6.2.dev0 → libigl-2.6.3.dev2}/src/split_nonmanifold.cpp +0 -0
- {libigl-2.6.2.dev0 → libigl-2.6.3.dev2}/src/squared_edge_lengths.cpp +0 -0
- {libigl-2.6.2.dev0 → libigl-2.6.3.dev2}/src/triangle/module.cpp +0 -0
- {libigl-2.6.2.dev0 → libigl-2.6.3.dev2}/src/triangle/scaf.cpp +0 -0
- {libigl-2.6.2.dev0 → libigl-2.6.3.dev2}/src/triangle/triangulate.cpp +0 -0
- {libigl-2.6.2.dev0 → libigl-2.6.3.dev2}/src/triangle_fan.cpp +0 -0
- {libigl-2.6.2.dev0 → libigl-2.6.3.dev2}/src/triangle_triangle_adjacency.cpp +0 -0
- {libigl-2.6.2.dev0 → libigl-2.6.3.dev2}/src/triangulated_grid.cpp +0 -0
- {libigl-2.6.2.dev0 → libigl-2.6.3.dev2}/src/unique_edge_map.cpp +0 -0
- {libigl-2.6.2.dev0 → libigl-2.6.3.dev2}/src/unique_simplices.cpp +0 -0
- {libigl-2.6.2.dev0 → libigl-2.6.3.dev2}/src/unique_sparse_voxel_corners.cpp +0 -0
- {libigl-2.6.2.dev0 → libigl-2.6.3.dev2}/src/unproject.cpp +0 -0
- {libigl-2.6.2.dev0 → libigl-2.6.3.dev2}/src/upsample.cpp +0 -0
- {libigl-2.6.2.dev0 → libigl-2.6.3.dev2}/src/vertex_components.cpp +0 -0
- {libigl-2.6.2.dev0 → libigl-2.6.3.dev2}/src/vertex_triangle_adjacency.cpp +0 -0
- {libigl-2.6.2.dev0 → libigl-2.6.3.dev2}/src/volume.cpp +0 -0
- {libigl-2.6.2.dev0 → libigl-2.6.3.dev2}/src/voxel_grid.cpp +0 -0
- {libigl-2.6.2.dev0 → libigl-2.6.3.dev2}/src/winding_number.cpp +0 -0
- {libigl-2.6.2.dev0 → libigl-2.6.3.dev2}/src/writeDMAT.cpp +0 -0
- {libigl-2.6.2.dev0 → libigl-2.6.3.dev2}/src/writeMESH.cpp +0 -0
- {libigl-2.6.2.dev0 → libigl-2.6.3.dev2}/src/writeMSH.cpp +0 -0
- {libigl-2.6.2.dev0 → libigl-2.6.3.dev2}/src/writeOBJ.cpp +0 -0
- {libigl-2.6.2.dev0 → libigl-2.6.3.dev2}/src/writePLY.cpp +0 -0
- {libigl-2.6.2.dev0 → libigl-2.6.3.dev2}/src/write_triangle_mesh.cpp +0 -0
- {libigl-2.6.2.dev0 → libigl-2.6.3.dev2}/tutorial/contributing.md +0 -0
- {libigl-2.6.2.dev0 → libigl-2.6.3.dev2}/tutorial/exporter.py +0 -0
- {libigl-2.6.2.dev0 → libigl-2.6.3.dev2}/tutorial/igl_docs.md +0 -0
- {libigl-2.6.2.dev0 → libigl-2.6.3.dev2}/tutorial/images/102_DrawMesh.png +0 -0
- {libigl-2.6.2.dev0 → libigl-2.6.3.dev2}/tutorial/images/104_Colors.png +0 -0
- {libigl-2.6.2.dev0 → libigl-2.6.3.dev2}/tutorial/images/105_Overlays.png +0 -0
- {libigl-2.6.2.dev0 → libigl-2.6.3.dev2}/tutorial/images/106_ViewerMenu.png +0 -0
- {libigl-2.6.2.dev0 → libigl-2.6.3.dev2}/tutorial/images/501_HarmonicParam.png +0 -0
- {libigl-2.6.2.dev0 → libigl-2.6.3.dev2}/tutorial/images/502_LSCMParam.png +0 -0
- {libigl-2.6.2.dev0 → libigl-2.6.3.dev2}/tutorial/images/503_ARAPParam.png +0 -0
- {libigl-2.6.2.dev0 → libigl-2.6.3.dev2}/tutorial/images/504_nrosy_field.png +0 -0
- {libigl-2.6.2.dev0 → libigl-2.6.3.dev2}/tutorial/images/504_vector_field.png +0 -0
- {libigl-2.6.2.dev0 → libigl-2.6.3.dev2}/tutorial/images/505_MIQ_1.png +0 -0
- {libigl-2.6.2.dev0 → libigl-2.6.3.dev2}/tutorial/images/505_MIQ_2.png +0 -0
- {libigl-2.6.2.dev0 → libigl-2.6.3.dev2}/tutorial/images/505_MIQ_3.png +0 -0
- {libigl-2.6.2.dev0 → libigl-2.6.3.dev2}/tutorial/images/505_MIQ_4.png +0 -0
- {libigl-2.6.2.dev0 → libigl-2.6.3.dev2}/tutorial/images/505_MIQ_5.png +0 -0
- {libigl-2.6.2.dev0 → libigl-2.6.3.dev2}/tutorial/images/505_MIQ_6.png +0 -0
- {libigl-2.6.2.dev0 → libigl-2.6.3.dev2}/tutorial/images/505_MIQ_7.png +0 -0
- {libigl-2.6.2.dev0 → libigl-2.6.3.dev2}/tutorial/images/505_MIQ_8.png +0 -0
- {libigl-2.6.2.dev0 → libigl-2.6.3.dev2}/tutorial/images/506_FrameField_1.png +0 -0
- {libigl-2.6.2.dev0 → libigl-2.6.3.dev2}/tutorial/images/506_FrameField_2.png +0 -0
- {libigl-2.6.2.dev0 → libigl-2.6.3.dev2}/tutorial/images/506_FrameField_3.png +0 -0
- {libigl-2.6.2.dev0 → libigl-2.6.3.dev2}/tutorial/images/506_FrameField_4.png +0 -0
- {libigl-2.6.2.dev0 → libigl-2.6.3.dev2}/tutorial/images/507_PolyVectorField.png +0 -0
- {libigl-2.6.2.dev0 → libigl-2.6.3.dev2}/tutorial/images/508_ConjugateField.png +0 -0
- {libigl-2.6.2.dev0 → libigl-2.6.3.dev2}/tutorial/images/509_Planarization.png +0 -0
- {libigl-2.6.2.dev0 → libigl-2.6.3.dev2}/tutorial/images/510_Integrable.png +0 -0
- {libigl-2.6.2.dev0 → libigl-2.6.3.dev2}/tutorial/images/511_PolyVectorFieldGeneral.png +0 -0
- {libigl-2.6.2.dev0 → libigl-2.6.3.dev2}/tutorial/images/602_Matlab_1.png +0 -0
- {libigl-2.6.2.dev0 → libigl-2.6.3.dev2}/tutorial/images/602_Matlab_2.png +0 -0
- {libigl-2.6.2.dev0 → libigl-2.6.3.dev2}/tutorial/images/604_Triangle.png +0 -0
- {libigl-2.6.2.dev0 → libigl-2.6.3.dev2}/tutorial/images/605_Tetgen.png +0 -0
- {libigl-2.6.2.dev0 → libigl-2.6.3.dev2}/tutorial/images/606_AmbientOcclusion.png +0 -0
- {libigl-2.6.2.dev0 → libigl-2.6.3.dev2}/tutorial/images/607_Picking.png +0 -0
- {libigl-2.6.2.dev0 → libigl-2.6.3.dev2}/tutorial/images/608_LIM.png +0 -0
- {libigl-2.6.2.dev0 → libigl-2.6.3.dev2}/tutorial/images/712_beetles.jpg +0 -0
- {libigl-2.6.2.dev0 → libigl-2.6.3.dev2}/tutorial/images/713_ShapeUp.png +0 -0
- {libigl-2.6.2.dev0 → libigl-2.6.3.dev2}/tutorial/images/VF.pdf +0 -0
- {libigl-2.6.2.dev0 → libigl-2.6.3.dev2}/tutorial/images/VF.png +0 -0
- {libigl-2.6.2.dev0 → libigl-2.6.3.dev2}/tutorial/images/arm-dqs.jpg +0 -0
- {libigl-2.6.2.dev0 → libigl-2.6.3.dev2}/tutorial/images/armadillo-fast.jpg +0 -0
- {libigl-2.6.2.dev0 → libigl-2.6.3.dev2}/tutorial/images/armadillo-marching-cubes.jpg +0 -0
- {libigl-2.6.2.dev0 → libigl-2.6.3.dev2}/tutorial/images/background.gif +0 -0
- {libigl-2.6.2.dev0 → libigl-2.6.3.dev2}/tutorial/images/beetle-eigen-decomposition.gif +0 -0
- {libigl-2.6.2.dev0 → libigl-2.6.3.dev2}/tutorial/images/big-sigcat-winding-number.gif +0 -0
- {libigl-2.6.2.dev0 → libigl-2.6.3.dev2}/tutorial/images/bump-k-harmonic.jpg +0 -0
- {libigl-2.6.2.dev0 → libigl-2.6.3.dev2}/tutorial/images/bumpy-gaussian-curvature.jpg +0 -0
- {libigl-2.6.2.dev0 → libigl-2.6.3.dev2}/tutorial/images/bunny-signed-distance.gif +0 -0
- {libigl-2.6.2.dev0 → libigl-2.6.3.dev2}/tutorial/images/bunny-swept-volume.gif +0 -0
- {libigl-2.6.2.dev0 → libigl-2.6.3.dev2}/tutorial/images/camelhead-laplace-equation.jpg +0 -0
- {libigl-2.6.2.dev0 → libigl-2.6.3.dev2}/tutorial/images/cheburashka-biharmonic-leq.jpg +0 -0
- {libigl-2.6.2.dev0 → libigl-2.6.3.dev2}/tutorial/images/cheburashka-gradient.jpg +0 -0
- {libigl-2.6.2.dev0 → libigl-2.6.3.dev2}/tutorial/images/cheburashka-knight-boolean.jpg +0 -0
- {libigl-2.6.2.dev0 → libigl-2.6.3.dev2}/tutorial/images/cheburashka-multiscale-biharmonic-kernels.jpg +0 -0
- {libigl-2.6.2.dev0 → libigl-2.6.3.dev2}/tutorial/images/cow-curvature-flow.jpg +0 -0
- {libigl-2.6.2.dev0 → libigl-2.6.3.dev2}/tutorial/images/cube-sphere-cylinders-csg-tree.jpg +0 -0
- {libigl-2.6.2.dev0 → libigl-2.6.3.dev2}/tutorial/images/cube-sphere-cylinders-csg.gif +0 -0
- {libigl-2.6.2.dev0 → libigl-2.6.3.dev2}/tutorial/images/decimated-knight-arap.jpg +0 -0
- {libigl-2.6.2.dev0 → libigl-2.6.3.dev2}/tutorial/images/decimated-knight-slice-color.jpg +0 -0
- {libigl-2.6.2.dev0 → libigl-2.6.3.dev2}/tutorial/images/decimated-knight-sort-color.jpg +0 -0
- {libigl-2.6.2.dev0 → libigl-2.6.3.dev2}/tutorial/images/decimated-knight-subdivision.gif +0 -0
- {libigl-2.6.2.dev0 → libigl-2.6.3.dev2}/tutorial/images/edge-collapse.jpg +0 -0
- {libigl-2.6.2.dev0 → libigl-2.6.3.dev2}/tutorial/images/edge-collapse.pdf +0 -0
- {libigl-2.6.2.dev0 → libigl-2.6.3.dev2}/tutorial/images/fandisk-normals.jpg +0 -0
- {libigl-2.6.2.dev0 → libigl-2.6.3.dev2}/tutorial/images/fertility-edge-collapse.gif +0 -0
- {libigl-2.6.2.dev0 → libigl-2.6.3.dev2}/tutorial/images/fertility-principal-curvature.jpg +0 -0
- {libigl-2.6.2.dev0 → libigl-2.6.3.dev2}/tutorial/images/geodesicdistance.jpg +0 -0
- {libigl-2.6.2.dev0 → libigl-2.6.3.dev2}/tutorial/images/hand-bbw.jpg +0 -0
- {libigl-2.6.2.dev0 → libigl-2.6.3.dev2}/tutorial/images/hat-function.jpg +0 -0
- {libigl-2.6.2.dev0 → libigl-2.6.3.dev2}/tutorial/images/heat-geodesic-beetle.gif +0 -0
- {libigl-2.6.2.dev0 → libigl-2.6.3.dev2}/tutorial/images/heat-geodesic-peaks.png +0 -0
- {libigl-2.6.2.dev0 → libigl-2.6.3.dev2}/tutorial/images/libigl-logo.jpg +0 -0
- {libigl-2.6.2.dev0 → libigl-2.6.3.dev2}/tutorial/images/max-biharmonic.jpg +0 -0
- {libigl-2.6.2.dev0 → libigl-2.6.3.dev2}/tutorial/images/multiple-meshes.png +0 -0
- {libigl-2.6.2.dev0 → libigl-2.6.3.dev2}/tutorial/images/octopus-biharmonic-coordinates-physics.gif +0 -0
- {libigl-2.6.2.dev0 → libigl-2.6.3.dev2}/tutorial/images/simplicial_complex_augmentation_framework.png +0 -0
- {libigl-2.6.2.dev0 → libigl-2.6.3.dev2}/tutorial/images/slim.png +0 -0
- {libigl-2.6.2.dev0 → libigl-2.6.3.dev2}/tutorial/images/streamlines.jpg +0 -0
- {libigl-2.6.2.dev0 → libigl-2.6.3.dev2}/tutorial/images/truck-facet-orientation.jpg +0 -0
- {libigl-2.6.2.dev0 → libigl-2.6.3.dev2}/tutorial/index.md +0 -0
- {libigl-2.6.2.dev0 → libigl-2.6.3.dev2}/tutorial/marching_cubes.py +0 -0
- {libigl-2.6.2.dev0 → libigl-2.6.3.dev2}/tutorial/plot_to_md.py +0 -0
- {libigl-2.6.2.dev0 → libigl-2.6.3.dev2}/tutorial/tut-chapter0.ipynb +0 -0
- {libigl-2.6.2.dev0 → libigl-2.6.3.dev2}/tutorial/tut-chapter1.ipynb +0 -0
- {libigl-2.6.2.dev0 → libigl-2.6.3.dev2}/tutorial/tut-chapter2.ipynb +0 -0
- {libigl-2.6.2.dev0 → libigl-2.6.3.dev2}/tutorial/tut-chapter3.ipynb +0 -0
- {libigl-2.6.2.dev0 → libigl-2.6.3.dev2}/tutorial/tut-chapter4.ipynb +0 -0
- {libigl-2.6.2.dev0 → libigl-2.6.3.dev2}/tutorial/tut-chapter5.ipynb +0 -0
- {libigl-2.6.2.dev0 → libigl-2.6.3.dev2}/tutorial/tut-chapter6.ipynb +0 -0
- {libigl-2.6.2.dev0 → libigl-2.6.3.dev2}/tutorial/tut-chapter7.ipynb +0 -0
- {libigl-2.6.2.dev0 → libigl-2.6.3.dev2}/tutorial/tutorials.ipynb +0 -0
|
@@ -1,6 +1,7 @@
|
|
|
1
1
|
name: Wheels
|
|
2
2
|
|
|
3
3
|
on:
|
|
4
|
+
workflow_dispatch:
|
|
4
5
|
push:
|
|
5
6
|
branches:
|
|
6
7
|
- main
|
|
@@ -27,19 +28,19 @@ jobs:
|
|
|
27
28
|
strategy:
|
|
28
29
|
fail-fast: false
|
|
29
30
|
matrix:
|
|
30
|
-
os: [ubuntu-24.04, ubuntu-24.04-arm, macos-
|
|
31
|
+
os: [ubuntu-24.04, ubuntu-24.04-arm, macos-latest, macos-15-intel, windows-latest] # Use specific versions for clarity
|
|
31
32
|
arch: [x86_64, arm64]
|
|
32
33
|
pybuilds: [cp38, cp39, cp310, cp311, cp312] # Define pybuilds at the top level
|
|
33
34
|
exclude:
|
|
34
35
|
- os: ubuntu-24.04-arm # No need to specify arch, it's already implicit
|
|
35
36
|
arch: x86_64 # Exclude x86_64 on ARM
|
|
36
|
-
- os: macos-
|
|
37
|
+
- os: macos-latest
|
|
37
38
|
arch: x86_64 # Exclude x86_64 explicitly
|
|
38
|
-
- os: macos-
|
|
39
|
+
- os: macos-latest # Exclude cp38
|
|
39
40
|
pybuilds: cp38
|
|
40
|
-
- os: macos-
|
|
41
|
+
- os: macos-15-intel
|
|
41
42
|
arch: arm64 # Exclude arm64 on macOS 13
|
|
42
|
-
- os: macos-
|
|
43
|
+
- os: macos-15-intel
|
|
43
44
|
pybuilds: cp38
|
|
44
45
|
|
|
45
46
|
name: >
|
|
@@ -50,9 +51,14 @@ jobs:
|
|
|
50
51
|
- uses: actions/setup-python@v5
|
|
51
52
|
with:
|
|
52
53
|
python-version: '3.12'
|
|
53
|
-
- run: pip install cibuildwheel==
|
|
54
|
-
-
|
|
54
|
+
- run: pip install cibuildwheel==3.1.4
|
|
55
|
+
- name: Build wheels
|
|
56
|
+
run: python -m cibuildwheel --output-dir wheelhouse
|
|
55
57
|
env:
|
|
58
|
+
CIBW_BEFORE_ALL_LINUX: "yum install -y clang"
|
|
59
|
+
CIBW_ENVIRONMENT_LINUX: "CC=clang CXX=clang++"
|
|
60
|
+
CIBW_MANYLINUX_X86_64_IMAGE: "manylinux_2_28"
|
|
61
|
+
CIBW_MANYLINUX_AARCH64_IMAGE: "manylinux_2_28"
|
|
56
62
|
CIBW_BUILD: "${{ matrix.pybuilds }}-*" # Use matrix.pybuilds and matrix.arch
|
|
57
63
|
CIBW_ARCHS_MACOS: ${{ matrix.arch }}
|
|
58
64
|
CIBW_SKIP: "cp*-manylinux_i686 cp*-musllinux* cp*-win32"
|
|
@@ -86,6 +92,6 @@ jobs:
|
|
|
86
92
|
allowUpdates: true
|
|
87
93
|
artifacts: "./artifacts/**/*"
|
|
88
94
|
token: ${{ secrets.GITHUB_TOKEN }}
|
|
89
|
-
- uses: pypa/gh-action-pypi-publish@v1.
|
|
95
|
+
- uses: pypa/gh-action-pypi-publish@v1.13.0
|
|
90
96
|
with:
|
|
91
97
|
packages-dir: ./artifacts
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.1
|
|
2
2
|
Name: libigl
|
|
3
|
-
Version: 2.6.
|
|
3
|
+
Version: 2.6.3.dev2
|
|
4
4
|
Summary: libigl: A simple C++ geometry processing library
|
|
5
5
|
Author-Email: Alec Jacobson <alecjacobson@gmail.com>
|
|
6
6
|
Classifier: License :: OSI Approved :: Mozilla Public License 2.0 (MPL 2.0)
|
|
@@ -101,7 +101,9 @@ A successful [.github/workflows/wheels.yml](.github/workflows/wheels.yml) run wi
|
|
|
101
101
|
|
|
102
102
|
Then these can be uploaded to pypi using:
|
|
103
103
|
|
|
104
|
-
|
|
104
|
+
for f in wheelhouse/*/*.whl wheelhouse/*/*.tar.gz; do
|
|
105
|
+
python3 -m twine upload --repository pypi "$f" || echo "Skipping failed upload: $f"
|
|
106
|
+
done
|
|
105
107
|
|
|
106
108
|
## Acknowledgements
|
|
107
109
|
|
|
@@ -89,7 +89,9 @@ A successful [.github/workflows/wheels.yml](.github/workflows/wheels.yml) run wi
|
|
|
89
89
|
|
|
90
90
|
Then these can be uploaded to pypi using:
|
|
91
91
|
|
|
92
|
-
|
|
92
|
+
for f in wheelhouse/*/*.whl wheelhouse/*/*.tar.gz; do
|
|
93
|
+
python3 -m twine upload --repository pypi "$f" || echo "Skipping failed upload: $f"
|
|
94
|
+
done
|
|
93
95
|
|
|
94
96
|
## Acknowledgements
|
|
95
97
|
|
|
@@ -0,0 +1,26 @@
|
|
|
1
|
+
# libigl-python-bindings memory
|
|
2
|
+
|
|
3
|
+
## Project
|
|
4
|
+
Python bindings for libigl C++ geometry library using nanobind + scikit-build-core.
|
|
5
|
+
C++ libigl source lives at `build/_deps/libigl-src/include/igl/` (fetched by CMake).
|
|
6
|
+
|
|
7
|
+
## Binding Architecture
|
|
8
|
+
- Each `src/<name>.cpp` → corresponds to `build/_deps/libigl-src/include/igl/<name>.h`
|
|
9
|
+
- CMake globs all `.cpp` files, generates `BINDING_DECLARATIONS.in` / `BINDING_INVOCATIONS.in`, `module.cpp` includes them — adding a `.cpp` auto-registers it
|
|
10
|
+
- Types centralized in `include/default_types.h`: `Numeric=double`, `Integer=int64_t`, `RowMajor`
|
|
11
|
+
- Zero-copy input: `nb::DRef<const Eigen::MatrixXN>` (requires C-contiguous float64)
|
|
12
|
+
- Multiple C++ output params → `std::make_tuple(...)` → Python tuple unpacking
|
|
13
|
+
- Sparse output: `Eigen::SparseMatrixN` + `<nanobind/eigen/sparse.h>` → scipy CSR automatically
|
|
14
|
+
|
|
15
|
+
## Submodules
|
|
16
|
+
- `src/` → `igl` (core, MPL2)
|
|
17
|
+
- `src/copyleft/` → `igl.copyleft` (GPL)
|
|
18
|
+
- `src/copyleft/cgal/` → `igl.copyleft.cgal`
|
|
19
|
+
- `src/embree/` → `igl.embree`
|
|
20
|
+
- `src/triangle/` → `igl.triangle`
|
|
21
|
+
|
|
22
|
+
## Key Gotchas
|
|
23
|
+
- numpy `int32`/`float32` silently copies; always use `int64`/`float64` in tests
|
|
24
|
+
- In-place mutation: use `Eigen::Ref<>` + `.noconvert()` on the arg
|
|
25
|
+
- Class templates must be typedef'd to concrete type before `nb::class_<>`
|
|
26
|
+
- Sparse inputs must be `scipy.sparse.csr_matrix`
|
|
@@ -1,9 +1,8 @@
|
|
|
1
1
|
[build-system]
|
|
2
2
|
requires = [
|
|
3
|
-
"cmake>=3.16",
|
|
4
3
|
"nanobind >=1.3.2",
|
|
5
4
|
"numpy>=2.0.0; python_version >= '3.9'",
|
|
6
|
-
"numpy; python_version < '3.9'",
|
|
5
|
+
"numpy<2.0.0; python_version < '3.9'",
|
|
7
6
|
"packaging",
|
|
8
7
|
"scikit-build-core >=0.10",
|
|
9
8
|
"scipy",
|
|
@@ -14,7 +13,7 @@ build-backend = "scikit_build_core.build"
|
|
|
14
13
|
|
|
15
14
|
[project]
|
|
16
15
|
name = "libigl"
|
|
17
|
-
version = "2.6.
|
|
16
|
+
version = "2.6.3.dev2"
|
|
18
17
|
description = "libigl: A simple C++ geometry processing library"
|
|
19
18
|
readme = "README.md"
|
|
20
19
|
requires-python = ">=3.8"
|
|
@@ -0,0 +1,48 @@
|
|
|
1
|
+
#include "default_types.h"
|
|
2
|
+
#include <igl/accumarray.h>
|
|
3
|
+
#include <nanobind/nanobind.h>
|
|
4
|
+
#include <nanobind/eigen/dense.h>
|
|
5
|
+
|
|
6
|
+
namespace nb = nanobind;
|
|
7
|
+
using namespace nb::literals;
|
|
8
|
+
|
|
9
|
+
namespace pyigl
|
|
10
|
+
{
|
|
11
|
+
auto accumarray_V(
|
|
12
|
+
const nb::DRef<const Eigen::MatrixXI> &S,
|
|
13
|
+
const nb::DRef<const Eigen::MatrixXN> &V)
|
|
14
|
+
{
|
|
15
|
+
// Copy to compact column vectors so single-index (i) access works
|
|
16
|
+
const Eigen::VectorXI s = S.reshaped();
|
|
17
|
+
const Eigen::VectorXN v = V.reshaped();
|
|
18
|
+
Eigen::VectorXN A;
|
|
19
|
+
igl::accumarray(s, v, A);
|
|
20
|
+
return A;
|
|
21
|
+
}
|
|
22
|
+
auto accumarray_val(
|
|
23
|
+
const nb::DRef<const Eigen::MatrixXI> &S,
|
|
24
|
+
const Numeric val)
|
|
25
|
+
{
|
|
26
|
+
const Eigen::VectorXI s = S.reshaped();
|
|
27
|
+
Eigen::VectorXN A;
|
|
28
|
+
igl::accumarray(s, val, A);
|
|
29
|
+
return A;
|
|
30
|
+
}
|
|
31
|
+
}
|
|
32
|
+
|
|
33
|
+
void bind_accumarray(nb::module_ &m)
|
|
34
|
+
{
|
|
35
|
+
m.def("accumarray", &pyigl::accumarray_V, "S"_a, "V"_a,
|
|
36
|
+
R"(Accumulate values V at subscripts S. Like MATLAB's accumarray.
|
|
37
|
+
|
|
38
|
+
@param[in] S #S list of subscripts (integer indices)
|
|
39
|
+
@param[in] V #S list of values
|
|
40
|
+
@return A max(S)+1 list of accumulated (summed) values)");
|
|
41
|
+
|
|
42
|
+
m.def("accumarray", &pyigl::accumarray_val, "S"_a, "val"_a,
|
|
43
|
+
R"(Accumulate a constant value at subscripts S. Like MATLAB's accumarray.
|
|
44
|
+
|
|
45
|
+
@param[in] S #S list of subscripts (integer indices)
|
|
46
|
+
@param[in] val scalar value to accumulate at each subscript
|
|
47
|
+
@return A max(S)+1 list of accumulated (summed) values)");
|
|
48
|
+
}
|
|
@@ -0,0 +1,36 @@
|
|
|
1
|
+
#include "default_types.h"
|
|
2
|
+
#include <igl/barycentric_interpolation.h>
|
|
3
|
+
#include <nanobind/nanobind.h>
|
|
4
|
+
#include <nanobind/eigen/dense.h>
|
|
5
|
+
|
|
6
|
+
namespace nb = nanobind;
|
|
7
|
+
using namespace nb::literals;
|
|
8
|
+
|
|
9
|
+
namespace pyigl
|
|
10
|
+
{
|
|
11
|
+
auto barycentric_interpolation(
|
|
12
|
+
const nb::DRef<const Eigen::MatrixXN> &D,
|
|
13
|
+
const nb::DRef<const Eigen::MatrixXI> &F,
|
|
14
|
+
const nb::DRef<const Eigen::MatrixXN> &B,
|
|
15
|
+
const nb::DRef<const Eigen::MatrixXI> &I)
|
|
16
|
+
{
|
|
17
|
+
// I is indexed as a vector internally
|
|
18
|
+
const Eigen::VectorXI idx = I.reshaped();
|
|
19
|
+
Eigen::MatrixXN X;
|
|
20
|
+
igl::barycentric_interpolation(D, F, B, idx, X);
|
|
21
|
+
return X;
|
|
22
|
+
}
|
|
23
|
+
}
|
|
24
|
+
|
|
25
|
+
void bind_barycentric_interpolation(nb::module_ &m)
|
|
26
|
+
{
|
|
27
|
+
m.def("barycentric_interpolation", &pyigl::barycentric_interpolation,
|
|
28
|
+
"D"_a, "F"_a, "B"_a, "I"_a,
|
|
29
|
+
R"(Interpolate per-vertex data on a triangle mesh using barycentric coordinates.
|
|
30
|
+
|
|
31
|
+
@param[in] D #V by dim list of per-vertex data
|
|
32
|
+
@param[in] F #F by 3 list of triangle indices
|
|
33
|
+
@param[in] B #X by 3 list of barycentric coordinates
|
|
34
|
+
@param[in] I #X list of triangle indices into F
|
|
35
|
+
@return X #X by dim list of interpolated data)");
|
|
36
|
+
}
|
|
@@ -0,0 +1,48 @@
|
|
|
1
|
+
#include "default_types.h"
|
|
2
|
+
#include <igl/bezier.h>
|
|
3
|
+
#include <nanobind/nanobind.h>
|
|
4
|
+
#include <nanobind/eigen/dense.h>
|
|
5
|
+
|
|
6
|
+
namespace nb = nanobind;
|
|
7
|
+
using namespace nb::literals;
|
|
8
|
+
|
|
9
|
+
namespace pyigl
|
|
10
|
+
{
|
|
11
|
+
// Single parameter t
|
|
12
|
+
auto bezier_t(
|
|
13
|
+
const nb::DRef<const Eigen::MatrixXN> &V,
|
|
14
|
+
const Numeric t)
|
|
15
|
+
{
|
|
16
|
+
Eigen::MatrixXN P;
|
|
17
|
+
igl::bezier(V, t, P);
|
|
18
|
+
return P;
|
|
19
|
+
}
|
|
20
|
+
// Array of parameters T
|
|
21
|
+
auto bezier_T(
|
|
22
|
+
const nb::DRef<const Eigen::MatrixXN> &V,
|
|
23
|
+
const nb::DRef<const Eigen::MatrixXN> &T)
|
|
24
|
+
{
|
|
25
|
+
// Copy T to compact vector for single-index access
|
|
26
|
+
const Eigen::VectorXN t = T.reshaped();
|
|
27
|
+
Eigen::MatrixXN P;
|
|
28
|
+
igl::bezier(V, t, P);
|
|
29
|
+
return P;
|
|
30
|
+
}
|
|
31
|
+
}
|
|
32
|
+
|
|
33
|
+
void bind_bezier(nb::module_ &m)
|
|
34
|
+
{
|
|
35
|
+
m.def("bezier", &pyigl::bezier_t, "V"_a, "t"_a,
|
|
36
|
+
R"(Evaluate a polynomial Bezier curve at a single parameter value.
|
|
37
|
+
|
|
38
|
+
@param[in] V #V by dim list of Bezier control points
|
|
39
|
+
@param[in] t evaluation parameter in [0,1]
|
|
40
|
+
@return P 1 by dim output point)");
|
|
41
|
+
|
|
42
|
+
m.def("bezier", &pyigl::bezier_T, "V"_a, "T"_a,
|
|
43
|
+
R"(Evaluate a polynomial Bezier curve at many parameter values.
|
|
44
|
+
|
|
45
|
+
@param[in] V #V by dim list of Bezier control points
|
|
46
|
+
@param[in] T #T list of evaluation parameters in [0,1]
|
|
47
|
+
@return P #T by dim output points)");
|
|
48
|
+
}
|
|
@@ -0,0 +1,25 @@
|
|
|
1
|
+
#include "default_types.h"
|
|
2
|
+
#include <igl/bounding_box_diagonal.h>
|
|
3
|
+
#include <nanobind/nanobind.h>
|
|
4
|
+
#include <nanobind/eigen/dense.h>
|
|
5
|
+
|
|
6
|
+
namespace nb = nanobind;
|
|
7
|
+
using namespace nb::literals;
|
|
8
|
+
|
|
9
|
+
namespace pyigl {
|
|
10
|
+
auto bounding_box_diagonal(
|
|
11
|
+
const nb::DRef<const Eigen::MatrixXd>& V
|
|
12
|
+
) {
|
|
13
|
+
return igl::bounding_box_diagonal(V);
|
|
14
|
+
}
|
|
15
|
+
}
|
|
16
|
+
|
|
17
|
+
void bind_bounding_box_diagonal(nb::module_ &m) {
|
|
18
|
+
m.def("bounding_box_diagonal", &pyigl::bounding_box_diagonal,
|
|
19
|
+
"V"_a,
|
|
20
|
+
R"(Compute the length of the diagonal of a given meshes axis-aligned bounding
|
|
21
|
+
|
|
22
|
+
@param[in] V #V by 3 list of vertex/point positions
|
|
23
|
+
@return length of bounding box diagonal)"
|
|
24
|
+
);
|
|
25
|
+
}
|
|
@@ -0,0 +1,40 @@
|
|
|
1
|
+
#include "default_types.h"
|
|
2
|
+
#include <igl/centroid.h>
|
|
3
|
+
#include <nanobind/nanobind.h>
|
|
4
|
+
#include <nanobind/eigen/dense.h>
|
|
5
|
+
#include <nanobind/stl/tuple.h>
|
|
6
|
+
|
|
7
|
+
namespace nb = nanobind;
|
|
8
|
+
using namespace nb::literals;
|
|
9
|
+
|
|
10
|
+
namespace pyigl
|
|
11
|
+
{
|
|
12
|
+
auto centroid(
|
|
13
|
+
const nb::DRef<const Eigen::MatrixXN> &V,
|
|
14
|
+
const nb::DRef<const Eigen::MatrixXI> &F)
|
|
15
|
+
{
|
|
16
|
+
Eigen::VectorXN c;
|
|
17
|
+
Numeric vol;
|
|
18
|
+
igl::centroid(V,F,c,vol);
|
|
19
|
+
return std::make_tuple(c,vol);
|
|
20
|
+
}
|
|
21
|
+
}
|
|
22
|
+
|
|
23
|
+
void bind_centroid(nb::module_ &m)
|
|
24
|
+
{
|
|
25
|
+
m.def(
|
|
26
|
+
"centroid",
|
|
27
|
+
&pyigl::centroid,
|
|
28
|
+
"V"_a,
|
|
29
|
+
"F"_a,
|
|
30
|
+
R"(Computes the centroid and enclosed volume of a closed mesh using a surface
|
|
31
|
+
integral.
|
|
32
|
+
|
|
33
|
+
@param[in] V #V by dim list of rest domain positions
|
|
34
|
+
@param[in] F #F by 3 list of triangle indices into V
|
|
35
|
+
@return c dim vector of centroid coordinates
|
|
36
|
+
@return vol total volume of solid
|
|
37
|
+
|
|
38
|
+
\see moments
|
|
39
|
+
)");
|
|
40
|
+
}
|
|
@@ -0,0 +1,62 @@
|
|
|
1
|
+
#include "default_types.h"
|
|
2
|
+
#include <igl/colormap.h>
|
|
3
|
+
#include <nanobind/nanobind.h>
|
|
4
|
+
#include <nanobind/eigen/dense.h>
|
|
5
|
+
|
|
6
|
+
namespace nb = nanobind;
|
|
7
|
+
using namespace nb::literals;
|
|
8
|
+
|
|
9
|
+
namespace pyigl
|
|
10
|
+
{
|
|
11
|
+
// Map scalar array to RGB colors using a colormap
|
|
12
|
+
auto colormap(
|
|
13
|
+
const igl::ColorMapType cm,
|
|
14
|
+
const nb::DRef<const Eigen::VectorXN> &Z,
|
|
15
|
+
const bool normalize)
|
|
16
|
+
{
|
|
17
|
+
Eigen::MatrixXN C;
|
|
18
|
+
igl::colormap(cm, Z, normalize, C);
|
|
19
|
+
return C;
|
|
20
|
+
}
|
|
21
|
+
// Map scalar to single RGB triple
|
|
22
|
+
auto colormap_scalar(
|
|
23
|
+
const igl::ColorMapType cm,
|
|
24
|
+
const Numeric f)
|
|
25
|
+
{
|
|
26
|
+
Numeric r, g, b;
|
|
27
|
+
igl::colormap(cm, f, r, g, b);
|
|
28
|
+
Eigen::Vector3d rgb;
|
|
29
|
+
rgb << r, g, b;
|
|
30
|
+
return rgb;
|
|
31
|
+
}
|
|
32
|
+
}
|
|
33
|
+
|
|
34
|
+
void bind_colormap(nb::module_ &m)
|
|
35
|
+
{
|
|
36
|
+
nb::enum_<igl::ColorMapType>(m, "ColorMapType")
|
|
37
|
+
.value("INFERNO", igl::COLOR_MAP_TYPE_INFERNO)
|
|
38
|
+
.value("JET", igl::COLOR_MAP_TYPE_JET)
|
|
39
|
+
.value("MAGMA", igl::COLOR_MAP_TYPE_MAGMA)
|
|
40
|
+
.value("PARULA", igl::COLOR_MAP_TYPE_PARULA)
|
|
41
|
+
.value("PLASMA", igl::COLOR_MAP_TYPE_PLASMA)
|
|
42
|
+
.value("VIRIDIS", igl::COLOR_MAP_TYPE_VIRIDIS)
|
|
43
|
+
.value("TURBO", igl::COLOR_MAP_TYPE_TURBO)
|
|
44
|
+
.export_values();
|
|
45
|
+
|
|
46
|
+
m.def("colormap", &pyigl::colormap,
|
|
47
|
+
"cm"_a, "Z"_a, "normalize"_a = true,
|
|
48
|
+
R"(Map scalar values to RGB colors using a colormap.
|
|
49
|
+
|
|
50
|
+
@param[in] cm colormap type (igl.ColorMapType.VIRIDIS, .JET, etc.)
|
|
51
|
+
@param[in] Z #Z list of scalar values
|
|
52
|
+
@param[in] normalize if true, normalize Z to [0,1] range before mapping
|
|
53
|
+
@return C #Z by 3 list of RGB colors in [0,1])");
|
|
54
|
+
|
|
55
|
+
m.def("colormap", &pyigl::colormap_scalar,
|
|
56
|
+
"cm"_a, "f"_a,
|
|
57
|
+
R"(Map a single scalar in [0,1] to an RGB color.
|
|
58
|
+
|
|
59
|
+
@param[in] cm colormap type
|
|
60
|
+
@param[in] f scalar in [0,1]
|
|
61
|
+
@return 3-vector of RGB values in [0,1])");
|
|
62
|
+
}
|
|
@@ -0,0 +1,39 @@
|
|
|
1
|
+
#include "default_types.h"
|
|
2
|
+
#include <igl/comb_cross_field.h>
|
|
3
|
+
#include <nanobind/nanobind.h>
|
|
4
|
+
#include <nanobind/ndarray.h>
|
|
5
|
+
#include <nanobind/eigen/dense.h>
|
|
6
|
+
#include <nanobind/stl/tuple.h>
|
|
7
|
+
|
|
8
|
+
namespace nb = nanobind;
|
|
9
|
+
using namespace nb::literals;
|
|
10
|
+
|
|
11
|
+
void bind_comb_cross_field(nb::module_ &m)
|
|
12
|
+
{
|
|
13
|
+
m.def("comb_cross_field",
|
|
14
|
+
[](
|
|
15
|
+
const Eigen::MatrixXN& V,
|
|
16
|
+
const Eigen::MatrixXI& F,
|
|
17
|
+
const Eigen::MatrixXN& PD1,
|
|
18
|
+
const Eigen::MatrixXN& PD2
|
|
19
|
+
) {
|
|
20
|
+
Eigen::MatrixXN PD1_out, PD2_out;
|
|
21
|
+
igl::comb_cross_field(V, F, PD1, PD2, PD1_out, PD2_out);
|
|
22
|
+
return std::make_tuple(PD1_out, PD2_out);
|
|
23
|
+
},
|
|
24
|
+
"V"_a,
|
|
25
|
+
"F"_a,
|
|
26
|
+
"PD1"_a,
|
|
27
|
+
"PD2"_a,
|
|
28
|
+
R"(Computes principal matchings of the vectors of a cross field across face edges,
|
|
29
|
+
and generates a combed cross field defined on the mesh faces
|
|
30
|
+
|
|
31
|
+
@param[in] V #V by 3 eigen Matrix of mesh vertex 3D positions
|
|
32
|
+
@param[in] F #F by 4 eigen Matrix of face (quad) indices
|
|
33
|
+
@param[in] PD1in #F by 3 eigen Matrix of the first per face cross field vector
|
|
34
|
+
@param[in] PD2in #F by 3 eigen Matrix of the second per face cross field vector
|
|
35
|
+
@param[out] PD1out #F by 3 eigen Matrix of the first combed cross field vector
|
|
36
|
+
@param[out] PD2out #F by 3 eigen Matrix of the second combed cross field vector
|
|
37
|
+
)"
|
|
38
|
+
);
|
|
39
|
+
}
|
|
@@ -0,0 +1,47 @@
|
|
|
1
|
+
#include "default_types.h"
|
|
2
|
+
#include <igl/comb_frame_field.h>
|
|
3
|
+
#include <nanobind/nanobind.h>
|
|
4
|
+
#include <nanobind/ndarray.h>
|
|
5
|
+
#include <nanobind/eigen/dense.h>
|
|
6
|
+
#include <nanobind/stl/tuple.h>
|
|
7
|
+
|
|
8
|
+
namespace nb = nanobind;
|
|
9
|
+
using namespace nb::literals;
|
|
10
|
+
|
|
11
|
+
void bind_comb_frame_field(nb::module_ &m)
|
|
12
|
+
{
|
|
13
|
+
m.def("comb_frame_field",
|
|
14
|
+
[](
|
|
15
|
+
const Eigen::MatrixXN& V,
|
|
16
|
+
const Eigen::MatrixXI& F,
|
|
17
|
+
const Eigen::MatrixXN& PD1,
|
|
18
|
+
const Eigen::MatrixXN& PD2,
|
|
19
|
+
const Eigen::MatrixXN& BIS1_combed,
|
|
20
|
+
const Eigen::MatrixXN& BIS2_combed
|
|
21
|
+
) {
|
|
22
|
+
Eigen::MatrixXN PD1_combed, PD2_combed;
|
|
23
|
+
igl::comb_frame_field(V, F, PD1, PD2, BIS1_combed, BIS2_combed, PD1_combed, PD2_combed);
|
|
24
|
+
return std::make_tuple(PD1_combed, PD2_combed);
|
|
25
|
+
},
|
|
26
|
+
"V"_a,
|
|
27
|
+
"F"_a,
|
|
28
|
+
"PD1"_a,
|
|
29
|
+
"PD2"_a,
|
|
30
|
+
"BIS1_combed"_a,
|
|
31
|
+
"BIS2_combed"_a,
|
|
32
|
+
R"(Computes principal matchings of the vectors of a frame field across face edges,
|
|
33
|
+
and generates a combed frame field defined on the mesh faces. This makes use of a
|
|
34
|
+
combed cross field generated by combing the field created by the bisectors of the
|
|
35
|
+
frame field.
|
|
36
|
+
|
|
37
|
+
@param[in] V #V by 3 eigen Matrix of mesh vertex 3D positions
|
|
38
|
+
@param[in] F #F by 4 eigen Matrix of face (quad) indices
|
|
39
|
+
@param[in] PD1 #F by 3 eigen Matrix of the first per face cross field vector
|
|
40
|
+
@param[in] PD2 #F by 3 eigen Matrix of the second per face cross field vector
|
|
41
|
+
@param[in] BIS1_combed #F by 3 eigen Matrix of the first combed bisector field vector
|
|
42
|
+
@param[in] BIS2_combed #F by 3 eigen Matrix of the second combed bisector field vector
|
|
43
|
+
@param[out] PD1_combed #F by 3 eigen Matrix of the first combed cross field vector
|
|
44
|
+
@param[out] PD2_combed #F by 3 eigen Matrix of the second combed cross field vector
|
|
45
|
+
)"
|
|
46
|
+
);
|
|
47
|
+
}
|
|
@@ -0,0 +1,33 @@
|
|
|
1
|
+
#include "default_types.h"
|
|
2
|
+
#include <igl/combine.h>
|
|
3
|
+
#include <nanobind/nanobind.h>
|
|
4
|
+
#include <nanobind/eigen/dense.h>
|
|
5
|
+
#include <nanobind/stl/tuple.h>
|
|
6
|
+
#include <nanobind/stl/vector.h>
|
|
7
|
+
|
|
8
|
+
namespace nb = nanobind;
|
|
9
|
+
using namespace nb::literals;
|
|
10
|
+
|
|
11
|
+
namespace pyigl
|
|
12
|
+
{
|
|
13
|
+
auto combine(
|
|
14
|
+
const std::vector<Eigen::MatrixXN> &VV,
|
|
15
|
+
const std::vector<Eigen::MatrixXI> &FF)
|
|
16
|
+
{
|
|
17
|
+
Eigen::MatrixXN V;
|
|
18
|
+
Eigen::MatrixXI F;
|
|
19
|
+
igl::combine(VV, FF, V, F);
|
|
20
|
+
return std::make_tuple(V, F);
|
|
21
|
+
}
|
|
22
|
+
}
|
|
23
|
+
|
|
24
|
+
void bind_combine(nb::module_ &m)
|
|
25
|
+
{
|
|
26
|
+
m.def("combine", &pyigl::combine, "VV"_a, "FF"_a,
|
|
27
|
+
R"(Concatenate multiple meshes into a single mesh.
|
|
28
|
+
|
|
29
|
+
@param[in] VV list of vertex position matrices, each #Vi by dim
|
|
30
|
+
@param[in] FF list of face index matrices, each #Fi by simplex_size
|
|
31
|
+
@return V concatenated vertex positions
|
|
32
|
+
@return F concatenated face indices (reindexed into V))");
|
|
33
|
+
}
|
|
@@ -0,0 +1,71 @@
|
|
|
1
|
+
#include "default_types.h"
|
|
2
|
+
#include <igl/compute_frame_field_bisectors.h>
|
|
3
|
+
#include <nanobind/nanobind.h>
|
|
4
|
+
#include <nanobind/ndarray.h>
|
|
5
|
+
#include <nanobind/eigen/dense.h>
|
|
6
|
+
#include <nanobind/stl/tuple.h>
|
|
7
|
+
|
|
8
|
+
namespace nb = nanobind;
|
|
9
|
+
using namespace nb::literals;
|
|
10
|
+
|
|
11
|
+
void bind_compute_frame_field_bisectors(nb::module_ &m)
|
|
12
|
+
{
|
|
13
|
+
m.def("compute_frame_field_bisectors",
|
|
14
|
+
[](
|
|
15
|
+
const Eigen::MatrixXN& V,
|
|
16
|
+
const Eigen::MatrixXI& F,
|
|
17
|
+
const Eigen::MatrixXN& B1,
|
|
18
|
+
const Eigen::MatrixXN& B2,
|
|
19
|
+
const Eigen::MatrixXN& PD1,
|
|
20
|
+
const Eigen::MatrixXN& PD2
|
|
21
|
+
) {
|
|
22
|
+
Eigen::MatrixXN BIS1, BIS2;
|
|
23
|
+
igl::compute_frame_field_bisectors(V, F, B1, B2, PD1, PD2, BIS1, BIS2);
|
|
24
|
+
return std::make_tuple(BIS1, BIS2);
|
|
25
|
+
},
|
|
26
|
+
"V"_a,
|
|
27
|
+
"F"_a,
|
|
28
|
+
"B1"_a,
|
|
29
|
+
"B2"_a,
|
|
30
|
+
"PD1"_a,
|
|
31
|
+
"PD2"_a,
|
|
32
|
+
R"(Compute bisectors of a frame field defined on mesh faces.
|
|
33
|
+
|
|
34
|
+
@param[in] V #V by 3 eigen Matrix of mesh vertex 3D positions
|
|
35
|
+
@param[in] F #F by 3 eigen Matrix of face (triangle) indices
|
|
36
|
+
@param[in] B1 #F by 3 eigen Matrix of face (triangle) base vector 1
|
|
37
|
+
@param[in] B2 #F by 3 eigen Matrix of face (triangle) base vector 2
|
|
38
|
+
@param[in] PD1 #F by 3 eigen Matrix of the first per face frame field vector
|
|
39
|
+
@param[in] PD2 #F by 3 eigen Matrix of the second per face frame field vector
|
|
40
|
+
@param[out] BIS1 #F by 3 eigen Matrix of the first per face frame field bisector
|
|
41
|
+
@param[out] BIS2 #F by 3 eigen Matrix of the second per face frame field bisector
|
|
42
|
+
)"
|
|
43
|
+
);
|
|
44
|
+
|
|
45
|
+
// Overload
|
|
46
|
+
m.def("compute_frame_field_bisectors",
|
|
47
|
+
[](
|
|
48
|
+
const Eigen::MatrixXN& V,
|
|
49
|
+
const Eigen::MatrixXI& F,
|
|
50
|
+
const Eigen::MatrixXN& PD1,
|
|
51
|
+
const Eigen::MatrixXN& PD2
|
|
52
|
+
) {
|
|
53
|
+
Eigen::MatrixXN BIS1, BIS2;
|
|
54
|
+
igl::compute_frame_field_bisectors(V, F, PD1, PD2, BIS1, BIS2);
|
|
55
|
+
return std::make_tuple(BIS1, BIS2);
|
|
56
|
+
},
|
|
57
|
+
"V"_a,
|
|
58
|
+
"F"_a,
|
|
59
|
+
"PD1"_a,
|
|
60
|
+
"PD2"_a,
|
|
61
|
+
R"(Compute bisectors of a frame field defined on mesh faces.
|
|
62
|
+
|
|
63
|
+
@param[in] V #V by 3 eigen Matrix of mesh vertex 3D positions
|
|
64
|
+
@param[in] F #F by 3 eigen Matrix of face (triangle) indices
|
|
65
|
+
@param[in] PD1 #F by 3 eigen Matrix of the first per face frame field vector
|
|
66
|
+
@param[in] PD2 #F by 3 eigen Matrix of the second per face frame field vector
|
|
67
|
+
@param[out] BIS1 #F by 3 eigen Matrix of the first per face frame field bisector
|
|
68
|
+
@param[out] BIS2 #F by 3 eigen Matrix of the second per face frame field bisector
|
|
69
|
+
)"
|
|
70
|
+
);
|
|
71
|
+
}
|
|
@@ -0,0 +1,24 @@
|
|
|
1
|
+
#include "default_types.h"
|
|
2
|
+
#include <igl/copyleft/cgal/coplanar.h>
|
|
3
|
+
#include <nanobind/nanobind.h>
|
|
4
|
+
#include <nanobind/eigen/dense.h>
|
|
5
|
+
|
|
6
|
+
namespace nb = nanobind;
|
|
7
|
+
using namespace nb::literals;
|
|
8
|
+
|
|
9
|
+
namespace pyigl
|
|
10
|
+
{
|
|
11
|
+
bool coplanar(const nb::DRef<const Eigen::MatrixXN> &V)
|
|
12
|
+
{
|
|
13
|
+
return igl::copyleft::cgal::coplanar(V);
|
|
14
|
+
}
|
|
15
|
+
}
|
|
16
|
+
|
|
17
|
+
void bind_coplanar(nb::module_ &m)
|
|
18
|
+
{
|
|
19
|
+
m.def("coplanar", &pyigl::coplanar, "V"_a,
|
|
20
|
+
R"(Test whether all points lie on the same plane.
|
|
21
|
+
|
|
22
|
+
@param[in] V #V by 3 list of 3D vertex positions
|
|
23
|
+
@return true if all points are coplanar)");
|
|
24
|
+
}
|
|
@@ -0,0 +1,26 @@
|
|
|
1
|
+
#include "default_types.h"
|
|
2
|
+
#include <igl/copyleft/cgal/delaunay_triangulation.h>
|
|
3
|
+
#include <nanobind/nanobind.h>
|
|
4
|
+
#include <nanobind/eigen/dense.h>
|
|
5
|
+
|
|
6
|
+
namespace nb = nanobind;
|
|
7
|
+
using namespace nb::literals;
|
|
8
|
+
|
|
9
|
+
namespace pyigl
|
|
10
|
+
{
|
|
11
|
+
auto delaunay_triangulation(const nb::DRef<const Eigen::MatrixXN> &V)
|
|
12
|
+
{
|
|
13
|
+
Eigen::MatrixXi F; // int32 required by libigl internals
|
|
14
|
+
igl::copyleft::cgal::delaunay_triangulation(V, F);
|
|
15
|
+
return Eigen::MatrixXI(F.cast<Integer>());
|
|
16
|
+
}
|
|
17
|
+
}
|
|
18
|
+
|
|
19
|
+
void bind_delaunay_triangulation(nb::module_ &m)
|
|
20
|
+
{
|
|
21
|
+
m.def("delaunay_triangulation", &pyigl::delaunay_triangulation, "V"_a,
|
|
22
|
+
R"(Compute the Delaunay triangulation of a 2D point set using CGAL.
|
|
23
|
+
|
|
24
|
+
@param[in] V #V by 2 list of 2D vertex positions
|
|
25
|
+
@return F #F by 3 triangle indices into V)");
|
|
26
|
+
}
|