libigl 2.6.1__tar.gz → 2.6.2.dev0__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.1 → libigl-2.6.2.dev0}/CMakeLists.txt +1 -1
- {libigl-2.6.1 → libigl-2.6.2.dev0}/PKG-INFO +1 -2
- {libigl-2.6.1 → libigl-2.6.2.dev0}/README.md +0 -1
- {libigl-2.6.1 → libigl-2.6.2.dev0}/pyproject.toml +1 -1
- libigl-2.6.2.dev0/src/OrientedBoundingBoxMinimizeType.cpp +20 -0
- libigl-2.6.2.dev0/src/copyleft/cgal/oriented_bounding_box.cpp +40 -0
- libigl-2.6.2.dev0/src/lipschitz_octree.cpp +62 -0
- {libigl-2.6.1 → libigl-2.6.2.dev0}/src/marching_cubes.cpp +1 -1
- libigl-2.6.2.dev0/src/offset_surface.cpp +53 -0
- libigl-2.6.2.dev0/src/oriented_bounding_box.cpp +45 -0
- {libigl-2.6.1 → libigl-2.6.2.dev0}/src/random_points_on_mesh.cpp +7 -2
- {libigl-2.6.1 → libigl-2.6.2.dev0}/src/remove_unreferenced.cpp +1 -0
- libigl-2.6.2.dev0/src/unique_sparse_voxel_corners.cpp +60 -0
- {libigl-2.6.1 → libigl-2.6.2.dev0}/tests/test_all.py +37 -3
- {libigl-2.6.1 → libigl-2.6.2.dev0}/.github/workflows/pip.yml +0 -0
- {libigl-2.6.1 → libigl-2.6.2.dev0}/.github/workflows/wheels.yml +0 -0
- {libigl-2.6.1 → libigl-2.6.2.dev0}/.gitignore +0 -0
- {libigl-2.6.1 → libigl-2.6.2.dev0}/LICENSE.GPL +0 -0
- {libigl-2.6.1 → libigl-2.6.2.dev0}/LICENSE.MPL2 +0 -0
- {libigl-2.6.1 → libigl-2.6.2.dev0}/attic/copyleft/tetgen_tetrahedralize.cpp +0 -0
- {libigl-2.6.1 → libigl-2.6.2.dev0}/attic/copyleft/triangle_triangulate.cpp +0 -0
- {libigl-2.6.1 → libigl-2.6.2.dev0}/attic/skip/SolverStatus.cpp +0 -0
- {libigl-2.6.1 → libigl-2.6.2.dev0}/attic/skip/WindingNumberMethod.cpp +0 -0
- {libigl-2.6.1 → libigl-2.6.2.dev0}/attic/skip/angular_distance.cpp +0 -0
- {libigl-2.6.1 → libigl-2.6.2.dev0}/attic/skip/canonical_quaternions.cpp +0 -0
- {libigl-2.6.1 → libigl-2.6.2.dev0}/attic/skip/column_to_quats.cpp +0 -0
- {libigl-2.6.1 → libigl-2.6.2.dev0}/attic/skip/comiso_nrosy.cpp +0 -0
- {libigl-2.6.1 → libigl-2.6.2.dev0}/attic/skip/covariance_scatter_matrix.cpp +0 -0
- {libigl-2.6.1 → libigl-2.6.2.dev0}/attic/skip/file_contents_as_string.cpp +0 -0
- {libigl-2.6.1 → libigl-2.6.2.dev0}/attic/skip/fit_rotations.cpp +0 -0
- {libigl-2.6.1 → libigl-2.6.2.dev0}/attic/skip/frame_field_deformer.cpp +0 -0
- {libigl-2.6.1 → libigl-2.6.2.dev0}/attic/skip/frame_to_cross_field.cpp +0 -0
- {libigl-2.6.1 → libigl-2.6.2.dev0}/attic/skip/frustum.cpp +0 -0
- {libigl-2.6.1 → libigl-2.6.2.dev0}/attic/skip/group_sum_matrix.cpp +0 -0
- {libigl-2.6.1 → libigl-2.6.2.dev0}/attic/skip/harwell_boeing.cpp +0 -0
- {libigl-2.6.1 → libigl-2.6.2.dev0}/attic/skip/histc.cpp +0 -0
- {libigl-2.6.1 → libigl-2.6.2.dev0}/attic/skip/hsv_to_rgb.cpp +0 -0
- {libigl-2.6.1 → libigl-2.6.2.dev0}/attic/skip/infinite_cost_stopping_condition.cpp +0 -0
- {libigl-2.6.1 → libigl-2.6.2.dev0}/attic/skip/intersect.cpp +0 -0
- {libigl-2.6.1 → libigl-2.6.2.dev0}/attic/skip/invert_diag.cpp +0 -0
- {libigl-2.6.1 → libigl-2.6.2.dev0}/attic/skip/is_planar.cpp +0 -0
- {libigl-2.6.1 → libigl-2.6.2.dev0}/attic/skip/limit_faces.cpp +0 -0
- {libigl-2.6.1 → libigl-2.6.2.dev0}/attic/skip/line_field_missmatch.cpp +0 -0
- {libigl-2.6.1 → libigl-2.6.2.dev0}/attic/skip/line_search.cpp +0 -0
- {libigl-2.6.1 → libigl-2.6.2.dev0}/attic/skip/mat_to_quat.cpp +0 -0
- {libigl-2.6.1 → libigl-2.6.2.dev0}/attic/skip/material_colors.cpp +0 -0
- {libigl-2.6.1 → libigl-2.6.2.dev0}/attic/skip/max_faces_stopping_condition.cpp +0 -0
- {libigl-2.6.1 → libigl-2.6.2.dev0}/attic/skip/min_quad_dense.cpp +0 -0
- {libigl-2.6.1 → libigl-2.6.2.dev0}/attic/skip/normalize_quat.cpp +0 -0
- {libigl-2.6.1 → libigl-2.6.2.dev0}/attic/skip/on_boundary.cpp +0 -0
- {libigl-2.6.1 → libigl-2.6.2.dev0}/attic/skip/opengl2_draw_beach_ball.cpp +0 -0
- {libigl-2.6.1 → libigl-2.6.2.dev0}/attic/skip/opengl2_draw_floor.cpp +0 -0
- {libigl-2.6.1 → libigl-2.6.2.dev0}/attic/skip/opengl2_draw_mesh.cpp +0 -0
- {libigl-2.6.1 → libigl-2.6.2.dev0}/attic/skip/opengl2_draw_point.cpp +0 -0
- {libigl-2.6.1 → libigl-2.6.2.dev0}/attic/skip/opengl2_draw_rectangular_marquee.cpp +0 -0
- {libigl-2.6.1 → libigl-2.6.2.dev0}/attic/skip/opengl2_draw_skeleton_3d.cpp +0 -0
- {libigl-2.6.1 → libigl-2.6.2.dev0}/attic/skip/opengl2_draw_skeleton_vector_graphics.cpp +0 -0
- {libigl-2.6.1 → libigl-2.6.2.dev0}/attic/skip/opengl2_flare_textures.cpp +0 -0
- {libigl-2.6.1 → libigl-2.6.2.dev0}/attic/skip/opengl2_model_proj_viewport.cpp +0 -0
- {libigl-2.6.1 → libigl-2.6.2.dev0}/attic/skip/opengl2_print_gl_get.cpp +0 -0
- {libigl-2.6.1 → libigl-2.6.2.dev0}/attic/skip/opengl2_project.cpp +0 -0
- {libigl-2.6.1 → libigl-2.6.2.dev0}/attic/skip/opengl2_right_axis.cpp +0 -0
- {libigl-2.6.1 → libigl-2.6.2.dev0}/attic/skip/opengl2_shine_textures.cpp +0 -0
- {libigl-2.6.1 → libigl-2.6.2.dev0}/attic/skip/opengl2_sort_triangles.cpp +0 -0
- {libigl-2.6.1 → libigl-2.6.2.dev0}/attic/skip/opengl2_unproject.cpp +0 -0
- {libigl-2.6.1 → libigl-2.6.2.dev0}/attic/skip/opengl2_unproject_to_zero_plane.cpp +0 -0
- {libigl-2.6.1 → libigl-2.6.2.dev0}/attic/skip/opengl2_up_axis.cpp +0 -0
- {libigl-2.6.1 → libigl-2.6.2.dev0}/attic/skip/opengl2_view_axis.cpp +0 -0
- {libigl-2.6.1 → libigl-2.6.2.dev0}/attic/skip/opengl_create_shader_program.cpp +0 -0
- {libigl-2.6.1 → libigl-2.6.2.dev0}/attic/skip/opengl_destroy_shader_program.cpp +0 -0
- {libigl-2.6.1 → libigl-2.6.2.dev0}/attic/skip/opengl_gl_type_size.cpp +0 -0
- {libigl-2.6.1 → libigl-2.6.2.dev0}/attic/skip/opengl_glfw_background_window.cpp +0 -0
- {libigl-2.6.1 → libigl-2.6.2.dev0}/attic/skip/opengl_glfw_imgui_ImGuiHelpers.cpp +0 -0
- {libigl-2.6.1 → libigl-2.6.2.dev0}/attic/skip/opengl_init_render_to_texture.cpp +0 -0
- {libigl-2.6.1 → libigl-2.6.2.dev0}/attic/skip/opengl_load_shader.cpp +0 -0
- {libigl-2.6.1 → libigl-2.6.2.dev0}/attic/skip/opengl_print_program_info_log.cpp +0 -0
- {libigl-2.6.1 → libigl-2.6.2.dev0}/attic/skip/opengl_print_shader_info_log.cpp +0 -0
- {libigl-2.6.1 → libigl-2.6.2.dev0}/attic/skip/opengl_report_gl_error.cpp +0 -0
- {libigl-2.6.1 → libigl-2.6.2.dev0}/attic/skip/opengl_uniform_type_to_string.cpp +0 -0
- {libigl-2.6.1 → libigl-2.6.2.dev0}/attic/skip/ortho.cpp +0 -0
- {libigl-2.6.1 → libigl-2.6.2.dev0}/attic/skip/parallel_transport_angles.cpp +0 -0
- {libigl-2.6.1 → libigl-2.6.2.dev0}/attic/skip/polar_svd.cpp +0 -0
- {libigl-2.6.1 → libigl-2.6.2.dev0}/attic/skip/polar_svd3x3.cpp +0 -0
- {libigl-2.6.1 → libigl-2.6.2.dev0}/attic/skip/qslim_optimal_collapse_edge_callbacks.cpp +0 -0
- {libigl-2.6.1 → libigl-2.6.2.dev0}/attic/skip/quadric_binary_plus_operator.cpp +0 -0
- {libigl-2.6.1 → libigl-2.6.2.dev0}/attic/skip/quat_conjugate.cpp +0 -0
- {libigl-2.6.1 → libigl-2.6.2.dev0}/attic/skip/quat_mult.cpp +0 -0
- {libigl-2.6.1 → libigl-2.6.2.dev0}/attic/skip/quat_to_axis_angle.cpp +0 -0
- {libigl-2.6.1 → libigl-2.6.2.dev0}/attic/skip/quat_to_mat.cpp +0 -0
- {libigl-2.6.1 → libigl-2.6.2.dev0}/attic/skip/quats_to_column.cpp +0 -0
- {libigl-2.6.1 → libigl-2.6.2.dev0}/attic/skip/random_quaternion.cpp +0 -0
- {libigl-2.6.1 → libigl-2.6.2.dev0}/attic/skip/readBF.cpp +0 -0
- {libigl-2.6.1 → libigl-2.6.2.dev0}/attic/skip/readNODE.cpp +0 -0
- {libigl-2.6.1 → libigl-2.6.2.dev0}/attic/skip/readPLY.cpp +0 -0
- {libigl-2.6.1 → libigl-2.6.2.dev0}/attic/skip/readSTL.cpp +0 -0
- {libigl-2.6.1 → libigl-2.6.2.dev0}/attic/skip/rgb_to_hsv.cpp +0 -0
- {libigl-2.6.1 → libigl-2.6.2.dev0}/attic/skip/rotate_by_quat.cpp +0 -0
- {libigl-2.6.1 → libigl-2.6.2.dev0}/attic/skip/rotation_matrix_from_directions.cpp +0 -0
- {libigl-2.6.1 → libigl-2.6.2.dev0}/attic/skip/snap_to_canonical_view_quat.cpp +0 -0
- {libigl-2.6.1 → libigl-2.6.2.dev0}/attic/skip/snap_to_fixed_up.cpp +0 -0
- {libigl-2.6.1 → libigl-2.6.2.dev0}/attic/skip/sort_angles.cpp +0 -0
- {libigl-2.6.1 → libigl-2.6.2.dev0}/attic/skip/sort_triangles.cpp +0 -0
- {libigl-2.6.1 → libigl-2.6.2.dev0}/attic/skip/sort_vectors_ccw.cpp +0 -0
- {libigl-2.6.1 → libigl-2.6.2.dev0}/attic/skip/svd3x3.cpp +0 -0
- {libigl-2.6.1 → libigl-2.6.2.dev0}/attic/skip/svd3x3_avx.cpp +0 -0
- {libigl-2.6.1 → libigl-2.6.2.dev0}/attic/skip/svd3x3_sse.cpp +0 -0
- {libigl-2.6.1 → libigl-2.6.2.dev0}/attic/skip/trackball.cpp +0 -0
- {libigl-2.6.1 → libigl-2.6.2.dev0}/attic/skip/transpose_blocks.cpp +0 -0
- {libigl-2.6.1 → libigl-2.6.2.dev0}/attic/skip/unique_rows.cpp +0 -0
- {libigl-2.6.1 → libigl-2.6.2.dev0}/attic/skip/voxel_grid.cpp +0 -0
- {libigl-2.6.1 → libigl-2.6.2.dev0}/attic/skip/writePLY.cpp +0 -0
- {libigl-2.6.1 → libigl-2.6.2.dev0}/attic/skip/writeSTL.cpp +0 -0
- {libigl-2.6.1 → libigl-2.6.2.dev0}/attic/skip/writeWRL.cpp +0 -0
- {libigl-2.6.1 → libigl-2.6.2.dev0}/attic/todo-old/MeshBooleanType.cpp +0 -0
- {libigl-2.6.1 → libigl-2.6.2.dev0}/attic/todo-old/NormalType.cpp +0 -0
- {libigl-2.6.1 → libigl-2.6.2.dev0}/attic/todo-old/collapse_edge.cpp +0 -0
- {libigl-2.6.1 → libigl-2.6.2.dev0}/attic/todo-old/copyleft/copyleft_cgal_assign.cpp +0 -0
- {libigl-2.6.1 → libigl-2.6.2.dev0}/attic/todo-old/copyleft/copyleft_cgal_assign_scalar.cpp +0 -0
- {libigl-2.6.1 → libigl-2.6.2.dev0}/attic/todo-old/copyleft/copyleft_cgal_cell_adjacency.cpp +0 -0
- {libigl-2.6.1 → libigl-2.6.2.dev0}/attic/todo-old/copyleft/copyleft_cgal_closest_facet.cpp +0 -0
- {libigl-2.6.1 → libigl-2.6.2.dev0}/attic/todo-old/copyleft/copyleft_cgal_complex_to_mesh.cpp +0 -0
- {libigl-2.6.1 → libigl-2.6.2.dev0}/attic/todo-old/copyleft/copyleft_cgal_component_inside_component.cpp +0 -0
- {libigl-2.6.1 → libigl-2.6.2.dev0}/attic/todo-old/copyleft/copyleft_cgal_convex_hull.cpp +0 -0
- {libigl-2.6.1 → libigl-2.6.2.dev0}/attic/todo-old/copyleft/copyleft_cgal_delaunay_triangulation.cpp +0 -0
- {libigl-2.6.1 → libigl-2.6.2.dev0}/attic/todo-old/copyleft/copyleft_cgal_extract_cells.cpp +0 -0
- {libigl-2.6.1 → libigl-2.6.2.dev0}/attic/todo-old/copyleft/copyleft_cgal_extract_feature.cpp +0 -0
- {libigl-2.6.1 → libigl-2.6.2.dev0}/attic/todo-old/copyleft/copyleft_cgal_fast_winding_number.cpp +0 -0
- {libigl-2.6.1 → libigl-2.6.2.dev0}/attic/todo-old/copyleft/copyleft_cgal_half_space_box.cpp +0 -0
- {libigl-2.6.1 → libigl-2.6.2.dev0}/attic/todo-old/copyleft/copyleft_cgal_hausdorff.cpp +0 -0
- {libigl-2.6.1 → libigl-2.6.2.dev0}/attic/todo-old/copyleft/copyleft_cgal_incircle.cpp +0 -0
- {libigl-2.6.1 → libigl-2.6.2.dev0}/attic/todo-old/copyleft/copyleft_cgal_insert_into_cdt.cpp +0 -0
- {libigl-2.6.1 → libigl-2.6.2.dev0}/attic/todo-old/copyleft/copyleft_cgal_insphere.cpp +0 -0
- {libigl-2.6.1 → libigl-2.6.2.dev0}/attic/todo-old/copyleft/copyleft_cgal_intersect_other.cpp +0 -0
- {libigl-2.6.1 → libigl-2.6.2.dev0}/attic/todo-old/copyleft/copyleft_cgal_intersect_with_half_space.cpp +0 -0
- {libigl-2.6.1 → libigl-2.6.2.dev0}/attic/todo-old/copyleft/copyleft_cgal_lexicographic_triangulation.cpp +0 -0
- {libigl-2.6.1 → libigl-2.6.2.dev0}/attic/todo-old/copyleft/copyleft_cgal_mesh_boolean.cpp +0 -0
- {libigl-2.6.1 → libigl-2.6.2.dev0}/attic/todo-old/copyleft/copyleft_cgal_mesh_boolean_type_to_funcs.cpp +0 -0
- {libigl-2.6.1 → libigl-2.6.2.dev0}/attic/todo-old/copyleft/copyleft_cgal_mesh_to_cgal_triangle_list.cpp +0 -0
- {libigl-2.6.1 → libigl-2.6.2.dev0}/attic/todo-old/copyleft/copyleft_cgal_mesh_to_polyhedron.cpp +0 -0
- {libigl-2.6.1 → libigl-2.6.2.dev0}/attic/todo-old/copyleft/copyleft_cgal_minkowski_sum.cpp +0 -0
- {libigl-2.6.1 → libigl-2.6.2.dev0}/attic/todo-old/copyleft/copyleft_cgal_order_facets_around_edge.cpp +0 -0
- {libigl-2.6.1 → libigl-2.6.2.dev0}/attic/todo-old/copyleft/copyleft_cgal_order_facets_around_edges.cpp +0 -0
- {libigl-2.6.1 → libigl-2.6.2.dev0}/attic/todo-old/copyleft/copyleft_cgal_orient2D.cpp +0 -0
- {libigl-2.6.1 → libigl-2.6.2.dev0}/attic/todo-old/copyleft/copyleft_cgal_orient3D.cpp +0 -0
- {libigl-2.6.1 → libigl-2.6.2.dev0}/attic/todo-old/copyleft/copyleft_cgal_outer_element.cpp +0 -0
- {libigl-2.6.1 → libigl-2.6.2.dev0}/attic/todo-old/copyleft/copyleft_cgal_outer_facet.cpp +0 -0
- {libigl-2.6.1 → libigl-2.6.2.dev0}/attic/todo-old/copyleft/copyleft_cgal_outer_hull.cpp +0 -0
- {libigl-2.6.1 → libigl-2.6.2.dev0}/attic/todo-old/copyleft/copyleft_cgal_peel_outer_hull_layers.cpp +0 -0
- {libigl-2.6.1 → libigl-2.6.2.dev0}/attic/todo-old/copyleft/copyleft_cgal_peel_winding_number_layers.cpp +0 -0
- {libigl-2.6.1 → libigl-2.6.2.dev0}/attic/todo-old/copyleft/copyleft_cgal_piecewise_constant_winding_number.cpp +0 -0
- {libigl-2.6.1 → libigl-2.6.2.dev0}/attic/todo-old/copyleft/copyleft_cgal_point_areas.cpp +0 -0
- {libigl-2.6.1 → libigl-2.6.2.dev0}/attic/todo-old/copyleft/copyleft_cgal_point_mesh_squared_distance.cpp +0 -0
- {libigl-2.6.1 → libigl-2.6.2.dev0}/attic/todo-old/copyleft/copyleft_cgal_point_segment_squared_distance.cpp +0 -0
- {libigl-2.6.1 → libigl-2.6.2.dev0}/attic/todo-old/copyleft/copyleft_cgal_point_solid_signed_squared_distance.cpp +0 -0
- {libigl-2.6.1 → libigl-2.6.2.dev0}/attic/todo-old/copyleft/copyleft_cgal_point_triangle_squared_distance.cpp +0 -0
- {libigl-2.6.1 → libigl-2.6.2.dev0}/attic/todo-old/copyleft/copyleft_cgal_points_inside_component.cpp +0 -0
- {libigl-2.6.1 → libigl-2.6.2.dev0}/attic/todo-old/copyleft/copyleft_cgal_polyhedron_to_mesh.cpp +0 -0
- {libigl-2.6.1 → libigl-2.6.2.dev0}/attic/todo-old/copyleft/copyleft_cgal_projected_cdt.cpp +0 -0
- {libigl-2.6.1 → libigl-2.6.2.dev0}/attic/todo-old/copyleft/copyleft_cgal_projected_delaunay.cpp +0 -0
- {libigl-2.6.1 → libigl-2.6.2.dev0}/attic/todo-old/copyleft/copyleft_cgal_propagate_winding_numbers.cpp +0 -0
- {libigl-2.6.1 → libigl-2.6.2.dev0}/attic/todo-old/copyleft/copyleft_cgal_read_triangle_mesh.cpp +0 -0
- {libigl-2.6.1 → libigl-2.6.2.dev0}/attic/todo-old/copyleft/copyleft_cgal_relabel_small_immersed_cells.cpp +0 -0
- {libigl-2.6.1 → libigl-2.6.2.dev0}/attic/todo-old/copyleft/copyleft_cgal_remesh_intersections.cpp +0 -0
- {libigl-2.6.1 → libigl-2.6.2.dev0}/attic/todo-old/copyleft/copyleft_cgal_remesh_self_intersections.cpp +0 -0
- {libigl-2.6.1 → libigl-2.6.2.dev0}/attic/todo-old/copyleft/copyleft_cgal_resolve_intersections.cpp +0 -0
- {libigl-2.6.1 → libigl-2.6.2.dev0}/attic/todo-old/copyleft/copyleft_cgal_row_to_point.cpp +0 -0
- {libigl-2.6.1 → libigl-2.6.2.dev0}/attic/todo-old/copyleft/copyleft_cgal_segment_segment_squared_distance.cpp +0 -0
- {libigl-2.6.1 → libigl-2.6.2.dev0}/attic/todo-old/copyleft/copyleft_cgal_signed_distance_isosurface.cpp +0 -0
- {libigl-2.6.1 → libigl-2.6.2.dev0}/attic/todo-old/copyleft/copyleft_cgal_snap_rounding.cpp +0 -0
- {libigl-2.6.1 → libigl-2.6.2.dev0}/attic/todo-old/copyleft/copyleft_cgal_string_to_mesh_boolean_type.cpp +0 -0
- {libigl-2.6.1 → libigl-2.6.2.dev0}/attic/todo-old/copyleft/copyleft_cgal_subdivide_segments.cpp +0 -0
- {libigl-2.6.1 → libigl-2.6.2.dev0}/attic/todo-old/copyleft/copyleft_cgal_submesh_aabb_tree.cpp +0 -0
- {libigl-2.6.1 → libigl-2.6.2.dev0}/attic/todo-old/copyleft/copyleft_cgal_triangle_triangle_squared_distance.cpp +0 -0
- {libigl-2.6.1 → libigl-2.6.2.dev0}/attic/todo-old/copyleft/copyleft_cgal_trim_with_solid.cpp +0 -0
- {libigl-2.6.1 → libigl-2.6.2.dev0}/attic/todo-old/copyleft/copyleft_cgal_wire_mesh.cpp +0 -0
- {libigl-2.6.1 → libigl-2.6.2.dev0}/attic/todo-old/copyleft/copyleft_comiso_miq.cpp +0 -0
- {libigl-2.6.1 → libigl-2.6.2.dev0}/attic/todo-old/copyleft/copyleft_cork_mesh_boolean.cpp +0 -0
- {libigl-2.6.1 → libigl-2.6.2.dev0}/attic/todo-old/copyleft/copyleft_marching_cubes.cpp +0 -0
- {libigl-2.6.1 → libigl-2.6.2.dev0}/attic/todo-old/copyleft/copyleft_offset_surface.cpp +0 -0
- {libigl-2.6.1 → libigl-2.6.2.dev0}/attic/todo-old/copyleft/copyleft_opengl2_render_to_tga.cpp +0 -0
- {libigl-2.6.1 → libigl-2.6.2.dev0}/attic/todo-old/copyleft/copyleft_opengl2_texture_from_tga.cpp +0 -0
- {libigl-2.6.1 → libigl-2.6.2.dev0}/attic/todo-old/copyleft/copyleft_progressive_hulls.cpp +0 -0
- {libigl-2.6.1 → libigl-2.6.2.dev0}/attic/todo-old/copyleft/copyleft_progressive_hulls_cost_and_placement.cpp +0 -0
- {libigl-2.6.1 → libigl-2.6.2.dev0}/attic/todo-old/copyleft/copyleft_quadprog.cpp +0 -0
- {libigl-2.6.1 → libigl-2.6.2.dev0}/attic/todo-old/copyleft/copyleft_swept_volume.cpp +0 -0
- {libigl-2.6.1 → libigl-2.6.2.dev0}/attic/todo-old/copyleft/copyleft_tetgen_mesh_with_skeleton.cpp +0 -0
- {libigl-2.6.1 → libigl-2.6.2.dev0}/attic/todo-old/copyleft/copyleft_tetgen_read_into_tetgenio.cpp +0 -0
- {libigl-2.6.1 → libigl-2.6.2.dev0}/attic/todo-old/copyleft/copyleft_tetgen_tetrahedralize.cpp +0 -0
- {libigl-2.6.1 → libigl-2.6.2.dev0}/attic/todo-old/dijkstra.cpp +0 -0
- {libigl-2.6.1 → libigl-2.6.2.dev0}/attic/todo-old/embree_bone_heat.cpp +0 -0
- {libigl-2.6.1 → libigl-2.6.2.dev0}/attic/todo-old/embree_reorient_facets_raycast.cpp +0 -0
- {libigl-2.6.1 → libigl-2.6.2.dev0}/attic/todo-old/fast_winding_number.cpp +0 -0
- {libigl-2.6.1 → libigl-2.6.2.dev0}/attic/todo-old/flip_edge.cpp +0 -0
- {libigl-2.6.1 → libigl-2.6.2.dev0}/attic/todo-old/knn.cpp +0 -0
- {libigl-2.6.1 → libigl-2.6.2.dev0}/attic/todo-old/mosek_mosek_guarded.cpp +0 -0
- {libigl-2.6.1 → libigl-2.6.2.dev0}/attic/todo-old/mosek_mosek_linprog.cpp +0 -0
- {libigl-2.6.1 → libigl-2.6.2.dev0}/attic/todo-old/octree.cpp +0 -0
- {libigl-2.6.1 → libigl-2.6.2.dev0}/attic/todo-old/per_vertex_point_to_plane_quadrics.cpp +0 -0
- {libigl-2.6.1 → libigl-2.6.2.dev0}/attic/todo-old/png_readPNG.cpp +0 -0
- {libigl-2.6.1 → libigl-2.6.2.dev0}/attic/todo-old/png_render_to_png.cpp +0 -0
- {libigl-2.6.1 → libigl-2.6.2.dev0}/attic/todo-old/png_render_to_png_async.cpp +0 -0
- {libigl-2.6.1 → libigl-2.6.2.dev0}/attic/todo-old/png_texture_from_file.cpp +0 -0
- {libigl-2.6.1 → libigl-2.6.2.dev0}/attic/todo-old/png_texture_from_png.cpp +0 -0
- {libigl-2.6.1 → libigl-2.6.2.dev0}/attic/todo-old/png_writePNG.cpp +0 -0
- {libigl-2.6.1 → libigl-2.6.2.dev0}/attic/todo-old/pseudonormal_test.cpp +0 -0
- {libigl-2.6.1 → libigl-2.6.2.dev0}/attic/todo-old/readWRL.cpp +0 -0
- {libigl-2.6.1 → libigl-2.6.2.dev0}/attic/todo-old/remesh_along_isoline.cpp +0 -0
- {libigl-2.6.1 → libigl-2.6.2.dev0}/attic/todo-old/seam_edges.cpp +0 -0
- {libigl-2.6.1 → libigl-2.6.2.dev0}/attic/todo-old/shortest_edge_and_midpoint.cpp +0 -0
- {libigl-2.6.1 → libigl-2.6.2.dev0}/attic/todo-old/squared_edge_lengths.cpp +0 -0
- {libigl-2.6.1 → libigl-2.6.2.dev0}/attic/todo-old/straighten_seams.cpp +0 -0
- {libigl-2.6.1 → libigl-2.6.2.dev0}/attic/todo-old/swept_volume_signed_distance.cpp +0 -0
- {libigl-2.6.1 → libigl-2.6.2.dev0}/attic/todo-old/triangle_cdt.cpp +0 -0
- {libigl-2.6.1 → libigl-2.6.2.dev0}/attic/todo-old/unzip_corners.cpp +0 -0
- {libigl-2.6.1 → libigl-2.6.2.dev0}/attic/todo-old/writeBF.cpp +0 -0
- {libigl-2.6.1 → libigl-2.6.2.dev0}/attic/todo-old/writeDMAT.cpp +0 -0
- {libigl-2.6.1 → libigl-2.6.2.dev0}/attic/todo-old/writeMESH.cpp +0 -0
- {libigl-2.6.1 → libigl-2.6.2.dev0}/attic/todo-old/writeTGF.cpp +0 -0
- {libigl-2.6.1 → libigl-2.6.2.dev0}/attic/todo-old/xml_writeDAE.cpp +0 -0
- {libigl-2.6.1 → libigl-2.6.2.dev0}/attic/todo-old/xml_write_triangle_mesh.cpp +0 -0
- {libigl-2.6.1 → libigl-2.6.2.dev0}/classes/AABB.cpp +0 -0
- {libigl-2.6.1 → libigl-2.6.2.dev0}/classes/classes.cpp +0 -0
- {libigl-2.6.1 → libigl-2.6.2.dev0}/cmake/CXXFeatures.cmake +0 -0
- {libigl-2.6.1 → libigl-2.6.2.dev0}/cmake/FindLIBIGL.cmake +0 -0
- {libigl-2.6.1 → libigl-2.6.2.dev0}/cmake/UseColors.cmake +0 -0
- {libigl-2.6.1 → libigl-2.6.2.dev0}/cmake/Warnings.cmake +0 -0
- {libigl-2.6.1 → libigl-2.6.2.dev0}/include/default_types.h +0 -0
- {libigl-2.6.1 → libigl-2.6.2.dev0}/missing.sh +0 -0
- {libigl-2.6.1 → libigl-2.6.2.dev0}/mkdocs.yml +0 -0
- {libigl-2.6.1 → libigl-2.6.2.dev0}/postBuild +0 -0
- {libigl-2.6.1 → libigl-2.6.2.dev0}/priority.txt +0 -0
- {libigl-2.6.1 → libigl-2.6.2.dev0}/scripts/basic_function.mako +0 -0
- {libigl-2.6.1 → libigl-2.6.2.dev0}/scripts/blender_igl_export.py +0 -0
- {libigl-2.6.1 → libigl-2.6.2.dev0}/scripts/generate_bindings.py +0 -0
- {libigl-2.6.1 → libigl-2.6.2.dev0}/scripts/make_lean.py +0 -0
- {libigl-2.6.1 → libigl-2.6.2.dev0}/scripts/parser.py +0 -0
- {libigl-2.6.1 → libigl-2.6.2.dev0}/src/AABB.cpp +0 -0
- {libigl-2.6.1 → libigl-2.6.2.dev0}/src/FileEncoding.cpp +0 -0
- {libigl-2.6.1 → libigl-2.6.2.dev0}/src/MappingEnergyType.cpp +0 -0
- {libigl-2.6.1 → libigl-2.6.2.dev0}/src/MassMatrixType.cpp +0 -0
- {libigl-2.6.1 → libigl-2.6.2.dev0}/src/adjacency_list.cpp +0 -0
- {libigl-2.6.1 → libigl-2.6.2.dev0}/src/adjacency_matrix.cpp +0 -0
- {libigl-2.6.1 → libigl-2.6.2.dev0}/src/all_pairs_distances.cpp +0 -0
- {libigl-2.6.1 → libigl-2.6.2.dev0}/src/arap.cpp +0 -0
- {libigl-2.6.1 → libigl-2.6.2.dev0}/src/average_from_edges_onto_vertices.cpp +0 -0
- {libigl-2.6.1 → libigl-2.6.2.dev0}/src/average_onto_faces.cpp +0 -0
- {libigl-2.6.1 → libigl-2.6.2.dev0}/src/average_onto_vertices.cpp +0 -0
- {libigl-2.6.1 → libigl-2.6.2.dev0}/src/avg_edge_length.cpp +0 -0
- {libigl-2.6.1 → libigl-2.6.2.dev0}/src/barycenter.cpp +0 -0
- {libigl-2.6.1 → libigl-2.6.2.dev0}/src/barycentric_coordinates.cpp +0 -0
- {libigl-2.6.1 → libigl-2.6.2.dev0}/src/bbw.cpp +0 -0
- {libigl-2.6.1 → libigl-2.6.2.dev0}/src/bfs_orient.cpp +0 -0
- {libigl-2.6.1 → libigl-2.6.2.dev0}/src/biharmonic_coordinates.cpp +0 -0
- {libigl-2.6.1 → libigl-2.6.2.dev0}/src/bijective_composite_harmonic_mapping.cpp +0 -0
- {libigl-2.6.1 → libigl-2.6.2.dev0}/src/blue_noise.cpp +0 -0
- {libigl-2.6.1 → libigl-2.6.2.dev0}/src/boundary_facets.cpp +0 -0
- {libigl-2.6.1 → libigl-2.6.2.dev0}/src/boundary_loop.cpp +0 -0
- {libigl-2.6.1 → libigl-2.6.2.dev0}/src/bounding_box.cpp +0 -0
- {libigl-2.6.1 → libigl-2.6.2.dev0}/src/circulation.cpp +0 -0
- {libigl-2.6.1 → libigl-2.6.2.dev0}/src/circumradius.cpp +0 -0
- {libigl-2.6.1 → libigl-2.6.2.dev0}/src/collapse_edge.cpp +0 -0
- {libigl-2.6.1 → libigl-2.6.2.dev0}/src/connected_components.cpp +0 -0
- {libigl-2.6.1 → libigl-2.6.2.dev0}/src/copyleft/cgal/convex_hull.cpp +0 -0
- {libigl-2.6.1 → libigl-2.6.2.dev0}/src/copyleft/cgal/fast_winding_number.cpp +0 -0
- {libigl-2.6.1 → libigl-2.6.2.dev0}/src/copyleft/cgal/intersect_other.cpp +0 -0
- {libigl-2.6.1 → libigl-2.6.2.dev0}/src/copyleft/cgal/intersect_with_half_space.cpp +0 -0
- {libigl-2.6.1 → libigl-2.6.2.dev0}/src/copyleft/cgal/mesh_boolean.cpp +0 -0
- {libigl-2.6.1 → libigl-2.6.2.dev0}/src/copyleft/cgal/module.cpp +0 -0
- {libigl-2.6.1 → libigl-2.6.2.dev0}/src/copyleft/cgal/point_areas.cpp +0 -0
- {libigl-2.6.1 → libigl-2.6.2.dev0}/src/copyleft/cgal/remesh_self_intersections.cpp +0 -0
- {libigl-2.6.1 → libigl-2.6.2.dev0}/src/copyleft/cgal/trim_with_solid.cpp +0 -0
- {libigl-2.6.1 → libigl-2.6.2.dev0}/src/copyleft/module.cpp +0 -0
- {libigl-2.6.1 → libigl-2.6.2.dev0}/src/copyleft/progressive_hulls.cpp +0 -0
- {libigl-2.6.1 → libigl-2.6.2.dev0}/src/copyleft/tetgen/module.cpp +0 -0
- {libigl-2.6.1 → libigl-2.6.2.dev0}/src/copyleft/tetgen/tetrahedralize.cpp +0 -0
- {libigl-2.6.1 → libigl-2.6.2.dev0}/src/cotmatrix.cpp +0 -0
- {libigl-2.6.1 → libigl-2.6.2.dev0}/src/cotmatrix_entries.cpp +0 -0
- {libigl-2.6.1 → libigl-2.6.2.dev0}/src/cotmatrix_intrinsic.cpp +0 -0
- {libigl-2.6.1 → libigl-2.6.2.dev0}/src/crouzeix_raviart_cotmatrix.cpp +0 -0
- {libigl-2.6.1 → libigl-2.6.2.dev0}/src/crouzeix_raviart_massmatrix.cpp +0 -0
- {libigl-2.6.1 → libigl-2.6.2.dev0}/src/cut_mesh.cpp +0 -0
- {libigl-2.6.1 → libigl-2.6.2.dev0}/src/cut_mesh_from_singularities.cpp +0 -0
- {libigl-2.6.1 → libigl-2.6.2.dev0}/src/cut_to_disk.cpp +0 -0
- {libigl-2.6.1 → libigl-2.6.2.dev0}/src/cylinder.cpp +0 -0
- {libigl-2.6.1 → libigl-2.6.2.dev0}/src/decimate.cpp +0 -0
- {libigl-2.6.1 → libigl-2.6.2.dev0}/src/dihedral_angles.cpp +0 -0
- {libigl-2.6.1 → libigl-2.6.2.dev0}/src/dihedral_angles_intrinsic.cpp +0 -0
- {libigl-2.6.1 → libigl-2.6.2.dev0}/src/doublearea.cpp +0 -0
- {libigl-2.6.1 → libigl-2.6.2.dev0}/src/dual_contouring.cpp +0 -0
- {libigl-2.6.1 → libigl-2.6.2.dev0}/src/ears.cpp +0 -0
- {libigl-2.6.1 → libigl-2.6.2.dev0}/src/edge_flaps.cpp +0 -0
- {libigl-2.6.1 → libigl-2.6.2.dev0}/src/edge_lengths.cpp +0 -0
- {libigl-2.6.1 → libigl-2.6.2.dev0}/src/edges.cpp +0 -0
- {libigl-2.6.1 → libigl-2.6.2.dev0}/src/embree/EmbreeIntersector.cpp +0 -0
- {libigl-2.6.1 → libigl-2.6.2.dev0}/src/embree/ambient_occlusion.cpp +0 -0
- {libigl-2.6.1 → libigl-2.6.2.dev0}/src/embree/module.cpp +0 -0
- {libigl-2.6.1 → libigl-2.6.2.dev0}/src/embree/reorient_facets_raycast.cpp +0 -0
- {libigl-2.6.1 → libigl-2.6.2.dev0}/src/embree/shape_diameter_function.cpp +0 -0
- {libigl-2.6.1 → libigl-2.6.2.dev0}/src/exact_geodesic.cpp +0 -0
- {libigl-2.6.1 → libigl-2.6.2.dev0}/src/face_areas.cpp +0 -0
- {libigl-2.6.1 → libigl-2.6.2.dev0}/src/facet_adjacency_matrix.cpp +0 -0
- {libigl-2.6.1 → libigl-2.6.2.dev0}/src/facet_components.cpp +0 -0
- {libigl-2.6.1 → libigl-2.6.2.dev0}/src/false_barycentric_subdivision.cpp +0 -0
- {libigl-2.6.1 → libigl-2.6.2.dev0}/src/fast_winding_number.cpp +0 -0
- {libigl-2.6.1 → libigl-2.6.2.dev0}/src/gaussian_curvature.cpp +0 -0
- {libigl-2.6.1 → libigl-2.6.2.dev0}/src/grad.cpp +0 -0
- {libigl-2.6.1 → libigl-2.6.2.dev0}/src/grid.cpp +0 -0
- {libigl-2.6.1 → libigl-2.6.2.dev0}/src/harmonic.cpp +0 -0
- {libigl-2.6.1 → libigl-2.6.2.dev0}/src/heat_geodesics.cpp +0 -0
- {libigl-2.6.1 → libigl-2.6.2.dev0}/src/icosahedron.cpp +0 -0
- {libigl-2.6.1 → libigl-2.6.2.dev0}/src/in_element.cpp +0 -0
- {libigl-2.6.1 → libigl-2.6.2.dev0}/src/inradius.cpp +0 -0
- {libigl-2.6.1 → libigl-2.6.2.dev0}/src/internal_angles.cpp +0 -0
- {libigl-2.6.1 → libigl-2.6.2.dev0}/src/intrinsic_delaunay_cotmatrix.cpp +0 -0
- {libigl-2.6.1 → libigl-2.6.2.dev0}/src/intrinsic_delaunay_triangulation.cpp +0 -0
- {libigl-2.6.1 → libigl-2.6.2.dev0}/src/is_border_vertex.cpp +0 -0
- {libigl-2.6.1 → libigl-2.6.2.dev0}/src/is_edge_manifold.cpp +0 -0
- {libigl-2.6.1 → libigl-2.6.2.dev0}/src/is_vertex_manifold.cpp +0 -0
- {libigl-2.6.1 → libigl-2.6.2.dev0}/src/ismember_rows.cpp +0 -0
- {libigl-2.6.1 → libigl-2.6.2.dev0}/src/isolines.cpp +0 -0
- {libigl-2.6.1 → libigl-2.6.2.dev0}/src/isolines_intrinsic.cpp +0 -0
- {libigl-2.6.1 → libigl-2.6.2.dev0}/src/kelvinlets.cpp +0 -0
- {libigl-2.6.1 → libigl-2.6.2.dev0}/src/knn.cpp +0 -0
- {libigl-2.6.1 → libigl-2.6.2.dev0}/src/local_basis.cpp +0 -0
- {libigl-2.6.1 → libigl-2.6.2.dev0}/src/loop.cpp +0 -0
- {libigl-2.6.1 → libigl-2.6.2.dev0}/src/lscm.cpp +0 -0
- {libigl-2.6.1 → libigl-2.6.2.dev0}/src/map_vertices_to_circle.cpp +0 -0
- {libigl-2.6.1 → libigl-2.6.2.dev0}/src/massmatrix.cpp +0 -0
- {libigl-2.6.1 → libigl-2.6.2.dev0}/src/massmatrix_intrinsic.cpp +0 -0
- {libigl-2.6.1 → libigl-2.6.2.dev0}/src/matlab_format.cpp +0 -0
- {libigl-2.6.1 → libigl-2.6.2.dev0}/src/min_quad_with_fixed.cpp +0 -0
- {libigl-2.6.1 → libigl-2.6.2.dev0}/src/module.cpp +0 -0
- {libigl-2.6.1 → libigl-2.6.2.dev0}/src/moments.cpp +0 -0
- {libigl-2.6.1 → libigl-2.6.2.dev0}/src/noop.cpp +0 -0
- {libigl-2.6.1 → libigl-2.6.2.dev0}/src/octree.cpp +0 -0
- {libigl-2.6.1 → libigl-2.6.2.dev0}/src/on_boundary.cpp +0 -0
- {libigl-2.6.1 → libigl-2.6.2.dev0}/src/orient_halfedges.cpp +0 -0
- {libigl-2.6.1 → libigl-2.6.2.dev0}/src/oriented_facets.cpp +0 -0
- {libigl-2.6.1 → libigl-2.6.2.dev0}/src/per_face_normals.cpp +0 -0
- {libigl-2.6.1 → libigl-2.6.2.dev0}/src/per_vertex_normals.cpp +0 -0
- {libigl-2.6.1 → libigl-2.6.2.dev0}/src/point_mesh_squared_distance.cpp +0 -0
- {libigl-2.6.1 → libigl-2.6.2.dev0}/src/polar_svd.cpp +0 -0
- {libigl-2.6.1 → libigl-2.6.2.dev0}/src/polygon_corners.cpp +0 -0
- {libigl-2.6.1 → libigl-2.6.2.dev0}/src/polygons_to_triangles.cpp +0 -0
- {libigl-2.6.1 → libigl-2.6.2.dev0}/src/principal_curvature.cpp +0 -0
- {libigl-2.6.1 → libigl-2.6.2.dev0}/src/project.cpp +0 -0
- {libigl-2.6.1 → libigl-2.6.2.dev0}/src/project_to_line.cpp +0 -0
- {libigl-2.6.1 → libigl-2.6.2.dev0}/src/project_to_line_segment.cpp +0 -0
- {libigl-2.6.1 → libigl-2.6.2.dev0}/src/qslim.cpp +0 -0
- {libigl-2.6.1 → libigl-2.6.2.dev0}/src/quad_grid.cpp +0 -0
- {libigl-2.6.1 → libigl-2.6.2.dev0}/src/ray_mesh_intersect.cpp +0 -0
- {libigl-2.6.1 → libigl-2.6.2.dev0}/src/readDMAT.cpp +0 -0
- {libigl-2.6.1 → libigl-2.6.2.dev0}/src/readMESH.cpp +0 -0
- {libigl-2.6.1 → libigl-2.6.2.dev0}/src/readMSH.cpp +0 -0
- {libigl-2.6.1 → libigl-2.6.2.dev0}/src/readOBJ.cpp +0 -0
- {libigl-2.6.1 → libigl-2.6.2.dev0}/src/readOFF.cpp +0 -0
- {libigl-2.6.1 → libigl-2.6.2.dev0}/src/read_triangle_mesh.cpp +0 -0
- {libigl-2.6.1 → libigl-2.6.2.dev0}/src/remove_duplicate_vertices.cpp +0 -0
- {libigl-2.6.1 → libigl-2.6.2.dev0}/src/signed_distance.cpp +0 -0
- {libigl-2.6.1 → libigl-2.6.2.dev0}/src/slim.cpp +0 -0
- {libigl-2.6.1 → libigl-2.6.2.dev0}/src/sparse_map_noop.cpp +0 -0
- {libigl-2.6.1 → libigl-2.6.2.dev0}/src/sparse_map_shape.cpp +0 -0
- {libigl-2.6.1 → libigl-2.6.2.dev0}/src/sparse_noop.cpp +0 -0
- {libigl-2.6.1 → libigl-2.6.2.dev0}/src/sparse_shape.cpp +0 -0
- {libigl-2.6.1 → libigl-2.6.2.dev0}/src/split_nonmanifold.cpp +0 -0
- {libigl-2.6.1 → libigl-2.6.2.dev0}/src/squared_edge_lengths.cpp +0 -0
- {libigl-2.6.1 → libigl-2.6.2.dev0}/src/triangle/module.cpp +0 -0
- {libigl-2.6.1 → libigl-2.6.2.dev0}/src/triangle/scaf.cpp +0 -0
- {libigl-2.6.1 → libigl-2.6.2.dev0}/src/triangle/triangulate.cpp +0 -0
- {libigl-2.6.1 → libigl-2.6.2.dev0}/src/triangle_fan.cpp +0 -0
- {libigl-2.6.1 → libigl-2.6.2.dev0}/src/triangle_triangle_adjacency.cpp +0 -0
- {libigl-2.6.1 → libigl-2.6.2.dev0}/src/triangulated_grid.cpp +0 -0
- {libigl-2.6.1 → libigl-2.6.2.dev0}/src/unique_edge_map.cpp +0 -0
- {libigl-2.6.1 → libigl-2.6.2.dev0}/src/unique_simplices.cpp +0 -0
- {libigl-2.6.1 → libigl-2.6.2.dev0}/src/unproject.cpp +0 -0
- {libigl-2.6.1 → libigl-2.6.2.dev0}/src/upsample.cpp +0 -0
- {libigl-2.6.1 → libigl-2.6.2.dev0}/src/vertex_components.cpp +0 -0
- {libigl-2.6.1 → libigl-2.6.2.dev0}/src/vertex_triangle_adjacency.cpp +0 -0
- {libigl-2.6.1 → libigl-2.6.2.dev0}/src/volume.cpp +0 -0
- {libigl-2.6.1 → libigl-2.6.2.dev0}/src/voxel_grid.cpp +0 -0
- {libigl-2.6.1 → libigl-2.6.2.dev0}/src/winding_number.cpp +0 -0
- {libigl-2.6.1 → libigl-2.6.2.dev0}/src/writeDMAT.cpp +0 -0
- {libigl-2.6.1 → libigl-2.6.2.dev0}/src/writeMESH.cpp +0 -0
- {libigl-2.6.1 → libigl-2.6.2.dev0}/src/writeMSH.cpp +0 -0
- {libigl-2.6.1 → libigl-2.6.2.dev0}/src/writeOBJ.cpp +0 -0
- {libigl-2.6.1 → libigl-2.6.2.dev0}/src/writePLY.cpp +0 -0
- {libigl-2.6.1 → libigl-2.6.2.dev0}/src/write_triangle_mesh.cpp +0 -0
- {libigl-2.6.1 → libigl-2.6.2.dev0}/tutorial/contributing.md +0 -0
- {libigl-2.6.1 → libigl-2.6.2.dev0}/tutorial/exporter.py +0 -0
- {libigl-2.6.1 → libigl-2.6.2.dev0}/tutorial/igl_docs.md +0 -0
- {libigl-2.6.1 → libigl-2.6.2.dev0}/tutorial/images/102_DrawMesh.png +0 -0
- {libigl-2.6.1 → libigl-2.6.2.dev0}/tutorial/images/104_Colors.png +0 -0
- {libigl-2.6.1 → libigl-2.6.2.dev0}/tutorial/images/105_Overlays.png +0 -0
- {libigl-2.6.1 → libigl-2.6.2.dev0}/tutorial/images/106_ViewerMenu.png +0 -0
- {libigl-2.6.1 → libigl-2.6.2.dev0}/tutorial/images/501_HarmonicParam.png +0 -0
- {libigl-2.6.1 → libigl-2.6.2.dev0}/tutorial/images/502_LSCMParam.png +0 -0
- {libigl-2.6.1 → libigl-2.6.2.dev0}/tutorial/images/503_ARAPParam.png +0 -0
- {libigl-2.6.1 → libigl-2.6.2.dev0}/tutorial/images/504_nrosy_field.png +0 -0
- {libigl-2.6.1 → libigl-2.6.2.dev0}/tutorial/images/504_vector_field.png +0 -0
- {libigl-2.6.1 → libigl-2.6.2.dev0}/tutorial/images/505_MIQ_1.png +0 -0
- {libigl-2.6.1 → libigl-2.6.2.dev0}/tutorial/images/505_MIQ_2.png +0 -0
- {libigl-2.6.1 → libigl-2.6.2.dev0}/tutorial/images/505_MIQ_3.png +0 -0
- {libigl-2.6.1 → libigl-2.6.2.dev0}/tutorial/images/505_MIQ_4.png +0 -0
- {libigl-2.6.1 → libigl-2.6.2.dev0}/tutorial/images/505_MIQ_5.png +0 -0
- {libigl-2.6.1 → libigl-2.6.2.dev0}/tutorial/images/505_MIQ_6.png +0 -0
- {libigl-2.6.1 → libigl-2.6.2.dev0}/tutorial/images/505_MIQ_7.png +0 -0
- {libigl-2.6.1 → libigl-2.6.2.dev0}/tutorial/images/505_MIQ_8.png +0 -0
- {libigl-2.6.1 → libigl-2.6.2.dev0}/tutorial/images/506_FrameField_1.png +0 -0
- {libigl-2.6.1 → libigl-2.6.2.dev0}/tutorial/images/506_FrameField_2.png +0 -0
- {libigl-2.6.1 → libigl-2.6.2.dev0}/tutorial/images/506_FrameField_3.png +0 -0
- {libigl-2.6.1 → libigl-2.6.2.dev0}/tutorial/images/506_FrameField_4.png +0 -0
- {libigl-2.6.1 → libigl-2.6.2.dev0}/tutorial/images/507_PolyVectorField.png +0 -0
- {libigl-2.6.1 → libigl-2.6.2.dev0}/tutorial/images/508_ConjugateField.png +0 -0
- {libigl-2.6.1 → libigl-2.6.2.dev0}/tutorial/images/509_Planarization.png +0 -0
- {libigl-2.6.1 → libigl-2.6.2.dev0}/tutorial/images/510_Integrable.png +0 -0
- {libigl-2.6.1 → libigl-2.6.2.dev0}/tutorial/images/511_PolyVectorFieldGeneral.png +0 -0
- {libigl-2.6.1 → libigl-2.6.2.dev0}/tutorial/images/602_Matlab_1.png +0 -0
- {libigl-2.6.1 → libigl-2.6.2.dev0}/tutorial/images/602_Matlab_2.png +0 -0
- {libigl-2.6.1 → libigl-2.6.2.dev0}/tutorial/images/604_Triangle.png +0 -0
- {libigl-2.6.1 → libigl-2.6.2.dev0}/tutorial/images/605_Tetgen.png +0 -0
- {libigl-2.6.1 → libigl-2.6.2.dev0}/tutorial/images/606_AmbientOcclusion.png +0 -0
- {libigl-2.6.1 → libigl-2.6.2.dev0}/tutorial/images/607_Picking.png +0 -0
- {libigl-2.6.1 → libigl-2.6.2.dev0}/tutorial/images/608_LIM.png +0 -0
- {libigl-2.6.1 → libigl-2.6.2.dev0}/tutorial/images/712_beetles.jpg +0 -0
- {libigl-2.6.1 → libigl-2.6.2.dev0}/tutorial/images/713_ShapeUp.png +0 -0
- {libigl-2.6.1 → libigl-2.6.2.dev0}/tutorial/images/VF.pdf +0 -0
- {libigl-2.6.1 → libigl-2.6.2.dev0}/tutorial/images/VF.png +0 -0
- {libigl-2.6.1 → libigl-2.6.2.dev0}/tutorial/images/arm-dqs.jpg +0 -0
- {libigl-2.6.1 → libigl-2.6.2.dev0}/tutorial/images/armadillo-fast.jpg +0 -0
- {libigl-2.6.1 → libigl-2.6.2.dev0}/tutorial/images/armadillo-marching-cubes.jpg +0 -0
- {libigl-2.6.1 → libigl-2.6.2.dev0}/tutorial/images/background.gif +0 -0
- {libigl-2.6.1 → libigl-2.6.2.dev0}/tutorial/images/beetle-eigen-decomposition.gif +0 -0
- {libigl-2.6.1 → libigl-2.6.2.dev0}/tutorial/images/big-sigcat-winding-number.gif +0 -0
- {libigl-2.6.1 → libigl-2.6.2.dev0}/tutorial/images/bump-k-harmonic.jpg +0 -0
- {libigl-2.6.1 → libigl-2.6.2.dev0}/tutorial/images/bumpy-gaussian-curvature.jpg +0 -0
- {libigl-2.6.1 → libigl-2.6.2.dev0}/tutorial/images/bunny-signed-distance.gif +0 -0
- {libigl-2.6.1 → libigl-2.6.2.dev0}/tutorial/images/bunny-swept-volume.gif +0 -0
- {libigl-2.6.1 → libigl-2.6.2.dev0}/tutorial/images/camelhead-laplace-equation.jpg +0 -0
- {libigl-2.6.1 → libigl-2.6.2.dev0}/tutorial/images/cheburashka-biharmonic-leq.jpg +0 -0
- {libigl-2.6.1 → libigl-2.6.2.dev0}/tutorial/images/cheburashka-gradient.jpg +0 -0
- {libigl-2.6.1 → libigl-2.6.2.dev0}/tutorial/images/cheburashka-knight-boolean.jpg +0 -0
- {libigl-2.6.1 → libigl-2.6.2.dev0}/tutorial/images/cheburashka-multiscale-biharmonic-kernels.jpg +0 -0
- {libigl-2.6.1 → libigl-2.6.2.dev0}/tutorial/images/cow-curvature-flow.jpg +0 -0
- {libigl-2.6.1 → libigl-2.6.2.dev0}/tutorial/images/cube-sphere-cylinders-csg-tree.jpg +0 -0
- {libigl-2.6.1 → libigl-2.6.2.dev0}/tutorial/images/cube-sphere-cylinders-csg.gif +0 -0
- {libigl-2.6.1 → libigl-2.6.2.dev0}/tutorial/images/decimated-knight-arap.jpg +0 -0
- {libigl-2.6.1 → libigl-2.6.2.dev0}/tutorial/images/decimated-knight-slice-color.jpg +0 -0
- {libigl-2.6.1 → libigl-2.6.2.dev0}/tutorial/images/decimated-knight-sort-color.jpg +0 -0
- {libigl-2.6.1 → libigl-2.6.2.dev0}/tutorial/images/decimated-knight-subdivision.gif +0 -0
- {libigl-2.6.1 → libigl-2.6.2.dev0}/tutorial/images/edge-collapse.jpg +0 -0
- {libigl-2.6.1 → libigl-2.6.2.dev0}/tutorial/images/edge-collapse.pdf +0 -0
- {libigl-2.6.1 → libigl-2.6.2.dev0}/tutorial/images/fandisk-normals.jpg +0 -0
- {libigl-2.6.1 → libigl-2.6.2.dev0}/tutorial/images/fertility-edge-collapse.gif +0 -0
- {libigl-2.6.1 → libigl-2.6.2.dev0}/tutorial/images/fertility-principal-curvature.jpg +0 -0
- {libigl-2.6.1 → libigl-2.6.2.dev0}/tutorial/images/geodesicdistance.jpg +0 -0
- {libigl-2.6.1 → libigl-2.6.2.dev0}/tutorial/images/hand-bbw.jpg +0 -0
- {libigl-2.6.1 → libigl-2.6.2.dev0}/tutorial/images/hat-function.jpg +0 -0
- {libigl-2.6.1 → libigl-2.6.2.dev0}/tutorial/images/heat-geodesic-beetle.gif +0 -0
- {libigl-2.6.1 → libigl-2.6.2.dev0}/tutorial/images/heat-geodesic-peaks.png +0 -0
- {libigl-2.6.1 → libigl-2.6.2.dev0}/tutorial/images/libigl-logo.jpg +0 -0
- {libigl-2.6.1 → libigl-2.6.2.dev0}/tutorial/images/max-biharmonic.jpg +0 -0
- {libigl-2.6.1 → libigl-2.6.2.dev0}/tutorial/images/multiple-meshes.png +0 -0
- {libigl-2.6.1 → libigl-2.6.2.dev0}/tutorial/images/octopus-biharmonic-coordinates-physics.gif +0 -0
- {libigl-2.6.1 → libigl-2.6.2.dev0}/tutorial/images/simplicial_complex_augmentation_framework.png +0 -0
- {libigl-2.6.1 → libigl-2.6.2.dev0}/tutorial/images/slim.png +0 -0
- {libigl-2.6.1 → libigl-2.6.2.dev0}/tutorial/images/streamlines.jpg +0 -0
- {libigl-2.6.1 → libigl-2.6.2.dev0}/tutorial/images/truck-facet-orientation.jpg +0 -0
- {libigl-2.6.1 → libigl-2.6.2.dev0}/tutorial/index.md +0 -0
- {libigl-2.6.1 → libigl-2.6.2.dev0}/tutorial/marching_cubes.py +0 -0
- {libigl-2.6.1 → libigl-2.6.2.dev0}/tutorial/plot_to_md.py +0 -0
- {libigl-2.6.1 → libigl-2.6.2.dev0}/tutorial/tut-chapter0.ipynb +0 -0
- {libigl-2.6.1 → libigl-2.6.2.dev0}/tutorial/tut-chapter1.ipynb +0 -0
- {libigl-2.6.1 → libigl-2.6.2.dev0}/tutorial/tut-chapter2.ipynb +0 -0
- {libigl-2.6.1 → libigl-2.6.2.dev0}/tutorial/tut-chapter3.ipynb +0 -0
- {libigl-2.6.1 → libigl-2.6.2.dev0}/tutorial/tut-chapter4.ipynb +0 -0
- {libigl-2.6.1 → libigl-2.6.2.dev0}/tutorial/tut-chapter5.ipynb +0 -0
- {libigl-2.6.1 → libigl-2.6.2.dev0}/tutorial/tut-chapter6.ipynb +0 -0
- {libigl-2.6.1 → libigl-2.6.2.dev0}/tutorial/tut-chapter7.ipynb +0 -0
- {libigl-2.6.1 → libigl-2.6.2.dev0}/tutorial/tutorials.ipynb +0 -0
|
@@ -45,7 +45,7 @@ option(LIBIGL_RESTRICTED_TRIANGLE "Build target igl_restricted::triangle" ON)
|
|
|
45
45
|
FetchContent_Declare(
|
|
46
46
|
libigl
|
|
47
47
|
GIT_REPOSITORY https://github.com/libigl/libigl.git
|
|
48
|
-
GIT_TAG
|
|
48
|
+
GIT_TAG 678e1fff76815e0c4c5d1f025ee2129181cc7d86
|
|
49
49
|
)
|
|
50
50
|
FetchContent_MakeAvailable(libigl)
|
|
51
51
|
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.1
|
|
2
2
|
Name: libigl
|
|
3
|
-
Version: 2.6.
|
|
3
|
+
Version: 2.6.2.dev0
|
|
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)
|
|
@@ -12,7 +12,6 @@ Description-Content-Type: text/markdown
|
|
|
12
12
|
|
|
13
13
|
# libigl Python Bindings
|
|
14
14
|
[](https://pypi.org/project/libigl/)
|
|
15
|
-
[](https://github.com/libigl/libigl-python-bindings/actions/workflows/wheels.yml?query=branch%3Amain)
|
|
16
15
|
|
|
17
16
|
This repository contains the source code for the python bindings for the C++
|
|
18
17
|
[libigl](https://github.com/libigl/libigl) library written using
|
|
@@ -1,6 +1,5 @@
|
|
|
1
1
|
# libigl Python Bindings
|
|
2
2
|
[](https://pypi.org/project/libigl/)
|
|
3
|
-
[](https://github.com/libigl/libigl-python-bindings/actions/workflows/wheels.yml?query=branch%3Amain)
|
|
4
3
|
|
|
5
4
|
This repository contains the source code for the python bindings for the C++
|
|
6
5
|
[libigl](https://github.com/libigl/libigl) library written using
|
|
@@ -0,0 +1,20 @@
|
|
|
1
|
+
#include "default_types.h"
|
|
2
|
+
#include <igl/oriented_bounding_box.h>
|
|
3
|
+
#include <nanobind/nanobind.h>
|
|
4
|
+
#include <nanobind/ndarray.h>
|
|
5
|
+
#include <nanobind/eigen/dense.h>
|
|
6
|
+
|
|
7
|
+
namespace nb = nanobind;
|
|
8
|
+
using namespace nb::literals;
|
|
9
|
+
|
|
10
|
+
|
|
11
|
+
void bind_OrientedBoundingBoxMinimizeType(nb::module_ &m)
|
|
12
|
+
{
|
|
13
|
+
nb::enum_<igl::OrientedBoundingBoxMinimizeType>(m, "OrientedBoundingBoxMinimizeType")
|
|
14
|
+
.value("ORIENTED_BOUNDING_BOX_MINIMIZE_VOLUME", igl::ORIENTED_BOUNDING_BOX_MINIMIZE_VOLUME)
|
|
15
|
+
.value("ORIENTED_BOUNDING_BOX_MINIMIZE_SURFACE_AREA", igl::ORIENTED_BOUNDING_BOX_MINIMIZE_SURFACE_AREA)
|
|
16
|
+
.value("ORIENTED_BOUNDING_BOX_MINIMIZE_DIAGONAL_LENGTH", igl::ORIENTED_BOUNDING_BOX_MINIMIZE_DIAGONAL_LENGTH)
|
|
17
|
+
.export_values()
|
|
18
|
+
;
|
|
19
|
+
}
|
|
20
|
+
|
|
@@ -0,0 +1,40 @@
|
|
|
1
|
+
#include "default_types.h"
|
|
2
|
+
#include <igl/copyleft/cgal/oriented_bounding_box.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
|
+
namespace pyigl
|
|
12
|
+
{
|
|
13
|
+
auto oriented_bounding_box(
|
|
14
|
+
const nb::DRef<const Eigen::MatrixXN> &P)
|
|
15
|
+
{
|
|
16
|
+
Eigen::MatrixXN R;
|
|
17
|
+
igl::copyleft::cgal::oriented_bounding_box(P, R);
|
|
18
|
+
return R;
|
|
19
|
+
}
|
|
20
|
+
}
|
|
21
|
+
|
|
22
|
+
// Bind the wrapper to the Python module
|
|
23
|
+
void bind_oriented_bounding_box(nb::module_ &m)
|
|
24
|
+
{
|
|
25
|
+
m.def(
|
|
26
|
+
"oriented_bounding_box",
|
|
27
|
+
&pyigl::oriented_bounding_box,
|
|
28
|
+
"P"_a,
|
|
29
|
+
R"(Given a set of points compute the rotation transformation of them such
|
|
30
|
+
that their axis-aligned bounding box is as small as possible.
|
|
31
|
+
|
|
32
|
+
igl::oriented_bounding_box is often faster and better
|
|
33
|
+
|
|
34
|
+
@param[in] P #P by 3 list of point locations
|
|
35
|
+
@param[out] R rotation matrix
|
|
36
|
+
)");
|
|
37
|
+
|
|
38
|
+
}
|
|
39
|
+
|
|
40
|
+
|
|
@@ -0,0 +1,62 @@
|
|
|
1
|
+
#include "default_types.h"
|
|
2
|
+
#include <igl/lipschitz_octree.h>
|
|
3
|
+
#include <nanobind/nanobind.h>
|
|
4
|
+
#include <nanobind/ndarray.h>
|
|
5
|
+
#include <nanobind/eigen/dense.h>
|
|
6
|
+
#include <nanobind/stl/tuple.h>
|
|
7
|
+
#include <nanobind/stl/function.h>
|
|
8
|
+
|
|
9
|
+
namespace nb = nanobind;
|
|
10
|
+
using namespace nb::literals;
|
|
11
|
+
|
|
12
|
+
namespace pyigl
|
|
13
|
+
{
|
|
14
|
+
// Hopefully this will avoid a copy by matching the type in lipschitz_octree_prune
|
|
15
|
+
using MatrixNX3R = Eigen::Matrix<Numeric, Eigen::Dynamic, 3, Eigen::RowMajor>;
|
|
16
|
+
auto lipschitz_octree(
|
|
17
|
+
const nb::DRef<const Eigen::VectorXN> &origin,
|
|
18
|
+
const Numeric h0,
|
|
19
|
+
const Integer max_depth,
|
|
20
|
+
const nb::typed<
|
|
21
|
+
nb::callable,
|
|
22
|
+
Eigen::VectorXN(const nb::DRef<const MatrixNX3R> &)> & udf)
|
|
23
|
+
{
|
|
24
|
+
Eigen::MatrixXI ijk;
|
|
25
|
+
// Instead of MatrixXN if use use MatrixNX3R we might avoid a copy
|
|
26
|
+
const std::function<Eigen::VectorXN(const MatrixNX3R &)> udf_wrapper =
|
|
27
|
+
[&](const MatrixNX3R &Q) -> Eigen::VectorXN
|
|
28
|
+
{
|
|
29
|
+
return nb::cast<Eigen::VectorXN>(udf(Q));
|
|
30
|
+
};
|
|
31
|
+
igl::lipschitz_octree<true>(origin, h0, max_depth, udf_wrapper, ijk);
|
|
32
|
+
return ijk;
|
|
33
|
+
}
|
|
34
|
+
}
|
|
35
|
+
|
|
36
|
+
// Bind the wrapper to the Python module
|
|
37
|
+
void bind_lipschitz_octree(nb::module_ &m)
|
|
38
|
+
{
|
|
39
|
+
m.def(
|
|
40
|
+
"lipschitz_octree",
|
|
41
|
+
&pyigl::lipschitz_octree,
|
|
42
|
+
"origin"_a,
|
|
43
|
+
"h0"_a,
|
|
44
|
+
"max_depth"_a,
|
|
45
|
+
"udf"_a,
|
|
46
|
+
R"(Given a minimum corner position (origin) and a side length (h0) and a
|
|
47
|
+
maximum depth (max_depth), determine the possible active leaf octree cells
|
|
48
|
+
based on an one-Lipschitz non-negative function to a level set (e.g.,
|
|
49
|
+
"unsigned distance function").
|
|
50
|
+
|
|
51
|
+
@param[in] origin 3-vector of root cell origin (minimum corner)
|
|
52
|
+
@param[in] h0 side length of root cell
|
|
53
|
+
@param[in] max_depth maximum depth of octree (root is depth=0)
|
|
54
|
+
@param[in] udf 1-Lipschitz function of (unsigned) distance to level set to a
|
|
55
|
+
list of batched query points
|
|
56
|
+
@param[out] ijk #ijk by 3 list of octree leaf cell minimum corner
|
|
57
|
+
subscripts
|
|
58
|
+
)");
|
|
59
|
+
}
|
|
60
|
+
|
|
61
|
+
|
|
62
|
+
|
|
@@ -77,7 +77,7 @@ EV = np.array([[k & 0xFFFFFFFF, k >> 32, v] for k, v in E2V.items()], dtype=np.i
|
|
|
77
77
|
"S"_a,
|
|
78
78
|
"GV"_a,
|
|
79
79
|
"GI"_a,
|
|
80
|
-
"isovalue"_a=0,
|
|
80
|
+
"isovalue"_a=0.0,
|
|
81
81
|
R"(Performs marching cubes reconstruction on a grid defined by values, and
|
|
82
82
|
points, and generates a mesh defined by vertices and faces
|
|
83
83
|
|
|
@@ -0,0 +1,53 @@
|
|
|
1
|
+
#include "default_types.h"
|
|
2
|
+
#include <igl/offset_surface.h>
|
|
3
|
+
#include <nanobind/nanobind.h>
|
|
4
|
+
#include <nanobind/ndarray.h>
|
|
5
|
+
#include <nanobind/eigen/dense.h>
|
|
6
|
+
#include <nanobind/stl/tuple.h>
|
|
7
|
+
#include <nanobind/stl/vector.h>
|
|
8
|
+
|
|
9
|
+
namespace nb = nanobind;
|
|
10
|
+
using namespace nb::literals;
|
|
11
|
+
|
|
12
|
+
namespace pyigl {
|
|
13
|
+
auto offset_surface(
|
|
14
|
+
const nb::DRef<const Eigen::MatrixXN> &V,
|
|
15
|
+
const nb::DRef<const Eigen::MatrixXI> &F,
|
|
16
|
+
const Numeric isolevel,
|
|
17
|
+
const Integer s,
|
|
18
|
+
const igl::SignedDistanceType signed_distance_type)
|
|
19
|
+
{
|
|
20
|
+
Eigen::MatrixXN SV;
|
|
21
|
+
Eigen::MatrixXI SF;
|
|
22
|
+
Eigen::MatrixXN GV;
|
|
23
|
+
|
|
24
|
+
Eigen::VectorXI side;
|
|
25
|
+
Eigen::MatrixXN so;
|
|
26
|
+
igl::offset_surface(
|
|
27
|
+
V, F, isolevel, s, signed_distance_type, SV, SF, GV, side,
|
|
28
|
+
so);
|
|
29
|
+
|
|
30
|
+
return std::make_tuple(SV, SF, GV, side, so);
|
|
31
|
+
}
|
|
32
|
+
} // namespace pyigl
|
|
33
|
+
|
|
34
|
+
// Bind the wrapper to the Python module
|
|
35
|
+
void bind_offset_surface(nb::module_ &m) {
|
|
36
|
+
m.def(
|
|
37
|
+
"offset_surface", &pyigl::offset_surface, "V"_a, "F"_a, "isolevel"_a,
|
|
38
|
+
"s"_a, "signed_distance_type"_a,
|
|
39
|
+
R"(Compute a triangulated offset surface using matching cubes on a grid of signed distance values from the input triangle mesh.
|
|
40
|
+
|
|
41
|
+
@param[in] V #V by 3 list of mesh vertex positions
|
|
42
|
+
@param[in] F #F by 3 list of mesh triangle indices into V
|
|
43
|
+
@param[in] isolevel iso level to extract (signed distance: negative inside)
|
|
44
|
+
@param[in] s number of grid cells along longest side (controls resolution)
|
|
45
|
+
@param[in] signed_distance_type type of signing to use one of SIGNED_DISTANCE_TYPE_PSEUDONORMAL, SIGNED_DISTANCE_TYPE_WINDING_NUMBER, SIGNED_DISTANCE_TYPE_DEFAULT, SIGNED_DISTANCE_TYPE_UNSIGNED, SIGNED_DISTANCE_TYPE_FAST_WINDING_NUMBER
|
|
46
|
+
|
|
47
|
+
@return Tuple containing:
|
|
48
|
+
- SV: #SV by 3 list of output surface mesh vertex positions
|
|
49
|
+
- SF: #SF by 3 list of output mesh triangle indices into SV
|
|
50
|
+
- GV: #GV=side(0)*side(1)*side(2) by 3 list of grid cell centers
|
|
51
|
+
- side: list of number of grid cells in x, y, and z directions
|
|
52
|
+
- so: #GV by 3 list of signed distance values _near_ `isolevel` ('far' from `isolevel` these values are incorrect))");
|
|
53
|
+
}
|
|
@@ -0,0 +1,45 @@
|
|
|
1
|
+
#include "default_types.h"
|
|
2
|
+
#include <igl/oriented_bounding_box.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
|
+
namespace pyigl
|
|
12
|
+
{
|
|
13
|
+
auto oriented_bounding_box(
|
|
14
|
+
const nb::DRef<const Eigen::MatrixXN> &P,
|
|
15
|
+
const int n,
|
|
16
|
+
const igl::OrientedBoundingBoxMinimizeType minimize_type)
|
|
17
|
+
{
|
|
18
|
+
Eigen::MatrixXN R;
|
|
19
|
+
igl::oriented_bounding_box(P, n, minimize_type, R);
|
|
20
|
+
return R;
|
|
21
|
+
}
|
|
22
|
+
}
|
|
23
|
+
|
|
24
|
+
// Bind the wrapper to the Python module
|
|
25
|
+
void bind_oriented_bounding_box(nb::module_ &m)
|
|
26
|
+
{
|
|
27
|
+
m.def(
|
|
28
|
+
"oriented_bounding_box",
|
|
29
|
+
&pyigl::oriented_bounding_box,
|
|
30
|
+
"P"_a,
|
|
31
|
+
"n"_a=10000,
|
|
32
|
+
"minimize_type"_a=igl::ORIENTED_BOUNDING_BOX_MINIMIZE_VOLUME,
|
|
33
|
+
R"(Given a set of points compute the rotation transformation of them such
|
|
34
|
+
that their axis-aligned bounding box is as small as possible.
|
|
35
|
+
|
|
36
|
+
Consider passing the points on the convex hull of original list of points.
|
|
37
|
+
|
|
38
|
+
@param[in] P #P by 3 list of point locations
|
|
39
|
+
@param[in] n number of rotations to try
|
|
40
|
+
@param[in] minimize_type which quantity to minimize
|
|
41
|
+
@param[out] R rotation matrix
|
|
42
|
+
)");
|
|
43
|
+
|
|
44
|
+
}
|
|
45
|
+
|
|
@@ -1,8 +1,10 @@
|
|
|
1
1
|
#include "default_types.h"
|
|
2
2
|
#include <igl/random_points_on_mesh.h>
|
|
3
|
+
#include <igl/generate_default_urbg.h>
|
|
3
4
|
#include <nanobind/nanobind.h>
|
|
4
5
|
#include <nanobind/eigen/dense.h>
|
|
5
6
|
#include <nanobind/stl/tuple.h>
|
|
7
|
+
#include <nanobind/stl/optional.h>
|
|
6
8
|
|
|
7
9
|
namespace nb = nanobind;
|
|
8
10
|
using namespace nb::literals;
|
|
@@ -13,11 +15,13 @@ namespace pyigl
|
|
|
13
15
|
auto random_points_on_mesh(
|
|
14
16
|
const Integer n,
|
|
15
17
|
const nb::DRef<const Eigen::MatrixXN> &V,
|
|
16
|
-
const nb::DRef<const Eigen::MatrixXI> &F
|
|
18
|
+
const nb::DRef<const Eigen::MatrixXI> &F,
|
|
19
|
+
const std::optional<int> seed)
|
|
17
20
|
{
|
|
21
|
+
std::mt19937 urbg = seed.has_value() ? std::mt19937(*seed) : igl::generate_default_urbg();
|
|
18
22
|
Eigen::VectorXI FI;
|
|
19
23
|
Eigen::MatrixXN B,X;
|
|
20
|
-
igl::random_points_on_mesh(n, V, F, B, FI, X);
|
|
24
|
+
igl::random_points_on_mesh(n, V, F, B, FI, X, urbg);
|
|
21
25
|
return std::make_tuple(B, FI, X);
|
|
22
26
|
}
|
|
23
27
|
}
|
|
@@ -32,6 +36,7 @@ void bind_random_points_on_mesh(nb::module_ &m)
|
|
|
32
36
|
"n"_a,
|
|
33
37
|
"V"_a,
|
|
34
38
|
"F"_a,
|
|
39
|
+
"seed"_a = nb::none(),
|
|
35
40
|
R"(
|
|
36
41
|
Randomly sample a mesh (V,F) n times.
|
|
37
42
|
|
|
@@ -33,6 +33,7 @@ void bind_remove_unreferenced(nb::module_ &m)
|
|
|
33
33
|
R"(Remove unreferenced vertices from V, updating F accordingly
|
|
34
34
|
@param[in] V #V by dim list of mesh vertex positions
|
|
35
35
|
@param[in] F #F by ss list of simplices (Values of -1 are quitely skipped)
|
|
36
|
+
@param[out] NV #NV by dim list of simplices
|
|
36
37
|
@param[out] NF #NF by ss list of simplices
|
|
37
38
|
@param[out] I #V by 1 list of indices such that: NF = IM(F) and NT = IM(T)
|
|
38
39
|
and V(find(IM<=size(NV,1)),:) = NV
|
|
@@ -0,0 +1,60 @@
|
|
|
1
|
+
#include "default_types.h"
|
|
2
|
+
#include <igl/unique_sparse_voxel_corners.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
|
+
namespace pyigl
|
|
12
|
+
{
|
|
13
|
+
auto unique_sparse_voxel_corners(
|
|
14
|
+
const nb::DRef<const Eigen::VectorXN> &origin,
|
|
15
|
+
const Numeric h0,
|
|
16
|
+
const Integer depth,
|
|
17
|
+
const nb::DRef<const Eigen::MatrixXI> &ijk)
|
|
18
|
+
{
|
|
19
|
+
Eigen::MatrixXI unique_ijk;
|
|
20
|
+
Eigen::MatrixXI J;
|
|
21
|
+
Eigen::MatrixXN unique_corners;
|
|
22
|
+
|
|
23
|
+
igl::unique_sparse_voxel_corners(
|
|
24
|
+
origin, h0, depth, ijk, unique_ijk, J, unique_corners);
|
|
25
|
+
|
|
26
|
+
return std::make_tuple(unique_ijk, J, unique_corners);
|
|
27
|
+
}
|
|
28
|
+
}
|
|
29
|
+
|
|
30
|
+
// Bind the wrapper to the Python module
|
|
31
|
+
void bind_unique_sparse_voxel_corners(nb::module_ &m)
|
|
32
|
+
{
|
|
33
|
+
m.def(
|
|
34
|
+
"unique_sparse_voxel_corners",
|
|
35
|
+
&pyigl::unique_sparse_voxel_corners,
|
|
36
|
+
"origin"_a,
|
|
37
|
+
"h0"_a,
|
|
38
|
+
"depth"_a,
|
|
39
|
+
"ijk"_a,
|
|
40
|
+
R"(
|
|
41
|
+
Give a list of octree cells subscripts (ijk) (minimum corners) at a given depth,
|
|
42
|
+
determine a unique list of subscripts to all incident corners of those
|
|
43
|
+
cells (de-replicating shared corners).
|
|
44
|
+
|
|
45
|
+
@param[in] origin 3-vector of root cell minimum
|
|
46
|
+
@param[in] h0 side length of current depth level
|
|
47
|
+
@param[in] depth current depth (single root cell is depth = 0)
|
|
48
|
+
@param[in] ijk #ijk by 3 list of octree leaf cell minimum corner
|
|
49
|
+
subscripts
|
|
50
|
+
@param[out] unique_ijk #unique_ijk by 3 list of unique corner subscripts
|
|
51
|
+
@param[out] J #ijk by 8 list of indices into unique_ijk in yxz binary
|
|
52
|
+
counting order
|
|
53
|
+
@param[out] unique_corners #unique_ijk by 3 list of unique corner
|
|
54
|
+
positions
|
|
55
|
+
)");
|
|
56
|
+
|
|
57
|
+
}
|
|
58
|
+
|
|
59
|
+
|
|
60
|
+
|
|
@@ -261,6 +261,10 @@ def test_volume():
|
|
|
261
261
|
F = np.array([[2,1,3]],dtype=np.int64)
|
|
262
262
|
NV,NF,I,J = igl.remove_unreferenced(V,F)
|
|
263
263
|
|
|
264
|
+
def test_offset_surface():
|
|
265
|
+
V,F = triangulated_square()
|
|
266
|
+
v, f, _, _, _ = igl.offset_surface(V, F, -0.1, 1, igl.SIGNED_DISTANCE_TYPE_DEFAULT)
|
|
267
|
+
|
|
264
268
|
def test_oriented_facets():
|
|
265
269
|
V,F,T = single_tet()
|
|
266
270
|
E = igl.oriented_facets(F)
|
|
@@ -328,6 +332,19 @@ def test_sample():
|
|
|
328
332
|
I = igl.knn(X,X,1,point_indices,CH,CN,W)
|
|
329
333
|
B,FI,P = igl.blue_noise(V,F,0.5)
|
|
330
334
|
|
|
335
|
+
# Test equal seed yields same result
|
|
336
|
+
B1,I1,X1 = igl.random_points_on_mesh(10,V,F, 1)
|
|
337
|
+
B1_,I1_,X1_ = igl.random_points_on_mesh(10,V,F, 1)
|
|
338
|
+
assert np.all(B1 == B1_)
|
|
339
|
+
assert np.all(I1 == I1_)
|
|
340
|
+
assert np.all(X1 == X1_)
|
|
341
|
+
# Test different seed yields different result
|
|
342
|
+
B2,I2,X2 = igl.random_points_on_mesh(10,V,F,2)
|
|
343
|
+
assert not np.all(B1 == B2)
|
|
344
|
+
assert not np.all(I1 == I2)
|
|
345
|
+
assert not np.all(X1 == X2)
|
|
346
|
+
|
|
347
|
+
|
|
331
348
|
def test_curvature():
|
|
332
349
|
V,F = igl.icosahedron()
|
|
333
350
|
K = igl.gaussian_curvature(V,F)
|
|
@@ -491,6 +508,8 @@ def test_cgal():
|
|
|
491
508
|
point_indices, CH,CN,W = igl.octree(X)
|
|
492
509
|
I = igl.knn(X,X,20,point_indices,CH,CN,W)
|
|
493
510
|
A,T = igl.copyleft.cgal.point_areas(X,I,N)
|
|
511
|
+
|
|
512
|
+
R = igl.copyleft.cgal.oriented_bounding_box(VC)
|
|
494
513
|
|
|
495
514
|
def test_embree():
|
|
496
515
|
# octahedron
|
|
@@ -553,6 +572,21 @@ def test_misc():
|
|
|
553
572
|
theta, cos_theta = igl.dihedral_angles_intrinsic(L,A)
|
|
554
573
|
D = igl.all_pairs_distances(V,V,squared=False)
|
|
555
574
|
D = igl.all_pairs_distances(V,V,squared=True)
|
|
556
|
-
|
|
557
|
-
|
|
558
|
-
|
|
575
|
+
R = igl.oriented_bounding_box(V)
|
|
576
|
+
R = igl.oriented_bounding_box(V,n=100,minimize_type=igl.ORIENTED_BOUNDING_BOX_MINIMIZE_SURFACE_AREA)
|
|
577
|
+
|
|
578
|
+
def test_octree():
|
|
579
|
+
|
|
580
|
+
def sdf_sphere(Q):
|
|
581
|
+
return np.linalg.norm(Q,axis=1) - 0.5
|
|
582
|
+
def udf_sphere(Q):
|
|
583
|
+
return np.abs(sdf_sphere(Q))
|
|
584
|
+
|
|
585
|
+
origin = np.array([-1,-1,-1],dtype=np.float64)
|
|
586
|
+
h0 = 2.0
|
|
587
|
+
max_depth = 4
|
|
588
|
+
ijk = igl.lipschitz_octree(origin,h0,max_depth,udf_sphere)
|
|
589
|
+
h = h0 / (2**max_depth)
|
|
590
|
+
unique_ijk, J, unique_corners = igl.unique_sparse_voxel_corners(origin,h0,max_depth,ijk)
|
|
591
|
+
unique_S = sdf_sphere(unique_corners)
|
|
592
|
+
V,F = igl.marching_cubes(unique_S,unique_corners,J,0.0)
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|