libigl 2.6.3.dev2__tar.gz → 2.6.3.dev3__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.dev2 → libigl-2.6.3.dev3}/.gitignore +2 -1
- {libigl-2.6.3.dev2 → libigl-2.6.3.dev3}/CMakeLists.txt +8 -0
- {libigl-2.6.3.dev2 → libigl-2.6.3.dev3}/PKG-INFO +16 -2
- {libigl-2.6.3.dev2 → libigl-2.6.3.dev3}/README.md +15 -1
- {libigl-2.6.3.dev2 → libigl-2.6.3.dev3}/pyproject.toml +1 -1
- libigl-2.6.3.dev3/src/lexicographic_triangulation.cpp +47 -0
- libigl-2.6.3.dev3/src/predicates/Orientation.cpp +21 -0
- libigl-2.6.3.dev3/src/predicates/delaunay_triangulation.cpp +30 -0
- libigl-2.6.3.dev3/src/predicates/ear_clipping.cpp +56 -0
- libigl-2.6.3.dev3/src/predicates/find_intersections.cpp +49 -0
- libigl-2.6.3.dev3/src/predicates/find_self_intersections.cpp +43 -0
- libigl-2.6.3.dev3/src/predicates/incircle.cpp +37 -0
- libigl-2.6.3.dev3/src/predicates/insphere.cpp +39 -0
- libigl-2.6.3.dev3/src/predicates/lexicographic_triangulation.cpp +30 -0
- libigl-2.6.3.dev3/src/predicates/module.cpp +9 -0
- libigl-2.6.3.dev3/src/predicates/orient2d.cpp +35 -0
- libigl-2.6.3.dev3/src/predicates/orient3d.cpp +59 -0
- libigl-2.6.3.dev3/src/predicates/point_inside_convex_polygon.cpp +30 -0
- libigl-2.6.3.dev3/src/predicates/polygons_to_triangles.cpp +40 -0
- libigl-2.6.3.dev3/src/predicates/segment_segment_intersect.cpp +34 -0
- libigl-2.6.3.dev3/src/predicates/triangle_triangle_intersect.cpp +43 -0
- libigl-2.6.3.dev3/src/spectra/EigsType.cpp +12 -0
- libigl-2.6.3.dev3/src/spectra/eigs.cpp +78 -0
- libigl-2.6.3.dev3/src/spectra/lscm.cpp +40 -0
- libigl-2.6.3.dev3/src/spectra/module.cpp +11 -0
- {libigl-2.6.3.dev2 → libigl-2.6.3.dev3}/tests/test_all.py +172 -0
- {libigl-2.6.3.dev2 → libigl-2.6.3.dev3}/.github/workflows/pip.yml +0 -0
- {libigl-2.6.3.dev2 → libigl-2.6.3.dev3}/.github/workflows/wheels.yml +0 -0
- {libigl-2.6.3.dev2 → libigl-2.6.3.dev3}/LICENSE.GPL +0 -0
- {libigl-2.6.3.dev2 → libigl-2.6.3.dev3}/LICENSE.MPL2 +0 -0
- {libigl-2.6.3.dev2 → libigl-2.6.3.dev3}/attic/copyleft/tetgen_tetrahedralize.cpp +0 -0
- {libigl-2.6.3.dev2 → libigl-2.6.3.dev3}/attic/copyleft/triangle_triangulate.cpp +0 -0
- {libigl-2.6.3.dev2 → libigl-2.6.3.dev3}/attic/skip/SolverStatus.cpp +0 -0
- {libigl-2.6.3.dev2 → libigl-2.6.3.dev3}/attic/skip/WindingNumberMethod.cpp +0 -0
- {libigl-2.6.3.dev2 → libigl-2.6.3.dev3}/attic/skip/angular_distance.cpp +0 -0
- {libigl-2.6.3.dev2 → libigl-2.6.3.dev3}/attic/skip/canonical_quaternions.cpp +0 -0
- {libigl-2.6.3.dev2 → libigl-2.6.3.dev3}/attic/skip/column_to_quats.cpp +0 -0
- {libigl-2.6.3.dev2 → libigl-2.6.3.dev3}/attic/skip/comiso_nrosy.cpp +0 -0
- {libigl-2.6.3.dev2 → libigl-2.6.3.dev3}/attic/skip/covariance_scatter_matrix.cpp +0 -0
- {libigl-2.6.3.dev2 → libigl-2.6.3.dev3}/attic/skip/file_contents_as_string.cpp +0 -0
- {libigl-2.6.3.dev2 → libigl-2.6.3.dev3}/attic/skip/fit_rotations.cpp +0 -0
- {libigl-2.6.3.dev2 → libigl-2.6.3.dev3}/attic/skip/frame_field_deformer.cpp +0 -0
- {libigl-2.6.3.dev2 → libigl-2.6.3.dev3}/attic/skip/frame_to_cross_field.cpp +0 -0
- {libigl-2.6.3.dev2 → libigl-2.6.3.dev3}/attic/skip/frustum.cpp +0 -0
- {libigl-2.6.3.dev2 → libigl-2.6.3.dev3}/attic/skip/group_sum_matrix.cpp +0 -0
- {libigl-2.6.3.dev2 → libigl-2.6.3.dev3}/attic/skip/harwell_boeing.cpp +0 -0
- {libigl-2.6.3.dev2 → libigl-2.6.3.dev3}/attic/skip/histc.cpp +0 -0
- {libigl-2.6.3.dev2 → libigl-2.6.3.dev3}/attic/skip/hsv_to_rgb.cpp +0 -0
- {libigl-2.6.3.dev2 → libigl-2.6.3.dev3}/attic/skip/infinite_cost_stopping_condition.cpp +0 -0
- {libigl-2.6.3.dev2 → libigl-2.6.3.dev3}/attic/skip/intersect.cpp +0 -0
- {libigl-2.6.3.dev2 → libigl-2.6.3.dev3}/attic/skip/invert_diag.cpp +0 -0
- {libigl-2.6.3.dev2 → libigl-2.6.3.dev3}/attic/skip/is_planar.cpp +0 -0
- {libigl-2.6.3.dev2 → libigl-2.6.3.dev3}/attic/skip/limit_faces.cpp +0 -0
- {libigl-2.6.3.dev2 → libigl-2.6.3.dev3}/attic/skip/line_field_missmatch.cpp +0 -0
- {libigl-2.6.3.dev2 → libigl-2.6.3.dev3}/attic/skip/line_search.cpp +0 -0
- {libigl-2.6.3.dev2 → libigl-2.6.3.dev3}/attic/skip/mat_to_quat.cpp +0 -0
- {libigl-2.6.3.dev2 → libigl-2.6.3.dev3}/attic/skip/material_colors.cpp +0 -0
- {libigl-2.6.3.dev2 → libigl-2.6.3.dev3}/attic/skip/max_faces_stopping_condition.cpp +0 -0
- {libigl-2.6.3.dev2 → libigl-2.6.3.dev3}/attic/skip/min_quad_dense.cpp +0 -0
- {libigl-2.6.3.dev2 → libigl-2.6.3.dev3}/attic/skip/normalize_quat.cpp +0 -0
- {libigl-2.6.3.dev2 → libigl-2.6.3.dev3}/attic/skip/on_boundary.cpp +0 -0
- {libigl-2.6.3.dev2 → libigl-2.6.3.dev3}/attic/skip/opengl2_draw_beach_ball.cpp +0 -0
- {libigl-2.6.3.dev2 → libigl-2.6.3.dev3}/attic/skip/opengl2_draw_floor.cpp +0 -0
- {libigl-2.6.3.dev2 → libigl-2.6.3.dev3}/attic/skip/opengl2_draw_mesh.cpp +0 -0
- {libigl-2.6.3.dev2 → libigl-2.6.3.dev3}/attic/skip/opengl2_draw_point.cpp +0 -0
- {libigl-2.6.3.dev2 → libigl-2.6.3.dev3}/attic/skip/opengl2_draw_rectangular_marquee.cpp +0 -0
- {libigl-2.6.3.dev2 → libigl-2.6.3.dev3}/attic/skip/opengl2_draw_skeleton_3d.cpp +0 -0
- {libigl-2.6.3.dev2 → libigl-2.6.3.dev3}/attic/skip/opengl2_draw_skeleton_vector_graphics.cpp +0 -0
- {libigl-2.6.3.dev2 → libigl-2.6.3.dev3}/attic/skip/opengl2_flare_textures.cpp +0 -0
- {libigl-2.6.3.dev2 → libigl-2.6.3.dev3}/attic/skip/opengl2_model_proj_viewport.cpp +0 -0
- {libigl-2.6.3.dev2 → libigl-2.6.3.dev3}/attic/skip/opengl2_print_gl_get.cpp +0 -0
- {libigl-2.6.3.dev2 → libigl-2.6.3.dev3}/attic/skip/opengl2_project.cpp +0 -0
- {libigl-2.6.3.dev2 → libigl-2.6.3.dev3}/attic/skip/opengl2_right_axis.cpp +0 -0
- {libigl-2.6.3.dev2 → libigl-2.6.3.dev3}/attic/skip/opengl2_shine_textures.cpp +0 -0
- {libigl-2.6.3.dev2 → libigl-2.6.3.dev3}/attic/skip/opengl2_sort_triangles.cpp +0 -0
- {libigl-2.6.3.dev2 → libigl-2.6.3.dev3}/attic/skip/opengl2_unproject.cpp +0 -0
- {libigl-2.6.3.dev2 → libigl-2.6.3.dev3}/attic/skip/opengl2_unproject_to_zero_plane.cpp +0 -0
- {libigl-2.6.3.dev2 → libigl-2.6.3.dev3}/attic/skip/opengl2_up_axis.cpp +0 -0
- {libigl-2.6.3.dev2 → libigl-2.6.3.dev3}/attic/skip/opengl2_view_axis.cpp +0 -0
- {libigl-2.6.3.dev2 → libigl-2.6.3.dev3}/attic/skip/opengl_create_shader_program.cpp +0 -0
- {libigl-2.6.3.dev2 → libigl-2.6.3.dev3}/attic/skip/opengl_destroy_shader_program.cpp +0 -0
- {libigl-2.6.3.dev2 → libigl-2.6.3.dev3}/attic/skip/opengl_gl_type_size.cpp +0 -0
- {libigl-2.6.3.dev2 → libigl-2.6.3.dev3}/attic/skip/opengl_glfw_background_window.cpp +0 -0
- {libigl-2.6.3.dev2 → libigl-2.6.3.dev3}/attic/skip/opengl_glfw_imgui_ImGuiHelpers.cpp +0 -0
- {libigl-2.6.3.dev2 → libigl-2.6.3.dev3}/attic/skip/opengl_init_render_to_texture.cpp +0 -0
- {libigl-2.6.3.dev2 → libigl-2.6.3.dev3}/attic/skip/opengl_load_shader.cpp +0 -0
- {libigl-2.6.3.dev2 → libigl-2.6.3.dev3}/attic/skip/opengl_print_program_info_log.cpp +0 -0
- {libigl-2.6.3.dev2 → libigl-2.6.3.dev3}/attic/skip/opengl_print_shader_info_log.cpp +0 -0
- {libigl-2.6.3.dev2 → libigl-2.6.3.dev3}/attic/skip/opengl_report_gl_error.cpp +0 -0
- {libigl-2.6.3.dev2 → libigl-2.6.3.dev3}/attic/skip/opengl_uniform_type_to_string.cpp +0 -0
- {libigl-2.6.3.dev2 → libigl-2.6.3.dev3}/attic/skip/ortho.cpp +0 -0
- {libigl-2.6.3.dev2 → libigl-2.6.3.dev3}/attic/skip/parallel_transport_angles.cpp +0 -0
- {libigl-2.6.3.dev2 → libigl-2.6.3.dev3}/attic/skip/polar_svd.cpp +0 -0
- {libigl-2.6.3.dev2 → libigl-2.6.3.dev3}/attic/skip/polar_svd3x3.cpp +0 -0
- {libigl-2.6.3.dev2 → libigl-2.6.3.dev3}/attic/skip/qslim_optimal_collapse_edge_callbacks.cpp +0 -0
- {libigl-2.6.3.dev2 → libigl-2.6.3.dev3}/attic/skip/quadric_binary_plus_operator.cpp +0 -0
- {libigl-2.6.3.dev2 → libigl-2.6.3.dev3}/attic/skip/quat_conjugate.cpp +0 -0
- {libigl-2.6.3.dev2 → libigl-2.6.3.dev3}/attic/skip/quat_mult.cpp +0 -0
- {libigl-2.6.3.dev2 → libigl-2.6.3.dev3}/attic/skip/quat_to_axis_angle.cpp +0 -0
- {libigl-2.6.3.dev2 → libigl-2.6.3.dev3}/attic/skip/quat_to_mat.cpp +0 -0
- {libigl-2.6.3.dev2 → libigl-2.6.3.dev3}/attic/skip/quats_to_column.cpp +0 -0
- {libigl-2.6.3.dev2 → libigl-2.6.3.dev3}/attic/skip/random_quaternion.cpp +0 -0
- {libigl-2.6.3.dev2 → libigl-2.6.3.dev3}/attic/skip/readBF.cpp +0 -0
- {libigl-2.6.3.dev2 → libigl-2.6.3.dev3}/attic/skip/readNODE.cpp +0 -0
- {libigl-2.6.3.dev2 → libigl-2.6.3.dev3}/attic/skip/readPLY.cpp +0 -0
- {libigl-2.6.3.dev2 → libigl-2.6.3.dev3}/attic/skip/readSTL.cpp +0 -0
- {libigl-2.6.3.dev2 → libigl-2.6.3.dev3}/attic/skip/rgb_to_hsv.cpp +0 -0
- {libigl-2.6.3.dev2 → libigl-2.6.3.dev3}/attic/skip/rotate_by_quat.cpp +0 -0
- {libigl-2.6.3.dev2 → libigl-2.6.3.dev3}/attic/skip/rotation_matrix_from_directions.cpp +0 -0
- {libigl-2.6.3.dev2 → libigl-2.6.3.dev3}/attic/skip/snap_to_canonical_view_quat.cpp +0 -0
- {libigl-2.6.3.dev2 → libigl-2.6.3.dev3}/attic/skip/snap_to_fixed_up.cpp +0 -0
- {libigl-2.6.3.dev2 → libigl-2.6.3.dev3}/attic/skip/sort_angles.cpp +0 -0
- {libigl-2.6.3.dev2 → libigl-2.6.3.dev3}/attic/skip/sort_triangles.cpp +0 -0
- {libigl-2.6.3.dev2 → libigl-2.6.3.dev3}/attic/skip/sort_vectors_ccw.cpp +0 -0
- {libigl-2.6.3.dev2 → libigl-2.6.3.dev3}/attic/skip/svd3x3.cpp +0 -0
- {libigl-2.6.3.dev2 → libigl-2.6.3.dev3}/attic/skip/svd3x3_avx.cpp +0 -0
- {libigl-2.6.3.dev2 → libigl-2.6.3.dev3}/attic/skip/svd3x3_sse.cpp +0 -0
- {libigl-2.6.3.dev2 → libigl-2.6.3.dev3}/attic/skip/trackball.cpp +0 -0
- {libigl-2.6.3.dev2 → libigl-2.6.3.dev3}/attic/skip/transpose_blocks.cpp +0 -0
- {libigl-2.6.3.dev2 → libigl-2.6.3.dev3}/attic/skip/unique_rows.cpp +0 -0
- {libigl-2.6.3.dev2 → libigl-2.6.3.dev3}/attic/skip/voxel_grid.cpp +0 -0
- {libigl-2.6.3.dev2 → libigl-2.6.3.dev3}/attic/skip/writePLY.cpp +0 -0
- {libigl-2.6.3.dev2 → libigl-2.6.3.dev3}/attic/skip/writeSTL.cpp +0 -0
- {libigl-2.6.3.dev2 → libigl-2.6.3.dev3}/attic/skip/writeWRL.cpp +0 -0
- {libigl-2.6.3.dev2 → libigl-2.6.3.dev3}/attic/todo-old/MeshBooleanType.cpp +0 -0
- {libigl-2.6.3.dev2 → libigl-2.6.3.dev3}/attic/todo-old/NormalType.cpp +0 -0
- {libigl-2.6.3.dev2 → libigl-2.6.3.dev3}/attic/todo-old/collapse_edge.cpp +0 -0
- {libigl-2.6.3.dev2 → libigl-2.6.3.dev3}/attic/todo-old/copyleft/copyleft_cgal_assign.cpp +0 -0
- {libigl-2.6.3.dev2 → libigl-2.6.3.dev3}/attic/todo-old/copyleft/copyleft_cgal_assign_scalar.cpp +0 -0
- {libigl-2.6.3.dev2 → libigl-2.6.3.dev3}/attic/todo-old/copyleft/copyleft_cgal_cell_adjacency.cpp +0 -0
- {libigl-2.6.3.dev2 → libigl-2.6.3.dev3}/attic/todo-old/copyleft/copyleft_cgal_closest_facet.cpp +0 -0
- {libigl-2.6.3.dev2 → libigl-2.6.3.dev3}/attic/todo-old/copyleft/copyleft_cgal_complex_to_mesh.cpp +0 -0
- {libigl-2.6.3.dev2 → libigl-2.6.3.dev3}/attic/todo-old/copyleft/copyleft_cgal_component_inside_component.cpp +0 -0
- {libigl-2.6.3.dev2 → libigl-2.6.3.dev3}/attic/todo-old/copyleft/copyleft_cgal_convex_hull.cpp +0 -0
- {libigl-2.6.3.dev2 → libigl-2.6.3.dev3}/attic/todo-old/copyleft/copyleft_cgal_delaunay_triangulation.cpp +0 -0
- {libigl-2.6.3.dev2 → libigl-2.6.3.dev3}/attic/todo-old/copyleft/copyleft_cgal_extract_cells.cpp +0 -0
- {libigl-2.6.3.dev2 → libigl-2.6.3.dev3}/attic/todo-old/copyleft/copyleft_cgal_extract_feature.cpp +0 -0
- {libigl-2.6.3.dev2 → libigl-2.6.3.dev3}/attic/todo-old/copyleft/copyleft_cgal_fast_winding_number.cpp +0 -0
- {libigl-2.6.3.dev2 → libigl-2.6.3.dev3}/attic/todo-old/copyleft/copyleft_cgal_half_space_box.cpp +0 -0
- {libigl-2.6.3.dev2 → libigl-2.6.3.dev3}/attic/todo-old/copyleft/copyleft_cgal_hausdorff.cpp +0 -0
- {libigl-2.6.3.dev2 → libigl-2.6.3.dev3}/attic/todo-old/copyleft/copyleft_cgal_incircle.cpp +0 -0
- {libigl-2.6.3.dev2 → libigl-2.6.3.dev3}/attic/todo-old/copyleft/copyleft_cgal_insert_into_cdt.cpp +0 -0
- {libigl-2.6.3.dev2 → libigl-2.6.3.dev3}/attic/todo-old/copyleft/copyleft_cgal_insphere.cpp +0 -0
- {libigl-2.6.3.dev2 → libigl-2.6.3.dev3}/attic/todo-old/copyleft/copyleft_cgal_intersect_other.cpp +0 -0
- {libigl-2.6.3.dev2 → libigl-2.6.3.dev3}/attic/todo-old/copyleft/copyleft_cgal_intersect_with_half_space.cpp +0 -0
- {libigl-2.6.3.dev2 → libigl-2.6.3.dev3}/attic/todo-old/copyleft/copyleft_cgal_lexicographic_triangulation.cpp +0 -0
- {libigl-2.6.3.dev2 → libigl-2.6.3.dev3}/attic/todo-old/copyleft/copyleft_cgal_mesh_boolean.cpp +0 -0
- {libigl-2.6.3.dev2 → libigl-2.6.3.dev3}/attic/todo-old/copyleft/copyleft_cgal_mesh_boolean_type_to_funcs.cpp +0 -0
- {libigl-2.6.3.dev2 → libigl-2.6.3.dev3}/attic/todo-old/copyleft/copyleft_cgal_mesh_to_cgal_triangle_list.cpp +0 -0
- {libigl-2.6.3.dev2 → libigl-2.6.3.dev3}/attic/todo-old/copyleft/copyleft_cgal_mesh_to_polyhedron.cpp +0 -0
- {libigl-2.6.3.dev2 → libigl-2.6.3.dev3}/attic/todo-old/copyleft/copyleft_cgal_minkowski_sum.cpp +0 -0
- {libigl-2.6.3.dev2 → libigl-2.6.3.dev3}/attic/todo-old/copyleft/copyleft_cgal_order_facets_around_edge.cpp +0 -0
- {libigl-2.6.3.dev2 → libigl-2.6.3.dev3}/attic/todo-old/copyleft/copyleft_cgal_order_facets_around_edges.cpp +0 -0
- {libigl-2.6.3.dev2 → libigl-2.6.3.dev3}/attic/todo-old/copyleft/copyleft_cgal_orient2D.cpp +0 -0
- {libigl-2.6.3.dev2 → libigl-2.6.3.dev3}/attic/todo-old/copyleft/copyleft_cgal_orient3D.cpp +0 -0
- {libigl-2.6.3.dev2 → libigl-2.6.3.dev3}/attic/todo-old/copyleft/copyleft_cgal_outer_element.cpp +0 -0
- {libigl-2.6.3.dev2 → libigl-2.6.3.dev3}/attic/todo-old/copyleft/copyleft_cgal_outer_facet.cpp +0 -0
- {libigl-2.6.3.dev2 → libigl-2.6.3.dev3}/attic/todo-old/copyleft/copyleft_cgal_outer_hull.cpp +0 -0
- {libigl-2.6.3.dev2 → libigl-2.6.3.dev3}/attic/todo-old/copyleft/copyleft_cgal_peel_outer_hull_layers.cpp +0 -0
- {libigl-2.6.3.dev2 → libigl-2.6.3.dev3}/attic/todo-old/copyleft/copyleft_cgal_peel_winding_number_layers.cpp +0 -0
- {libigl-2.6.3.dev2 → libigl-2.6.3.dev3}/attic/todo-old/copyleft/copyleft_cgal_piecewise_constant_winding_number.cpp +0 -0
- {libigl-2.6.3.dev2 → libigl-2.6.3.dev3}/attic/todo-old/copyleft/copyleft_cgal_point_areas.cpp +0 -0
- {libigl-2.6.3.dev2 → libigl-2.6.3.dev3}/attic/todo-old/copyleft/copyleft_cgal_point_mesh_squared_distance.cpp +0 -0
- {libigl-2.6.3.dev2 → libigl-2.6.3.dev3}/attic/todo-old/copyleft/copyleft_cgal_point_segment_squared_distance.cpp +0 -0
- {libigl-2.6.3.dev2 → libigl-2.6.3.dev3}/attic/todo-old/copyleft/copyleft_cgal_point_solid_signed_squared_distance.cpp +0 -0
- {libigl-2.6.3.dev2 → libigl-2.6.3.dev3}/attic/todo-old/copyleft/copyleft_cgal_point_triangle_squared_distance.cpp +0 -0
- {libigl-2.6.3.dev2 → libigl-2.6.3.dev3}/attic/todo-old/copyleft/copyleft_cgal_points_inside_component.cpp +0 -0
- {libigl-2.6.3.dev2 → libigl-2.6.3.dev3}/attic/todo-old/copyleft/copyleft_cgal_polyhedron_to_mesh.cpp +0 -0
- {libigl-2.6.3.dev2 → libigl-2.6.3.dev3}/attic/todo-old/copyleft/copyleft_cgal_projected_cdt.cpp +0 -0
- {libigl-2.6.3.dev2 → libigl-2.6.3.dev3}/attic/todo-old/copyleft/copyleft_cgal_projected_delaunay.cpp +0 -0
- {libigl-2.6.3.dev2 → libigl-2.6.3.dev3}/attic/todo-old/copyleft/copyleft_cgal_propagate_winding_numbers.cpp +0 -0
- {libigl-2.6.3.dev2 → libigl-2.6.3.dev3}/attic/todo-old/copyleft/copyleft_cgal_read_triangle_mesh.cpp +0 -0
- {libigl-2.6.3.dev2 → libigl-2.6.3.dev3}/attic/todo-old/copyleft/copyleft_cgal_relabel_small_immersed_cells.cpp +0 -0
- {libigl-2.6.3.dev2 → libigl-2.6.3.dev3}/attic/todo-old/copyleft/copyleft_cgal_remesh_intersections.cpp +0 -0
- {libigl-2.6.3.dev2 → libigl-2.6.3.dev3}/attic/todo-old/copyleft/copyleft_cgal_remesh_self_intersections.cpp +0 -0
- {libigl-2.6.3.dev2 → libigl-2.6.3.dev3}/attic/todo-old/copyleft/copyleft_cgal_resolve_intersections.cpp +0 -0
- {libigl-2.6.3.dev2 → libigl-2.6.3.dev3}/attic/todo-old/copyleft/copyleft_cgal_row_to_point.cpp +0 -0
- {libigl-2.6.3.dev2 → libigl-2.6.3.dev3}/attic/todo-old/copyleft/copyleft_cgal_segment_segment_squared_distance.cpp +0 -0
- {libigl-2.6.3.dev2 → libigl-2.6.3.dev3}/attic/todo-old/copyleft/copyleft_cgal_signed_distance_isosurface.cpp +0 -0
- {libigl-2.6.3.dev2 → libigl-2.6.3.dev3}/attic/todo-old/copyleft/copyleft_cgal_snap_rounding.cpp +0 -0
- {libigl-2.6.3.dev2 → libigl-2.6.3.dev3}/attic/todo-old/copyleft/copyleft_cgal_string_to_mesh_boolean_type.cpp +0 -0
- {libigl-2.6.3.dev2 → libigl-2.6.3.dev3}/attic/todo-old/copyleft/copyleft_cgal_subdivide_segments.cpp +0 -0
- {libigl-2.6.3.dev2 → libigl-2.6.3.dev3}/attic/todo-old/copyleft/copyleft_cgal_submesh_aabb_tree.cpp +0 -0
- {libigl-2.6.3.dev2 → libigl-2.6.3.dev3}/attic/todo-old/copyleft/copyleft_cgal_triangle_triangle_squared_distance.cpp +0 -0
- {libigl-2.6.3.dev2 → libigl-2.6.3.dev3}/attic/todo-old/copyleft/copyleft_cgal_trim_with_solid.cpp +0 -0
- {libigl-2.6.3.dev2 → libigl-2.6.3.dev3}/attic/todo-old/copyleft/copyleft_cgal_wire_mesh.cpp +0 -0
- {libigl-2.6.3.dev2 → libigl-2.6.3.dev3}/attic/todo-old/copyleft/copyleft_comiso_miq.cpp +0 -0
- {libigl-2.6.3.dev2 → libigl-2.6.3.dev3}/attic/todo-old/copyleft/copyleft_cork_mesh_boolean.cpp +0 -0
- {libigl-2.6.3.dev2 → libigl-2.6.3.dev3}/attic/todo-old/copyleft/copyleft_marching_cubes.cpp +0 -0
- {libigl-2.6.3.dev2 → libigl-2.6.3.dev3}/attic/todo-old/copyleft/copyleft_offset_surface.cpp +0 -0
- {libigl-2.6.3.dev2 → libigl-2.6.3.dev3}/attic/todo-old/copyleft/copyleft_opengl2_render_to_tga.cpp +0 -0
- {libigl-2.6.3.dev2 → libigl-2.6.3.dev3}/attic/todo-old/copyleft/copyleft_opengl2_texture_from_tga.cpp +0 -0
- {libigl-2.6.3.dev2 → libigl-2.6.3.dev3}/attic/todo-old/copyleft/copyleft_progressive_hulls.cpp +0 -0
- {libigl-2.6.3.dev2 → libigl-2.6.3.dev3}/attic/todo-old/copyleft/copyleft_progressive_hulls_cost_and_placement.cpp +0 -0
- {libigl-2.6.3.dev2 → libigl-2.6.3.dev3}/attic/todo-old/copyleft/copyleft_quadprog.cpp +0 -0
- {libigl-2.6.3.dev2 → libigl-2.6.3.dev3}/attic/todo-old/copyleft/copyleft_swept_volume.cpp +0 -0
- {libigl-2.6.3.dev2 → libigl-2.6.3.dev3}/attic/todo-old/copyleft/copyleft_tetgen_mesh_with_skeleton.cpp +0 -0
- {libigl-2.6.3.dev2 → libigl-2.6.3.dev3}/attic/todo-old/copyleft/copyleft_tetgen_read_into_tetgenio.cpp +0 -0
- {libigl-2.6.3.dev2 → libigl-2.6.3.dev3}/attic/todo-old/copyleft/copyleft_tetgen_tetrahedralize.cpp +0 -0
- {libigl-2.6.3.dev2 → libigl-2.6.3.dev3}/attic/todo-old/dijkstra.cpp +0 -0
- {libigl-2.6.3.dev2 → libigl-2.6.3.dev3}/attic/todo-old/embree_bone_heat.cpp +0 -0
- {libigl-2.6.3.dev2 → libigl-2.6.3.dev3}/attic/todo-old/embree_reorient_facets_raycast.cpp +0 -0
- {libigl-2.6.3.dev2 → libigl-2.6.3.dev3}/attic/todo-old/fast_winding_number.cpp +0 -0
- {libigl-2.6.3.dev2 → libigl-2.6.3.dev3}/attic/todo-old/flip_edge.cpp +0 -0
- {libigl-2.6.3.dev2 → libigl-2.6.3.dev3}/attic/todo-old/knn.cpp +0 -0
- {libigl-2.6.3.dev2 → libigl-2.6.3.dev3}/attic/todo-old/mosek_mosek_guarded.cpp +0 -0
- {libigl-2.6.3.dev2 → libigl-2.6.3.dev3}/attic/todo-old/mosek_mosek_linprog.cpp +0 -0
- {libigl-2.6.3.dev2 → libigl-2.6.3.dev3}/attic/todo-old/octree.cpp +0 -0
- {libigl-2.6.3.dev2 → libigl-2.6.3.dev3}/attic/todo-old/per_vertex_point_to_plane_quadrics.cpp +0 -0
- {libigl-2.6.3.dev2 → libigl-2.6.3.dev3}/attic/todo-old/png_readPNG.cpp +0 -0
- {libigl-2.6.3.dev2 → libigl-2.6.3.dev3}/attic/todo-old/png_render_to_png.cpp +0 -0
- {libigl-2.6.3.dev2 → libigl-2.6.3.dev3}/attic/todo-old/png_render_to_png_async.cpp +0 -0
- {libigl-2.6.3.dev2 → libigl-2.6.3.dev3}/attic/todo-old/png_texture_from_file.cpp +0 -0
- {libigl-2.6.3.dev2 → libigl-2.6.3.dev3}/attic/todo-old/png_texture_from_png.cpp +0 -0
- {libigl-2.6.3.dev2 → libigl-2.6.3.dev3}/attic/todo-old/png_writePNG.cpp +0 -0
- {libigl-2.6.3.dev2 → libigl-2.6.3.dev3}/attic/todo-old/pseudonormal_test.cpp +0 -0
- {libigl-2.6.3.dev2 → libigl-2.6.3.dev3}/attic/todo-old/readWRL.cpp +0 -0
- {libigl-2.6.3.dev2 → libigl-2.6.3.dev3}/attic/todo-old/remesh_along_isoline.cpp +0 -0
- {libigl-2.6.3.dev2 → libigl-2.6.3.dev3}/attic/todo-old/seam_edges.cpp +0 -0
- {libigl-2.6.3.dev2 → libigl-2.6.3.dev3}/attic/todo-old/shortest_edge_and_midpoint.cpp +0 -0
- {libigl-2.6.3.dev2 → libigl-2.6.3.dev3}/attic/todo-old/squared_edge_lengths.cpp +0 -0
- {libigl-2.6.3.dev2 → libigl-2.6.3.dev3}/attic/todo-old/straighten_seams.cpp +0 -0
- {libigl-2.6.3.dev2 → libigl-2.6.3.dev3}/attic/todo-old/swept_volume_signed_distance.cpp +0 -0
- {libigl-2.6.3.dev2 → libigl-2.6.3.dev3}/attic/todo-old/triangle_cdt.cpp +0 -0
- {libigl-2.6.3.dev2 → libigl-2.6.3.dev3}/attic/todo-old/unzip_corners.cpp +0 -0
- {libigl-2.6.3.dev2 → libigl-2.6.3.dev3}/attic/todo-old/writeBF.cpp +0 -0
- {libigl-2.6.3.dev2 → libigl-2.6.3.dev3}/attic/todo-old/writeDMAT.cpp +0 -0
- {libigl-2.6.3.dev2 → libigl-2.6.3.dev3}/attic/todo-old/writeMESH.cpp +0 -0
- {libigl-2.6.3.dev2 → libigl-2.6.3.dev3}/attic/todo-old/writeTGF.cpp +0 -0
- {libigl-2.6.3.dev2 → libigl-2.6.3.dev3}/attic/todo-old/xml_writeDAE.cpp +0 -0
- {libigl-2.6.3.dev2 → libigl-2.6.3.dev3}/attic/todo-old/xml_write_triangle_mesh.cpp +0 -0
- {libigl-2.6.3.dev2 → libigl-2.6.3.dev3}/classes/AABB.cpp +0 -0
- {libigl-2.6.3.dev2 → libigl-2.6.3.dev3}/classes/classes.cpp +0 -0
- {libigl-2.6.3.dev2 → libigl-2.6.3.dev3}/cmake/CXXFeatures.cmake +0 -0
- {libigl-2.6.3.dev2 → libigl-2.6.3.dev3}/cmake/FindLIBIGL.cmake +0 -0
- {libigl-2.6.3.dev2 → libigl-2.6.3.dev3}/cmake/UseColors.cmake +0 -0
- {libigl-2.6.3.dev2 → libigl-2.6.3.dev3}/cmake/Warnings.cmake +0 -0
- {libigl-2.6.3.dev2 → libigl-2.6.3.dev3}/include/default_types.h +0 -0
- {libigl-2.6.3.dev2 → libigl-2.6.3.dev3}/memory/MEMORY.md +0 -0
- {libigl-2.6.3.dev2 → libigl-2.6.3.dev3}/missing.sh +0 -0
- {libigl-2.6.3.dev2 → libigl-2.6.3.dev3}/mkdocs.yml +0 -0
- {libigl-2.6.3.dev2 → libigl-2.6.3.dev3}/postBuild +0 -0
- {libigl-2.6.3.dev2 → libigl-2.6.3.dev3}/priority.txt +0 -0
- {libigl-2.6.3.dev2 → libigl-2.6.3.dev3}/scripts/basic_function.mako +0 -0
- {libigl-2.6.3.dev2 → libigl-2.6.3.dev3}/scripts/blender_igl_export.py +0 -0
- {libigl-2.6.3.dev2 → libigl-2.6.3.dev3}/scripts/generate_bindings.py +0 -0
- {libigl-2.6.3.dev2 → libigl-2.6.3.dev3}/scripts/make_lean.py +0 -0
- {libigl-2.6.3.dev2 → libigl-2.6.3.dev3}/scripts/parser.py +0 -0
- {libigl-2.6.3.dev2 → libigl-2.6.3.dev3}/src/AABB.cpp +0 -0
- {libigl-2.6.3.dev2 → libigl-2.6.3.dev3}/src/FileEncoding.cpp +0 -0
- {libigl-2.6.3.dev2 → libigl-2.6.3.dev3}/src/MappingEnergyType.cpp +0 -0
- {libigl-2.6.3.dev2 → libigl-2.6.3.dev3}/src/MassMatrixType.cpp +0 -0
- {libigl-2.6.3.dev2 → libigl-2.6.3.dev3}/src/OrientedBoundingBoxMinimizeType.cpp +0 -0
- {libigl-2.6.3.dev2 → libigl-2.6.3.dev3}/src/accumarray.cpp +0 -0
- {libigl-2.6.3.dev2 → libigl-2.6.3.dev3}/src/adjacency_list.cpp +0 -0
- {libigl-2.6.3.dev2 → libigl-2.6.3.dev3}/src/adjacency_matrix.cpp +0 -0
- {libigl-2.6.3.dev2 → libigl-2.6.3.dev3}/src/all_pairs_distances.cpp +0 -0
- {libigl-2.6.3.dev2 → libigl-2.6.3.dev3}/src/arap.cpp +0 -0
- {libigl-2.6.3.dev2 → libigl-2.6.3.dev3}/src/average_from_edges_onto_vertices.cpp +0 -0
- {libigl-2.6.3.dev2 → libigl-2.6.3.dev3}/src/average_onto_faces.cpp +0 -0
- {libigl-2.6.3.dev2 → libigl-2.6.3.dev3}/src/average_onto_vertices.cpp +0 -0
- {libigl-2.6.3.dev2 → libigl-2.6.3.dev3}/src/avg_edge_length.cpp +0 -0
- {libigl-2.6.3.dev2 → libigl-2.6.3.dev3}/src/barycenter.cpp +0 -0
- {libigl-2.6.3.dev2 → libigl-2.6.3.dev3}/src/barycentric_coordinates.cpp +0 -0
- {libigl-2.6.3.dev2 → libigl-2.6.3.dev3}/src/barycentric_interpolation.cpp +0 -0
- {libigl-2.6.3.dev2 → libigl-2.6.3.dev3}/src/bbw.cpp +0 -0
- {libigl-2.6.3.dev2 → libigl-2.6.3.dev3}/src/bezier.cpp +0 -0
- {libigl-2.6.3.dev2 → libigl-2.6.3.dev3}/src/bfs_orient.cpp +0 -0
- {libigl-2.6.3.dev2 → libigl-2.6.3.dev3}/src/biharmonic_coordinates.cpp +0 -0
- {libigl-2.6.3.dev2 → libigl-2.6.3.dev3}/src/bijective_composite_harmonic_mapping.cpp +0 -0
- {libigl-2.6.3.dev2 → libigl-2.6.3.dev3}/src/blue_noise.cpp +0 -0
- {libigl-2.6.3.dev2 → libigl-2.6.3.dev3}/src/boundary_facets.cpp +0 -0
- {libigl-2.6.3.dev2 → libigl-2.6.3.dev3}/src/boundary_loop.cpp +0 -0
- {libigl-2.6.3.dev2 → libigl-2.6.3.dev3}/src/bounding_box.cpp +0 -0
- {libigl-2.6.3.dev2 → libigl-2.6.3.dev3}/src/bounding_box_diagonal.cpp +0 -0
- {libigl-2.6.3.dev2 → libigl-2.6.3.dev3}/src/centroid.cpp +0 -0
- {libigl-2.6.3.dev2 → libigl-2.6.3.dev3}/src/circulation.cpp +0 -0
- {libigl-2.6.3.dev2 → libigl-2.6.3.dev3}/src/circumradius.cpp +0 -0
- {libigl-2.6.3.dev2 → libigl-2.6.3.dev3}/src/collapse_edge.cpp +0 -0
- {libigl-2.6.3.dev2 → libigl-2.6.3.dev3}/src/colormap.cpp +0 -0
- {libigl-2.6.3.dev2 → libigl-2.6.3.dev3}/src/comb_cross_field.cpp +0 -0
- {libigl-2.6.3.dev2 → libigl-2.6.3.dev3}/src/comb_frame_field.cpp +0 -0
- {libigl-2.6.3.dev2 → libigl-2.6.3.dev3}/src/combine.cpp +0 -0
- {libigl-2.6.3.dev2 → libigl-2.6.3.dev3}/src/compute_frame_field_bisectors.cpp +0 -0
- {libigl-2.6.3.dev2 → libigl-2.6.3.dev3}/src/connected_components.cpp +0 -0
- {libigl-2.6.3.dev2 → libigl-2.6.3.dev3}/src/copyleft/cgal/convex_hull.cpp +0 -0
- {libigl-2.6.3.dev2 → libigl-2.6.3.dev3}/src/copyleft/cgal/coplanar.cpp +0 -0
- {libigl-2.6.3.dev2 → libigl-2.6.3.dev3}/src/copyleft/cgal/delaunay_triangulation.cpp +0 -0
- {libigl-2.6.3.dev2 → libigl-2.6.3.dev3}/src/copyleft/cgal/extract_cells.cpp +0 -0
- {libigl-2.6.3.dev2 → libigl-2.6.3.dev3}/src/copyleft/cgal/fast_winding_number.cpp +0 -0
- {libigl-2.6.3.dev2 → libigl-2.6.3.dev3}/src/copyleft/cgal/intersect_other.cpp +0 -0
- {libigl-2.6.3.dev2 → libigl-2.6.3.dev3}/src/copyleft/cgal/intersect_with_half_space.cpp +0 -0
- {libigl-2.6.3.dev2 → libigl-2.6.3.dev3}/src/copyleft/cgal/mesh_boolean.cpp +0 -0
- {libigl-2.6.3.dev2 → libigl-2.6.3.dev3}/src/copyleft/cgal/module.cpp +0 -0
- {libigl-2.6.3.dev2 → libigl-2.6.3.dev3}/src/copyleft/cgal/oriented_bounding_box.cpp +0 -0
- {libigl-2.6.3.dev2 → libigl-2.6.3.dev3}/src/copyleft/cgal/outer_hull.cpp +0 -0
- {libigl-2.6.3.dev2 → libigl-2.6.3.dev3}/src/copyleft/cgal/peel_outer_hull_layers.cpp +0 -0
- {libigl-2.6.3.dev2 → libigl-2.6.3.dev3}/src/copyleft/cgal/peel_winding_number_layers.cpp +0 -0
- {libigl-2.6.3.dev2 → libigl-2.6.3.dev3}/src/copyleft/cgal/point_areas.cpp +0 -0
- {libigl-2.6.3.dev2 → libigl-2.6.3.dev3}/src/copyleft/cgal/remesh_self_intersections.cpp +0 -0
- {libigl-2.6.3.dev2 → libigl-2.6.3.dev3}/src/copyleft/cgal/trim_with_solid.cpp +0 -0
- {libigl-2.6.3.dev2 → libigl-2.6.3.dev3}/src/copyleft/marching_cubes.cpp +0 -0
- {libigl-2.6.3.dev2 → libigl-2.6.3.dev3}/src/copyleft/module.cpp +0 -0
- {libigl-2.6.3.dev2 → libigl-2.6.3.dev3}/src/copyleft/progressive_hulls.cpp +0 -0
- {libigl-2.6.3.dev2 → libigl-2.6.3.dev3}/src/copyleft/quadprog.cpp +0 -0
- {libigl-2.6.3.dev2 → libigl-2.6.3.dev3}/src/copyleft/tetgen/cdt.cpp +0 -0
- {libigl-2.6.3.dev2 → libigl-2.6.3.dev3}/src/copyleft/tetgen/mesh_with_skeleton.cpp +0 -0
- {libigl-2.6.3.dev2 → libigl-2.6.3.dev3}/src/copyleft/tetgen/module.cpp +0 -0
- {libigl-2.6.3.dev2 → libigl-2.6.3.dev3}/src/copyleft/tetgen/tetrahedralize.cpp +0 -0
- {libigl-2.6.3.dev2 → libigl-2.6.3.dev3}/src/cotmatrix.cpp +0 -0
- {libigl-2.6.3.dev2 → libigl-2.6.3.dev3}/src/cotmatrix_entries.cpp +0 -0
- {libigl-2.6.3.dev2 → libigl-2.6.3.dev3}/src/cotmatrix_intrinsic.cpp +0 -0
- {libigl-2.6.3.dev2 → libigl-2.6.3.dev3}/src/cross_field_mismatch.cpp +0 -0
- {libigl-2.6.3.dev2 → libigl-2.6.3.dev3}/src/crouzeix_raviart_cotmatrix.cpp +0 -0
- {libigl-2.6.3.dev2 → libigl-2.6.3.dev3}/src/crouzeix_raviart_massmatrix.cpp +0 -0
- {libigl-2.6.3.dev2 → libigl-2.6.3.dev3}/src/curved_hessian_energy.cpp +0 -0
- {libigl-2.6.3.dev2 → libigl-2.6.3.dev3}/src/cut_mesh.cpp +0 -0
- {libigl-2.6.3.dev2 → libigl-2.6.3.dev3}/src/cut_mesh_from_singularities.cpp +0 -0
- {libigl-2.6.3.dev2 → libigl-2.6.3.dev3}/src/cut_to_disk.cpp +0 -0
- {libigl-2.6.3.dev2 → libigl-2.6.3.dev3}/src/cylinder.cpp +0 -0
- {libigl-2.6.3.dev2 → libigl-2.6.3.dev3}/src/decimate.cpp +0 -0
- {libigl-2.6.3.dev2 → libigl-2.6.3.dev3}/src/dihedral_angles.cpp +0 -0
- {libigl-2.6.3.dev2 → libigl-2.6.3.dev3}/src/dihedral_angles_intrinsic.cpp +0 -0
- {libigl-2.6.3.dev2 → libigl-2.6.3.dev3}/src/dijkstra.cpp +0 -0
- {libigl-2.6.3.dev2 → libigl-2.6.3.dev3}/src/directed_edge_parents.cpp +0 -0
- {libigl-2.6.3.dev2 → libigl-2.6.3.dev3}/src/doublearea.cpp +0 -0
- {libigl-2.6.3.dev2 → libigl-2.6.3.dev3}/src/dual_contouring.cpp +0 -0
- {libigl-2.6.3.dev2 → libigl-2.6.3.dev3}/src/ears.cpp +0 -0
- {libigl-2.6.3.dev2 → libigl-2.6.3.dev3}/src/edge_flaps.cpp +0 -0
- {libigl-2.6.3.dev2 → libigl-2.6.3.dev3}/src/edge_lengths.cpp +0 -0
- {libigl-2.6.3.dev2 → libigl-2.6.3.dev3}/src/edge_topology.cpp +0 -0
- {libigl-2.6.3.dev2 → libigl-2.6.3.dev3}/src/edges.cpp +0 -0
- {libigl-2.6.3.dev2 → libigl-2.6.3.dev3}/src/edges_to_path.cpp +0 -0
- {libigl-2.6.3.dev2 → libigl-2.6.3.dev3}/src/embree/EmbreeIntersector.cpp +0 -0
- {libigl-2.6.3.dev2 → libigl-2.6.3.dev3}/src/embree/ambient_occlusion.cpp +0 -0
- {libigl-2.6.3.dev2 → libigl-2.6.3.dev3}/src/embree/bone_visible.cpp +0 -0
- {libigl-2.6.3.dev2 → libigl-2.6.3.dev3}/src/embree/line_mesh_intersection.cpp +0 -0
- {libigl-2.6.3.dev2 → libigl-2.6.3.dev3}/src/embree/module.cpp +0 -0
- {libigl-2.6.3.dev2 → libigl-2.6.3.dev3}/src/embree/reorient_facets_raycast.cpp +0 -0
- {libigl-2.6.3.dev2 → libigl-2.6.3.dev3}/src/embree/shape_diameter_function.cpp +0 -0
- {libigl-2.6.3.dev2 → libigl-2.6.3.dev3}/src/euler_characteristic.cpp +0 -0
- {libigl-2.6.3.dev2 → libigl-2.6.3.dev3}/src/exact_geodesic.cpp +0 -0
- {libigl-2.6.3.dev2 → libigl-2.6.3.dev3}/src/exterior_edges.cpp +0 -0
- {libigl-2.6.3.dev2 → libigl-2.6.3.dev3}/src/extract_manifold_patches.cpp +0 -0
- {libigl-2.6.3.dev2 → libigl-2.6.3.dev3}/src/face_areas.cpp +0 -0
- {libigl-2.6.3.dev2 → libigl-2.6.3.dev3}/src/face_occurrences.cpp +0 -0
- {libigl-2.6.3.dev2 → libigl-2.6.3.dev3}/src/facet_adjacency_matrix.cpp +0 -0
- {libigl-2.6.3.dev2 → libigl-2.6.3.dev3}/src/facet_components.cpp +0 -0
- {libigl-2.6.3.dev2 → libigl-2.6.3.dev3}/src/false_barycentric_subdivision.cpp +0 -0
- {libigl-2.6.3.dev2 → libigl-2.6.3.dev3}/src/fast_winding_number.cpp +0 -0
- {libigl-2.6.3.dev2 → libigl-2.6.3.dev3}/src/find_cross_field_singularities.cpp +0 -0
- {libigl-2.6.3.dev2 → libigl-2.6.3.dev3}/src/fit_plane.cpp +0 -0
- {libigl-2.6.3.dev2 → libigl-2.6.3.dev3}/src/flipped_triangles.cpp +0 -0
- {libigl-2.6.3.dev2 → libigl-2.6.3.dev3}/src/flood_fill.cpp +0 -0
- {libigl-2.6.3.dev2 → libigl-2.6.3.dev3}/src/gaussian_curvature.cpp +0 -0
- {libigl-2.6.3.dev2 → libigl-2.6.3.dev3}/src/grad.cpp +0 -0
- {libigl-2.6.3.dev2 → libigl-2.6.3.dev3}/src/grid.cpp +0 -0
- {libigl-2.6.3.dev2 → libigl-2.6.3.dev3}/src/harmonic.cpp +0 -0
- {libigl-2.6.3.dev2 → libigl-2.6.3.dev3}/src/hausdorff.cpp +0 -0
- {libigl-2.6.3.dev2 → libigl-2.6.3.dev3}/src/heat_geodesics.cpp +0 -0
- {libigl-2.6.3.dev2 → libigl-2.6.3.dev3}/src/hessian.cpp +0 -0
- {libigl-2.6.3.dev2 → libigl-2.6.3.dev3}/src/hessian_energy.cpp +0 -0
- {libigl-2.6.3.dev2 → libigl-2.6.3.dev3}/src/hsv_to_rgb.cpp +0 -0
- {libigl-2.6.3.dev2 → libigl-2.6.3.dev3}/src/icosahedron.cpp +0 -0
- {libigl-2.6.3.dev2 → libigl-2.6.3.dev3}/src/in_element.cpp +0 -0
- {libigl-2.6.3.dev2 → libigl-2.6.3.dev3}/src/inradius.cpp +0 -0
- {libigl-2.6.3.dev2 → libigl-2.6.3.dev3}/src/internal_angles.cpp +0 -0
- {libigl-2.6.3.dev2 → libigl-2.6.3.dev3}/src/intrinsic_delaunay_cotmatrix.cpp +0 -0
- {libigl-2.6.3.dev2 → libigl-2.6.3.dev3}/src/intrinsic_delaunay_triangulation.cpp +0 -0
- {libigl-2.6.3.dev2 → libigl-2.6.3.dev3}/src/is_border_vertex.cpp +0 -0
- {libigl-2.6.3.dev2 → libigl-2.6.3.dev3}/src/is_boundary_edge.cpp +0 -0
- {libigl-2.6.3.dev2 → libigl-2.6.3.dev3}/src/is_delaunay.cpp +0 -0
- {libigl-2.6.3.dev2 → libigl-2.6.3.dev3}/src/is_edge_manifold.cpp +0 -0
- {libigl-2.6.3.dev2 → libigl-2.6.3.dev3}/src/is_intrinsic_delaunay.cpp +0 -0
- {libigl-2.6.3.dev2 → libigl-2.6.3.dev3}/src/is_irregular_vertex.cpp +0 -0
- {libigl-2.6.3.dev2 → libigl-2.6.3.dev3}/src/is_vertex_manifold.cpp +0 -0
- {libigl-2.6.3.dev2 → libigl-2.6.3.dev3}/src/ismember_rows.cpp +0 -0
- {libigl-2.6.3.dev2 → libigl-2.6.3.dev3}/src/isolines.cpp +0 -0
- {libigl-2.6.3.dev2 → libigl-2.6.3.dev3}/src/isolines_intrinsic.cpp +0 -0
- {libigl-2.6.3.dev2 → libigl-2.6.3.dev3}/src/iterative_closest_point.cpp +0 -0
- {libigl-2.6.3.dev2 → libigl-2.6.3.dev3}/src/kelvinlets.cpp +0 -0
- {libigl-2.6.3.dev2 → libigl-2.6.3.dev3}/src/knn.cpp +0 -0
- {libigl-2.6.3.dev2 → libigl-2.6.3.dev3}/src/lbs_matrix.cpp +0 -0
- {libigl-2.6.3.dev2 → libigl-2.6.3.dev3}/src/lipschitz_octree.cpp +0 -0
- {libigl-2.6.3.dev2 → libigl-2.6.3.dev3}/src/local_basis.cpp +0 -0
- {libigl-2.6.3.dev2 → libigl-2.6.3.dev3}/src/look_at.cpp +0 -0
- {libigl-2.6.3.dev2 → libigl-2.6.3.dev3}/src/loop.cpp +0 -0
- {libigl-2.6.3.dev2 → libigl-2.6.3.dev3}/src/lscm.cpp +0 -0
- {libigl-2.6.3.dev2 → libigl-2.6.3.dev3}/src/map_vertices_to_circle.cpp +0 -0
- {libigl-2.6.3.dev2 → libigl-2.6.3.dev3}/src/marching_cubes.cpp +0 -0
- {libigl-2.6.3.dev2 → libigl-2.6.3.dev3}/src/massmatrix.cpp +0 -0
- {libigl-2.6.3.dev2 → libigl-2.6.3.dev3}/src/massmatrix_intrinsic.cpp +0 -0
- {libigl-2.6.3.dev2 → libigl-2.6.3.dev3}/src/matlab_format.cpp +0 -0
- {libigl-2.6.3.dev2 → libigl-2.6.3.dev3}/src/min_quad_with_fixed.cpp +0 -0
- {libigl-2.6.3.dev2 → libigl-2.6.3.dev3}/src/module.cpp +0 -0
- {libigl-2.6.3.dev2 → libigl-2.6.3.dev3}/src/moments.cpp +0 -0
- {libigl-2.6.3.dev2 → libigl-2.6.3.dev3}/src/mvc.cpp +0 -0
- {libigl-2.6.3.dev2 → libigl-2.6.3.dev3}/src/noop.cpp +0 -0
- {libigl-2.6.3.dev2 → libigl-2.6.3.dev3}/src/octree.cpp +0 -0
- {libigl-2.6.3.dev2 → libigl-2.6.3.dev3}/src/offset_surface.cpp +0 -0
- {libigl-2.6.3.dev2 → libigl-2.6.3.dev3}/src/on_boundary.cpp +0 -0
- {libigl-2.6.3.dev2 → libigl-2.6.3.dev3}/src/orient_halfedges.cpp +0 -0
- {libigl-2.6.3.dev2 → libigl-2.6.3.dev3}/src/orient_outward.cpp +0 -0
- {libigl-2.6.3.dev2 → libigl-2.6.3.dev3}/src/orientable_patches.cpp +0 -0
- {libigl-2.6.3.dev2 → libigl-2.6.3.dev3}/src/oriented_bounding_box.cpp +0 -0
- {libigl-2.6.3.dev2 → libigl-2.6.3.dev3}/src/oriented_facets.cpp +0 -0
- {libigl-2.6.3.dev2 → libigl-2.6.3.dev3}/src/per_corner_normals.cpp +0 -0
- {libigl-2.6.3.dev2 → libigl-2.6.3.dev3}/src/per_edge_normals.cpp +0 -0
- {libigl-2.6.3.dev2 → libigl-2.6.3.dev3}/src/per_face_normals.cpp +0 -0
- {libigl-2.6.3.dev2 → libigl-2.6.3.dev3}/src/per_vertex_attribute_smoothing.cpp +0 -0
- {libigl-2.6.3.dev2 → libigl-2.6.3.dev3}/src/per_vertex_normals.cpp +0 -0
- {libigl-2.6.3.dev2 → libigl-2.6.3.dev3}/src/point_mesh_squared_distance.cpp +0 -0
- {libigl-2.6.3.dev2 → libigl-2.6.3.dev3}/src/polar_dec.cpp +0 -0
- {libigl-2.6.3.dev2 → libigl-2.6.3.dev3}/src/polar_svd.cpp +0 -0
- {libigl-2.6.3.dev2 → libigl-2.6.3.dev3}/src/polygon_corners.cpp +0 -0
- {libigl-2.6.3.dev2 → libigl-2.6.3.dev3}/src/polygons_to_triangles.cpp +0 -0
- {libigl-2.6.3.dev2 → libigl-2.6.3.dev3}/src/principal_curvature.cpp +0 -0
- {libigl-2.6.3.dev2 → libigl-2.6.3.dev3}/src/procrustes.cpp +0 -0
- {libigl-2.6.3.dev2 → libigl-2.6.3.dev3}/src/project.cpp +0 -0
- {libigl-2.6.3.dev2 → libigl-2.6.3.dev3}/src/project_to_line.cpp +0 -0
- {libigl-2.6.3.dev2 → libigl-2.6.3.dev3}/src/project_to_line_segment.cpp +0 -0
- {libigl-2.6.3.dev2 → libigl-2.6.3.dev3}/src/pseudonormal_test.cpp +0 -0
- {libigl-2.6.3.dev2 → libigl-2.6.3.dev3}/src/qslim.cpp +0 -0
- {libigl-2.6.3.dev2 → libigl-2.6.3.dev3}/src/quad_grid.cpp +0 -0
- {libigl-2.6.3.dev2 → libigl-2.6.3.dev3}/src/random_dir.cpp +0 -0
- {libigl-2.6.3.dev2 → libigl-2.6.3.dev3}/src/random_points_on_mesh.cpp +0 -0
- {libigl-2.6.3.dev2 → libigl-2.6.3.dev3}/src/ray_mesh_intersect.cpp +0 -0
- {libigl-2.6.3.dev2 → libigl-2.6.3.dev3}/src/ray_sphere_intersect.cpp +0 -0
- {libigl-2.6.3.dev2 → libigl-2.6.3.dev3}/src/ray_triangle_intersect.cpp +0 -0
- {libigl-2.6.3.dev2 → libigl-2.6.3.dev3}/src/readCSV.cpp +0 -0
- {libigl-2.6.3.dev2 → libigl-2.6.3.dev3}/src/readDMAT.cpp +0 -0
- {libigl-2.6.3.dev2 → libigl-2.6.3.dev3}/src/readMESH.cpp +0 -0
- {libigl-2.6.3.dev2 → libigl-2.6.3.dev3}/src/readMSH.cpp +0 -0
- {libigl-2.6.3.dev2 → libigl-2.6.3.dev3}/src/readOBJ.cpp +0 -0
- {libigl-2.6.3.dev2 → libigl-2.6.3.dev3}/src/readOFF.cpp +0 -0
- {libigl-2.6.3.dev2 → libigl-2.6.3.dev3}/src/readSTL.cpp +0 -0
- {libigl-2.6.3.dev2 → libigl-2.6.3.dev3}/src/read_triangle_mesh.cpp +0 -0
- {libigl-2.6.3.dev2 → libigl-2.6.3.dev3}/src/remove_duplicate_vertices.cpp +0 -0
- {libigl-2.6.3.dev2 → libigl-2.6.3.dev3}/src/remove_unreferenced.cpp +0 -0
- {libigl-2.6.3.dev2 → libigl-2.6.3.dev3}/src/rgb_to_hsv.cpp +0 -0
- {libigl-2.6.3.dev2 → libigl-2.6.3.dev3}/src/rigid_alignment.cpp +0 -0
- {libigl-2.6.3.dev2 → libigl-2.6.3.dev3}/src/rotate_vectors.cpp +0 -0
- {libigl-2.6.3.dev2 → libigl-2.6.3.dev3}/src/rotation_matrix_from_directions.cpp +0 -0
- {libigl-2.6.3.dev2 → libigl-2.6.3.dev3}/src/sample_edges.cpp +0 -0
- {libigl-2.6.3.dev2 → libigl-2.6.3.dev3}/src/segment_segment_intersect.cpp +0 -0
- {libigl-2.6.3.dev2 → libigl-2.6.3.dev3}/src/sharp_edges.cpp +0 -0
- {libigl-2.6.3.dev2 → libigl-2.6.3.dev3}/src/signed_angle.cpp +0 -0
- {libigl-2.6.3.dev2 → libigl-2.6.3.dev3}/src/signed_distance.cpp +0 -0
- {libigl-2.6.3.dev2 → libigl-2.6.3.dev3}/src/slim.cpp +0 -0
- {libigl-2.6.3.dev2 → libigl-2.6.3.dev3}/src/snap_points.cpp +0 -0
- {libigl-2.6.3.dev2 → libigl-2.6.3.dev3}/src/solid_angle.cpp +0 -0
- {libigl-2.6.3.dev2 → libigl-2.6.3.dev3}/src/sparse_map_noop.cpp +0 -0
- {libigl-2.6.3.dev2 → libigl-2.6.3.dev3}/src/sparse_map_shape.cpp +0 -0
- {libigl-2.6.3.dev2 → libigl-2.6.3.dev3}/src/sparse_noop.cpp +0 -0
- {libigl-2.6.3.dev2 → libigl-2.6.3.dev3}/src/sparse_shape.cpp +0 -0
- {libigl-2.6.3.dev2 → libigl-2.6.3.dev3}/src/split_nonmanifold.cpp +0 -0
- {libigl-2.6.3.dev2 → libigl-2.6.3.dev3}/src/squared_edge_lengths.cpp +0 -0
- {libigl-2.6.3.dev2 → libigl-2.6.3.dev3}/src/super_fibonacci.cpp +0 -0
- {libigl-2.6.3.dev2 → libigl-2.6.3.dev3}/src/tet_tet_adjacency.cpp +0 -0
- {libigl-2.6.3.dev2 → libigl-2.6.3.dev3}/src/tri_tri_intersect.cpp +0 -0
- {libigl-2.6.3.dev2 → libigl-2.6.3.dev3}/src/triangle/cdt.cpp +0 -0
- {libigl-2.6.3.dev2 → libigl-2.6.3.dev3}/src/triangle/module.cpp +0 -0
- {libigl-2.6.3.dev2 → libigl-2.6.3.dev3}/src/triangle/refine.cpp +0 -0
- {libigl-2.6.3.dev2 → libigl-2.6.3.dev3}/src/triangle/scaf.cpp +0 -0
- {libigl-2.6.3.dev2 → libigl-2.6.3.dev3}/src/triangle/triangulate.cpp +0 -0
- {libigl-2.6.3.dev2 → libigl-2.6.3.dev3}/src/triangle_fan.cpp +0 -0
- {libigl-2.6.3.dev2 → libigl-2.6.3.dev3}/src/triangle_triangle_adjacency.cpp +0 -0
- {libigl-2.6.3.dev2 → libigl-2.6.3.dev3}/src/triangulated_grid.cpp +0 -0
- {libigl-2.6.3.dev2 → libigl-2.6.3.dev3}/src/turning_number.cpp +0 -0
- {libigl-2.6.3.dev2 → libigl-2.6.3.dev3}/src/uniformly_sample_two_manifold.cpp +0 -0
- {libigl-2.6.3.dev2 → libigl-2.6.3.dev3}/src/unique_edge_map.cpp +0 -0
- {libigl-2.6.3.dev2 → libigl-2.6.3.dev3}/src/unique_simplices.cpp +0 -0
- {libigl-2.6.3.dev2 → libigl-2.6.3.dev3}/src/unique_sparse_voxel_corners.cpp +0 -0
- {libigl-2.6.3.dev2 → libigl-2.6.3.dev3}/src/unproject.cpp +0 -0
- {libigl-2.6.3.dev2 → libigl-2.6.3.dev3}/src/upsample.cpp +0 -0
- {libigl-2.6.3.dev2 → libigl-2.6.3.dev3}/src/vector_area_matrix.cpp +0 -0
- {libigl-2.6.3.dev2 → libigl-2.6.3.dev3}/src/vertex_components.cpp +0 -0
- {libigl-2.6.3.dev2 → libigl-2.6.3.dev3}/src/vertex_triangle_adjacency.cpp +0 -0
- {libigl-2.6.3.dev2 → libigl-2.6.3.dev3}/src/volume.cpp +0 -0
- {libigl-2.6.3.dev2 → libigl-2.6.3.dev3}/src/voronoi_mass.cpp +0 -0
- {libigl-2.6.3.dev2 → libigl-2.6.3.dev3}/src/voxel_grid.cpp +0 -0
- {libigl-2.6.3.dev2 → libigl-2.6.3.dev3}/src/winding_number.cpp +0 -0
- {libigl-2.6.3.dev2 → libigl-2.6.3.dev3}/src/writeDMAT.cpp +0 -0
- {libigl-2.6.3.dev2 → libigl-2.6.3.dev3}/src/writeMESH.cpp +0 -0
- {libigl-2.6.3.dev2 → libigl-2.6.3.dev3}/src/writeMSH.cpp +0 -0
- {libigl-2.6.3.dev2 → libigl-2.6.3.dev3}/src/writeOBJ.cpp +0 -0
- {libigl-2.6.3.dev2 → libigl-2.6.3.dev3}/src/writeOFF.cpp +0 -0
- {libigl-2.6.3.dev2 → libigl-2.6.3.dev3}/src/writePLY.cpp +0 -0
- {libigl-2.6.3.dev2 → libigl-2.6.3.dev3}/src/writeSTL.cpp +0 -0
- {libigl-2.6.3.dev2 → libigl-2.6.3.dev3}/src/write_triangle_mesh.cpp +0 -0
- {libigl-2.6.3.dev2 → libigl-2.6.3.dev3}/tutorial/contributing.md +0 -0
- {libigl-2.6.3.dev2 → libigl-2.6.3.dev3}/tutorial/exporter.py +0 -0
- {libigl-2.6.3.dev2 → libigl-2.6.3.dev3}/tutorial/igl_docs.md +0 -0
- {libigl-2.6.3.dev2 → libigl-2.6.3.dev3}/tutorial/images/102_DrawMesh.png +0 -0
- {libigl-2.6.3.dev2 → libigl-2.6.3.dev3}/tutorial/images/104_Colors.png +0 -0
- {libigl-2.6.3.dev2 → libigl-2.6.3.dev3}/tutorial/images/105_Overlays.png +0 -0
- {libigl-2.6.3.dev2 → libigl-2.6.3.dev3}/tutorial/images/106_ViewerMenu.png +0 -0
- {libigl-2.6.3.dev2 → libigl-2.6.3.dev3}/tutorial/images/501_HarmonicParam.png +0 -0
- {libigl-2.6.3.dev2 → libigl-2.6.3.dev3}/tutorial/images/502_LSCMParam.png +0 -0
- {libigl-2.6.3.dev2 → libigl-2.6.3.dev3}/tutorial/images/503_ARAPParam.png +0 -0
- {libigl-2.6.3.dev2 → libigl-2.6.3.dev3}/tutorial/images/504_nrosy_field.png +0 -0
- {libigl-2.6.3.dev2 → libigl-2.6.3.dev3}/tutorial/images/504_vector_field.png +0 -0
- {libigl-2.6.3.dev2 → libigl-2.6.3.dev3}/tutorial/images/505_MIQ_1.png +0 -0
- {libigl-2.6.3.dev2 → libigl-2.6.3.dev3}/tutorial/images/505_MIQ_2.png +0 -0
- {libigl-2.6.3.dev2 → libigl-2.6.3.dev3}/tutorial/images/505_MIQ_3.png +0 -0
- {libigl-2.6.3.dev2 → libigl-2.6.3.dev3}/tutorial/images/505_MIQ_4.png +0 -0
- {libigl-2.6.3.dev2 → libigl-2.6.3.dev3}/tutorial/images/505_MIQ_5.png +0 -0
- {libigl-2.6.3.dev2 → libigl-2.6.3.dev3}/tutorial/images/505_MIQ_6.png +0 -0
- {libigl-2.6.3.dev2 → libigl-2.6.3.dev3}/tutorial/images/505_MIQ_7.png +0 -0
- {libigl-2.6.3.dev2 → libigl-2.6.3.dev3}/tutorial/images/505_MIQ_8.png +0 -0
- {libigl-2.6.3.dev2 → libigl-2.6.3.dev3}/tutorial/images/506_FrameField_1.png +0 -0
- {libigl-2.6.3.dev2 → libigl-2.6.3.dev3}/tutorial/images/506_FrameField_2.png +0 -0
- {libigl-2.6.3.dev2 → libigl-2.6.3.dev3}/tutorial/images/506_FrameField_3.png +0 -0
- {libigl-2.6.3.dev2 → libigl-2.6.3.dev3}/tutorial/images/506_FrameField_4.png +0 -0
- {libigl-2.6.3.dev2 → libigl-2.6.3.dev3}/tutorial/images/507_PolyVectorField.png +0 -0
- {libigl-2.6.3.dev2 → libigl-2.6.3.dev3}/tutorial/images/508_ConjugateField.png +0 -0
- {libigl-2.6.3.dev2 → libigl-2.6.3.dev3}/tutorial/images/509_Planarization.png +0 -0
- {libigl-2.6.3.dev2 → libigl-2.6.3.dev3}/tutorial/images/510_Integrable.png +0 -0
- {libigl-2.6.3.dev2 → libigl-2.6.3.dev3}/tutorial/images/511_PolyVectorFieldGeneral.png +0 -0
- {libigl-2.6.3.dev2 → libigl-2.6.3.dev3}/tutorial/images/602_Matlab_1.png +0 -0
- {libigl-2.6.3.dev2 → libigl-2.6.3.dev3}/tutorial/images/602_Matlab_2.png +0 -0
- {libigl-2.6.3.dev2 → libigl-2.6.3.dev3}/tutorial/images/604_Triangle.png +0 -0
- {libigl-2.6.3.dev2 → libigl-2.6.3.dev3}/tutorial/images/605_Tetgen.png +0 -0
- {libigl-2.6.3.dev2 → libigl-2.6.3.dev3}/tutorial/images/606_AmbientOcclusion.png +0 -0
- {libigl-2.6.3.dev2 → libigl-2.6.3.dev3}/tutorial/images/607_Picking.png +0 -0
- {libigl-2.6.3.dev2 → libigl-2.6.3.dev3}/tutorial/images/608_LIM.png +0 -0
- {libigl-2.6.3.dev2 → libigl-2.6.3.dev3}/tutorial/images/712_beetles.jpg +0 -0
- {libigl-2.6.3.dev2 → libigl-2.6.3.dev3}/tutorial/images/713_ShapeUp.png +0 -0
- {libigl-2.6.3.dev2 → libigl-2.6.3.dev3}/tutorial/images/VF.pdf +0 -0
- {libigl-2.6.3.dev2 → libigl-2.6.3.dev3}/tutorial/images/VF.png +0 -0
- {libigl-2.6.3.dev2 → libigl-2.6.3.dev3}/tutorial/images/arm-dqs.jpg +0 -0
- {libigl-2.6.3.dev2 → libigl-2.6.3.dev3}/tutorial/images/armadillo-fast.jpg +0 -0
- {libigl-2.6.3.dev2 → libigl-2.6.3.dev3}/tutorial/images/armadillo-marching-cubes.jpg +0 -0
- {libigl-2.6.3.dev2 → libigl-2.6.3.dev3}/tutorial/images/background.gif +0 -0
- {libigl-2.6.3.dev2 → libigl-2.6.3.dev3}/tutorial/images/beetle-eigen-decomposition.gif +0 -0
- {libigl-2.6.3.dev2 → libigl-2.6.3.dev3}/tutorial/images/big-sigcat-winding-number.gif +0 -0
- {libigl-2.6.3.dev2 → libigl-2.6.3.dev3}/tutorial/images/bump-k-harmonic.jpg +0 -0
- {libigl-2.6.3.dev2 → libigl-2.6.3.dev3}/tutorial/images/bumpy-gaussian-curvature.jpg +0 -0
- {libigl-2.6.3.dev2 → libigl-2.6.3.dev3}/tutorial/images/bunny-signed-distance.gif +0 -0
- {libigl-2.6.3.dev2 → libigl-2.6.3.dev3}/tutorial/images/bunny-swept-volume.gif +0 -0
- {libigl-2.6.3.dev2 → libigl-2.6.3.dev3}/tutorial/images/camelhead-laplace-equation.jpg +0 -0
- {libigl-2.6.3.dev2 → libigl-2.6.3.dev3}/tutorial/images/cheburashka-biharmonic-leq.jpg +0 -0
- {libigl-2.6.3.dev2 → libigl-2.6.3.dev3}/tutorial/images/cheburashka-gradient.jpg +0 -0
- {libigl-2.6.3.dev2 → libigl-2.6.3.dev3}/tutorial/images/cheburashka-knight-boolean.jpg +0 -0
- {libigl-2.6.3.dev2 → libigl-2.6.3.dev3}/tutorial/images/cheburashka-multiscale-biharmonic-kernels.jpg +0 -0
- {libigl-2.6.3.dev2 → libigl-2.6.3.dev3}/tutorial/images/cow-curvature-flow.jpg +0 -0
- {libigl-2.6.3.dev2 → libigl-2.6.3.dev3}/tutorial/images/cube-sphere-cylinders-csg-tree.jpg +0 -0
- {libigl-2.6.3.dev2 → libigl-2.6.3.dev3}/tutorial/images/cube-sphere-cylinders-csg.gif +0 -0
- {libigl-2.6.3.dev2 → libigl-2.6.3.dev3}/tutorial/images/decimated-knight-arap.jpg +0 -0
- {libigl-2.6.3.dev2 → libigl-2.6.3.dev3}/tutorial/images/decimated-knight-slice-color.jpg +0 -0
- {libigl-2.6.3.dev2 → libigl-2.6.3.dev3}/tutorial/images/decimated-knight-sort-color.jpg +0 -0
- {libigl-2.6.3.dev2 → libigl-2.6.3.dev3}/tutorial/images/decimated-knight-subdivision.gif +0 -0
- {libigl-2.6.3.dev2 → libigl-2.6.3.dev3}/tutorial/images/edge-collapse.jpg +0 -0
- {libigl-2.6.3.dev2 → libigl-2.6.3.dev3}/tutorial/images/edge-collapse.pdf +0 -0
- {libigl-2.6.3.dev2 → libigl-2.6.3.dev3}/tutorial/images/fandisk-normals.jpg +0 -0
- {libigl-2.6.3.dev2 → libigl-2.6.3.dev3}/tutorial/images/fertility-edge-collapse.gif +0 -0
- {libigl-2.6.3.dev2 → libigl-2.6.3.dev3}/tutorial/images/fertility-principal-curvature.jpg +0 -0
- {libigl-2.6.3.dev2 → libigl-2.6.3.dev3}/tutorial/images/geodesicdistance.jpg +0 -0
- {libigl-2.6.3.dev2 → libigl-2.6.3.dev3}/tutorial/images/hand-bbw.jpg +0 -0
- {libigl-2.6.3.dev2 → libigl-2.6.3.dev3}/tutorial/images/hat-function.jpg +0 -0
- {libigl-2.6.3.dev2 → libigl-2.6.3.dev3}/tutorial/images/heat-geodesic-beetle.gif +0 -0
- {libigl-2.6.3.dev2 → libigl-2.6.3.dev3}/tutorial/images/heat-geodesic-peaks.png +0 -0
- {libigl-2.6.3.dev2 → libigl-2.6.3.dev3}/tutorial/images/libigl-logo.jpg +0 -0
- {libigl-2.6.3.dev2 → libigl-2.6.3.dev3}/tutorial/images/max-biharmonic.jpg +0 -0
- {libigl-2.6.3.dev2 → libigl-2.6.3.dev3}/tutorial/images/multiple-meshes.png +0 -0
- {libigl-2.6.3.dev2 → libigl-2.6.3.dev3}/tutorial/images/octopus-biharmonic-coordinates-physics.gif +0 -0
- {libigl-2.6.3.dev2 → libigl-2.6.3.dev3}/tutorial/images/simplicial_complex_augmentation_framework.png +0 -0
- {libigl-2.6.3.dev2 → libigl-2.6.3.dev3}/tutorial/images/slim.png +0 -0
- {libigl-2.6.3.dev2 → libigl-2.6.3.dev3}/tutorial/images/streamlines.jpg +0 -0
- {libigl-2.6.3.dev2 → libigl-2.6.3.dev3}/tutorial/images/truck-facet-orientation.jpg +0 -0
- {libigl-2.6.3.dev2 → libigl-2.6.3.dev3}/tutorial/index.md +0 -0
- {libigl-2.6.3.dev2 → libigl-2.6.3.dev3}/tutorial/marching_cubes.py +0 -0
- {libigl-2.6.3.dev2 → libigl-2.6.3.dev3}/tutorial/plot_to_md.py +0 -0
- {libigl-2.6.3.dev2 → libigl-2.6.3.dev3}/tutorial/tut-chapter0.ipynb +0 -0
- {libigl-2.6.3.dev2 → libigl-2.6.3.dev3}/tutorial/tut-chapter1.ipynb +0 -0
- {libigl-2.6.3.dev2 → libigl-2.6.3.dev3}/tutorial/tut-chapter2.ipynb +0 -0
- {libigl-2.6.3.dev2 → libigl-2.6.3.dev3}/tutorial/tut-chapter3.ipynb +0 -0
- {libigl-2.6.3.dev2 → libigl-2.6.3.dev3}/tutorial/tut-chapter4.ipynb +0 -0
- {libigl-2.6.3.dev2 → libigl-2.6.3.dev3}/tutorial/tut-chapter5.ipynb +0 -0
- {libigl-2.6.3.dev2 → libigl-2.6.3.dev3}/tutorial/tut-chapter6.ipynb +0 -0
- {libigl-2.6.3.dev2 → libigl-2.6.3.dev3}/tutorial/tut-chapter7.ipynb +0 -0
- {libigl-2.6.3.dev2 → libigl-2.6.3.dev3}/tutorial/tutorials.ipynb +0 -0
|
@@ -42,6 +42,8 @@ option(LIBIGL_COPYLEFT_CGAL "Build target igl_copyleft::cgal" ON)
|
|
|
42
42
|
option(LIBIGL_EMBREE "Build target igl::embree" ON)
|
|
43
43
|
option(LIBIGL_COPYLEFT_TETGEN "Build target igl_copyleft::tetgen" ON)
|
|
44
44
|
option(LIBIGL_RESTRICTED_TRIANGLE "Build target igl_restricted::triangle" ON)
|
|
45
|
+
option(LIBIGL_SPECTRA "Build igl::spectra bindings" ON)
|
|
46
|
+
option(LIBIGL_PREDICATES "Build igl::predicates bindings" ON)
|
|
45
47
|
FetchContent_Declare(
|
|
46
48
|
libigl
|
|
47
49
|
GIT_REPOSITORY https://github.com/libigl/libigl.git
|
|
@@ -182,6 +184,12 @@ endif()
|
|
|
182
184
|
if(LIBIGL_RESTRICTED_TRIANGLE)
|
|
183
185
|
pyigl_include("restricted" "triangle")
|
|
184
186
|
endif()
|
|
187
|
+
if(LIBIGL_SPECTRA)
|
|
188
|
+
pyigl_include("" "spectra")
|
|
189
|
+
endif()
|
|
190
|
+
if(LIBIGL_PREDICATES)
|
|
191
|
+
pyigl_include("" "predicates")
|
|
192
|
+
endif()
|
|
185
193
|
|
|
186
194
|
|
|
187
195
|
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.1
|
|
2
2
|
Name: libigl
|
|
3
|
-
Version: 2.6.3.
|
|
3
|
+
Version: 2.6.3.dev3
|
|
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)
|
|
@@ -48,7 +48,7 @@ libigl_version = importlib.metadata.version('libigl')
|
|
|
48
48
|
The version of libigl is defined in the [pyproject.toml](./pyproject.toml) file.
|
|
49
49
|
|
|
50
50
|
|
|
51
|
-
## Compiling and modifying the
|
|
51
|
+
## Compiling and modifying the bindings
|
|
52
52
|
|
|
53
53
|
According to the [scikit-build-core documentation](https://scikit-build-core.readthedocs.io/en/latest/configuration.html#editable-installs), the way to make an editable (incremental) build is to:
|
|
54
54
|
|
|
@@ -81,6 +81,20 @@ test in `tests/test_all.py` to ensure the binding can at least be called as
|
|
|
81
81
|
expected.
|
|
82
82
|
|
|
83
83
|
|
|
84
|
+
### Packaging a wheel from an existing build
|
|
85
|
+
|
|
86
|
+
If you already have a compiled build directory, you can package it into a
|
|
87
|
+
`.whl` without recompiling and install that wheel into other virtual
|
|
88
|
+
environments on the same machine:
|
|
89
|
+
|
|
90
|
+
```
|
|
91
|
+
python -m pip wheel --no-build-isolation --no-deps -Cbuild-dir=build -w wheelhouse .
|
|
92
|
+
pip install wheelhouse/libigl-*.whl
|
|
93
|
+
```
|
|
94
|
+
|
|
95
|
+
The `--no-deps` flag skips bundling numpy/scipy (the target environment must
|
|
96
|
+
have them already). No compiler or CMake is required in the target environment.
|
|
97
|
+
|
|
84
98
|
## Testing cibuildwheel locally
|
|
85
99
|
|
|
86
100
|
Install whichever version of Python from the [official website](https://www.python.org/downloads/) and then run:
|
|
@@ -36,7 +36,7 @@ libigl_version = importlib.metadata.version('libigl')
|
|
|
36
36
|
The version of libigl is defined in the [pyproject.toml](./pyproject.toml) file.
|
|
37
37
|
|
|
38
38
|
|
|
39
|
-
## Compiling and modifying the
|
|
39
|
+
## Compiling and modifying the bindings
|
|
40
40
|
|
|
41
41
|
According to the [scikit-build-core documentation](https://scikit-build-core.readthedocs.io/en/latest/configuration.html#editable-installs), the way to make an editable (incremental) build is to:
|
|
42
42
|
|
|
@@ -69,6 +69,20 @@ test in `tests/test_all.py` to ensure the binding can at least be called as
|
|
|
69
69
|
expected.
|
|
70
70
|
|
|
71
71
|
|
|
72
|
+
### Packaging a wheel from an existing build
|
|
73
|
+
|
|
74
|
+
If you already have a compiled build directory, you can package it into a
|
|
75
|
+
`.whl` without recompiling and install that wheel into other virtual
|
|
76
|
+
environments on the same machine:
|
|
77
|
+
|
|
78
|
+
```
|
|
79
|
+
python -m pip wheel --no-build-isolation --no-deps -Cbuild-dir=build -w wheelhouse .
|
|
80
|
+
pip install wheelhouse/libigl-*.whl
|
|
81
|
+
```
|
|
82
|
+
|
|
83
|
+
The `--no-deps` flag skips bundling numpy/scipy (the target environment must
|
|
84
|
+
have them already). No compiler or CMake is required in the target environment.
|
|
85
|
+
|
|
72
86
|
## Testing cibuildwheel locally
|
|
73
87
|
|
|
74
88
|
Install whichever version of Python from the [official website](https://www.python.org/downloads/) and then run:
|
|
@@ -0,0 +1,47 @@
|
|
|
1
|
+
#include "default_types.h"
|
|
2
|
+
#include <igl/lexicographic_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 lexicographic_triangulation(
|
|
12
|
+
const Eigen::MatrixXN &P)
|
|
13
|
+
{
|
|
14
|
+
auto orient2D = [](const Numeric* pa, const Numeric* pb, const Numeric* pc) -> int
|
|
15
|
+
{
|
|
16
|
+
const Numeric cross =
|
|
17
|
+
(pb[0] - pa[0]) * (pc[1] - pa[1]) -
|
|
18
|
+
(pb[1] - pa[1]) * (pc[0] - pa[0]);
|
|
19
|
+
return (cross > 0) ? 1 : (cross < 0) ? -1 : 0;
|
|
20
|
+
};
|
|
21
|
+
Eigen::MatrixXi F;
|
|
22
|
+
try
|
|
23
|
+
{
|
|
24
|
+
igl::lexicographic_triangulation(P, orient2D, F);
|
|
25
|
+
}
|
|
26
|
+
catch(const char* e)
|
|
27
|
+
{
|
|
28
|
+
throw std::runtime_error(e);
|
|
29
|
+
}
|
|
30
|
+
return F;
|
|
31
|
+
}
|
|
32
|
+
}
|
|
33
|
+
|
|
34
|
+
void bind_lexicographic_triangulation(nb::module_ &m)
|
|
35
|
+
{
|
|
36
|
+
m.def(
|
|
37
|
+
"lexicographic_triangulation",
|
|
38
|
+
&pyigl::lexicographic_triangulation,
|
|
39
|
+
"P"_a,
|
|
40
|
+
R"(Compute a lexicographic triangulation of a 2D point set.
|
|
41
|
+
|
|
42
|
+
Uses a floating-point cross-product orientation predicate; may be inaccurate
|
|
43
|
+
for nearly-collinear inputs.
|
|
44
|
+
|
|
45
|
+
@param[in] P #P by 2 list of 2D vertex positions
|
|
46
|
+
@param[out] F #F by 3 list of face indices into P)");
|
|
47
|
+
}
|
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
#include "default_types.h"
|
|
2
|
+
#include <igl/predicates/Orientation.h>
|
|
3
|
+
#include <nanobind/nanobind.h>
|
|
4
|
+
|
|
5
|
+
namespace nb = nanobind;
|
|
6
|
+
using namespace nb::literals;
|
|
7
|
+
|
|
8
|
+
void bind_Orientation(nb::module_ &m)
|
|
9
|
+
{
|
|
10
|
+
nb::enum_<igl::predicates::Orientation>(m, "Orientation")
|
|
11
|
+
.value("POSITIVE", igl::predicates::Orientation::POSITIVE)
|
|
12
|
+
.value("INSIDE", igl::predicates::Orientation::INSIDE)
|
|
13
|
+
.value("NEGATIVE", igl::predicates::Orientation::NEGATIVE)
|
|
14
|
+
.value("OUTSIDE", igl::predicates::Orientation::OUTSIDE)
|
|
15
|
+
.value("COLLINEAR", igl::predicates::Orientation::COLLINEAR)
|
|
16
|
+
.value("COPLANAR", igl::predicates::Orientation::COPLANAR)
|
|
17
|
+
.value("COCIRCULAR", igl::predicates::Orientation::COCIRCULAR)
|
|
18
|
+
.value("COSPHERICAL", igl::predicates::Orientation::COSPHERICAL)
|
|
19
|
+
.value("DEGENERATE", igl::predicates::Orientation::DEGENERATE)
|
|
20
|
+
.export_values();
|
|
21
|
+
}
|
|
@@ -0,0 +1,30 @@
|
|
|
1
|
+
#include "default_types.h"
|
|
2
|
+
#include <igl/predicates/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
|
+
Eigen::MatrixXi delaunay_triangulation(
|
|
12
|
+
const Eigen::MatrixXN &V)
|
|
13
|
+
{
|
|
14
|
+
Eigen::MatrixXi F;
|
|
15
|
+
igl::predicates::delaunay_triangulation(V, F);
|
|
16
|
+
return F;
|
|
17
|
+
}
|
|
18
|
+
}
|
|
19
|
+
|
|
20
|
+
void bind_delaunay_triangulation(nb::module_ &m)
|
|
21
|
+
{
|
|
22
|
+
m.def(
|
|
23
|
+
"delaunay_triangulation",
|
|
24
|
+
&pyigl::delaunay_triangulation,
|
|
25
|
+
"V"_a,
|
|
26
|
+
R"(Compute a Delaunay triangulation of a 2D point set using exact predicates.
|
|
27
|
+
|
|
28
|
+
@param[in] V #V by 2 list of 2D vertex positions
|
|
29
|
+
@return F #F by 3 list of triangle indices into V.)");
|
|
30
|
+
}
|
|
@@ -0,0 +1,56 @@
|
|
|
1
|
+
#include "default_types.h"
|
|
2
|
+
#include <igl/predicates/ear_clipping.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
|
+
std::tuple<bool, Eigen::MatrixXi> ear_clipping(
|
|
13
|
+
const Eigen::MatrixXN &P)
|
|
14
|
+
{
|
|
15
|
+
Eigen::MatrixXi eF;
|
|
16
|
+
bool ok = igl::predicates::ear_clipping(P, eF);
|
|
17
|
+
return {ok, eF};
|
|
18
|
+
}
|
|
19
|
+
|
|
20
|
+
std::tuple<Eigen::MatrixXi, Eigen::MatrixXI> ear_clipping_with_reserved(
|
|
21
|
+
const Eigen::MatrixXN &P,
|
|
22
|
+
const Eigen::MatrixXI &RT)
|
|
23
|
+
{
|
|
24
|
+
Eigen::MatrixXi eF;
|
|
25
|
+
Eigen::VectorXi I;
|
|
26
|
+
Eigen::VectorXi RT_int = RT.cast<int>();
|
|
27
|
+
igl::predicates::ear_clipping(P, RT_int, eF, I);
|
|
28
|
+
Eigen::MatrixXI I_out = I.cast<Integer>();
|
|
29
|
+
return {eF, I_out};
|
|
30
|
+
}
|
|
31
|
+
}
|
|
32
|
+
|
|
33
|
+
void bind_ear_clipping(nb::module_ &m)
|
|
34
|
+
{
|
|
35
|
+
m.def(
|
|
36
|
+
"ear_clipping",
|
|
37
|
+
&pyigl::ear_clipping,
|
|
38
|
+
"P"_a,
|
|
39
|
+
R"(Ear-clipping triangulation of a 2D polygon.
|
|
40
|
+
|
|
41
|
+
Reverses P if necessary so output orientation matches input.
|
|
42
|
+
|
|
43
|
+
@param[in] P #P by 2 list of 2D polygon vertices (CCW for proper mesh)
|
|
44
|
+
@return (ok, eF) where ok is true if mesh is proper (input is a simple polygon)
|
|
45
|
+
and eF is #eF by 3 list of triangle indices into P.)");
|
|
46
|
+
m.def(
|
|
47
|
+
"ear_clipping",
|
|
48
|
+
&pyigl::ear_clipping_with_reserved,
|
|
49
|
+
"P"_a, "RT"_a,
|
|
50
|
+
R"(Ear-clipping triangulation with reserved (non-clippable) vertices.
|
|
51
|
+
|
|
52
|
+
@param[in] P #P by 2 list of 2D polygon vertices
|
|
53
|
+
@param[in] RT #P list, vertices marked 1 are preserved (not clipped)
|
|
54
|
+
@return (eF, I) where eF is the clipped ears (original indices into P) and
|
|
55
|
+
I maps indices of the remaining polygon to original P indices.)");
|
|
56
|
+
}
|
|
@@ -0,0 +1,49 @@
|
|
|
1
|
+
#include "default_types.h"
|
|
2
|
+
#include <igl/predicates/find_intersections.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
|
+
std::tuple<bool, Eigen::MatrixXI, Eigen::MatrixXI> find_intersections(
|
|
13
|
+
const Eigen::MatrixXN &V1,
|
|
14
|
+
const Eigen::MatrixXI &F1,
|
|
15
|
+
const Eigen::MatrixXN &V2,
|
|
16
|
+
const Eigen::MatrixXI &F2,
|
|
17
|
+
const bool first_only)
|
|
18
|
+
{
|
|
19
|
+
Eigen::MatrixXi IF;
|
|
20
|
+
Eigen::Matrix<bool, Eigen::Dynamic, 1> CP_bool;
|
|
21
|
+
Eigen::MatrixXi F1_int = F1.cast<int>();
|
|
22
|
+
Eigen::MatrixXi F2_int = F2.cast<int>();
|
|
23
|
+
bool found = igl::predicates::find_intersections(
|
|
24
|
+
V1, F1_int, V2, F2_int, first_only, IF, CP_bool);
|
|
25
|
+
Eigen::MatrixXI IF_out = IF.cast<Integer>();
|
|
26
|
+
Eigen::MatrixXI CP_out = CP_bool.cast<Integer>();
|
|
27
|
+
return {found, IF_out, CP_out};
|
|
28
|
+
}
|
|
29
|
+
}
|
|
30
|
+
|
|
31
|
+
void bind_find_intersections(nb::module_ &m)
|
|
32
|
+
{
|
|
33
|
+
m.def(
|
|
34
|
+
"find_intersections",
|
|
35
|
+
&pyigl::find_intersections,
|
|
36
|
+
"V1"_a, "F1"_a, "V2"_a, "F2"_a, "first_only"_a = false,
|
|
37
|
+
R"(Find intersecting triangle pairs between two meshes.
|
|
38
|
+
|
|
39
|
+
Uses AABB tree and exact predicates.
|
|
40
|
+
|
|
41
|
+
@param[in] V1 #V1 by 3 vertex positions of first mesh
|
|
42
|
+
@param[in] F1 #F1 by 3 triangle indices of first mesh
|
|
43
|
+
@param[in] V2 #V2 by 3 vertex positions of second mesh
|
|
44
|
+
@param[in] F2 #F2 by 3 triangle indices of second mesh
|
|
45
|
+
@param[in] first_only stop after finding the first intersection
|
|
46
|
+
@return (found, IF, CP) where found is true if any intersections exist,
|
|
47
|
+
IF is #IF by 2 list of intersecting face index pairs (into F1, F2),
|
|
48
|
+
CP is #IF list of whether each intersection is coplanar.)");
|
|
49
|
+
}
|
|
@@ -0,0 +1,43 @@
|
|
|
1
|
+
#include "default_types.h"
|
|
2
|
+
#include <igl/predicates/find_self_intersections.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
|
+
std::tuple<bool, Eigen::MatrixXI, Eigen::MatrixXI> find_self_intersections(
|
|
13
|
+
const Eigen::MatrixXN &V,
|
|
14
|
+
const Eigen::MatrixXI &F,
|
|
15
|
+
const bool first_only)
|
|
16
|
+
{
|
|
17
|
+
Eigen::MatrixXi IF;
|
|
18
|
+
Eigen::Matrix<bool, Eigen::Dynamic, 1> CP_bool;
|
|
19
|
+
Eigen::MatrixXi F_int = F.cast<int>();
|
|
20
|
+
bool found = igl::predicates::find_self_intersections(V, F_int, first_only, IF, CP_bool);
|
|
21
|
+
Eigen::MatrixXI IF_out = IF.cast<Integer>();
|
|
22
|
+
Eigen::MatrixXI CP_out = CP_bool.cast<Integer>();
|
|
23
|
+
return {found, IF_out, CP_out};
|
|
24
|
+
}
|
|
25
|
+
}
|
|
26
|
+
|
|
27
|
+
void bind_find_self_intersections(nb::module_ &m)
|
|
28
|
+
{
|
|
29
|
+
m.def(
|
|
30
|
+
"find_self_intersections",
|
|
31
|
+
&pyigl::find_self_intersections,
|
|
32
|
+
"V"_a, "F"_a, "first_only"_a = false,
|
|
33
|
+
R"(Find self-intersecting triangle pairs within a mesh.
|
|
34
|
+
|
|
35
|
+
Uses AABB tree and exact predicates.
|
|
36
|
+
|
|
37
|
+
@param[in] V #V by 3 vertex positions
|
|
38
|
+
@param[in] F #F by 3 triangle indices
|
|
39
|
+
@param[in] first_only stop after finding the first intersection
|
|
40
|
+
@return (found, IF, CP) where found is true if any self-intersections exist,
|
|
41
|
+
IF is #IF by 2 list of intersecting face index pairs,
|
|
42
|
+
CP is #IF list of whether each intersection is coplanar.)");
|
|
43
|
+
}
|
|
@@ -0,0 +1,37 @@
|
|
|
1
|
+
#include "default_types.h"
|
|
2
|
+
#include <igl/predicates/incircle.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
|
+
igl::predicates::Orientation incircle(
|
|
12
|
+
const Eigen::Vector2d &pa,
|
|
13
|
+
const Eigen::Vector2d &pb,
|
|
14
|
+
const Eigen::Vector2d &pc,
|
|
15
|
+
const Eigen::Vector2d &pd)
|
|
16
|
+
{
|
|
17
|
+
return igl::predicates::incircle(pa, pb, pc, pd);
|
|
18
|
+
}
|
|
19
|
+
}
|
|
20
|
+
|
|
21
|
+
void bind_incircle(nb::module_ &m)
|
|
22
|
+
{
|
|
23
|
+
m.def(
|
|
24
|
+
"incircle",
|
|
25
|
+
&pyigl::incircle,
|
|
26
|
+
"pa"_a, "pb"_a, "pc"_a, "pd"_a,
|
|
27
|
+
R"(Decide whether a 2D point is inside/outside/on a circle.
|
|
28
|
+
|
|
29
|
+
Uses exact arithmetic (Shewchuk predicates).
|
|
30
|
+
|
|
31
|
+
@param[in] pa 2D point on circle
|
|
32
|
+
@param[in] pb 2D point on circle
|
|
33
|
+
@param[in] pc 2D point on circle
|
|
34
|
+
@param[in] pd 2D query point
|
|
35
|
+
@return INSIDE if pd is inside the circle defined by pa,pb,pc,
|
|
36
|
+
OUTSIDE if outside, COCIRCULAR if exactly on the circle.)");
|
|
37
|
+
}
|
|
@@ -0,0 +1,39 @@
|
|
|
1
|
+
#include "default_types.h"
|
|
2
|
+
#include <igl/predicates/insphere.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
|
+
igl::predicates::Orientation insphere(
|
|
12
|
+
const Eigen::Vector3d &pa,
|
|
13
|
+
const Eigen::Vector3d &pb,
|
|
14
|
+
const Eigen::Vector3d &pc,
|
|
15
|
+
const Eigen::Vector3d &pd,
|
|
16
|
+
const Eigen::Vector3d &pe)
|
|
17
|
+
{
|
|
18
|
+
return igl::predicates::insphere(pa, pb, pc, pd, pe);
|
|
19
|
+
}
|
|
20
|
+
}
|
|
21
|
+
|
|
22
|
+
void bind_insphere(nb::module_ &m)
|
|
23
|
+
{
|
|
24
|
+
m.def(
|
|
25
|
+
"insphere",
|
|
26
|
+
&pyigl::insphere,
|
|
27
|
+
"pa"_a, "pb"_a, "pc"_a, "pd"_a, "pe"_a,
|
|
28
|
+
R"(Decide whether a 3D point is inside/outside/on a sphere.
|
|
29
|
+
|
|
30
|
+
Uses exact arithmetic (Shewchuk predicates).
|
|
31
|
+
|
|
32
|
+
@param[in] pa 3D point on sphere
|
|
33
|
+
@param[in] pb 3D point on sphere
|
|
34
|
+
@param[in] pc 3D point on sphere
|
|
35
|
+
@param[in] pd 3D point on sphere
|
|
36
|
+
@param[in] pe 3D query point
|
|
37
|
+
@return INSIDE if pe is inside the sphere defined by pa,pb,pc,pd,
|
|
38
|
+
OUTSIDE if outside, COSPHERICAL if exactly on the sphere.)");
|
|
39
|
+
}
|
|
@@ -0,0 +1,30 @@
|
|
|
1
|
+
#include "default_types.h"
|
|
2
|
+
#include <igl/predicates/lexicographic_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
|
+
Eigen::MatrixXi lexicographic_triangulation(
|
|
12
|
+
const Eigen::MatrixXN &V)
|
|
13
|
+
{
|
|
14
|
+
Eigen::MatrixXi F;
|
|
15
|
+
igl::predicates::lexicographic_triangulation(V, F);
|
|
16
|
+
return F;
|
|
17
|
+
}
|
|
18
|
+
}
|
|
19
|
+
|
|
20
|
+
void bind_lexicographic_triangulation(nb::module_ &m)
|
|
21
|
+
{
|
|
22
|
+
m.def(
|
|
23
|
+
"lexicographic_triangulation",
|
|
24
|
+
&pyigl::lexicographic_triangulation,
|
|
25
|
+
"V"_a,
|
|
26
|
+
R"(Compute a lexicographic triangulation of a 2D point set using exact predicates.
|
|
27
|
+
|
|
28
|
+
@param[in] V #V by 2 list of 2D vertex positions
|
|
29
|
+
@return F #F by 3 list of triangle indices into V.)");
|
|
30
|
+
}
|
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
#include <nanobind/nanobind.h>
|
|
2
|
+
#include <igl/predicates/exactinit.h>
|
|
3
|
+
namespace nb = nanobind;
|
|
4
|
+
#include "predicates/BINDING_DECLARATIONS.in"
|
|
5
|
+
NB_MODULE(pyigl_predicates, m) {
|
|
6
|
+
m.doc() = "libigl predicates module python bindings";
|
|
7
|
+
igl::predicates::exactinit();
|
|
8
|
+
#include "predicates/BINDING_INVOCATIONS.in"
|
|
9
|
+
}
|
|
@@ -0,0 +1,35 @@
|
|
|
1
|
+
#include "default_types.h"
|
|
2
|
+
#include <igl/predicates/orient2d.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
|
+
igl::predicates::Orientation orient2d(
|
|
12
|
+
const Eigen::Vector2d &pa,
|
|
13
|
+
const Eigen::Vector2d &pb,
|
|
14
|
+
const Eigen::Vector2d &pc)
|
|
15
|
+
{
|
|
16
|
+
return igl::predicates::orient2d(pa, pb, pc);
|
|
17
|
+
}
|
|
18
|
+
}
|
|
19
|
+
|
|
20
|
+
void bind_orient2d(nb::module_ &m)
|
|
21
|
+
{
|
|
22
|
+
m.def(
|
|
23
|
+
"orient2d",
|
|
24
|
+
&pyigl::orient2d,
|
|
25
|
+
"pa"_a, "pb"_a, "pc"_a,
|
|
26
|
+
R"(Compute the orientation of the triangle formed by pa, pb, pc.
|
|
27
|
+
|
|
28
|
+
Uses exact arithmetic (Shewchuk predicates).
|
|
29
|
+
|
|
30
|
+
@param[in] pa 2D point
|
|
31
|
+
@param[in] pb 2D point
|
|
32
|
+
@param[in] pc 2D point
|
|
33
|
+
@return POSITIVE if pa,pb,pc are counterclockwise, NEGATIVE if clockwise,
|
|
34
|
+
COLLINEAR if collinear.)");
|
|
35
|
+
}
|
|
@@ -0,0 +1,59 @@
|
|
|
1
|
+
#include "default_types.h"
|
|
2
|
+
#include <igl/predicates/orient3d.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
|
+
igl::predicates::Orientation orient3d_scalar(
|
|
12
|
+
const Eigen::Vector3d &pa,
|
|
13
|
+
const Eigen::Vector3d &pb,
|
|
14
|
+
const Eigen::Vector3d &pc,
|
|
15
|
+
const Eigen::Vector3d &pd)
|
|
16
|
+
{
|
|
17
|
+
return igl::predicates::orient3d(pa, pb, pc, pd);
|
|
18
|
+
}
|
|
19
|
+
|
|
20
|
+
Eigen::VectorXi orient3d_vectorized(
|
|
21
|
+
const Eigen::MatrixXN &A,
|
|
22
|
+
const Eigen::MatrixXN &B,
|
|
23
|
+
const Eigen::MatrixXN &C,
|
|
24
|
+
const Eigen::MatrixXN &D)
|
|
25
|
+
{
|
|
26
|
+
Eigen::VectorXi R;
|
|
27
|
+
igl::predicates::orient3d(A, B, C, D, R);
|
|
28
|
+
return R;
|
|
29
|
+
}
|
|
30
|
+
}
|
|
31
|
+
|
|
32
|
+
void bind_orient3d(nb::module_ &m)
|
|
33
|
+
{
|
|
34
|
+
m.def(
|
|
35
|
+
"orient3d",
|
|
36
|
+
&pyigl::orient3d_scalar,
|
|
37
|
+
"pa"_a, "pb"_a, "pc"_a, "pd"_a,
|
|
38
|
+
R"(Compute the orientation of the tetrahedron formed by pa, pb, pc, pd.
|
|
39
|
+
|
|
40
|
+
Uses exact arithmetic (Shewchuk predicates).
|
|
41
|
+
|
|
42
|
+
@param[in] pa 3D point
|
|
43
|
+
@param[in] pb 3D point
|
|
44
|
+
@param[in] pc 3D point
|
|
45
|
+
@param[in] pd 3D query point
|
|
46
|
+
@return POSITIVE if pd is below the plane oriented by pa,pb,pc,
|
|
47
|
+
NEGATIVE if above, COPLANAR if on the plane.)");
|
|
48
|
+
m.def(
|
|
49
|
+
"orient3d",
|
|
50
|
+
&pyigl::orient3d_vectorized,
|
|
51
|
+
"A"_a, "B"_a, "C"_a, "D"_a,
|
|
52
|
+
R"(Vectorized orient3d: compute orientation for each row-tuple (A[i], B[i], C[i], D[i]).
|
|
53
|
+
|
|
54
|
+
@param[in] A #P by 3 matrix of 3D points
|
|
55
|
+
@param[in] B #P by 3 matrix of 3D points
|
|
56
|
+
@param[in] C #P by 3 matrix of 3D points
|
|
57
|
+
@param[in] D #P by 3 matrix of 3D points
|
|
58
|
+
@return #P vector of orientation values (+1, -1, or 0))");
|
|
59
|
+
}
|
|
@@ -0,0 +1,30 @@
|
|
|
1
|
+
#include "default_types.h"
|
|
2
|
+
#include <igl/predicates/point_inside_convex_polygon.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 point_inside_convex_polygon(
|
|
12
|
+
const Eigen::MatrixX2d &P,
|
|
13
|
+
const Eigen::RowVector2d &q)
|
|
14
|
+
{
|
|
15
|
+
return igl::predicates::point_inside_convex_polygon(P, q);
|
|
16
|
+
}
|
|
17
|
+
}
|
|
18
|
+
|
|
19
|
+
void bind_point_inside_convex_polygon(nb::module_ &m)
|
|
20
|
+
{
|
|
21
|
+
m.def(
|
|
22
|
+
"point_inside_convex_polygon",
|
|
23
|
+
&pyigl::point_inside_convex_polygon,
|
|
24
|
+
"P"_a, "q"_a,
|
|
25
|
+
R"(Check whether a 2D point lies inside a 2D convex polygon.
|
|
26
|
+
|
|
27
|
+
@param[in] P #P by 2 list of polygon vertices (n >= 3)
|
|
28
|
+
@param[in] q 2D query point
|
|
29
|
+
@return true if q is inside P.)");
|
|
30
|
+
}
|
|
@@ -0,0 +1,40 @@
|
|
|
1
|
+
#include "default_types.h"
|
|
2
|
+
#include <igl/predicates/polygons_to_triangles.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
|
+
std::tuple<Eigen::MatrixXi, Eigen::VectorXI> polygons_to_triangles(
|
|
13
|
+
const Eigen::MatrixXN &V,
|
|
14
|
+
const Eigen::VectorXI &I,
|
|
15
|
+
const Eigen::VectorXI &C)
|
|
16
|
+
{
|
|
17
|
+
Eigen::VectorXi I_int = I.cast<int>();
|
|
18
|
+
Eigen::VectorXi C_int = C.cast<int>();
|
|
19
|
+
Eigen::MatrixXi F;
|
|
20
|
+
Eigen::VectorXi J;
|
|
21
|
+
igl::predicates::polygons_to_triangles(V, I_int, C_int, F, J);
|
|
22
|
+
Eigen::VectorXI J_out = J.cast<Integer>();
|
|
23
|
+
return {F, J_out};
|
|
24
|
+
}
|
|
25
|
+
}
|
|
26
|
+
|
|
27
|
+
void bind_polygons_to_triangles(nb::module_ &m)
|
|
28
|
+
{
|
|
29
|
+
m.def(
|
|
30
|
+
"polygons_to_triangles",
|
|
31
|
+
&pyigl::polygons_to_triangles,
|
|
32
|
+
"V"_a, "I"_a, "C"_a,
|
|
33
|
+
R"(Triangulate each polygon of a polygon mesh with a fan.
|
|
34
|
+
|
|
35
|
+
@param[in] V #V by dim vertex positions (used for orientation in 3D)
|
|
36
|
+
@param[in] I #I list of polygon corner indices into rows of V
|
|
37
|
+
@param[in] C #polygons+1 cumulative polygon sizes (C[i+1]-C[i] = size of polygon i)
|
|
38
|
+
@return (F, J) where F is #F by 3 list of triangle indices and J is #F list of
|
|
39
|
+
source polygon indices.)");
|
|
40
|
+
}
|