libigl 2.6.3.dev1__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.3.dev1 → libigl-2.6.3.dev2}/PKG-INFO +4 -2
- {libigl-2.6.3.dev1 → libigl-2.6.3.dev2}/README.md +3 -1
- {libigl-2.6.3.dev1 → libigl-2.6.3.dev2}/pyproject.toml +1 -1
- 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/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/triangle/cdt.cpp +47 -0
- libigl-2.6.3.dev2/src/triangle/refine.cpp +39 -0
- {libigl-2.6.3.dev1 → libigl-2.6.3.dev2}/tests/test_all.py +125 -0
- {libigl-2.6.3.dev1 → libigl-2.6.3.dev2}/.github/workflows/pip.yml +0 -0
- {libigl-2.6.3.dev1 → libigl-2.6.3.dev2}/.github/workflows/wheels.yml +0 -0
- {libigl-2.6.3.dev1 → libigl-2.6.3.dev2}/.gitignore +0 -0
- {libigl-2.6.3.dev1 → libigl-2.6.3.dev2}/CMakeLists.txt +0 -0
- {libigl-2.6.3.dev1 → libigl-2.6.3.dev2}/LICENSE.GPL +0 -0
- {libigl-2.6.3.dev1 → libigl-2.6.3.dev2}/LICENSE.MPL2 +0 -0
- {libigl-2.6.3.dev1 → libigl-2.6.3.dev2}/attic/copyleft/tetgen_tetrahedralize.cpp +0 -0
- {libigl-2.6.3.dev1 → libigl-2.6.3.dev2}/attic/copyleft/triangle_triangulate.cpp +0 -0
- {libigl-2.6.3.dev1 → libigl-2.6.3.dev2}/attic/skip/SolverStatus.cpp +0 -0
- {libigl-2.6.3.dev1 → libigl-2.6.3.dev2}/attic/skip/WindingNumberMethod.cpp +0 -0
- {libigl-2.6.3.dev1 → libigl-2.6.3.dev2}/attic/skip/angular_distance.cpp +0 -0
- {libigl-2.6.3.dev1 → libigl-2.6.3.dev2}/attic/skip/canonical_quaternions.cpp +0 -0
- {libigl-2.6.3.dev1 → libigl-2.6.3.dev2}/attic/skip/column_to_quats.cpp +0 -0
- {libigl-2.6.3.dev1 → libigl-2.6.3.dev2}/attic/skip/comiso_nrosy.cpp +0 -0
- {libigl-2.6.3.dev1 → libigl-2.6.3.dev2}/attic/skip/covariance_scatter_matrix.cpp +0 -0
- {libigl-2.6.3.dev1 → libigl-2.6.3.dev2}/attic/skip/file_contents_as_string.cpp +0 -0
- {libigl-2.6.3.dev1 → libigl-2.6.3.dev2}/attic/skip/fit_rotations.cpp +0 -0
- {libigl-2.6.3.dev1 → libigl-2.6.3.dev2}/attic/skip/frame_field_deformer.cpp +0 -0
- {libigl-2.6.3.dev1 → libigl-2.6.3.dev2}/attic/skip/frame_to_cross_field.cpp +0 -0
- {libigl-2.6.3.dev1 → libigl-2.6.3.dev2}/attic/skip/frustum.cpp +0 -0
- {libigl-2.6.3.dev1 → libigl-2.6.3.dev2}/attic/skip/group_sum_matrix.cpp +0 -0
- {libigl-2.6.3.dev1 → libigl-2.6.3.dev2}/attic/skip/harwell_boeing.cpp +0 -0
- {libigl-2.6.3.dev1 → libigl-2.6.3.dev2}/attic/skip/histc.cpp +0 -0
- {libigl-2.6.3.dev1 → libigl-2.6.3.dev2}/attic/skip/hsv_to_rgb.cpp +0 -0
- {libigl-2.6.3.dev1 → libigl-2.6.3.dev2}/attic/skip/infinite_cost_stopping_condition.cpp +0 -0
- {libigl-2.6.3.dev1 → libigl-2.6.3.dev2}/attic/skip/intersect.cpp +0 -0
- {libigl-2.6.3.dev1 → libigl-2.6.3.dev2}/attic/skip/invert_diag.cpp +0 -0
- {libigl-2.6.3.dev1 → libigl-2.6.3.dev2}/attic/skip/is_planar.cpp +0 -0
- {libigl-2.6.3.dev1 → libigl-2.6.3.dev2}/attic/skip/limit_faces.cpp +0 -0
- {libigl-2.6.3.dev1 → libigl-2.6.3.dev2}/attic/skip/line_field_missmatch.cpp +0 -0
- {libigl-2.6.3.dev1 → libigl-2.6.3.dev2}/attic/skip/line_search.cpp +0 -0
- {libigl-2.6.3.dev1 → libigl-2.6.3.dev2}/attic/skip/mat_to_quat.cpp +0 -0
- {libigl-2.6.3.dev1 → libigl-2.6.3.dev2}/attic/skip/material_colors.cpp +0 -0
- {libigl-2.6.3.dev1 → libigl-2.6.3.dev2}/attic/skip/max_faces_stopping_condition.cpp +0 -0
- {libigl-2.6.3.dev1 → libigl-2.6.3.dev2}/attic/skip/min_quad_dense.cpp +0 -0
- {libigl-2.6.3.dev1 → libigl-2.6.3.dev2}/attic/skip/normalize_quat.cpp +0 -0
- {libigl-2.6.3.dev1 → libigl-2.6.3.dev2}/attic/skip/on_boundary.cpp +0 -0
- {libigl-2.6.3.dev1 → libigl-2.6.3.dev2}/attic/skip/opengl2_draw_beach_ball.cpp +0 -0
- {libigl-2.6.3.dev1 → libigl-2.6.3.dev2}/attic/skip/opengl2_draw_floor.cpp +0 -0
- {libigl-2.6.3.dev1 → libigl-2.6.3.dev2}/attic/skip/opengl2_draw_mesh.cpp +0 -0
- {libigl-2.6.3.dev1 → libigl-2.6.3.dev2}/attic/skip/opengl2_draw_point.cpp +0 -0
- {libigl-2.6.3.dev1 → libigl-2.6.3.dev2}/attic/skip/opengl2_draw_rectangular_marquee.cpp +0 -0
- {libigl-2.6.3.dev1 → libigl-2.6.3.dev2}/attic/skip/opengl2_draw_skeleton_3d.cpp +0 -0
- {libigl-2.6.3.dev1 → libigl-2.6.3.dev2}/attic/skip/opengl2_draw_skeleton_vector_graphics.cpp +0 -0
- {libigl-2.6.3.dev1 → libigl-2.6.3.dev2}/attic/skip/opengl2_flare_textures.cpp +0 -0
- {libigl-2.6.3.dev1 → libigl-2.6.3.dev2}/attic/skip/opengl2_model_proj_viewport.cpp +0 -0
- {libigl-2.6.3.dev1 → libigl-2.6.3.dev2}/attic/skip/opengl2_print_gl_get.cpp +0 -0
- {libigl-2.6.3.dev1 → libigl-2.6.3.dev2}/attic/skip/opengl2_project.cpp +0 -0
- {libigl-2.6.3.dev1 → libigl-2.6.3.dev2}/attic/skip/opengl2_right_axis.cpp +0 -0
- {libigl-2.6.3.dev1 → libigl-2.6.3.dev2}/attic/skip/opengl2_shine_textures.cpp +0 -0
- {libigl-2.6.3.dev1 → libigl-2.6.3.dev2}/attic/skip/opengl2_sort_triangles.cpp +0 -0
- {libigl-2.6.3.dev1 → libigl-2.6.3.dev2}/attic/skip/opengl2_unproject.cpp +0 -0
- {libigl-2.6.3.dev1 → libigl-2.6.3.dev2}/attic/skip/opengl2_unproject_to_zero_plane.cpp +0 -0
- {libigl-2.6.3.dev1 → libigl-2.6.3.dev2}/attic/skip/opengl2_up_axis.cpp +0 -0
- {libigl-2.6.3.dev1 → libigl-2.6.3.dev2}/attic/skip/opengl2_view_axis.cpp +0 -0
- {libigl-2.6.3.dev1 → libigl-2.6.3.dev2}/attic/skip/opengl_create_shader_program.cpp +0 -0
- {libigl-2.6.3.dev1 → libigl-2.6.3.dev2}/attic/skip/opengl_destroy_shader_program.cpp +0 -0
- {libigl-2.6.3.dev1 → libigl-2.6.3.dev2}/attic/skip/opengl_gl_type_size.cpp +0 -0
- {libigl-2.6.3.dev1 → libigl-2.6.3.dev2}/attic/skip/opengl_glfw_background_window.cpp +0 -0
- {libigl-2.6.3.dev1 → libigl-2.6.3.dev2}/attic/skip/opengl_glfw_imgui_ImGuiHelpers.cpp +0 -0
- {libigl-2.6.3.dev1 → libigl-2.6.3.dev2}/attic/skip/opengl_init_render_to_texture.cpp +0 -0
- {libigl-2.6.3.dev1 → libigl-2.6.3.dev2}/attic/skip/opengl_load_shader.cpp +0 -0
- {libigl-2.6.3.dev1 → libigl-2.6.3.dev2}/attic/skip/opengl_print_program_info_log.cpp +0 -0
- {libigl-2.6.3.dev1 → libigl-2.6.3.dev2}/attic/skip/opengl_print_shader_info_log.cpp +0 -0
- {libigl-2.6.3.dev1 → libigl-2.6.3.dev2}/attic/skip/opengl_report_gl_error.cpp +0 -0
- {libigl-2.6.3.dev1 → libigl-2.6.3.dev2}/attic/skip/opengl_uniform_type_to_string.cpp +0 -0
- {libigl-2.6.3.dev1 → libigl-2.6.3.dev2}/attic/skip/ortho.cpp +0 -0
- {libigl-2.6.3.dev1 → libigl-2.6.3.dev2}/attic/skip/parallel_transport_angles.cpp +0 -0
- {libigl-2.6.3.dev1 → libigl-2.6.3.dev2}/attic/skip/polar_svd.cpp +0 -0
- {libigl-2.6.3.dev1 → libigl-2.6.3.dev2}/attic/skip/polar_svd3x3.cpp +0 -0
- {libigl-2.6.3.dev1 → libigl-2.6.3.dev2}/attic/skip/qslim_optimal_collapse_edge_callbacks.cpp +0 -0
- {libigl-2.6.3.dev1 → libigl-2.6.3.dev2}/attic/skip/quadric_binary_plus_operator.cpp +0 -0
- {libigl-2.6.3.dev1 → libigl-2.6.3.dev2}/attic/skip/quat_conjugate.cpp +0 -0
- {libigl-2.6.3.dev1 → libigl-2.6.3.dev2}/attic/skip/quat_mult.cpp +0 -0
- {libigl-2.6.3.dev1 → libigl-2.6.3.dev2}/attic/skip/quat_to_axis_angle.cpp +0 -0
- {libigl-2.6.3.dev1 → libigl-2.6.3.dev2}/attic/skip/quat_to_mat.cpp +0 -0
- {libigl-2.6.3.dev1 → libigl-2.6.3.dev2}/attic/skip/quats_to_column.cpp +0 -0
- {libigl-2.6.3.dev1 → libigl-2.6.3.dev2}/attic/skip/random_quaternion.cpp +0 -0
- {libigl-2.6.3.dev1 → libigl-2.6.3.dev2}/attic/skip/readBF.cpp +0 -0
- {libigl-2.6.3.dev1 → libigl-2.6.3.dev2}/attic/skip/readNODE.cpp +0 -0
- {libigl-2.6.3.dev1 → libigl-2.6.3.dev2}/attic/skip/readPLY.cpp +0 -0
- {libigl-2.6.3.dev1 → libigl-2.6.3.dev2}/attic/skip/readSTL.cpp +0 -0
- {libigl-2.6.3.dev1 → libigl-2.6.3.dev2}/attic/skip/rgb_to_hsv.cpp +0 -0
- {libigl-2.6.3.dev1 → libigl-2.6.3.dev2}/attic/skip/rotate_by_quat.cpp +0 -0
- {libigl-2.6.3.dev1 → libigl-2.6.3.dev2}/attic/skip/rotation_matrix_from_directions.cpp +0 -0
- {libigl-2.6.3.dev1 → libigl-2.6.3.dev2}/attic/skip/snap_to_canonical_view_quat.cpp +0 -0
- {libigl-2.6.3.dev1 → libigl-2.6.3.dev2}/attic/skip/snap_to_fixed_up.cpp +0 -0
- {libigl-2.6.3.dev1 → libigl-2.6.3.dev2}/attic/skip/sort_angles.cpp +0 -0
- {libigl-2.6.3.dev1 → libigl-2.6.3.dev2}/attic/skip/sort_triangles.cpp +0 -0
- {libigl-2.6.3.dev1 → libigl-2.6.3.dev2}/attic/skip/sort_vectors_ccw.cpp +0 -0
- {libigl-2.6.3.dev1 → libigl-2.6.3.dev2}/attic/skip/svd3x3.cpp +0 -0
- {libigl-2.6.3.dev1 → libigl-2.6.3.dev2}/attic/skip/svd3x3_avx.cpp +0 -0
- {libigl-2.6.3.dev1 → libigl-2.6.3.dev2}/attic/skip/svd3x3_sse.cpp +0 -0
- {libigl-2.6.3.dev1 → libigl-2.6.3.dev2}/attic/skip/trackball.cpp +0 -0
- {libigl-2.6.3.dev1 → libigl-2.6.3.dev2}/attic/skip/transpose_blocks.cpp +0 -0
- {libigl-2.6.3.dev1 → libigl-2.6.3.dev2}/attic/skip/unique_rows.cpp +0 -0
- {libigl-2.6.3.dev1 → libigl-2.6.3.dev2}/attic/skip/voxel_grid.cpp +0 -0
- {libigl-2.6.3.dev1 → libigl-2.6.3.dev2}/attic/skip/writePLY.cpp +0 -0
- {libigl-2.6.3.dev1 → libigl-2.6.3.dev2}/attic/skip/writeSTL.cpp +0 -0
- {libigl-2.6.3.dev1 → libigl-2.6.3.dev2}/attic/skip/writeWRL.cpp +0 -0
- {libigl-2.6.3.dev1 → libigl-2.6.3.dev2}/attic/todo-old/MeshBooleanType.cpp +0 -0
- {libigl-2.6.3.dev1 → libigl-2.6.3.dev2}/attic/todo-old/NormalType.cpp +0 -0
- {libigl-2.6.3.dev1 → libigl-2.6.3.dev2}/attic/todo-old/collapse_edge.cpp +0 -0
- {libigl-2.6.3.dev1 → libigl-2.6.3.dev2}/attic/todo-old/copyleft/copyleft_cgal_assign.cpp +0 -0
- {libigl-2.6.3.dev1 → libigl-2.6.3.dev2}/attic/todo-old/copyleft/copyleft_cgal_assign_scalar.cpp +0 -0
- {libigl-2.6.3.dev1 → libigl-2.6.3.dev2}/attic/todo-old/copyleft/copyleft_cgal_cell_adjacency.cpp +0 -0
- {libigl-2.6.3.dev1 → libigl-2.6.3.dev2}/attic/todo-old/copyleft/copyleft_cgal_closest_facet.cpp +0 -0
- {libigl-2.6.3.dev1 → libigl-2.6.3.dev2}/attic/todo-old/copyleft/copyleft_cgal_complex_to_mesh.cpp +0 -0
- {libigl-2.6.3.dev1 → libigl-2.6.3.dev2}/attic/todo-old/copyleft/copyleft_cgal_component_inside_component.cpp +0 -0
- {libigl-2.6.3.dev1 → libigl-2.6.3.dev2}/attic/todo-old/copyleft/copyleft_cgal_convex_hull.cpp +0 -0
- {libigl-2.6.3.dev1 → libigl-2.6.3.dev2}/attic/todo-old/copyleft/copyleft_cgal_delaunay_triangulation.cpp +0 -0
- {libigl-2.6.3.dev1 → libigl-2.6.3.dev2}/attic/todo-old/copyleft/copyleft_cgal_extract_cells.cpp +0 -0
- {libigl-2.6.3.dev1 → libigl-2.6.3.dev2}/attic/todo-old/copyleft/copyleft_cgal_extract_feature.cpp +0 -0
- {libigl-2.6.3.dev1 → libigl-2.6.3.dev2}/attic/todo-old/copyleft/copyleft_cgal_fast_winding_number.cpp +0 -0
- {libigl-2.6.3.dev1 → libigl-2.6.3.dev2}/attic/todo-old/copyleft/copyleft_cgal_half_space_box.cpp +0 -0
- {libigl-2.6.3.dev1 → libigl-2.6.3.dev2}/attic/todo-old/copyleft/copyleft_cgal_hausdorff.cpp +0 -0
- {libigl-2.6.3.dev1 → libigl-2.6.3.dev2}/attic/todo-old/copyleft/copyleft_cgal_incircle.cpp +0 -0
- {libigl-2.6.3.dev1 → libigl-2.6.3.dev2}/attic/todo-old/copyleft/copyleft_cgal_insert_into_cdt.cpp +0 -0
- {libigl-2.6.3.dev1 → libigl-2.6.3.dev2}/attic/todo-old/copyleft/copyleft_cgal_insphere.cpp +0 -0
- {libigl-2.6.3.dev1 → libigl-2.6.3.dev2}/attic/todo-old/copyleft/copyleft_cgal_intersect_other.cpp +0 -0
- {libigl-2.6.3.dev1 → libigl-2.6.3.dev2}/attic/todo-old/copyleft/copyleft_cgal_intersect_with_half_space.cpp +0 -0
- {libigl-2.6.3.dev1 → libigl-2.6.3.dev2}/attic/todo-old/copyleft/copyleft_cgal_lexicographic_triangulation.cpp +0 -0
- {libigl-2.6.3.dev1 → libigl-2.6.3.dev2}/attic/todo-old/copyleft/copyleft_cgal_mesh_boolean.cpp +0 -0
- {libigl-2.6.3.dev1 → libigl-2.6.3.dev2}/attic/todo-old/copyleft/copyleft_cgal_mesh_boolean_type_to_funcs.cpp +0 -0
- {libigl-2.6.3.dev1 → libigl-2.6.3.dev2}/attic/todo-old/copyleft/copyleft_cgal_mesh_to_cgal_triangle_list.cpp +0 -0
- {libigl-2.6.3.dev1 → libigl-2.6.3.dev2}/attic/todo-old/copyleft/copyleft_cgal_mesh_to_polyhedron.cpp +0 -0
- {libigl-2.6.3.dev1 → libigl-2.6.3.dev2}/attic/todo-old/copyleft/copyleft_cgal_minkowski_sum.cpp +0 -0
- {libigl-2.6.3.dev1 → libigl-2.6.3.dev2}/attic/todo-old/copyleft/copyleft_cgal_order_facets_around_edge.cpp +0 -0
- {libigl-2.6.3.dev1 → libigl-2.6.3.dev2}/attic/todo-old/copyleft/copyleft_cgal_order_facets_around_edges.cpp +0 -0
- {libigl-2.6.3.dev1 → libigl-2.6.3.dev2}/attic/todo-old/copyleft/copyleft_cgal_orient2D.cpp +0 -0
- {libigl-2.6.3.dev1 → libigl-2.6.3.dev2}/attic/todo-old/copyleft/copyleft_cgal_orient3D.cpp +0 -0
- {libigl-2.6.3.dev1 → libigl-2.6.3.dev2}/attic/todo-old/copyleft/copyleft_cgal_outer_element.cpp +0 -0
- {libigl-2.6.3.dev1 → libigl-2.6.3.dev2}/attic/todo-old/copyleft/copyleft_cgal_outer_facet.cpp +0 -0
- {libigl-2.6.3.dev1 → libigl-2.6.3.dev2}/attic/todo-old/copyleft/copyleft_cgal_outer_hull.cpp +0 -0
- {libigl-2.6.3.dev1 → libigl-2.6.3.dev2}/attic/todo-old/copyleft/copyleft_cgal_peel_outer_hull_layers.cpp +0 -0
- {libigl-2.6.3.dev1 → libigl-2.6.3.dev2}/attic/todo-old/copyleft/copyleft_cgal_peel_winding_number_layers.cpp +0 -0
- {libigl-2.6.3.dev1 → libigl-2.6.3.dev2}/attic/todo-old/copyleft/copyleft_cgal_piecewise_constant_winding_number.cpp +0 -0
- {libigl-2.6.3.dev1 → libigl-2.6.3.dev2}/attic/todo-old/copyleft/copyleft_cgal_point_areas.cpp +0 -0
- {libigl-2.6.3.dev1 → libigl-2.6.3.dev2}/attic/todo-old/copyleft/copyleft_cgal_point_mesh_squared_distance.cpp +0 -0
- {libigl-2.6.3.dev1 → libigl-2.6.3.dev2}/attic/todo-old/copyleft/copyleft_cgal_point_segment_squared_distance.cpp +0 -0
- {libigl-2.6.3.dev1 → libigl-2.6.3.dev2}/attic/todo-old/copyleft/copyleft_cgal_point_solid_signed_squared_distance.cpp +0 -0
- {libigl-2.6.3.dev1 → libigl-2.6.3.dev2}/attic/todo-old/copyleft/copyleft_cgal_point_triangle_squared_distance.cpp +0 -0
- {libigl-2.6.3.dev1 → libigl-2.6.3.dev2}/attic/todo-old/copyleft/copyleft_cgal_points_inside_component.cpp +0 -0
- {libigl-2.6.3.dev1 → libigl-2.6.3.dev2}/attic/todo-old/copyleft/copyleft_cgal_polyhedron_to_mesh.cpp +0 -0
- {libigl-2.6.3.dev1 → libigl-2.6.3.dev2}/attic/todo-old/copyleft/copyleft_cgal_projected_cdt.cpp +0 -0
- {libigl-2.6.3.dev1 → libigl-2.6.3.dev2}/attic/todo-old/copyleft/copyleft_cgal_projected_delaunay.cpp +0 -0
- {libigl-2.6.3.dev1 → libigl-2.6.3.dev2}/attic/todo-old/copyleft/copyleft_cgal_propagate_winding_numbers.cpp +0 -0
- {libigl-2.6.3.dev1 → libigl-2.6.3.dev2}/attic/todo-old/copyleft/copyleft_cgal_read_triangle_mesh.cpp +0 -0
- {libigl-2.6.3.dev1 → libigl-2.6.3.dev2}/attic/todo-old/copyleft/copyleft_cgal_relabel_small_immersed_cells.cpp +0 -0
- {libigl-2.6.3.dev1 → libigl-2.6.3.dev2}/attic/todo-old/copyleft/copyleft_cgal_remesh_intersections.cpp +0 -0
- {libigl-2.6.3.dev1 → libigl-2.6.3.dev2}/attic/todo-old/copyleft/copyleft_cgal_remesh_self_intersections.cpp +0 -0
- {libigl-2.6.3.dev1 → libigl-2.6.3.dev2}/attic/todo-old/copyleft/copyleft_cgal_resolve_intersections.cpp +0 -0
- {libigl-2.6.3.dev1 → libigl-2.6.3.dev2}/attic/todo-old/copyleft/copyleft_cgal_row_to_point.cpp +0 -0
- {libigl-2.6.3.dev1 → libigl-2.6.3.dev2}/attic/todo-old/copyleft/copyleft_cgal_segment_segment_squared_distance.cpp +0 -0
- {libigl-2.6.3.dev1 → libigl-2.6.3.dev2}/attic/todo-old/copyleft/copyleft_cgal_signed_distance_isosurface.cpp +0 -0
- {libigl-2.6.3.dev1 → libigl-2.6.3.dev2}/attic/todo-old/copyleft/copyleft_cgal_snap_rounding.cpp +0 -0
- {libigl-2.6.3.dev1 → libigl-2.6.3.dev2}/attic/todo-old/copyleft/copyleft_cgal_string_to_mesh_boolean_type.cpp +0 -0
- {libigl-2.6.3.dev1 → libigl-2.6.3.dev2}/attic/todo-old/copyleft/copyleft_cgal_subdivide_segments.cpp +0 -0
- {libigl-2.6.3.dev1 → libigl-2.6.3.dev2}/attic/todo-old/copyleft/copyleft_cgal_submesh_aabb_tree.cpp +0 -0
- {libigl-2.6.3.dev1 → libigl-2.6.3.dev2}/attic/todo-old/copyleft/copyleft_cgal_triangle_triangle_squared_distance.cpp +0 -0
- {libigl-2.6.3.dev1 → libigl-2.6.3.dev2}/attic/todo-old/copyleft/copyleft_cgal_trim_with_solid.cpp +0 -0
- {libigl-2.6.3.dev1 → libigl-2.6.3.dev2}/attic/todo-old/copyleft/copyleft_cgal_wire_mesh.cpp +0 -0
- {libigl-2.6.3.dev1 → libigl-2.6.3.dev2}/attic/todo-old/copyleft/copyleft_comiso_miq.cpp +0 -0
- {libigl-2.6.3.dev1 → libigl-2.6.3.dev2}/attic/todo-old/copyleft/copyleft_cork_mesh_boolean.cpp +0 -0
- {libigl-2.6.3.dev1 → libigl-2.6.3.dev2}/attic/todo-old/copyleft/copyleft_marching_cubes.cpp +0 -0
- {libigl-2.6.3.dev1 → libigl-2.6.3.dev2}/attic/todo-old/copyleft/copyleft_offset_surface.cpp +0 -0
- {libigl-2.6.3.dev1 → libigl-2.6.3.dev2}/attic/todo-old/copyleft/copyleft_opengl2_render_to_tga.cpp +0 -0
- {libigl-2.6.3.dev1 → libigl-2.6.3.dev2}/attic/todo-old/copyleft/copyleft_opengl2_texture_from_tga.cpp +0 -0
- {libigl-2.6.3.dev1 → libigl-2.6.3.dev2}/attic/todo-old/copyleft/copyleft_progressive_hulls.cpp +0 -0
- {libigl-2.6.3.dev1 → libigl-2.6.3.dev2}/attic/todo-old/copyleft/copyleft_progressive_hulls_cost_and_placement.cpp +0 -0
- {libigl-2.6.3.dev1 → libigl-2.6.3.dev2}/attic/todo-old/copyleft/copyleft_quadprog.cpp +0 -0
- {libigl-2.6.3.dev1 → libigl-2.6.3.dev2}/attic/todo-old/copyleft/copyleft_swept_volume.cpp +0 -0
- {libigl-2.6.3.dev1 → libigl-2.6.3.dev2}/attic/todo-old/copyleft/copyleft_tetgen_mesh_with_skeleton.cpp +0 -0
- {libigl-2.6.3.dev1 → libigl-2.6.3.dev2}/attic/todo-old/copyleft/copyleft_tetgen_read_into_tetgenio.cpp +0 -0
- {libigl-2.6.3.dev1 → libigl-2.6.3.dev2}/attic/todo-old/copyleft/copyleft_tetgen_tetrahedralize.cpp +0 -0
- {libigl-2.6.3.dev1 → libigl-2.6.3.dev2}/attic/todo-old/dijkstra.cpp +0 -0
- {libigl-2.6.3.dev1 → libigl-2.6.3.dev2}/attic/todo-old/embree_bone_heat.cpp +0 -0
- {libigl-2.6.3.dev1 → libigl-2.6.3.dev2}/attic/todo-old/embree_reorient_facets_raycast.cpp +0 -0
- {libigl-2.6.3.dev1 → libigl-2.6.3.dev2}/attic/todo-old/fast_winding_number.cpp +0 -0
- {libigl-2.6.3.dev1 → libigl-2.6.3.dev2}/attic/todo-old/flip_edge.cpp +0 -0
- {libigl-2.6.3.dev1 → libigl-2.6.3.dev2}/attic/todo-old/knn.cpp +0 -0
- {libigl-2.6.3.dev1 → libigl-2.6.3.dev2}/attic/todo-old/mosek_mosek_guarded.cpp +0 -0
- {libigl-2.6.3.dev1 → libigl-2.6.3.dev2}/attic/todo-old/mosek_mosek_linprog.cpp +0 -0
- {libigl-2.6.3.dev1 → libigl-2.6.3.dev2}/attic/todo-old/octree.cpp +0 -0
- {libigl-2.6.3.dev1 → libigl-2.6.3.dev2}/attic/todo-old/per_vertex_point_to_plane_quadrics.cpp +0 -0
- {libigl-2.6.3.dev1 → libigl-2.6.3.dev2}/attic/todo-old/png_readPNG.cpp +0 -0
- {libigl-2.6.3.dev1 → libigl-2.6.3.dev2}/attic/todo-old/png_render_to_png.cpp +0 -0
- {libigl-2.6.3.dev1 → libigl-2.6.3.dev2}/attic/todo-old/png_render_to_png_async.cpp +0 -0
- {libigl-2.6.3.dev1 → libigl-2.6.3.dev2}/attic/todo-old/png_texture_from_file.cpp +0 -0
- {libigl-2.6.3.dev1 → libigl-2.6.3.dev2}/attic/todo-old/png_texture_from_png.cpp +0 -0
- {libigl-2.6.3.dev1 → libigl-2.6.3.dev2}/attic/todo-old/png_writePNG.cpp +0 -0
- {libigl-2.6.3.dev1 → libigl-2.6.3.dev2}/attic/todo-old/pseudonormal_test.cpp +0 -0
- {libigl-2.6.3.dev1 → libigl-2.6.3.dev2}/attic/todo-old/readWRL.cpp +0 -0
- {libigl-2.6.3.dev1 → libigl-2.6.3.dev2}/attic/todo-old/remesh_along_isoline.cpp +0 -0
- {libigl-2.6.3.dev1 → libigl-2.6.3.dev2}/attic/todo-old/seam_edges.cpp +0 -0
- {libigl-2.6.3.dev1 → libigl-2.6.3.dev2}/attic/todo-old/shortest_edge_and_midpoint.cpp +0 -0
- {libigl-2.6.3.dev1 → libigl-2.6.3.dev2}/attic/todo-old/squared_edge_lengths.cpp +0 -0
- {libigl-2.6.3.dev1 → libigl-2.6.3.dev2}/attic/todo-old/straighten_seams.cpp +0 -0
- {libigl-2.6.3.dev1 → libigl-2.6.3.dev2}/attic/todo-old/swept_volume_signed_distance.cpp +0 -0
- {libigl-2.6.3.dev1 → libigl-2.6.3.dev2}/attic/todo-old/triangle_cdt.cpp +0 -0
- {libigl-2.6.3.dev1 → libigl-2.6.3.dev2}/attic/todo-old/unzip_corners.cpp +0 -0
- {libigl-2.6.3.dev1 → libigl-2.6.3.dev2}/attic/todo-old/writeBF.cpp +0 -0
- {libigl-2.6.3.dev1 → libigl-2.6.3.dev2}/attic/todo-old/writeDMAT.cpp +0 -0
- {libigl-2.6.3.dev1 → libigl-2.6.3.dev2}/attic/todo-old/writeMESH.cpp +0 -0
- {libigl-2.6.3.dev1 → libigl-2.6.3.dev2}/attic/todo-old/writeTGF.cpp +0 -0
- {libigl-2.6.3.dev1 → libigl-2.6.3.dev2}/attic/todo-old/xml_writeDAE.cpp +0 -0
- {libigl-2.6.3.dev1 → libigl-2.6.3.dev2}/attic/todo-old/xml_write_triangle_mesh.cpp +0 -0
- {libigl-2.6.3.dev1 → libigl-2.6.3.dev2}/classes/AABB.cpp +0 -0
- {libigl-2.6.3.dev1 → libigl-2.6.3.dev2}/classes/classes.cpp +0 -0
- {libigl-2.6.3.dev1 → libigl-2.6.3.dev2}/cmake/CXXFeatures.cmake +0 -0
- {libigl-2.6.3.dev1 → libigl-2.6.3.dev2}/cmake/FindLIBIGL.cmake +0 -0
- {libigl-2.6.3.dev1 → libigl-2.6.3.dev2}/cmake/UseColors.cmake +0 -0
- {libigl-2.6.3.dev1 → libigl-2.6.3.dev2}/cmake/Warnings.cmake +0 -0
- {libigl-2.6.3.dev1 → libigl-2.6.3.dev2}/include/default_types.h +0 -0
- {libigl-2.6.3.dev1 → libigl-2.6.3.dev2}/memory/MEMORY.md +0 -0
- {libigl-2.6.3.dev1 → libigl-2.6.3.dev2}/missing.sh +0 -0
- {libigl-2.6.3.dev1 → libigl-2.6.3.dev2}/mkdocs.yml +0 -0
- {libigl-2.6.3.dev1 → libigl-2.6.3.dev2}/postBuild +0 -0
- {libigl-2.6.3.dev1 → libigl-2.6.3.dev2}/priority.txt +0 -0
- {libigl-2.6.3.dev1 → libigl-2.6.3.dev2}/scripts/basic_function.mako +0 -0
- {libigl-2.6.3.dev1 → libigl-2.6.3.dev2}/scripts/blender_igl_export.py +0 -0
- {libigl-2.6.3.dev1 → libigl-2.6.3.dev2}/scripts/generate_bindings.py +0 -0
- {libigl-2.6.3.dev1 → libigl-2.6.3.dev2}/scripts/make_lean.py +0 -0
- {libigl-2.6.3.dev1 → libigl-2.6.3.dev2}/scripts/parser.py +0 -0
- {libigl-2.6.3.dev1 → libigl-2.6.3.dev2}/src/AABB.cpp +0 -0
- {libigl-2.6.3.dev1 → libigl-2.6.3.dev2}/src/FileEncoding.cpp +0 -0
- {libigl-2.6.3.dev1 → libigl-2.6.3.dev2}/src/MappingEnergyType.cpp +0 -0
- {libigl-2.6.3.dev1 → libigl-2.6.3.dev2}/src/MassMatrixType.cpp +0 -0
- {libigl-2.6.3.dev1 → libigl-2.6.3.dev2}/src/OrientedBoundingBoxMinimizeType.cpp +0 -0
- {libigl-2.6.3.dev1 → libigl-2.6.3.dev2}/src/accumarray.cpp +0 -0
- {libigl-2.6.3.dev1 → libigl-2.6.3.dev2}/src/adjacency_list.cpp +0 -0
- {libigl-2.6.3.dev1 → libigl-2.6.3.dev2}/src/adjacency_matrix.cpp +0 -0
- {libigl-2.6.3.dev1 → libigl-2.6.3.dev2}/src/all_pairs_distances.cpp +0 -0
- {libigl-2.6.3.dev1 → libigl-2.6.3.dev2}/src/arap.cpp +0 -0
- {libigl-2.6.3.dev1 → libigl-2.6.3.dev2}/src/average_from_edges_onto_vertices.cpp +0 -0
- {libigl-2.6.3.dev1 → libigl-2.6.3.dev2}/src/average_onto_faces.cpp +0 -0
- {libigl-2.6.3.dev1 → libigl-2.6.3.dev2}/src/average_onto_vertices.cpp +0 -0
- {libigl-2.6.3.dev1 → libigl-2.6.3.dev2}/src/avg_edge_length.cpp +0 -0
- {libigl-2.6.3.dev1 → libigl-2.6.3.dev2}/src/barycenter.cpp +0 -0
- {libigl-2.6.3.dev1 → libigl-2.6.3.dev2}/src/barycentric_coordinates.cpp +0 -0
- {libigl-2.6.3.dev1 → libigl-2.6.3.dev2}/src/barycentric_interpolation.cpp +0 -0
- {libigl-2.6.3.dev1 → libigl-2.6.3.dev2}/src/bbw.cpp +0 -0
- {libigl-2.6.3.dev1 → libigl-2.6.3.dev2}/src/bezier.cpp +0 -0
- {libigl-2.6.3.dev1 → libigl-2.6.3.dev2}/src/bfs_orient.cpp +0 -0
- {libigl-2.6.3.dev1 → libigl-2.6.3.dev2}/src/biharmonic_coordinates.cpp +0 -0
- {libigl-2.6.3.dev1 → libigl-2.6.3.dev2}/src/bijective_composite_harmonic_mapping.cpp +0 -0
- {libigl-2.6.3.dev1 → libigl-2.6.3.dev2}/src/blue_noise.cpp +0 -0
- {libigl-2.6.3.dev1 → libigl-2.6.3.dev2}/src/boundary_facets.cpp +0 -0
- {libigl-2.6.3.dev1 → libigl-2.6.3.dev2}/src/boundary_loop.cpp +0 -0
- {libigl-2.6.3.dev1 → libigl-2.6.3.dev2}/src/bounding_box.cpp +0 -0
- {libigl-2.6.3.dev1 → libigl-2.6.3.dev2}/src/bounding_box_diagonal.cpp +0 -0
- {libigl-2.6.3.dev1 → libigl-2.6.3.dev2}/src/centroid.cpp +0 -0
- {libigl-2.6.3.dev1 → libigl-2.6.3.dev2}/src/circulation.cpp +0 -0
- {libigl-2.6.3.dev1 → libigl-2.6.3.dev2}/src/circumradius.cpp +0 -0
- {libigl-2.6.3.dev1 → libigl-2.6.3.dev2}/src/collapse_edge.cpp +0 -0
- {libigl-2.6.3.dev1 → libigl-2.6.3.dev2}/src/colormap.cpp +0 -0
- {libigl-2.6.3.dev1 → libigl-2.6.3.dev2}/src/comb_cross_field.cpp +0 -0
- {libigl-2.6.3.dev1 → libigl-2.6.3.dev2}/src/comb_frame_field.cpp +0 -0
- {libigl-2.6.3.dev1 → libigl-2.6.3.dev2}/src/combine.cpp +0 -0
- {libigl-2.6.3.dev1 → libigl-2.6.3.dev2}/src/compute_frame_field_bisectors.cpp +0 -0
- {libigl-2.6.3.dev1 → libigl-2.6.3.dev2}/src/connected_components.cpp +0 -0
- {libigl-2.6.3.dev1 → libigl-2.6.3.dev2}/src/copyleft/cgal/convex_hull.cpp +0 -0
- {libigl-2.6.3.dev1 → libigl-2.6.3.dev2}/src/copyleft/cgal/fast_winding_number.cpp +0 -0
- {libigl-2.6.3.dev1 → libigl-2.6.3.dev2}/src/copyleft/cgal/intersect_other.cpp +0 -0
- {libigl-2.6.3.dev1 → libigl-2.6.3.dev2}/src/copyleft/cgal/intersect_with_half_space.cpp +0 -0
- {libigl-2.6.3.dev1 → libigl-2.6.3.dev2}/src/copyleft/cgal/mesh_boolean.cpp +0 -0
- {libigl-2.6.3.dev1 → libigl-2.6.3.dev2}/src/copyleft/cgal/module.cpp +0 -0
- {libigl-2.6.3.dev1 → libigl-2.6.3.dev2}/src/copyleft/cgal/oriented_bounding_box.cpp +0 -0
- {libigl-2.6.3.dev1 → libigl-2.6.3.dev2}/src/copyleft/cgal/point_areas.cpp +0 -0
- {libigl-2.6.3.dev1 → libigl-2.6.3.dev2}/src/copyleft/cgal/remesh_self_intersections.cpp +0 -0
- {libigl-2.6.3.dev1 → libigl-2.6.3.dev2}/src/copyleft/cgal/trim_with_solid.cpp +0 -0
- {libigl-2.6.3.dev1 → libigl-2.6.3.dev2}/src/copyleft/module.cpp +0 -0
- {libigl-2.6.3.dev1 → libigl-2.6.3.dev2}/src/copyleft/progressive_hulls.cpp +0 -0
- {libigl-2.6.3.dev1 → libigl-2.6.3.dev2}/src/copyleft/tetgen/module.cpp +0 -0
- {libigl-2.6.3.dev1 → libigl-2.6.3.dev2}/src/copyleft/tetgen/tetrahedralize.cpp +0 -0
- {libigl-2.6.3.dev1 → libigl-2.6.3.dev2}/src/cotmatrix.cpp +0 -0
- {libigl-2.6.3.dev1 → libigl-2.6.3.dev2}/src/cotmatrix_entries.cpp +0 -0
- {libigl-2.6.3.dev1 → libigl-2.6.3.dev2}/src/cotmatrix_intrinsic.cpp +0 -0
- {libigl-2.6.3.dev1 → libigl-2.6.3.dev2}/src/cross_field_mismatch.cpp +0 -0
- {libigl-2.6.3.dev1 → libigl-2.6.3.dev2}/src/crouzeix_raviart_cotmatrix.cpp +0 -0
- {libigl-2.6.3.dev1 → libigl-2.6.3.dev2}/src/crouzeix_raviart_massmatrix.cpp +0 -0
- {libigl-2.6.3.dev1 → libigl-2.6.3.dev2}/src/curved_hessian_energy.cpp +0 -0
- {libigl-2.6.3.dev1 → libigl-2.6.3.dev2}/src/cut_mesh.cpp +0 -0
- {libigl-2.6.3.dev1 → libigl-2.6.3.dev2}/src/cut_mesh_from_singularities.cpp +0 -0
- {libigl-2.6.3.dev1 → libigl-2.6.3.dev2}/src/cut_to_disk.cpp +0 -0
- {libigl-2.6.3.dev1 → libigl-2.6.3.dev2}/src/cylinder.cpp +0 -0
- {libigl-2.6.3.dev1 → libigl-2.6.3.dev2}/src/decimate.cpp +0 -0
- {libigl-2.6.3.dev1 → libigl-2.6.3.dev2}/src/dihedral_angles.cpp +0 -0
- {libigl-2.6.3.dev1 → libigl-2.6.3.dev2}/src/dihedral_angles_intrinsic.cpp +0 -0
- {libigl-2.6.3.dev1 → libigl-2.6.3.dev2}/src/dijkstra.cpp +0 -0
- {libigl-2.6.3.dev1 → libigl-2.6.3.dev2}/src/directed_edge_parents.cpp +0 -0
- {libigl-2.6.3.dev1 → libigl-2.6.3.dev2}/src/doublearea.cpp +0 -0
- {libigl-2.6.3.dev1 → libigl-2.6.3.dev2}/src/dual_contouring.cpp +0 -0
- {libigl-2.6.3.dev1 → libigl-2.6.3.dev2}/src/ears.cpp +0 -0
- {libigl-2.6.3.dev1 → libigl-2.6.3.dev2}/src/edge_flaps.cpp +0 -0
- {libigl-2.6.3.dev1 → libigl-2.6.3.dev2}/src/edge_lengths.cpp +0 -0
- {libigl-2.6.3.dev1 → libigl-2.6.3.dev2}/src/edge_topology.cpp +0 -0
- {libigl-2.6.3.dev1 → libigl-2.6.3.dev2}/src/edges.cpp +0 -0
- {libigl-2.6.3.dev1 → libigl-2.6.3.dev2}/src/edges_to_path.cpp +0 -0
- {libigl-2.6.3.dev1 → libigl-2.6.3.dev2}/src/embree/EmbreeIntersector.cpp +0 -0
- {libigl-2.6.3.dev1 → libigl-2.6.3.dev2}/src/embree/ambient_occlusion.cpp +0 -0
- {libigl-2.6.3.dev1 → libigl-2.6.3.dev2}/src/embree/module.cpp +0 -0
- {libigl-2.6.3.dev1 → libigl-2.6.3.dev2}/src/embree/reorient_facets_raycast.cpp +0 -0
- {libigl-2.6.3.dev1 → libigl-2.6.3.dev2}/src/embree/shape_diameter_function.cpp +0 -0
- {libigl-2.6.3.dev1 → libigl-2.6.3.dev2}/src/euler_characteristic.cpp +0 -0
- {libigl-2.6.3.dev1 → libigl-2.6.3.dev2}/src/exact_geodesic.cpp +0 -0
- {libigl-2.6.3.dev1 → libigl-2.6.3.dev2}/src/exterior_edges.cpp +0 -0
- {libigl-2.6.3.dev1 → libigl-2.6.3.dev2}/src/extract_manifold_patches.cpp +0 -0
- {libigl-2.6.3.dev1 → libigl-2.6.3.dev2}/src/face_areas.cpp +0 -0
- {libigl-2.6.3.dev1 → libigl-2.6.3.dev2}/src/face_occurrences.cpp +0 -0
- {libigl-2.6.3.dev1 → libigl-2.6.3.dev2}/src/facet_adjacency_matrix.cpp +0 -0
- {libigl-2.6.3.dev1 → libigl-2.6.3.dev2}/src/facet_components.cpp +0 -0
- {libigl-2.6.3.dev1 → libigl-2.6.3.dev2}/src/false_barycentric_subdivision.cpp +0 -0
- {libigl-2.6.3.dev1 → libigl-2.6.3.dev2}/src/fast_winding_number.cpp +0 -0
- {libigl-2.6.3.dev1 → libigl-2.6.3.dev2}/src/find_cross_field_singularities.cpp +0 -0
- {libigl-2.6.3.dev1 → libigl-2.6.3.dev2}/src/fit_plane.cpp +0 -0
- {libigl-2.6.3.dev1 → libigl-2.6.3.dev2}/src/flipped_triangles.cpp +0 -0
- {libigl-2.6.3.dev1 → libigl-2.6.3.dev2}/src/flood_fill.cpp +0 -0
- {libigl-2.6.3.dev1 → libigl-2.6.3.dev2}/src/gaussian_curvature.cpp +0 -0
- {libigl-2.6.3.dev1 → libigl-2.6.3.dev2}/src/grad.cpp +0 -0
- {libigl-2.6.3.dev1 → libigl-2.6.3.dev2}/src/grid.cpp +0 -0
- {libigl-2.6.3.dev1 → libigl-2.6.3.dev2}/src/harmonic.cpp +0 -0
- {libigl-2.6.3.dev1 → libigl-2.6.3.dev2}/src/hausdorff.cpp +0 -0
- {libigl-2.6.3.dev1 → libigl-2.6.3.dev2}/src/heat_geodesics.cpp +0 -0
- {libigl-2.6.3.dev1 → libigl-2.6.3.dev2}/src/hessian.cpp +0 -0
- {libigl-2.6.3.dev1 → libigl-2.6.3.dev2}/src/hessian_energy.cpp +0 -0
- {libigl-2.6.3.dev1 → libigl-2.6.3.dev2}/src/hsv_to_rgb.cpp +0 -0
- {libigl-2.6.3.dev1 → libigl-2.6.3.dev2}/src/icosahedron.cpp +0 -0
- {libigl-2.6.3.dev1 → libigl-2.6.3.dev2}/src/in_element.cpp +0 -0
- {libigl-2.6.3.dev1 → libigl-2.6.3.dev2}/src/inradius.cpp +0 -0
- {libigl-2.6.3.dev1 → libigl-2.6.3.dev2}/src/internal_angles.cpp +0 -0
- {libigl-2.6.3.dev1 → libigl-2.6.3.dev2}/src/intrinsic_delaunay_cotmatrix.cpp +0 -0
- {libigl-2.6.3.dev1 → libigl-2.6.3.dev2}/src/intrinsic_delaunay_triangulation.cpp +0 -0
- {libigl-2.6.3.dev1 → libigl-2.6.3.dev2}/src/is_border_vertex.cpp +0 -0
- {libigl-2.6.3.dev1 → libigl-2.6.3.dev2}/src/is_boundary_edge.cpp +0 -0
- {libigl-2.6.3.dev1 → libigl-2.6.3.dev2}/src/is_delaunay.cpp +0 -0
- {libigl-2.6.3.dev1 → libigl-2.6.3.dev2}/src/is_edge_manifold.cpp +0 -0
- {libigl-2.6.3.dev1 → libigl-2.6.3.dev2}/src/is_intrinsic_delaunay.cpp +0 -0
- {libigl-2.6.3.dev1 → libigl-2.6.3.dev2}/src/is_irregular_vertex.cpp +0 -0
- {libigl-2.6.3.dev1 → libigl-2.6.3.dev2}/src/is_vertex_manifold.cpp +0 -0
- {libigl-2.6.3.dev1 → libigl-2.6.3.dev2}/src/ismember_rows.cpp +0 -0
- {libigl-2.6.3.dev1 → libigl-2.6.3.dev2}/src/isolines.cpp +0 -0
- {libigl-2.6.3.dev1 → libigl-2.6.3.dev2}/src/isolines_intrinsic.cpp +0 -0
- {libigl-2.6.3.dev1 → libigl-2.6.3.dev2}/src/iterative_closest_point.cpp +0 -0
- {libigl-2.6.3.dev1 → libigl-2.6.3.dev2}/src/kelvinlets.cpp +0 -0
- {libigl-2.6.3.dev1 → libigl-2.6.3.dev2}/src/knn.cpp +0 -0
- {libigl-2.6.3.dev1 → libigl-2.6.3.dev2}/src/lbs_matrix.cpp +0 -0
- {libigl-2.6.3.dev1 → libigl-2.6.3.dev2}/src/lipschitz_octree.cpp +0 -0
- {libigl-2.6.3.dev1 → libigl-2.6.3.dev2}/src/local_basis.cpp +0 -0
- {libigl-2.6.3.dev1 → libigl-2.6.3.dev2}/src/look_at.cpp +0 -0
- {libigl-2.6.3.dev1 → libigl-2.6.3.dev2}/src/loop.cpp +0 -0
- {libigl-2.6.3.dev1 → libigl-2.6.3.dev2}/src/lscm.cpp +0 -0
- {libigl-2.6.3.dev1 → libigl-2.6.3.dev2}/src/map_vertices_to_circle.cpp +0 -0
- {libigl-2.6.3.dev1 → libigl-2.6.3.dev2}/src/marching_cubes.cpp +0 -0
- {libigl-2.6.3.dev1 → libigl-2.6.3.dev2}/src/massmatrix.cpp +0 -0
- {libigl-2.6.3.dev1 → libigl-2.6.3.dev2}/src/massmatrix_intrinsic.cpp +0 -0
- {libigl-2.6.3.dev1 → libigl-2.6.3.dev2}/src/matlab_format.cpp +0 -0
- {libigl-2.6.3.dev1 → libigl-2.6.3.dev2}/src/min_quad_with_fixed.cpp +0 -0
- {libigl-2.6.3.dev1 → libigl-2.6.3.dev2}/src/module.cpp +0 -0
- {libigl-2.6.3.dev1 → libigl-2.6.3.dev2}/src/moments.cpp +0 -0
- {libigl-2.6.3.dev1 → libigl-2.6.3.dev2}/src/mvc.cpp +0 -0
- {libigl-2.6.3.dev1 → libigl-2.6.3.dev2}/src/noop.cpp +0 -0
- {libigl-2.6.3.dev1 → libigl-2.6.3.dev2}/src/octree.cpp +0 -0
- {libigl-2.6.3.dev1 → libigl-2.6.3.dev2}/src/offset_surface.cpp +0 -0
- {libigl-2.6.3.dev1 → libigl-2.6.3.dev2}/src/on_boundary.cpp +0 -0
- {libigl-2.6.3.dev1 → libigl-2.6.3.dev2}/src/orient_halfedges.cpp +0 -0
- {libigl-2.6.3.dev1 → libigl-2.6.3.dev2}/src/orient_outward.cpp +0 -0
- {libigl-2.6.3.dev1 → libigl-2.6.3.dev2}/src/orientable_patches.cpp +0 -0
- {libigl-2.6.3.dev1 → libigl-2.6.3.dev2}/src/oriented_bounding_box.cpp +0 -0
- {libigl-2.6.3.dev1 → libigl-2.6.3.dev2}/src/oriented_facets.cpp +0 -0
- {libigl-2.6.3.dev1 → libigl-2.6.3.dev2}/src/per_corner_normals.cpp +0 -0
- {libigl-2.6.3.dev1 → libigl-2.6.3.dev2}/src/per_edge_normals.cpp +0 -0
- {libigl-2.6.3.dev1 → libigl-2.6.3.dev2}/src/per_face_normals.cpp +0 -0
- {libigl-2.6.3.dev1 → libigl-2.6.3.dev2}/src/per_vertex_attribute_smoothing.cpp +0 -0
- {libigl-2.6.3.dev1 → libigl-2.6.3.dev2}/src/per_vertex_normals.cpp +0 -0
- {libigl-2.6.3.dev1 → libigl-2.6.3.dev2}/src/point_mesh_squared_distance.cpp +0 -0
- {libigl-2.6.3.dev1 → libigl-2.6.3.dev2}/src/polar_dec.cpp +0 -0
- {libigl-2.6.3.dev1 → libigl-2.6.3.dev2}/src/polar_svd.cpp +0 -0
- {libigl-2.6.3.dev1 → libigl-2.6.3.dev2}/src/polygon_corners.cpp +0 -0
- {libigl-2.6.3.dev1 → libigl-2.6.3.dev2}/src/polygons_to_triangles.cpp +0 -0
- {libigl-2.6.3.dev1 → libigl-2.6.3.dev2}/src/principal_curvature.cpp +0 -0
- {libigl-2.6.3.dev1 → libigl-2.6.3.dev2}/src/procrustes.cpp +0 -0
- {libigl-2.6.3.dev1 → libigl-2.6.3.dev2}/src/project.cpp +0 -0
- {libigl-2.6.3.dev1 → libigl-2.6.3.dev2}/src/project_to_line.cpp +0 -0
- {libigl-2.6.3.dev1 → libigl-2.6.3.dev2}/src/project_to_line_segment.cpp +0 -0
- {libigl-2.6.3.dev1 → libigl-2.6.3.dev2}/src/pseudonormal_test.cpp +0 -0
- {libigl-2.6.3.dev1 → libigl-2.6.3.dev2}/src/qslim.cpp +0 -0
- {libigl-2.6.3.dev1 → libigl-2.6.3.dev2}/src/quad_grid.cpp +0 -0
- {libigl-2.6.3.dev1 → libigl-2.6.3.dev2}/src/random_dir.cpp +0 -0
- {libigl-2.6.3.dev1 → libigl-2.6.3.dev2}/src/random_points_on_mesh.cpp +0 -0
- {libigl-2.6.3.dev1 → libigl-2.6.3.dev2}/src/ray_mesh_intersect.cpp +0 -0
- {libigl-2.6.3.dev1 → libigl-2.6.3.dev2}/src/ray_sphere_intersect.cpp +0 -0
- {libigl-2.6.3.dev1 → libigl-2.6.3.dev2}/src/ray_triangle_intersect.cpp +0 -0
- {libigl-2.6.3.dev1 → libigl-2.6.3.dev2}/src/readCSV.cpp +0 -0
- {libigl-2.6.3.dev1 → libigl-2.6.3.dev2}/src/readDMAT.cpp +0 -0
- {libigl-2.6.3.dev1 → libigl-2.6.3.dev2}/src/readMESH.cpp +0 -0
- {libigl-2.6.3.dev1 → libigl-2.6.3.dev2}/src/readMSH.cpp +0 -0
- {libigl-2.6.3.dev1 → libigl-2.6.3.dev2}/src/readOBJ.cpp +0 -0
- {libigl-2.6.3.dev1 → libigl-2.6.3.dev2}/src/readOFF.cpp +0 -0
- {libigl-2.6.3.dev1 → libigl-2.6.3.dev2}/src/readSTL.cpp +0 -0
- {libigl-2.6.3.dev1 → libigl-2.6.3.dev2}/src/read_triangle_mesh.cpp +0 -0
- {libigl-2.6.3.dev1 → libigl-2.6.3.dev2}/src/remove_duplicate_vertices.cpp +0 -0
- {libigl-2.6.3.dev1 → libigl-2.6.3.dev2}/src/remove_unreferenced.cpp +0 -0
- {libigl-2.6.3.dev1 → libigl-2.6.3.dev2}/src/rgb_to_hsv.cpp +0 -0
- {libigl-2.6.3.dev1 → libigl-2.6.3.dev2}/src/rigid_alignment.cpp +0 -0
- {libigl-2.6.3.dev1 → libigl-2.6.3.dev2}/src/rotate_vectors.cpp +0 -0
- {libigl-2.6.3.dev1 → libigl-2.6.3.dev2}/src/rotation_matrix_from_directions.cpp +0 -0
- {libigl-2.6.3.dev1 → libigl-2.6.3.dev2}/src/sample_edges.cpp +0 -0
- {libigl-2.6.3.dev1 → libigl-2.6.3.dev2}/src/segment_segment_intersect.cpp +0 -0
- {libigl-2.6.3.dev1 → libigl-2.6.3.dev2}/src/sharp_edges.cpp +0 -0
- {libigl-2.6.3.dev1 → libigl-2.6.3.dev2}/src/signed_angle.cpp +0 -0
- {libigl-2.6.3.dev1 → libigl-2.6.3.dev2}/src/signed_distance.cpp +0 -0
- {libigl-2.6.3.dev1 → libigl-2.6.3.dev2}/src/slim.cpp +0 -0
- {libigl-2.6.3.dev1 → libigl-2.6.3.dev2}/src/snap_points.cpp +0 -0
- {libigl-2.6.3.dev1 → libigl-2.6.3.dev2}/src/solid_angle.cpp +0 -0
- {libigl-2.6.3.dev1 → libigl-2.6.3.dev2}/src/sparse_map_noop.cpp +0 -0
- {libigl-2.6.3.dev1 → libigl-2.6.3.dev2}/src/sparse_map_shape.cpp +0 -0
- {libigl-2.6.3.dev1 → libigl-2.6.3.dev2}/src/sparse_noop.cpp +0 -0
- {libigl-2.6.3.dev1 → libigl-2.6.3.dev2}/src/sparse_shape.cpp +0 -0
- {libigl-2.6.3.dev1 → libigl-2.6.3.dev2}/src/split_nonmanifold.cpp +0 -0
- {libigl-2.6.3.dev1 → libigl-2.6.3.dev2}/src/squared_edge_lengths.cpp +0 -0
- {libigl-2.6.3.dev1 → libigl-2.6.3.dev2}/src/super_fibonacci.cpp +0 -0
- {libigl-2.6.3.dev1 → libigl-2.6.3.dev2}/src/tet_tet_adjacency.cpp +0 -0
- {libigl-2.6.3.dev1 → libigl-2.6.3.dev2}/src/tri_tri_intersect.cpp +0 -0
- {libigl-2.6.3.dev1 → libigl-2.6.3.dev2}/src/triangle/module.cpp +0 -0
- {libigl-2.6.3.dev1 → libigl-2.6.3.dev2}/src/triangle/scaf.cpp +0 -0
- {libigl-2.6.3.dev1 → libigl-2.6.3.dev2}/src/triangle/triangulate.cpp +0 -0
- {libigl-2.6.3.dev1 → libigl-2.6.3.dev2}/src/triangle_fan.cpp +0 -0
- {libigl-2.6.3.dev1 → libigl-2.6.3.dev2}/src/triangle_triangle_adjacency.cpp +0 -0
- {libigl-2.6.3.dev1 → libigl-2.6.3.dev2}/src/triangulated_grid.cpp +0 -0
- {libigl-2.6.3.dev1 → libigl-2.6.3.dev2}/src/turning_number.cpp +0 -0
- {libigl-2.6.3.dev1 → libigl-2.6.3.dev2}/src/uniformly_sample_two_manifold.cpp +0 -0
- {libigl-2.6.3.dev1 → libigl-2.6.3.dev2}/src/unique_edge_map.cpp +0 -0
- {libigl-2.6.3.dev1 → libigl-2.6.3.dev2}/src/unique_simplices.cpp +0 -0
- {libigl-2.6.3.dev1 → libigl-2.6.3.dev2}/src/unique_sparse_voxel_corners.cpp +0 -0
- {libigl-2.6.3.dev1 → libigl-2.6.3.dev2}/src/unproject.cpp +0 -0
- {libigl-2.6.3.dev1 → libigl-2.6.3.dev2}/src/upsample.cpp +0 -0
- {libigl-2.6.3.dev1 → libigl-2.6.3.dev2}/src/vector_area_matrix.cpp +0 -0
- {libigl-2.6.3.dev1 → libigl-2.6.3.dev2}/src/vertex_components.cpp +0 -0
- {libigl-2.6.3.dev1 → libigl-2.6.3.dev2}/src/vertex_triangle_adjacency.cpp +0 -0
- {libigl-2.6.3.dev1 → libigl-2.6.3.dev2}/src/volume.cpp +0 -0
- {libigl-2.6.3.dev1 → libigl-2.6.3.dev2}/src/voronoi_mass.cpp +0 -0
- {libigl-2.6.3.dev1 → libigl-2.6.3.dev2}/src/voxel_grid.cpp +0 -0
- {libigl-2.6.3.dev1 → libigl-2.6.3.dev2}/src/winding_number.cpp +0 -0
- {libigl-2.6.3.dev1 → libigl-2.6.3.dev2}/src/writeDMAT.cpp +0 -0
- {libigl-2.6.3.dev1 → libigl-2.6.3.dev2}/src/writeMESH.cpp +0 -0
- {libigl-2.6.3.dev1 → libigl-2.6.3.dev2}/src/writeMSH.cpp +0 -0
- {libigl-2.6.3.dev1 → libigl-2.6.3.dev2}/src/writeOBJ.cpp +0 -0
- {libigl-2.6.3.dev1 → libigl-2.6.3.dev2}/src/writeOFF.cpp +0 -0
- {libigl-2.6.3.dev1 → libigl-2.6.3.dev2}/src/writePLY.cpp +0 -0
- {libigl-2.6.3.dev1 → libigl-2.6.3.dev2}/src/writeSTL.cpp +0 -0
- {libigl-2.6.3.dev1 → libigl-2.6.3.dev2}/src/write_triangle_mesh.cpp +0 -0
- {libigl-2.6.3.dev1 → libigl-2.6.3.dev2}/tutorial/contributing.md +0 -0
- {libigl-2.6.3.dev1 → libigl-2.6.3.dev2}/tutorial/exporter.py +0 -0
- {libigl-2.6.3.dev1 → libigl-2.6.3.dev2}/tutorial/igl_docs.md +0 -0
- {libigl-2.6.3.dev1 → libigl-2.6.3.dev2}/tutorial/images/102_DrawMesh.png +0 -0
- {libigl-2.6.3.dev1 → libigl-2.6.3.dev2}/tutorial/images/104_Colors.png +0 -0
- {libigl-2.6.3.dev1 → libigl-2.6.3.dev2}/tutorial/images/105_Overlays.png +0 -0
- {libigl-2.6.3.dev1 → libigl-2.6.3.dev2}/tutorial/images/106_ViewerMenu.png +0 -0
- {libigl-2.6.3.dev1 → libigl-2.6.3.dev2}/tutorial/images/501_HarmonicParam.png +0 -0
- {libigl-2.6.3.dev1 → libigl-2.6.3.dev2}/tutorial/images/502_LSCMParam.png +0 -0
- {libigl-2.6.3.dev1 → libigl-2.6.3.dev2}/tutorial/images/503_ARAPParam.png +0 -0
- {libigl-2.6.3.dev1 → libigl-2.6.3.dev2}/tutorial/images/504_nrosy_field.png +0 -0
- {libigl-2.6.3.dev1 → libigl-2.6.3.dev2}/tutorial/images/504_vector_field.png +0 -0
- {libigl-2.6.3.dev1 → libigl-2.6.3.dev2}/tutorial/images/505_MIQ_1.png +0 -0
- {libigl-2.6.3.dev1 → libigl-2.6.3.dev2}/tutorial/images/505_MIQ_2.png +0 -0
- {libigl-2.6.3.dev1 → libigl-2.6.3.dev2}/tutorial/images/505_MIQ_3.png +0 -0
- {libigl-2.6.3.dev1 → libigl-2.6.3.dev2}/tutorial/images/505_MIQ_4.png +0 -0
- {libigl-2.6.3.dev1 → libigl-2.6.3.dev2}/tutorial/images/505_MIQ_5.png +0 -0
- {libigl-2.6.3.dev1 → libigl-2.6.3.dev2}/tutorial/images/505_MIQ_6.png +0 -0
- {libigl-2.6.3.dev1 → libigl-2.6.3.dev2}/tutorial/images/505_MIQ_7.png +0 -0
- {libigl-2.6.3.dev1 → libigl-2.6.3.dev2}/tutorial/images/505_MIQ_8.png +0 -0
- {libigl-2.6.3.dev1 → libigl-2.6.3.dev2}/tutorial/images/506_FrameField_1.png +0 -0
- {libigl-2.6.3.dev1 → libigl-2.6.3.dev2}/tutorial/images/506_FrameField_2.png +0 -0
- {libigl-2.6.3.dev1 → libigl-2.6.3.dev2}/tutorial/images/506_FrameField_3.png +0 -0
- {libigl-2.6.3.dev1 → libigl-2.6.3.dev2}/tutorial/images/506_FrameField_4.png +0 -0
- {libigl-2.6.3.dev1 → libigl-2.6.3.dev2}/tutorial/images/507_PolyVectorField.png +0 -0
- {libigl-2.6.3.dev1 → libigl-2.6.3.dev2}/tutorial/images/508_ConjugateField.png +0 -0
- {libigl-2.6.3.dev1 → libigl-2.6.3.dev2}/tutorial/images/509_Planarization.png +0 -0
- {libigl-2.6.3.dev1 → libigl-2.6.3.dev2}/tutorial/images/510_Integrable.png +0 -0
- {libigl-2.6.3.dev1 → libigl-2.6.3.dev2}/tutorial/images/511_PolyVectorFieldGeneral.png +0 -0
- {libigl-2.6.3.dev1 → libigl-2.6.3.dev2}/tutorial/images/602_Matlab_1.png +0 -0
- {libigl-2.6.3.dev1 → libigl-2.6.3.dev2}/tutorial/images/602_Matlab_2.png +0 -0
- {libigl-2.6.3.dev1 → libigl-2.6.3.dev2}/tutorial/images/604_Triangle.png +0 -0
- {libigl-2.6.3.dev1 → libigl-2.6.3.dev2}/tutorial/images/605_Tetgen.png +0 -0
- {libigl-2.6.3.dev1 → libigl-2.6.3.dev2}/tutorial/images/606_AmbientOcclusion.png +0 -0
- {libigl-2.6.3.dev1 → libigl-2.6.3.dev2}/tutorial/images/607_Picking.png +0 -0
- {libigl-2.6.3.dev1 → libigl-2.6.3.dev2}/tutorial/images/608_LIM.png +0 -0
- {libigl-2.6.3.dev1 → libigl-2.6.3.dev2}/tutorial/images/712_beetles.jpg +0 -0
- {libigl-2.6.3.dev1 → libigl-2.6.3.dev2}/tutorial/images/713_ShapeUp.png +0 -0
- {libigl-2.6.3.dev1 → libigl-2.6.3.dev2}/tutorial/images/VF.pdf +0 -0
- {libigl-2.6.3.dev1 → libigl-2.6.3.dev2}/tutorial/images/VF.png +0 -0
- {libigl-2.6.3.dev1 → libigl-2.6.3.dev2}/tutorial/images/arm-dqs.jpg +0 -0
- {libigl-2.6.3.dev1 → libigl-2.6.3.dev2}/tutorial/images/armadillo-fast.jpg +0 -0
- {libigl-2.6.3.dev1 → libigl-2.6.3.dev2}/tutorial/images/armadillo-marching-cubes.jpg +0 -0
- {libigl-2.6.3.dev1 → libigl-2.6.3.dev2}/tutorial/images/background.gif +0 -0
- {libigl-2.6.3.dev1 → libigl-2.6.3.dev2}/tutorial/images/beetle-eigen-decomposition.gif +0 -0
- {libigl-2.6.3.dev1 → libigl-2.6.3.dev2}/tutorial/images/big-sigcat-winding-number.gif +0 -0
- {libigl-2.6.3.dev1 → libigl-2.6.3.dev2}/tutorial/images/bump-k-harmonic.jpg +0 -0
- {libigl-2.6.3.dev1 → libigl-2.6.3.dev2}/tutorial/images/bumpy-gaussian-curvature.jpg +0 -0
- {libigl-2.6.3.dev1 → libigl-2.6.3.dev2}/tutorial/images/bunny-signed-distance.gif +0 -0
- {libigl-2.6.3.dev1 → libigl-2.6.3.dev2}/tutorial/images/bunny-swept-volume.gif +0 -0
- {libigl-2.6.3.dev1 → libigl-2.6.3.dev2}/tutorial/images/camelhead-laplace-equation.jpg +0 -0
- {libigl-2.6.3.dev1 → libigl-2.6.3.dev2}/tutorial/images/cheburashka-biharmonic-leq.jpg +0 -0
- {libigl-2.6.3.dev1 → libigl-2.6.3.dev2}/tutorial/images/cheburashka-gradient.jpg +0 -0
- {libigl-2.6.3.dev1 → libigl-2.6.3.dev2}/tutorial/images/cheburashka-knight-boolean.jpg +0 -0
- {libigl-2.6.3.dev1 → libigl-2.6.3.dev2}/tutorial/images/cheburashka-multiscale-biharmonic-kernels.jpg +0 -0
- {libigl-2.6.3.dev1 → libigl-2.6.3.dev2}/tutorial/images/cow-curvature-flow.jpg +0 -0
- {libigl-2.6.3.dev1 → libigl-2.6.3.dev2}/tutorial/images/cube-sphere-cylinders-csg-tree.jpg +0 -0
- {libigl-2.6.3.dev1 → libigl-2.6.3.dev2}/tutorial/images/cube-sphere-cylinders-csg.gif +0 -0
- {libigl-2.6.3.dev1 → libigl-2.6.3.dev2}/tutorial/images/decimated-knight-arap.jpg +0 -0
- {libigl-2.6.3.dev1 → libigl-2.6.3.dev2}/tutorial/images/decimated-knight-slice-color.jpg +0 -0
- {libigl-2.6.3.dev1 → libigl-2.6.3.dev2}/tutorial/images/decimated-knight-sort-color.jpg +0 -0
- {libigl-2.6.3.dev1 → libigl-2.6.3.dev2}/tutorial/images/decimated-knight-subdivision.gif +0 -0
- {libigl-2.6.3.dev1 → libigl-2.6.3.dev2}/tutorial/images/edge-collapse.jpg +0 -0
- {libigl-2.6.3.dev1 → libigl-2.6.3.dev2}/tutorial/images/edge-collapse.pdf +0 -0
- {libigl-2.6.3.dev1 → libigl-2.6.3.dev2}/tutorial/images/fandisk-normals.jpg +0 -0
- {libigl-2.6.3.dev1 → libigl-2.6.3.dev2}/tutorial/images/fertility-edge-collapse.gif +0 -0
- {libigl-2.6.3.dev1 → libigl-2.6.3.dev2}/tutorial/images/fertility-principal-curvature.jpg +0 -0
- {libigl-2.6.3.dev1 → libigl-2.6.3.dev2}/tutorial/images/geodesicdistance.jpg +0 -0
- {libigl-2.6.3.dev1 → libigl-2.6.3.dev2}/tutorial/images/hand-bbw.jpg +0 -0
- {libigl-2.6.3.dev1 → libigl-2.6.3.dev2}/tutorial/images/hat-function.jpg +0 -0
- {libigl-2.6.3.dev1 → libigl-2.6.3.dev2}/tutorial/images/heat-geodesic-beetle.gif +0 -0
- {libigl-2.6.3.dev1 → libigl-2.6.3.dev2}/tutorial/images/heat-geodesic-peaks.png +0 -0
- {libigl-2.6.3.dev1 → libigl-2.6.3.dev2}/tutorial/images/libigl-logo.jpg +0 -0
- {libigl-2.6.3.dev1 → libigl-2.6.3.dev2}/tutorial/images/max-biharmonic.jpg +0 -0
- {libigl-2.6.3.dev1 → libigl-2.6.3.dev2}/tutorial/images/multiple-meshes.png +0 -0
- {libigl-2.6.3.dev1 → libigl-2.6.3.dev2}/tutorial/images/octopus-biharmonic-coordinates-physics.gif +0 -0
- {libigl-2.6.3.dev1 → libigl-2.6.3.dev2}/tutorial/images/simplicial_complex_augmentation_framework.png +0 -0
- {libigl-2.6.3.dev1 → libigl-2.6.3.dev2}/tutorial/images/slim.png +0 -0
- {libigl-2.6.3.dev1 → libigl-2.6.3.dev2}/tutorial/images/streamlines.jpg +0 -0
- {libigl-2.6.3.dev1 → libigl-2.6.3.dev2}/tutorial/images/truck-facet-orientation.jpg +0 -0
- {libigl-2.6.3.dev1 → libigl-2.6.3.dev2}/tutorial/index.md +0 -0
- {libigl-2.6.3.dev1 → libigl-2.6.3.dev2}/tutorial/marching_cubes.py +0 -0
- {libigl-2.6.3.dev1 → libigl-2.6.3.dev2}/tutorial/plot_to_md.py +0 -0
- {libigl-2.6.3.dev1 → libigl-2.6.3.dev2}/tutorial/tut-chapter0.ipynb +0 -0
- {libigl-2.6.3.dev1 → libigl-2.6.3.dev2}/tutorial/tut-chapter1.ipynb +0 -0
- {libigl-2.6.3.dev1 → libigl-2.6.3.dev2}/tutorial/tut-chapter2.ipynb +0 -0
- {libigl-2.6.3.dev1 → libigl-2.6.3.dev2}/tutorial/tut-chapter3.ipynb +0 -0
- {libigl-2.6.3.dev1 → libigl-2.6.3.dev2}/tutorial/tut-chapter4.ipynb +0 -0
- {libigl-2.6.3.dev1 → libigl-2.6.3.dev2}/tutorial/tut-chapter5.ipynb +0 -0
- {libigl-2.6.3.dev1 → libigl-2.6.3.dev2}/tutorial/tut-chapter6.ipynb +0 -0
- {libigl-2.6.3.dev1 → libigl-2.6.3.dev2}/tutorial/tut-chapter7.ipynb +0 -0
- {libigl-2.6.3.dev1 → libigl-2.6.3.dev2}/tutorial/tutorials.ipynb +0 -0
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.1
|
|
2
2
|
Name: libigl
|
|
3
|
-
Version: 2.6.3.
|
|
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,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
|
+
}
|
|
@@ -0,0 +1,35 @@
|
|
|
1
|
+
#include "default_types.h"
|
|
2
|
+
#include <igl/copyleft/cgal/extract_cells.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 extract_cells(
|
|
13
|
+
const nb::DRef<const Eigen::MatrixXN> &V,
|
|
14
|
+
const nb::DRef<const Eigen::MatrixXI> &F)
|
|
15
|
+
{
|
|
16
|
+
// int32 required by libigl internals (static_assert checks index type)
|
|
17
|
+
Eigen::MatrixXi Fi = F.cast<int>();
|
|
18
|
+
Eigen::MatrixXi cells;
|
|
19
|
+
size_t n = igl::copyleft::cgal::extract_cells(V, Fi, cells);
|
|
20
|
+
return std::make_tuple((Integer)n, Eigen::MatrixXI(cells.cast<Integer>()));
|
|
21
|
+
}
|
|
22
|
+
}
|
|
23
|
+
|
|
24
|
+
void bind_extract_cells(nb::module_ &m)
|
|
25
|
+
{
|
|
26
|
+
m.def("extract_cells", &pyigl::extract_cells, "V"_a, "F"_a,
|
|
27
|
+
R"(Extract connected 3D cells partitioned by a triangle mesh.
|
|
28
|
+
|
|
29
|
+
@param[in] V #V by 3 array of vertices
|
|
30
|
+
@param[in] F #F by 3 array of triangle indices
|
|
31
|
+
@return tuple (num_cells, cells):
|
|
32
|
+
- num_cells number of cells (cell 0 is the infinite outer cell)
|
|
33
|
+
- cells #F by 2 array of cell indices; cells[i,0] is the cell on the
|
|
34
|
+
positive side of face i, cells[i,1] is on the negative side)");
|
|
35
|
+
}
|
|
@@ -0,0 +1,42 @@
|
|
|
1
|
+
#include "default_types.h"
|
|
2
|
+
#include <igl/copyleft/cgal/outer_hull.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 outer_hull(
|
|
13
|
+
const nb::DRef<const Eigen::MatrixXN> &V,
|
|
14
|
+
const nb::DRef<const Eigen::MatrixXI> &F)
|
|
15
|
+
{
|
|
16
|
+
// int32 required by libigl internals
|
|
17
|
+
Eigen::MatrixXi Fi = F.cast<int>();
|
|
18
|
+
Eigen::MatrixXN HV;
|
|
19
|
+
Eigen::MatrixXi HF;
|
|
20
|
+
Eigen::VectorXi J;
|
|
21
|
+
Eigen::Matrix<bool, Eigen::Dynamic, 1> flip;
|
|
22
|
+
igl::copyleft::cgal::outer_hull(V, Fi, HV, HF, J, flip);
|
|
23
|
+
return std::make_tuple(HV,
|
|
24
|
+
Eigen::MatrixXI(HF.cast<Integer>()),
|
|
25
|
+
Eigen::VectorXI(J.cast<Integer>()),
|
|
26
|
+
Eigen::VectorXB(flip));
|
|
27
|
+
}
|
|
28
|
+
}
|
|
29
|
+
|
|
30
|
+
void bind_outer_hull(nb::module_ &m)
|
|
31
|
+
{
|
|
32
|
+
m.def("outer_hull", &pyigl::outer_hull, "V"_a, "F"_a,
|
|
33
|
+
R"(Compute the outer hull of a piecewise-constant winding number mesh.
|
|
34
|
+
|
|
35
|
+
@param[in] V #V by 3 list of vertex positions
|
|
36
|
+
@param[in] F #F by 3 list of triangle indices into V
|
|
37
|
+
@return tuple (HV, HF, J, flip):
|
|
38
|
+
- HV #HV by 3 output vertex positions
|
|
39
|
+
- HF #HF by 3 output triangle indices into HV
|
|
40
|
+
- J #HF list of indices into F (birth faces)
|
|
41
|
+
- flip #HF list of bools, true if facet was flipped)");
|
|
42
|
+
}
|
|
@@ -0,0 +1,36 @@
|
|
|
1
|
+
#include "default_types.h"
|
|
2
|
+
#include <igl/copyleft/cgal/peel_outer_hull_layers.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 peel_outer_hull_layers(
|
|
13
|
+
const nb::DRef<const Eigen::MatrixXN> &V,
|
|
14
|
+
const nb::DRef<const Eigen::MatrixXI> &F)
|
|
15
|
+
{
|
|
16
|
+
// int32 required by libigl internals
|
|
17
|
+
Eigen::MatrixXi Fi = F.cast<int>();
|
|
18
|
+
Eigen::VectorXi I;
|
|
19
|
+
Eigen::Matrix<bool, Eigen::Dynamic, 1> flip;
|
|
20
|
+
int n = igl::copyleft::cgal::peel_outer_hull_layers(V, Fi, I, flip);
|
|
21
|
+
return std::make_tuple(Eigen::VectorXI(I.cast<Integer>()), Eigen::VectorXB(flip), n);
|
|
22
|
+
}
|
|
23
|
+
}
|
|
24
|
+
|
|
25
|
+
void bind_peel_outer_hull_layers(nb::module_ &m)
|
|
26
|
+
{
|
|
27
|
+
m.def("peel_outer_hull_layers", &pyigl::peel_outer_hull_layers, "V"_a, "F"_a,
|
|
28
|
+
R"(Successively peel outer hull layers from a mesh, useful for boolean operations.
|
|
29
|
+
|
|
30
|
+
@param[in] V #V by 3 list of vertex positions
|
|
31
|
+
@param[in] F #F by 3 list of triangle indices into V
|
|
32
|
+
@return tuple (I, flip, num_peels):
|
|
33
|
+
- I #F list of which peel layer each facet belongs to
|
|
34
|
+
- flip #F list of bools, true if facet orientation was flipped during peeling
|
|
35
|
+
- num_peels number of peel layers)");
|
|
36
|
+
}
|
|
@@ -0,0 +1,34 @@
|
|
|
1
|
+
#include "default_types.h"
|
|
2
|
+
#include <igl/copyleft/cgal/peel_winding_number_layers.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 peel_winding_number_layers(
|
|
13
|
+
const nb::DRef<const Eigen::MatrixXN> &V,
|
|
14
|
+
const nb::DRef<const Eigen::MatrixXI> &F)
|
|
15
|
+
{
|
|
16
|
+
// int32 required by libigl internals
|
|
17
|
+
Eigen::MatrixXi Fi = F.cast<int>();
|
|
18
|
+
Eigen::VectorXi W;
|
|
19
|
+
size_t n = igl::copyleft::cgal::peel_winding_number_layers(V, Fi, W);
|
|
20
|
+
return std::make_tuple(Eigen::VectorXI(W.cast<Integer>()), (Integer)n);
|
|
21
|
+
}
|
|
22
|
+
}
|
|
23
|
+
|
|
24
|
+
void bind_peel_winding_number_layers(nb::module_ &m)
|
|
25
|
+
{
|
|
26
|
+
m.def("peel_winding_number_layers", &pyigl::peel_winding_number_layers, "V"_a, "F"_a,
|
|
27
|
+
R"(Peel winding number layers from a mesh.
|
|
28
|
+
|
|
29
|
+
@param[in] V #V by 3 list of vertex positions
|
|
30
|
+
@param[in] F #F by 3 list of triangle indices into V
|
|
31
|
+
@return tuple (W, num_layers):
|
|
32
|
+
- W #V list of integer winding numbers per vertex
|
|
33
|
+
- num_layers number of winding number layers)");
|
|
34
|
+
}
|
|
@@ -0,0 +1,68 @@
|
|
|
1
|
+
#include "default_types.h"
|
|
2
|
+
#include <igl/copyleft/marching_cubes.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 marching_cubes(
|
|
13
|
+
const nb::DRef<const Eigen::VectorXN> &values,
|
|
14
|
+
const nb::DRef<const Eigen::MatrixXN> &points,
|
|
15
|
+
const Integer x_res,
|
|
16
|
+
const Integer y_res,
|
|
17
|
+
const Integer z_res,
|
|
18
|
+
const Numeric isovalue)
|
|
19
|
+
{
|
|
20
|
+
Eigen::MatrixXN vertices;
|
|
21
|
+
Eigen::MatrixXI faces;
|
|
22
|
+
igl::copyleft::marching_cubes(
|
|
23
|
+
values, points,
|
|
24
|
+
(unsigned)x_res, (unsigned)y_res, (unsigned)z_res,
|
|
25
|
+
isovalue, vertices, faces);
|
|
26
|
+
return std::make_tuple(vertices, faces);
|
|
27
|
+
}
|
|
28
|
+
auto marching_cubes_indexed(
|
|
29
|
+
const nb::DRef<const Eigen::VectorXN> &values,
|
|
30
|
+
const nb::DRef<const Eigen::MatrixXN> &points,
|
|
31
|
+
const nb::DRef<const Eigen::MatrixXI> &indices,
|
|
32
|
+
const Numeric isovalue)
|
|
33
|
+
{
|
|
34
|
+
Eigen::MatrixXN vertices;
|
|
35
|
+
Eigen::MatrixXI faces;
|
|
36
|
+
igl::copyleft::marching_cubes(values, points, indices, isovalue, vertices, faces);
|
|
37
|
+
return std::make_tuple(vertices, faces);
|
|
38
|
+
}
|
|
39
|
+
}
|
|
40
|
+
|
|
41
|
+
void bind_marching_cubes(nb::module_ &m)
|
|
42
|
+
{
|
|
43
|
+
m.def("marching_cubes", &pyigl::marching_cubes,
|
|
44
|
+
"values"_a, "points"_a, "x_res"_a, "y_res"_a, "z_res"_a, "isovalue"_a = 0.0,
|
|
45
|
+
R"(Perform marching cubes to extract an isosurface from a scalar field on a regular grid.
|
|
46
|
+
|
|
47
|
+
@param[in] values #points vector of scalar values (<0 inside, >0 outside)
|
|
48
|
+
@param[in] points #points by 3 grid point positions (x-fastest order:
|
|
49
|
+
index = x + y*x_res + z*x_res*y_res)
|
|
50
|
+
@param[in] x_res grid resolution in x
|
|
51
|
+
@param[in] y_res grid resolution in y
|
|
52
|
+
@param[in] z_res grid resolution in z
|
|
53
|
+
@param[in] isovalue isovalue to reconstruct (default: 0.0)
|
|
54
|
+
@return tuple (vertices, faces):
|
|
55
|
+
- vertices #V by 3 mesh vertex positions
|
|
56
|
+
- faces #F by 3 mesh triangle indices)");
|
|
57
|
+
m.def("marching_cubes", &pyigl::marching_cubes_indexed,
|
|
58
|
+
"values"_a, "points"_a, "indices"_a, "isovalue"_a = 0.0,
|
|
59
|
+
R"(Perform marching cubes on a sparse grid defined by explicit cube corner indices.
|
|
60
|
+
|
|
61
|
+
@param[in] values #points vector of scalar values
|
|
62
|
+
@param[in] points #points by 3 grid point positions
|
|
63
|
+
@param[in] indices #cubes by 8 array of corner indices into points/values
|
|
64
|
+
@param[in] isovalue isovalue to reconstruct (default: 0.0)
|
|
65
|
+
@return tuple (vertices, faces):
|
|
66
|
+
- vertices #V by 3 mesh vertex positions
|
|
67
|
+
- faces #F by 3 mesh triangle indices)");
|
|
68
|
+
}
|
|
@@ -0,0 +1,49 @@
|
|
|
1
|
+
#include "default_types.h"
|
|
2
|
+
#include <igl/copyleft/quadprog.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 quadprog(
|
|
12
|
+
const nb::DRef<const Eigen::MatrixXN> &G,
|
|
13
|
+
const nb::DRef<const Eigen::VectorXN> &g0,
|
|
14
|
+
const nb::DRef<const Eigen::MatrixXN> &CE,
|
|
15
|
+
const nb::DRef<const Eigen::VectorXN> &ce0,
|
|
16
|
+
const nb::DRef<const Eigen::MatrixXN> &CI,
|
|
17
|
+
const nb::DRef<const Eigen::VectorXN> &ci0)
|
|
18
|
+
{
|
|
19
|
+
// quadprog uses non-template MatrixXd (col-major); copy from row-major inputs
|
|
20
|
+
Eigen::MatrixXd G_d = G, CE_d = CE, CI_d = CI;
|
|
21
|
+
Eigen::VectorXd g0_d = g0, ce0_d = ce0, ci0_d = ci0;
|
|
22
|
+
Eigen::VectorXd x;
|
|
23
|
+
if(!igl::copyleft::quadprog(G_d, g0_d, CE_d, ce0_d, CI_d, ci0_d, x))
|
|
24
|
+
throw std::runtime_error("quadprog: solver failed");
|
|
25
|
+
return Eigen::VectorXN(x);
|
|
26
|
+
}
|
|
27
|
+
}
|
|
28
|
+
|
|
29
|
+
void bind_quadprog(nb::module_ &m)
|
|
30
|
+
{
|
|
31
|
+
m.def("quadprog", &pyigl::quadprog,
|
|
32
|
+
"G"_a, "g0"_a,
|
|
33
|
+
"CE"_a = Eigen::MatrixXN(), "ce0"_a = Eigen::VectorXN(),
|
|
34
|
+
"CI"_a = Eigen::MatrixXN(), "ci0"_a = Eigen::VectorXN(),
|
|
35
|
+
R"(Solve a dense convex quadratic program.
|
|
36
|
+
|
|
37
|
+
Minimizes: 0.5 x' G x + g0' x
|
|
38
|
+
Subject to: CE' x + ce0 = 0
|
|
39
|
+
CI' x + ci0 >= 0
|
|
40
|
+
|
|
41
|
+
@param[in] G #x by #x positive semi-definite quadratic cost matrix
|
|
42
|
+
@param[in] g0 #x linear cost vector
|
|
43
|
+
@param[in] CE #x by #ce equality constraint matrix (optional)
|
|
44
|
+
@param[in] ce0 #ce equality constraint rhs (optional)
|
|
45
|
+
@param[in] CI #x by #ci inequality constraint matrix (optional)
|
|
46
|
+
@param[in] ci0 #ci inequality constraint rhs (optional)
|
|
47
|
+
@return x #x solution vector
|
|
48
|
+
@raises RuntimeError if the solver fails)");
|
|
49
|
+
}
|
|
@@ -0,0 +1,57 @@
|
|
|
1
|
+
#include "default_types.h"
|
|
2
|
+
#include <igl/copyleft/tetgen/cdt.h>
|
|
3
|
+
#include <nanobind/nanobind.h>
|
|
4
|
+
#include <nanobind/eigen/dense.h>
|
|
5
|
+
#include <nanobind/stl/string.h>
|
|
6
|
+
#include <nanobind/stl/tuple.h>
|
|
7
|
+
|
|
8
|
+
namespace nb = nanobind;
|
|
9
|
+
using namespace nb::literals;
|
|
10
|
+
|
|
11
|
+
namespace pyigl
|
|
12
|
+
{
|
|
13
|
+
auto cdt(
|
|
14
|
+
const nb::DRef<const Eigen::MatrixXN> &V,
|
|
15
|
+
const nb::DRef<const Eigen::MatrixXI> &F,
|
|
16
|
+
const igl::copyleft::tetgen::CDTParam ¶m)
|
|
17
|
+
{
|
|
18
|
+
// int32 required by libigl tetgen internals
|
|
19
|
+
Eigen::MatrixXi Fi = F.cast<int>();
|
|
20
|
+
Eigen::MatrixXN TV;
|
|
21
|
+
Eigen::MatrixXi TT, TF;
|
|
22
|
+
// Note: libigl cdt() returns tetrahedralize()'s int (0=success) cast to
|
|
23
|
+
// bool, so false means success. Check output TT instead.
|
|
24
|
+
igl::copyleft::tetgen::cdt(V, Fi, param, TV, TT, TF);
|
|
25
|
+
if(TT.rows() == 0)
|
|
26
|
+
throw std::runtime_error("cdt: tetrahedralization failed");
|
|
27
|
+
return std::make_tuple(TV, Eigen::MatrixXI(TT.cast<Integer>()),
|
|
28
|
+
Eigen::MatrixXI(TF.cast<Integer>()));
|
|
29
|
+
}
|
|
30
|
+
}
|
|
31
|
+
|
|
32
|
+
void bind_cdt(nb::module_ &m)
|
|
33
|
+
{
|
|
34
|
+
nb::class_<igl::copyleft::tetgen::CDTParam>(m, "CDTParam")
|
|
35
|
+
.def(nb::init<>())
|
|
36
|
+
.def_rw("use_bounding_box", &igl::copyleft::tetgen::CDTParam::use_bounding_box)
|
|
37
|
+
.def_rw("bounding_box_scale", &igl::copyleft::tetgen::CDTParam::bounding_box_scale)
|
|
38
|
+
.def_rw("flags", &igl::copyleft::tetgen::CDTParam::flags);
|
|
39
|
+
|
|
40
|
+
m.def("cdt", &pyigl::cdt,
|
|
41
|
+
"V"_a, "F"_a, "param"_a = igl::copyleft::tetgen::CDTParam{},
|
|
42
|
+
R"(Create a constrained Delaunay tetrahedralization of the convex hull of a mesh.
|
|
43
|
+
|
|
44
|
+
The input mesh must be non-self-intersecting.
|
|
45
|
+
|
|
46
|
+
@param[in] V #V by 3 list of input mesh vertices
|
|
47
|
+
@param[in] F #F by 3 list of input mesh facets
|
|
48
|
+
@param[in] param CDTParam struct with fields:
|
|
49
|
+
use_bounding_box force meshing of the bounding box (default: false)
|
|
50
|
+
bounding_box_scale scale factor for bounding box (default: 1.01)
|
|
51
|
+
flags tetgen flags, do not include "c" (default: "Y")
|
|
52
|
+
@return tuple (TV, TT, TF):
|
|
53
|
+
- TV #TV by 3 output vertex positions (input vertices come first)
|
|
54
|
+
- TT #TT by 4 tetrahedra indices into TV
|
|
55
|
+
- TF #TF by 3 surface triangle indices (facets from F, possibly subdivided)
|
|
56
|
+
@raises RuntimeError on failure)");
|
|
57
|
+
}
|
|
@@ -0,0 +1,61 @@
|
|
|
1
|
+
#include "default_types.h"
|
|
2
|
+
#include <igl/copyleft/tetgen/mesh_with_skeleton.h>
|
|
3
|
+
#include <nanobind/nanobind.h>
|
|
4
|
+
#include <nanobind/eigen/dense.h>
|
|
5
|
+
#include <nanobind/stl/string.h>
|
|
6
|
+
#include <nanobind/stl/tuple.h>
|
|
7
|
+
|
|
8
|
+
namespace nb = nanobind;
|
|
9
|
+
using namespace nb::literals;
|
|
10
|
+
|
|
11
|
+
namespace pyigl
|
|
12
|
+
{
|
|
13
|
+
auto mesh_with_skeleton(
|
|
14
|
+
const nb::DRef<const Eigen::MatrixXN> &V,
|
|
15
|
+
const nb::DRef<const Eigen::MatrixXI> &F,
|
|
16
|
+
const nb::DRef<const Eigen::MatrixXN> &C,
|
|
17
|
+
const nb::DRef<const Eigen::VectorXI> &P,
|
|
18
|
+
const nb::DRef<const Eigen::MatrixXI> &BE,
|
|
19
|
+
const nb::DRef<const Eigen::MatrixXI> &CE,
|
|
20
|
+
const int samples_per_bone,
|
|
21
|
+
const std::string &tetgen_flags)
|
|
22
|
+
{
|
|
23
|
+
// Non-template API uses MatrixXd/MatrixXi (col-major, int32)
|
|
24
|
+
Eigen::MatrixXd Vd = V, Cd = C;
|
|
25
|
+
Eigen::MatrixXi Fd = F.cast<int>(), BEd = BE.cast<int>(), CEd = CE.cast<int>();
|
|
26
|
+
Eigen::VectorXi Pd = P.cast<int>();
|
|
27
|
+
Eigen::MatrixXd VV;
|
|
28
|
+
Eigen::MatrixXi TT, FF;
|
|
29
|
+
if(!igl::copyleft::tetgen::mesh_with_skeleton(Vd, Fd, Cd, Pd, BEd, CEd,
|
|
30
|
+
samples_per_bone, tetgen_flags, VV, TT, FF))
|
|
31
|
+
throw std::runtime_error("mesh_with_skeleton: tetrahedralization failed");
|
|
32
|
+
return std::make_tuple(Eigen::MatrixXN(VV), Eigen::MatrixXI(TT.cast<Integer>()),
|
|
33
|
+
Eigen::MatrixXI(FF.cast<Integer>()));
|
|
34
|
+
}
|
|
35
|
+
}
|
|
36
|
+
|
|
37
|
+
void bind_mesh_with_skeleton(nb::module_ &m)
|
|
38
|
+
{
|
|
39
|
+
m.def("mesh_with_skeleton", &pyigl::mesh_with_skeleton,
|
|
40
|
+
"V"_a, "F"_a, "C"_a,
|
|
41
|
+
"P"_a = Eigen::VectorXI(),
|
|
42
|
+
"BE"_a = Eigen::MatrixXI(),
|
|
43
|
+
"CE"_a = Eigen::MatrixXI(),
|
|
44
|
+
"samples_per_bone"_a = 10,
|
|
45
|
+
"tetgen_flags"_a = "",
|
|
46
|
+
R"(Mesh the interior of a surface with a graded tetrahedral mesh conforming to a skeleton.
|
|
47
|
+
|
|
48
|
+
@param[in] V #V by 3 list of surface mesh vertex positions
|
|
49
|
+
@param[in] F #F by 3 list of triangle indices
|
|
50
|
+
@param[in] C #C by 3 list of skeleton joint positions
|
|
51
|
+
@param[in] P #P list of point handle indices into C (optional)
|
|
52
|
+
@param[in] BE #BE by 2 list of bone edge indices into C (optional)
|
|
53
|
+
@param[in] CE #CE by 2 list of cage edge indices into P (optional)
|
|
54
|
+
@param[in] samples_per_bone number of samples added per bone (default: 10)
|
|
55
|
+
@param[in] tetgen_flags tetgen option string (default: "" → "pq2Y")
|
|
56
|
+
@return tuple (VV, TT, FF):
|
|
57
|
+
- VV #VV by 3 tet-mesh vertex positions
|
|
58
|
+
- TT #TT by 4 tetrahedra indices
|
|
59
|
+
- FF #FF by 3 surface triangle indices
|
|
60
|
+
@raises RuntimeError on failure)");
|
|
61
|
+
}
|
|
@@ -0,0 +1,40 @@
|
|
|
1
|
+
#include "default_types.h"
|
|
2
|
+
#include <igl/embree/bone_visible.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 bone_visible(
|
|
12
|
+
const nb::DRef<const Eigen::MatrixXN> &V,
|
|
13
|
+
const nb::DRef<const Eigen::MatrixXI> &F,
|
|
14
|
+
const nb::DRef<const Eigen::VectorXN> &s,
|
|
15
|
+
const nb::DRef<const Eigen::VectorXN> &d)
|
|
16
|
+
{
|
|
17
|
+
// int32 required; s/d must be column vectors (VectorXd), not row vectors
|
|
18
|
+
Eigen::MatrixXi Fi = F.cast<int>();
|
|
19
|
+
Eigen::Matrix<bool, Eigen::Dynamic, 1> flag;
|
|
20
|
+
// Pass s and d as VectorXN (column vectors) — DerivedSD must be col vector
|
|
21
|
+
igl::embree::bone_visible(V, Fi, s, d, flag);
|
|
22
|
+
return Eigen::VectorXB(flag);
|
|
23
|
+
}
|
|
24
|
+
}
|
|
25
|
+
|
|
26
|
+
void bind_bone_visible(nb::module_ &m)
|
|
27
|
+
{
|
|
28
|
+
m.def("bone_visible", &pyigl::bone_visible,
|
|
29
|
+
"V"_a, "F"_a, "s"_a, "d"_a,
|
|
30
|
+
R"(Test which mesh vertices are visible to a bone segment.
|
|
31
|
+
|
|
32
|
+
A vertex v is "visible" if the line segment from its projection onto the
|
|
33
|
+
bone to v does not intersect the mesh (see Baran & Popovic 2007).
|
|
34
|
+
|
|
35
|
+
@param[in] V #V by 3 list of mesh vertex positions
|
|
36
|
+
@param[in] F #F by 3 list of triangle indices
|
|
37
|
+
@param[in] s 3-vector: bone start position
|
|
38
|
+
@param[in] d 3-vector: bone end position
|
|
39
|
+
@return flag #V bool vector, true if vertex is visible to the bone)");
|
|
40
|
+
}
|
|
@@ -0,0 +1,44 @@
|
|
|
1
|
+
#include "default_types.h"
|
|
2
|
+
#include <igl/embree/line_mesh_intersection.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 line_mesh_intersection(
|
|
12
|
+
const nb::DRef<const Eigen::MatrixXN> &V_source,
|
|
13
|
+
const nb::DRef<const Eigen::MatrixXN> &N_source,
|
|
14
|
+
const nb::DRef<const Eigen::MatrixXN> &V_target,
|
|
15
|
+
const nb::DRef<const Eigen::MatrixXI> &F_target)
|
|
16
|
+
{
|
|
17
|
+
// Explicit template instantiation: copies to col-major double/int
|
|
18
|
+
Eigen::MatrixXd vs = V_source, ns = N_source, vt = V_target;
|
|
19
|
+
Eigen::MatrixXi ft = F_target.cast<int>();
|
|
20
|
+
Eigen::MatrixXd result =
|
|
21
|
+
igl::embree::line_mesh_intersection<Eigen::MatrixXd, Eigen::MatrixXi>(
|
|
22
|
+
vs, ns, vt, ft);
|
|
23
|
+
return Eigen::MatrixXN(result);
|
|
24
|
+
}
|
|
25
|
+
}
|
|
26
|
+
|
|
27
|
+
void bind_line_mesh_intersection(nb::module_ &m)
|
|
28
|
+
{
|
|
29
|
+
m.def("line_mesh_intersection", &pyigl::line_mesh_intersection,
|
|
30
|
+
"V_source"_a, "N_source"_a, "V_target"_a, "F_target"_a,
|
|
31
|
+
R"(Project a point cloud onto a target mesh by ray casting along normals.
|
|
32
|
+
|
|
33
|
+
For each source point, a ray is cast along its normal (and the opposite
|
|
34
|
+
direction). The nearest intersection with the target mesh is returned as
|
|
35
|
+
barycentric coordinates.
|
|
36
|
+
|
|
37
|
+
@param[in] V_source #V by 3 source point positions
|
|
38
|
+
@param[in] N_source #V by 3 source point normals
|
|
39
|
+
@param[in] V_target #V2 by 3 target mesh vertex positions
|
|
40
|
+
@param[in] F_target #F2 by 3 target mesh triangle indices
|
|
41
|
+
@return #V by 3 matrix of barycentric hits: each row is (face_id, b1, b2)
|
|
42
|
+
where face_id is the index of the hit face and b1, b2 are barycentric
|
|
43
|
+
coordinates w.r.t. the first two edges)");
|
|
44
|
+
}
|
|
@@ -0,0 +1,47 @@
|
|
|
1
|
+
#include "default_types.h"
|
|
2
|
+
#include <igl/triangle/cdt.h>
|
|
3
|
+
#include <nanobind/nanobind.h>
|
|
4
|
+
#include <nanobind/eigen/dense.h>
|
|
5
|
+
#include <nanobind/stl/string.h>
|
|
6
|
+
#include <nanobind/stl/tuple.h>
|
|
7
|
+
|
|
8
|
+
namespace nb = nanobind;
|
|
9
|
+
using namespace nb::literals;
|
|
10
|
+
|
|
11
|
+
namespace pyigl
|
|
12
|
+
{
|
|
13
|
+
auto cdt(
|
|
14
|
+
const nb::DRef<const Eigen::MatrixXN> &V,
|
|
15
|
+
const nb::DRef<const Eigen::MatrixXI> &E,
|
|
16
|
+
const std::string &flags)
|
|
17
|
+
{
|
|
18
|
+
// int32 required by libigl triangle internals
|
|
19
|
+
Eigen::MatrixXi Ei = E.cast<int>();
|
|
20
|
+
Eigen::MatrixXN WV;
|
|
21
|
+
Eigen::MatrixXi WF, WE;
|
|
22
|
+
Eigen::VectorXi J;
|
|
23
|
+
igl::triangle::cdt(V, Ei, flags, WV, WF, WE, J);
|
|
24
|
+
return std::make_tuple(WV, Eigen::MatrixXI(WF.cast<Integer>()),
|
|
25
|
+
Eigen::MatrixXI(WE.cast<Integer>()), Eigen::VectorXI(J.cast<Integer>()));
|
|
26
|
+
}
|
|
27
|
+
}
|
|
28
|
+
|
|
29
|
+
void bind_cdt(nb::module_ &m)
|
|
30
|
+
{
|
|
31
|
+
m.def("cdt", &pyigl::cdt, "V"_a, "E"_a, "flags"_a = "-c",
|
|
32
|
+
R"(Constrained Delaunay triangulation of the convex hull of 2D points and segments.
|
|
33
|
+
|
|
34
|
+
Preprocesses input to remove duplicates before calling triangle. Unlike
|
|
35
|
+
triangulate(), this returns an adjusted edge list on the output.
|
|
36
|
+
|
|
37
|
+
@param[in] V #V by 2 list of 2D vertex positions
|
|
38
|
+
@param[in] E #E by 2 list of constraint edge indices into V
|
|
39
|
+
@param[in] flags triangle option string; should contain "-c" unless segments
|
|
40
|
+
already enclose all points (default: "-c")
|
|
41
|
+
@return tuple (WV, WF, WE, J):
|
|
42
|
+
- WV #WV by 2 background mesh vertex positions
|
|
43
|
+
- WF #WF by 3 background mesh triangle indices into WV
|
|
44
|
+
- WE #WE by 2 constraint edge indices into WV (may be smaller than E
|
|
45
|
+
if degenerate constraints were removed)
|
|
46
|
+
- J #V list of indices into WF/WE for each original vertex in V)");
|
|
47
|
+
}
|
|
@@ -0,0 +1,39 @@
|
|
|
1
|
+
#include "default_types.h"
|
|
2
|
+
#include <igl/triangle/refine.h>
|
|
3
|
+
#include <nanobind/nanobind.h>
|
|
4
|
+
#include <nanobind/eigen/dense.h>
|
|
5
|
+
#include <nanobind/stl/string.h>
|
|
6
|
+
#include <nanobind/stl/tuple.h>
|
|
7
|
+
|
|
8
|
+
namespace nb = nanobind;
|
|
9
|
+
using namespace nb::literals;
|
|
10
|
+
|
|
11
|
+
namespace pyigl
|
|
12
|
+
{
|
|
13
|
+
auto refine(
|
|
14
|
+
const nb::DRef<const Eigen::MatrixXN> &V,
|
|
15
|
+
const nb::DRef<const Eigen::MatrixXI> &E,
|
|
16
|
+
const nb::DRef<const Eigen::MatrixXI> &F,
|
|
17
|
+
const std::string &flags)
|
|
18
|
+
{
|
|
19
|
+
Eigen::MatrixXN V2;
|
|
20
|
+
Eigen::MatrixXI F2;
|
|
21
|
+
igl::triangle::refine(V, E, F, flags, V2, F2);
|
|
22
|
+
return std::make_tuple(V2, F2);
|
|
23
|
+
}
|
|
24
|
+
}
|
|
25
|
+
|
|
26
|
+
void bind_refine(nb::module_ &m)
|
|
27
|
+
{
|
|
28
|
+
m.def("refine", &pyigl::refine,
|
|
29
|
+
"V"_a, "E"_a, "F"_a, "flags"_a = "q",
|
|
30
|
+
R"(Refine an existing 2D triangulation.
|
|
31
|
+
|
|
32
|
+
@param[in] V #V by 2 list of 2D vertex positions
|
|
33
|
+
@param[in] E #E by 2 list of segment indices (constraint edges)
|
|
34
|
+
@param[in] F #F by 3 list of triangle indices
|
|
35
|
+
@param[in] flags triangle option string (default: "q" for quality refinement)
|
|
36
|
+
@return tuple (V2, F2):
|
|
37
|
+
- V2 #V2 by 2 refined vertex positions
|
|
38
|
+
- F2 #F2 by 3 refined triangle indices)");
|
|
39
|
+
}
|