libigl 2.6.3.dev5__tar.gz → 2.6.4.dev1__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.dev5 → libigl-2.6.4.dev1}/.github/workflows/wheels.yml +34 -14
- libigl-2.6.4.dev1/CHANGELOG.md +70 -0
- {libigl-2.6.3.dev5 → libigl-2.6.4.dev1}/CMakeLists.txt +3 -1
- {libigl-2.6.3.dev5 → libigl-2.6.4.dev1}/PKG-INFO +1 -1
- {libigl-2.6.3.dev5 → libigl-2.6.4.dev1}/pyproject.toml +1 -1
- libigl-2.6.4.dev1/src/LazyCageDistance.cpp +16 -0
- libigl-2.6.4.dev1/src/LazyCageGridMode.cpp +16 -0
- libigl-2.6.4.dev1/src/LazyCageMetric.cpp +17 -0
- libigl-2.6.4.dev1/src/connect_boundary_to_infinity.cpp +57 -0
- {libigl-2.6.3.dev5 → libigl-2.6.4.dev1}/src/face_areas.cpp +15 -0
- libigl-2.6.4.dev1/src/fit_rotations.cpp +35 -0
- libigl-2.6.4.dev1/src/lazy_cage.cpp +123 -0
- libigl-2.6.4.dev1/src/path_to_edges.cpp +35 -0
- {libigl-2.6.3.dev5 → libigl-2.6.4.dev1}/src/per_face_normals.cpp +22 -0
- libigl-2.6.4.dev1/src/planarize_quad_mesh.cpp +43 -0
- libigl-2.6.4.dev1/src/point_simplex_squared_distance.cpp +64 -0
- libigl-2.6.4.dev1/src/polar_svd3x3.cpp +32 -0
- libigl-2.6.4.dev1/src/progressive_hulls.cpp +60 -0
- libigl-2.6.4.dev1/src/quad_edges.cpp +33 -0
- libigl-2.6.4.dev1/src/quad_planarity.cpp +36 -0
- libigl-2.6.4.dev1/src/ramer_douglas_peucker.cpp +38 -0
- libigl-2.6.4.dev1/src/simplex_simplex_squared_distance.cpp +44 -0
- libigl-2.6.4.dev1/src/smooth_corner_adjacency.cpp +44 -0
- libigl-2.6.4.dev1/src/triangle/remesh_at_points.cpp +55 -0
- {libigl-2.6.3.dev5 → libigl-2.6.4.dev1}/tests/test_all.py +247 -4
- libigl-2.6.3.dev5/src/copyleft/progressive_hulls.cpp +0 -42
- {libigl-2.6.3.dev5 → libigl-2.6.4.dev1}/.github/workflows/pip.yml +0 -0
- {libigl-2.6.3.dev5 → libigl-2.6.4.dev1}/.gitignore +0 -0
- {libigl-2.6.3.dev5 → libigl-2.6.4.dev1}/LICENSE.GPL +0 -0
- {libigl-2.6.3.dev5 → libigl-2.6.4.dev1}/LICENSE.MPL2 +0 -0
- {libigl-2.6.3.dev5 → libigl-2.6.4.dev1}/README.md +0 -0
- {libigl-2.6.3.dev5 → libigl-2.6.4.dev1}/attic/copyleft/tetgen_tetrahedralize.cpp +0 -0
- {libigl-2.6.3.dev5 → libigl-2.6.4.dev1}/attic/copyleft/triangle_triangulate.cpp +0 -0
- {libigl-2.6.3.dev5 → libigl-2.6.4.dev1}/attic/skip/SolverStatus.cpp +0 -0
- {libigl-2.6.3.dev5 → libigl-2.6.4.dev1}/attic/skip/WindingNumberMethod.cpp +0 -0
- {libigl-2.6.3.dev5 → libigl-2.6.4.dev1}/attic/skip/angular_distance.cpp +0 -0
- {libigl-2.6.3.dev5 → libigl-2.6.4.dev1}/attic/skip/canonical_quaternions.cpp +0 -0
- {libigl-2.6.3.dev5 → libigl-2.6.4.dev1}/attic/skip/column_to_quats.cpp +0 -0
- {libigl-2.6.3.dev5 → libigl-2.6.4.dev1}/attic/skip/comiso_nrosy.cpp +0 -0
- {libigl-2.6.3.dev5 → libigl-2.6.4.dev1}/attic/skip/covariance_scatter_matrix.cpp +0 -0
- {libigl-2.6.3.dev5 → libigl-2.6.4.dev1}/attic/skip/file_contents_as_string.cpp +0 -0
- {libigl-2.6.3.dev5 → libigl-2.6.4.dev1}/attic/skip/fit_rotations.cpp +0 -0
- {libigl-2.6.3.dev5 → libigl-2.6.4.dev1}/attic/skip/frame_field_deformer.cpp +0 -0
- {libigl-2.6.3.dev5 → libigl-2.6.4.dev1}/attic/skip/frame_to_cross_field.cpp +0 -0
- {libigl-2.6.3.dev5 → libigl-2.6.4.dev1}/attic/skip/frustum.cpp +0 -0
- {libigl-2.6.3.dev5 → libigl-2.6.4.dev1}/attic/skip/group_sum_matrix.cpp +0 -0
- {libigl-2.6.3.dev5 → libigl-2.6.4.dev1}/attic/skip/harwell_boeing.cpp +0 -0
- {libigl-2.6.3.dev5 → libigl-2.6.4.dev1}/attic/skip/histc.cpp +0 -0
- {libigl-2.6.3.dev5 → libigl-2.6.4.dev1}/attic/skip/hsv_to_rgb.cpp +0 -0
- {libigl-2.6.3.dev5 → libigl-2.6.4.dev1}/attic/skip/infinite_cost_stopping_condition.cpp +0 -0
- {libigl-2.6.3.dev5 → libigl-2.6.4.dev1}/attic/skip/intersect.cpp +0 -0
- {libigl-2.6.3.dev5 → libigl-2.6.4.dev1}/attic/skip/invert_diag.cpp +0 -0
- {libigl-2.6.3.dev5 → libigl-2.6.4.dev1}/attic/skip/is_planar.cpp +0 -0
- {libigl-2.6.3.dev5 → libigl-2.6.4.dev1}/attic/skip/limit_faces.cpp +0 -0
- {libigl-2.6.3.dev5 → libigl-2.6.4.dev1}/attic/skip/line_field_missmatch.cpp +0 -0
- {libigl-2.6.3.dev5 → libigl-2.6.4.dev1}/attic/skip/line_search.cpp +0 -0
- {libigl-2.6.3.dev5 → libigl-2.6.4.dev1}/attic/skip/mat_to_quat.cpp +0 -0
- {libigl-2.6.3.dev5 → libigl-2.6.4.dev1}/attic/skip/material_colors.cpp +0 -0
- {libigl-2.6.3.dev5 → libigl-2.6.4.dev1}/attic/skip/max_faces_stopping_condition.cpp +0 -0
- {libigl-2.6.3.dev5 → libigl-2.6.4.dev1}/attic/skip/min_quad_dense.cpp +0 -0
- {libigl-2.6.3.dev5 → libigl-2.6.4.dev1}/attic/skip/normalize_quat.cpp +0 -0
- {libigl-2.6.3.dev5 → libigl-2.6.4.dev1}/attic/skip/on_boundary.cpp +0 -0
- {libigl-2.6.3.dev5 → libigl-2.6.4.dev1}/attic/skip/opengl2_draw_beach_ball.cpp +0 -0
- {libigl-2.6.3.dev5 → libigl-2.6.4.dev1}/attic/skip/opengl2_draw_floor.cpp +0 -0
- {libigl-2.6.3.dev5 → libigl-2.6.4.dev1}/attic/skip/opengl2_draw_mesh.cpp +0 -0
- {libigl-2.6.3.dev5 → libigl-2.6.4.dev1}/attic/skip/opengl2_draw_point.cpp +0 -0
- {libigl-2.6.3.dev5 → libigl-2.6.4.dev1}/attic/skip/opengl2_draw_rectangular_marquee.cpp +0 -0
- {libigl-2.6.3.dev5 → libigl-2.6.4.dev1}/attic/skip/opengl2_draw_skeleton_3d.cpp +0 -0
- {libigl-2.6.3.dev5 → libigl-2.6.4.dev1}/attic/skip/opengl2_draw_skeleton_vector_graphics.cpp +0 -0
- {libigl-2.6.3.dev5 → libigl-2.6.4.dev1}/attic/skip/opengl2_flare_textures.cpp +0 -0
- {libigl-2.6.3.dev5 → libigl-2.6.4.dev1}/attic/skip/opengl2_model_proj_viewport.cpp +0 -0
- {libigl-2.6.3.dev5 → libigl-2.6.4.dev1}/attic/skip/opengl2_print_gl_get.cpp +0 -0
- {libigl-2.6.3.dev5 → libigl-2.6.4.dev1}/attic/skip/opengl2_project.cpp +0 -0
- {libigl-2.6.3.dev5 → libigl-2.6.4.dev1}/attic/skip/opengl2_right_axis.cpp +0 -0
- {libigl-2.6.3.dev5 → libigl-2.6.4.dev1}/attic/skip/opengl2_shine_textures.cpp +0 -0
- {libigl-2.6.3.dev5 → libigl-2.6.4.dev1}/attic/skip/opengl2_sort_triangles.cpp +0 -0
- {libigl-2.6.3.dev5 → libigl-2.6.4.dev1}/attic/skip/opengl2_unproject.cpp +0 -0
- {libigl-2.6.3.dev5 → libigl-2.6.4.dev1}/attic/skip/opengl2_unproject_to_zero_plane.cpp +0 -0
- {libigl-2.6.3.dev5 → libigl-2.6.4.dev1}/attic/skip/opengl2_up_axis.cpp +0 -0
- {libigl-2.6.3.dev5 → libigl-2.6.4.dev1}/attic/skip/opengl2_view_axis.cpp +0 -0
- {libigl-2.6.3.dev5 → libigl-2.6.4.dev1}/attic/skip/opengl_create_shader_program.cpp +0 -0
- {libigl-2.6.3.dev5 → libigl-2.6.4.dev1}/attic/skip/opengl_destroy_shader_program.cpp +0 -0
- {libigl-2.6.3.dev5 → libigl-2.6.4.dev1}/attic/skip/opengl_gl_type_size.cpp +0 -0
- {libigl-2.6.3.dev5 → libigl-2.6.4.dev1}/attic/skip/opengl_glfw_background_window.cpp +0 -0
- {libigl-2.6.3.dev5 → libigl-2.6.4.dev1}/attic/skip/opengl_glfw_imgui_ImGuiHelpers.cpp +0 -0
- {libigl-2.6.3.dev5 → libigl-2.6.4.dev1}/attic/skip/opengl_init_render_to_texture.cpp +0 -0
- {libigl-2.6.3.dev5 → libigl-2.6.4.dev1}/attic/skip/opengl_load_shader.cpp +0 -0
- {libigl-2.6.3.dev5 → libigl-2.6.4.dev1}/attic/skip/opengl_print_program_info_log.cpp +0 -0
- {libigl-2.6.3.dev5 → libigl-2.6.4.dev1}/attic/skip/opengl_print_shader_info_log.cpp +0 -0
- {libigl-2.6.3.dev5 → libigl-2.6.4.dev1}/attic/skip/opengl_report_gl_error.cpp +0 -0
- {libigl-2.6.3.dev5 → libigl-2.6.4.dev1}/attic/skip/opengl_uniform_type_to_string.cpp +0 -0
- {libigl-2.6.3.dev5 → libigl-2.6.4.dev1}/attic/skip/ortho.cpp +0 -0
- {libigl-2.6.3.dev5 → libigl-2.6.4.dev1}/attic/skip/parallel_transport_angles.cpp +0 -0
- {libigl-2.6.3.dev5 → libigl-2.6.4.dev1}/attic/skip/polar_svd.cpp +0 -0
- {libigl-2.6.3.dev5 → libigl-2.6.4.dev1}/attic/skip/polar_svd3x3.cpp +0 -0
- {libigl-2.6.3.dev5 → libigl-2.6.4.dev1}/attic/skip/qslim_optimal_collapse_edge_callbacks.cpp +0 -0
- {libigl-2.6.3.dev5 → libigl-2.6.4.dev1}/attic/skip/quadric_binary_plus_operator.cpp +0 -0
- {libigl-2.6.3.dev5 → libigl-2.6.4.dev1}/attic/skip/quat_conjugate.cpp +0 -0
- {libigl-2.6.3.dev5 → libigl-2.6.4.dev1}/attic/skip/quat_mult.cpp +0 -0
- {libigl-2.6.3.dev5 → libigl-2.6.4.dev1}/attic/skip/quat_to_axis_angle.cpp +0 -0
- {libigl-2.6.3.dev5 → libigl-2.6.4.dev1}/attic/skip/quat_to_mat.cpp +0 -0
- {libigl-2.6.3.dev5 → libigl-2.6.4.dev1}/attic/skip/quats_to_column.cpp +0 -0
- {libigl-2.6.3.dev5 → libigl-2.6.4.dev1}/attic/skip/random_quaternion.cpp +0 -0
- {libigl-2.6.3.dev5 → libigl-2.6.4.dev1}/attic/skip/readBF.cpp +0 -0
- {libigl-2.6.3.dev5 → libigl-2.6.4.dev1}/attic/skip/readNODE.cpp +0 -0
- {libigl-2.6.3.dev5 → libigl-2.6.4.dev1}/attic/skip/readPLY.cpp +0 -0
- {libigl-2.6.3.dev5 → libigl-2.6.4.dev1}/attic/skip/readSTL.cpp +0 -0
- {libigl-2.6.3.dev5 → libigl-2.6.4.dev1}/attic/skip/rgb_to_hsv.cpp +0 -0
- {libigl-2.6.3.dev5 → libigl-2.6.4.dev1}/attic/skip/rotate_by_quat.cpp +0 -0
- {libigl-2.6.3.dev5 → libigl-2.6.4.dev1}/attic/skip/rotation_matrix_from_directions.cpp +0 -0
- {libigl-2.6.3.dev5 → libigl-2.6.4.dev1}/attic/skip/snap_to_canonical_view_quat.cpp +0 -0
- {libigl-2.6.3.dev5 → libigl-2.6.4.dev1}/attic/skip/snap_to_fixed_up.cpp +0 -0
- {libigl-2.6.3.dev5 → libigl-2.6.4.dev1}/attic/skip/sort_angles.cpp +0 -0
- {libigl-2.6.3.dev5 → libigl-2.6.4.dev1}/attic/skip/sort_triangles.cpp +0 -0
- {libigl-2.6.3.dev5 → libigl-2.6.4.dev1}/attic/skip/sort_vectors_ccw.cpp +0 -0
- {libigl-2.6.3.dev5 → libigl-2.6.4.dev1}/attic/skip/svd3x3.cpp +0 -0
- {libigl-2.6.3.dev5 → libigl-2.6.4.dev1}/attic/skip/svd3x3_avx.cpp +0 -0
- {libigl-2.6.3.dev5 → libigl-2.6.4.dev1}/attic/skip/svd3x3_sse.cpp +0 -0
- {libigl-2.6.3.dev5 → libigl-2.6.4.dev1}/attic/skip/trackball.cpp +0 -0
- {libigl-2.6.3.dev5 → libigl-2.6.4.dev1}/attic/skip/transpose_blocks.cpp +0 -0
- {libigl-2.6.3.dev5 → libigl-2.6.4.dev1}/attic/skip/unique_rows.cpp +0 -0
- {libigl-2.6.3.dev5 → libigl-2.6.4.dev1}/attic/skip/voxel_grid.cpp +0 -0
- {libigl-2.6.3.dev5 → libigl-2.6.4.dev1}/attic/skip/writePLY.cpp +0 -0
- {libigl-2.6.3.dev5 → libigl-2.6.4.dev1}/attic/skip/writeSTL.cpp +0 -0
- {libigl-2.6.3.dev5 → libigl-2.6.4.dev1}/attic/skip/writeWRL.cpp +0 -0
- {libigl-2.6.3.dev5 → libigl-2.6.4.dev1}/attic/todo-old/MeshBooleanType.cpp +0 -0
- {libigl-2.6.3.dev5 → libigl-2.6.4.dev1}/attic/todo-old/NormalType.cpp +0 -0
- {libigl-2.6.3.dev5 → libigl-2.6.4.dev1}/attic/todo-old/collapse_edge.cpp +0 -0
- {libigl-2.6.3.dev5 → libigl-2.6.4.dev1}/attic/todo-old/copyleft/copyleft_cgal_assign.cpp +0 -0
- {libigl-2.6.3.dev5 → libigl-2.6.4.dev1}/attic/todo-old/copyleft/copyleft_cgal_assign_scalar.cpp +0 -0
- {libigl-2.6.3.dev5 → libigl-2.6.4.dev1}/attic/todo-old/copyleft/copyleft_cgal_cell_adjacency.cpp +0 -0
- {libigl-2.6.3.dev5 → libigl-2.6.4.dev1}/attic/todo-old/copyleft/copyleft_cgal_closest_facet.cpp +0 -0
- {libigl-2.6.3.dev5 → libigl-2.6.4.dev1}/attic/todo-old/copyleft/copyleft_cgal_complex_to_mesh.cpp +0 -0
- {libigl-2.6.3.dev5 → libigl-2.6.4.dev1}/attic/todo-old/copyleft/copyleft_cgal_component_inside_component.cpp +0 -0
- {libigl-2.6.3.dev5 → libigl-2.6.4.dev1}/attic/todo-old/copyleft/copyleft_cgal_convex_hull.cpp +0 -0
- {libigl-2.6.3.dev5 → libigl-2.6.4.dev1}/attic/todo-old/copyleft/copyleft_cgal_delaunay_triangulation.cpp +0 -0
- {libigl-2.6.3.dev5 → libigl-2.6.4.dev1}/attic/todo-old/copyleft/copyleft_cgal_extract_cells.cpp +0 -0
- {libigl-2.6.3.dev5 → libigl-2.6.4.dev1}/attic/todo-old/copyleft/copyleft_cgal_extract_feature.cpp +0 -0
- {libigl-2.6.3.dev5 → libigl-2.6.4.dev1}/attic/todo-old/copyleft/copyleft_cgal_fast_winding_number.cpp +0 -0
- {libigl-2.6.3.dev5 → libigl-2.6.4.dev1}/attic/todo-old/copyleft/copyleft_cgal_half_space_box.cpp +0 -0
- {libigl-2.6.3.dev5 → libigl-2.6.4.dev1}/attic/todo-old/copyleft/copyleft_cgal_hausdorff.cpp +0 -0
- {libigl-2.6.3.dev5 → libigl-2.6.4.dev1}/attic/todo-old/copyleft/copyleft_cgal_incircle.cpp +0 -0
- {libigl-2.6.3.dev5 → libigl-2.6.4.dev1}/attic/todo-old/copyleft/copyleft_cgal_insert_into_cdt.cpp +0 -0
- {libigl-2.6.3.dev5 → libigl-2.6.4.dev1}/attic/todo-old/copyleft/copyleft_cgal_insphere.cpp +0 -0
- {libigl-2.6.3.dev5 → libigl-2.6.4.dev1}/attic/todo-old/copyleft/copyleft_cgal_intersect_other.cpp +0 -0
- {libigl-2.6.3.dev5 → libigl-2.6.4.dev1}/attic/todo-old/copyleft/copyleft_cgal_intersect_with_half_space.cpp +0 -0
- {libigl-2.6.3.dev5 → libigl-2.6.4.dev1}/attic/todo-old/copyleft/copyleft_cgal_lexicographic_triangulation.cpp +0 -0
- {libigl-2.6.3.dev5 → libigl-2.6.4.dev1}/attic/todo-old/copyleft/copyleft_cgal_mesh_boolean.cpp +0 -0
- {libigl-2.6.3.dev5 → libigl-2.6.4.dev1}/attic/todo-old/copyleft/copyleft_cgal_mesh_boolean_type_to_funcs.cpp +0 -0
- {libigl-2.6.3.dev5 → libigl-2.6.4.dev1}/attic/todo-old/copyleft/copyleft_cgal_mesh_to_cgal_triangle_list.cpp +0 -0
- {libigl-2.6.3.dev5 → libigl-2.6.4.dev1}/attic/todo-old/copyleft/copyleft_cgal_mesh_to_polyhedron.cpp +0 -0
- {libigl-2.6.3.dev5 → libigl-2.6.4.dev1}/attic/todo-old/copyleft/copyleft_cgal_minkowski_sum.cpp +0 -0
- {libigl-2.6.3.dev5 → libigl-2.6.4.dev1}/attic/todo-old/copyleft/copyleft_cgal_order_facets_around_edge.cpp +0 -0
- {libigl-2.6.3.dev5 → libigl-2.6.4.dev1}/attic/todo-old/copyleft/copyleft_cgal_order_facets_around_edges.cpp +0 -0
- {libigl-2.6.3.dev5 → libigl-2.6.4.dev1}/attic/todo-old/copyleft/copyleft_cgal_orient2D.cpp +0 -0
- {libigl-2.6.3.dev5 → libigl-2.6.4.dev1}/attic/todo-old/copyleft/copyleft_cgal_orient3D.cpp +0 -0
- {libigl-2.6.3.dev5 → libigl-2.6.4.dev1}/attic/todo-old/copyleft/copyleft_cgal_outer_element.cpp +0 -0
- {libigl-2.6.3.dev5 → libigl-2.6.4.dev1}/attic/todo-old/copyleft/copyleft_cgal_outer_facet.cpp +0 -0
- {libigl-2.6.3.dev5 → libigl-2.6.4.dev1}/attic/todo-old/copyleft/copyleft_cgal_outer_hull.cpp +0 -0
- {libigl-2.6.3.dev5 → libigl-2.6.4.dev1}/attic/todo-old/copyleft/copyleft_cgal_peel_outer_hull_layers.cpp +0 -0
- {libigl-2.6.3.dev5 → libigl-2.6.4.dev1}/attic/todo-old/copyleft/copyleft_cgal_peel_winding_number_layers.cpp +0 -0
- {libigl-2.6.3.dev5 → libigl-2.6.4.dev1}/attic/todo-old/copyleft/copyleft_cgal_piecewise_constant_winding_number.cpp +0 -0
- {libigl-2.6.3.dev5 → libigl-2.6.4.dev1}/attic/todo-old/copyleft/copyleft_cgal_point_areas.cpp +0 -0
- {libigl-2.6.3.dev5 → libigl-2.6.4.dev1}/attic/todo-old/copyleft/copyleft_cgal_point_mesh_squared_distance.cpp +0 -0
- {libigl-2.6.3.dev5 → libigl-2.6.4.dev1}/attic/todo-old/copyleft/copyleft_cgal_point_segment_squared_distance.cpp +0 -0
- {libigl-2.6.3.dev5 → libigl-2.6.4.dev1}/attic/todo-old/copyleft/copyleft_cgal_point_solid_signed_squared_distance.cpp +0 -0
- {libigl-2.6.3.dev5 → libigl-2.6.4.dev1}/attic/todo-old/copyleft/copyleft_cgal_point_triangle_squared_distance.cpp +0 -0
- {libigl-2.6.3.dev5 → libigl-2.6.4.dev1}/attic/todo-old/copyleft/copyleft_cgal_points_inside_component.cpp +0 -0
- {libigl-2.6.3.dev5 → libigl-2.6.4.dev1}/attic/todo-old/copyleft/copyleft_cgal_polyhedron_to_mesh.cpp +0 -0
- {libigl-2.6.3.dev5 → libigl-2.6.4.dev1}/attic/todo-old/copyleft/copyleft_cgal_projected_cdt.cpp +0 -0
- {libigl-2.6.3.dev5 → libigl-2.6.4.dev1}/attic/todo-old/copyleft/copyleft_cgal_projected_delaunay.cpp +0 -0
- {libigl-2.6.3.dev5 → libigl-2.6.4.dev1}/attic/todo-old/copyleft/copyleft_cgal_propagate_winding_numbers.cpp +0 -0
- {libigl-2.6.3.dev5 → libigl-2.6.4.dev1}/attic/todo-old/copyleft/copyleft_cgal_read_triangle_mesh.cpp +0 -0
- {libigl-2.6.3.dev5 → libigl-2.6.4.dev1}/attic/todo-old/copyleft/copyleft_cgal_relabel_small_immersed_cells.cpp +0 -0
- {libigl-2.6.3.dev5 → libigl-2.6.4.dev1}/attic/todo-old/copyleft/copyleft_cgal_remesh_intersections.cpp +0 -0
- {libigl-2.6.3.dev5 → libigl-2.6.4.dev1}/attic/todo-old/copyleft/copyleft_cgal_remesh_self_intersections.cpp +0 -0
- {libigl-2.6.3.dev5 → libigl-2.6.4.dev1}/attic/todo-old/copyleft/copyleft_cgal_resolve_intersections.cpp +0 -0
- {libigl-2.6.3.dev5 → libigl-2.6.4.dev1}/attic/todo-old/copyleft/copyleft_cgal_row_to_point.cpp +0 -0
- {libigl-2.6.3.dev5 → libigl-2.6.4.dev1}/attic/todo-old/copyleft/copyleft_cgal_segment_segment_squared_distance.cpp +0 -0
- {libigl-2.6.3.dev5 → libigl-2.6.4.dev1}/attic/todo-old/copyleft/copyleft_cgal_signed_distance_isosurface.cpp +0 -0
- {libigl-2.6.3.dev5 → libigl-2.6.4.dev1}/attic/todo-old/copyleft/copyleft_cgal_snap_rounding.cpp +0 -0
- {libigl-2.6.3.dev5 → libigl-2.6.4.dev1}/attic/todo-old/copyleft/copyleft_cgal_string_to_mesh_boolean_type.cpp +0 -0
- {libigl-2.6.3.dev5 → libigl-2.6.4.dev1}/attic/todo-old/copyleft/copyleft_cgal_subdivide_segments.cpp +0 -0
- {libigl-2.6.3.dev5 → libigl-2.6.4.dev1}/attic/todo-old/copyleft/copyleft_cgal_submesh_aabb_tree.cpp +0 -0
- {libigl-2.6.3.dev5 → libigl-2.6.4.dev1}/attic/todo-old/copyleft/copyleft_cgal_triangle_triangle_squared_distance.cpp +0 -0
- {libigl-2.6.3.dev5 → libigl-2.6.4.dev1}/attic/todo-old/copyleft/copyleft_cgal_trim_with_solid.cpp +0 -0
- {libigl-2.6.3.dev5 → libigl-2.6.4.dev1}/attic/todo-old/copyleft/copyleft_cgal_wire_mesh.cpp +0 -0
- {libigl-2.6.3.dev5 → libigl-2.6.4.dev1}/attic/todo-old/copyleft/copyleft_comiso_miq.cpp +0 -0
- {libigl-2.6.3.dev5 → libigl-2.6.4.dev1}/attic/todo-old/copyleft/copyleft_cork_mesh_boolean.cpp +0 -0
- {libigl-2.6.3.dev5 → libigl-2.6.4.dev1}/attic/todo-old/copyleft/copyleft_marching_cubes.cpp +0 -0
- {libigl-2.6.3.dev5 → libigl-2.6.4.dev1}/attic/todo-old/copyleft/copyleft_offset_surface.cpp +0 -0
- {libigl-2.6.3.dev5 → libigl-2.6.4.dev1}/attic/todo-old/copyleft/copyleft_opengl2_render_to_tga.cpp +0 -0
- {libigl-2.6.3.dev5 → libigl-2.6.4.dev1}/attic/todo-old/copyleft/copyleft_opengl2_texture_from_tga.cpp +0 -0
- {libigl-2.6.3.dev5 → libigl-2.6.4.dev1}/attic/todo-old/copyleft/copyleft_progressive_hulls.cpp +0 -0
- {libigl-2.6.3.dev5 → libigl-2.6.4.dev1}/attic/todo-old/copyleft/copyleft_progressive_hulls_cost_and_placement.cpp +0 -0
- {libigl-2.6.3.dev5 → libigl-2.6.4.dev1}/attic/todo-old/copyleft/copyleft_quadprog.cpp +0 -0
- {libigl-2.6.3.dev5 → libigl-2.6.4.dev1}/attic/todo-old/copyleft/copyleft_swept_volume.cpp +0 -0
- {libigl-2.6.3.dev5 → libigl-2.6.4.dev1}/attic/todo-old/copyleft/copyleft_tetgen_mesh_with_skeleton.cpp +0 -0
- {libigl-2.6.3.dev5 → libigl-2.6.4.dev1}/attic/todo-old/copyleft/copyleft_tetgen_read_into_tetgenio.cpp +0 -0
- {libigl-2.6.3.dev5 → libigl-2.6.4.dev1}/attic/todo-old/copyleft/copyleft_tetgen_tetrahedralize.cpp +0 -0
- {libigl-2.6.3.dev5 → libigl-2.6.4.dev1}/attic/todo-old/dijkstra.cpp +0 -0
- {libigl-2.6.3.dev5 → libigl-2.6.4.dev1}/attic/todo-old/embree_bone_heat.cpp +0 -0
- {libigl-2.6.3.dev5 → libigl-2.6.4.dev1}/attic/todo-old/embree_reorient_facets_raycast.cpp +0 -0
- {libigl-2.6.3.dev5 → libigl-2.6.4.dev1}/attic/todo-old/fast_winding_number.cpp +0 -0
- {libigl-2.6.3.dev5 → libigl-2.6.4.dev1}/attic/todo-old/flip_edge.cpp +0 -0
- {libigl-2.6.3.dev5 → libigl-2.6.4.dev1}/attic/todo-old/knn.cpp +0 -0
- {libigl-2.6.3.dev5 → libigl-2.6.4.dev1}/attic/todo-old/mosek_mosek_guarded.cpp +0 -0
- {libigl-2.6.3.dev5 → libigl-2.6.4.dev1}/attic/todo-old/mosek_mosek_linprog.cpp +0 -0
- {libigl-2.6.3.dev5 → libigl-2.6.4.dev1}/attic/todo-old/octree.cpp +0 -0
- {libigl-2.6.3.dev5 → libigl-2.6.4.dev1}/attic/todo-old/per_vertex_point_to_plane_quadrics.cpp +0 -0
- {libigl-2.6.3.dev5 → libigl-2.6.4.dev1}/attic/todo-old/png_readPNG.cpp +0 -0
- {libigl-2.6.3.dev5 → libigl-2.6.4.dev1}/attic/todo-old/png_render_to_png.cpp +0 -0
- {libigl-2.6.3.dev5 → libigl-2.6.4.dev1}/attic/todo-old/png_render_to_png_async.cpp +0 -0
- {libigl-2.6.3.dev5 → libigl-2.6.4.dev1}/attic/todo-old/png_texture_from_file.cpp +0 -0
- {libigl-2.6.3.dev5 → libigl-2.6.4.dev1}/attic/todo-old/png_texture_from_png.cpp +0 -0
- {libigl-2.6.3.dev5 → libigl-2.6.4.dev1}/attic/todo-old/png_writePNG.cpp +0 -0
- {libigl-2.6.3.dev5 → libigl-2.6.4.dev1}/attic/todo-old/pseudonormal_test.cpp +0 -0
- {libigl-2.6.3.dev5 → libigl-2.6.4.dev1}/attic/todo-old/readWRL.cpp +0 -0
- {libigl-2.6.3.dev5 → libigl-2.6.4.dev1}/attic/todo-old/remesh_along_isoline.cpp +0 -0
- {libigl-2.6.3.dev5 → libigl-2.6.4.dev1}/attic/todo-old/seam_edges.cpp +0 -0
- {libigl-2.6.3.dev5 → libigl-2.6.4.dev1}/attic/todo-old/shortest_edge_and_midpoint.cpp +0 -0
- {libigl-2.6.3.dev5 → libigl-2.6.4.dev1}/attic/todo-old/squared_edge_lengths.cpp +0 -0
- {libigl-2.6.3.dev5 → libigl-2.6.4.dev1}/attic/todo-old/straighten_seams.cpp +0 -0
- {libigl-2.6.3.dev5 → libigl-2.6.4.dev1}/attic/todo-old/swept_volume_signed_distance.cpp +0 -0
- {libigl-2.6.3.dev5 → libigl-2.6.4.dev1}/attic/todo-old/triangle_cdt.cpp +0 -0
- {libigl-2.6.3.dev5 → libigl-2.6.4.dev1}/attic/todo-old/unzip_corners.cpp +0 -0
- {libigl-2.6.3.dev5 → libigl-2.6.4.dev1}/attic/todo-old/writeBF.cpp +0 -0
- {libigl-2.6.3.dev5 → libigl-2.6.4.dev1}/attic/todo-old/writeDMAT.cpp +0 -0
- {libigl-2.6.3.dev5 → libigl-2.6.4.dev1}/attic/todo-old/writeMESH.cpp +0 -0
- {libigl-2.6.3.dev5 → libigl-2.6.4.dev1}/attic/todo-old/writeTGF.cpp +0 -0
- {libigl-2.6.3.dev5 → libigl-2.6.4.dev1}/attic/todo-old/xml_writeDAE.cpp +0 -0
- {libigl-2.6.3.dev5 → libigl-2.6.4.dev1}/attic/todo-old/xml_write_triangle_mesh.cpp +0 -0
- {libigl-2.6.3.dev5 → libigl-2.6.4.dev1}/classes/AABB.cpp +0 -0
- {libigl-2.6.3.dev5 → libigl-2.6.4.dev1}/classes/classes.cpp +0 -0
- {libigl-2.6.3.dev5 → libigl-2.6.4.dev1}/cmake/CXXFeatures.cmake +0 -0
- {libigl-2.6.3.dev5 → libigl-2.6.4.dev1}/cmake/FindLIBIGL.cmake +0 -0
- {libigl-2.6.3.dev5 → libigl-2.6.4.dev1}/cmake/UseColors.cmake +0 -0
- {libigl-2.6.3.dev5 → libigl-2.6.4.dev1}/cmake/Warnings.cmake +0 -0
- {libigl-2.6.3.dev5 → libigl-2.6.4.dev1}/include/default_types.h +0 -0
- {libigl-2.6.3.dev5 → libigl-2.6.4.dev1}/include/parse_transforms.h +0 -0
- {libigl-2.6.3.dev5 → libigl-2.6.4.dev1}/memory/MEMORY.md +0 -0
- {libigl-2.6.3.dev5 → libigl-2.6.4.dev1}/missing.sh +0 -0
- {libigl-2.6.3.dev5 → libigl-2.6.4.dev1}/mkdocs.yml +0 -0
- {libigl-2.6.3.dev5 → libigl-2.6.4.dev1}/postBuild +0 -0
- {libigl-2.6.3.dev5 → libigl-2.6.4.dev1}/priority.txt +0 -0
- {libigl-2.6.3.dev5 → libigl-2.6.4.dev1}/scripts/basic_function.mako +0 -0
- {libigl-2.6.3.dev5 → libigl-2.6.4.dev1}/scripts/blender_igl_export.py +0 -0
- {libigl-2.6.3.dev5 → libigl-2.6.4.dev1}/scripts/generate_bindings.py +0 -0
- {libigl-2.6.3.dev5 → libigl-2.6.4.dev1}/scripts/make_lean.py +0 -0
- {libigl-2.6.3.dev5 → libigl-2.6.4.dev1}/scripts/parser.py +0 -0
- {libigl-2.6.3.dev5 → libigl-2.6.4.dev1}/src/AABB.cpp +0 -0
- {libigl-2.6.3.dev5 → libigl-2.6.4.dev1}/src/FileEncoding.cpp +0 -0
- {libigl-2.6.3.dev5 → libigl-2.6.4.dev1}/src/MappingEnergyType.cpp +0 -0
- {libigl-2.6.3.dev5 → libigl-2.6.4.dev1}/src/MassMatrixType.cpp +0 -0
- {libigl-2.6.3.dev5 → libigl-2.6.4.dev1}/src/OrientedBoundingBoxMinimizeType.cpp +0 -0
- {libigl-2.6.3.dev5 → libigl-2.6.4.dev1}/src/accumarray.cpp +0 -0
- {libigl-2.6.3.dev5 → libigl-2.6.4.dev1}/src/active_set.cpp +0 -0
- {libigl-2.6.3.dev5 → libigl-2.6.4.dev1}/src/adjacency_list.cpp +0 -0
- {libigl-2.6.3.dev5 → libigl-2.6.4.dev1}/src/adjacency_matrix.cpp +0 -0
- {libigl-2.6.3.dev5 → libigl-2.6.4.dev1}/src/all_pairs_distances.cpp +0 -0
- {libigl-2.6.3.dev5 → libigl-2.6.4.dev1}/src/ambient_occlusion.cpp +0 -0
- {libigl-2.6.3.dev5 → libigl-2.6.4.dev1}/src/arap.cpp +0 -0
- {libigl-2.6.3.dev5 → libigl-2.6.4.dev1}/src/average_from_edges_onto_vertices.cpp +0 -0
- {libigl-2.6.3.dev5 → libigl-2.6.4.dev1}/src/average_onto_faces.cpp +0 -0
- {libigl-2.6.3.dev5 → libigl-2.6.4.dev1}/src/average_onto_vertices.cpp +0 -0
- {libigl-2.6.3.dev5 → libigl-2.6.4.dev1}/src/avg_edge_length.cpp +0 -0
- {libigl-2.6.3.dev5 → libigl-2.6.4.dev1}/src/barycenter.cpp +0 -0
- {libigl-2.6.3.dev5 → libigl-2.6.4.dev1}/src/barycentric_coordinates.cpp +0 -0
- {libigl-2.6.3.dev5 → libigl-2.6.4.dev1}/src/barycentric_interpolation.cpp +0 -0
- {libigl-2.6.3.dev5 → libigl-2.6.4.dev1}/src/bbw.cpp +0 -0
- {libigl-2.6.3.dev5 → libigl-2.6.4.dev1}/src/bezier.cpp +0 -0
- {libigl-2.6.3.dev5 → libigl-2.6.4.dev1}/src/bfs_orient.cpp +0 -0
- {libigl-2.6.3.dev5 → libigl-2.6.4.dev1}/src/biharmonic_coordinates.cpp +0 -0
- {libigl-2.6.3.dev5 → libigl-2.6.4.dev1}/src/bijective_composite_harmonic_mapping.cpp +0 -0
- {libigl-2.6.3.dev5 → libigl-2.6.4.dev1}/src/blue_noise.cpp +0 -0
- {libigl-2.6.3.dev5 → libigl-2.6.4.dev1}/src/boundary_conditions.cpp +0 -0
- {libigl-2.6.3.dev5 → libigl-2.6.4.dev1}/src/boundary_facets.cpp +0 -0
- {libigl-2.6.3.dev5 → libigl-2.6.4.dev1}/src/boundary_loop.cpp +0 -0
- {libigl-2.6.3.dev5 → libigl-2.6.4.dev1}/src/bounding_box.cpp +0 -0
- {libigl-2.6.3.dev5 → libigl-2.6.4.dev1}/src/bounding_box_diagonal.cpp +0 -0
- {libigl-2.6.3.dev5 → libigl-2.6.4.dev1}/src/centroid.cpp +0 -0
- {libigl-2.6.3.dev5 → libigl-2.6.4.dev1}/src/circulation.cpp +0 -0
- {libigl-2.6.3.dev5 → libigl-2.6.4.dev1}/src/circumradius.cpp +0 -0
- {libigl-2.6.3.dev5 → libigl-2.6.4.dev1}/src/collapse_edge.cpp +0 -0
- {libigl-2.6.3.dev5 → libigl-2.6.4.dev1}/src/colormap.cpp +0 -0
- {libigl-2.6.3.dev5 → libigl-2.6.4.dev1}/src/comb_cross_field.cpp +0 -0
- {libigl-2.6.3.dev5 → libigl-2.6.4.dev1}/src/comb_frame_field.cpp +0 -0
- {libigl-2.6.3.dev5 → libigl-2.6.4.dev1}/src/combine.cpp +0 -0
- {libigl-2.6.3.dev5 → libigl-2.6.4.dev1}/src/compute_frame_field_bisectors.cpp +0 -0
- {libigl-2.6.3.dev5 → libigl-2.6.4.dev1}/src/connected_components.cpp +0 -0
- {libigl-2.6.3.dev5 → libigl-2.6.4.dev1}/src/copyleft/cgal/convex_hull.cpp +0 -0
- {libigl-2.6.3.dev5 → libigl-2.6.4.dev1}/src/copyleft/cgal/coplanar.cpp +0 -0
- {libigl-2.6.3.dev5 → libigl-2.6.4.dev1}/src/copyleft/cgal/delaunay_triangulation.cpp +0 -0
- {libigl-2.6.3.dev5 → libigl-2.6.4.dev1}/src/copyleft/cgal/extract_cells.cpp +0 -0
- {libigl-2.6.3.dev5 → libigl-2.6.4.dev1}/src/copyleft/cgal/fast_winding_number.cpp +0 -0
- {libigl-2.6.3.dev5 → libigl-2.6.4.dev1}/src/copyleft/cgal/intersect_other.cpp +0 -0
- {libigl-2.6.3.dev5 → libigl-2.6.4.dev1}/src/copyleft/cgal/intersect_with_half_space.cpp +0 -0
- {libigl-2.6.3.dev5 → libigl-2.6.4.dev1}/src/copyleft/cgal/mesh_boolean.cpp +0 -0
- {libigl-2.6.3.dev5 → libigl-2.6.4.dev1}/src/copyleft/cgal/module.cpp +0 -0
- {libigl-2.6.3.dev5 → libigl-2.6.4.dev1}/src/copyleft/cgal/oriented_bounding_box.cpp +0 -0
- {libigl-2.6.3.dev5 → libigl-2.6.4.dev1}/src/copyleft/cgal/outer_hull.cpp +0 -0
- {libigl-2.6.3.dev5 → libigl-2.6.4.dev1}/src/copyleft/cgal/peel_outer_hull_layers.cpp +0 -0
- {libigl-2.6.3.dev5 → libigl-2.6.4.dev1}/src/copyleft/cgal/peel_winding_number_layers.cpp +0 -0
- {libigl-2.6.3.dev5 → libigl-2.6.4.dev1}/src/copyleft/cgal/point_areas.cpp +0 -0
- {libigl-2.6.3.dev5 → libigl-2.6.4.dev1}/src/copyleft/cgal/remesh_self_intersections.cpp +0 -0
- {libigl-2.6.3.dev5 → libigl-2.6.4.dev1}/src/copyleft/cgal/trim_with_solid.cpp +0 -0
- {libigl-2.6.3.dev5 → libigl-2.6.4.dev1}/src/copyleft/marching_cubes.cpp +0 -0
- {libigl-2.6.3.dev5 → libigl-2.6.4.dev1}/src/copyleft/module.cpp +0 -0
- {libigl-2.6.3.dev5 → libigl-2.6.4.dev1}/src/copyleft/quadprog.cpp +0 -0
- {libigl-2.6.3.dev5 → libigl-2.6.4.dev1}/src/copyleft/tetgen/cdt.cpp +0 -0
- {libigl-2.6.3.dev5 → libigl-2.6.4.dev1}/src/copyleft/tetgen/mesh_with_skeleton.cpp +0 -0
- {libigl-2.6.3.dev5 → libigl-2.6.4.dev1}/src/copyleft/tetgen/module.cpp +0 -0
- {libigl-2.6.3.dev5 → libigl-2.6.4.dev1}/src/copyleft/tetgen/tetrahedralize.cpp +0 -0
- {libigl-2.6.3.dev5 → libigl-2.6.4.dev1}/src/cotmatrix.cpp +0 -0
- {libigl-2.6.3.dev5 → libigl-2.6.4.dev1}/src/cotmatrix_entries.cpp +0 -0
- {libigl-2.6.3.dev5 → libigl-2.6.4.dev1}/src/cotmatrix_intrinsic.cpp +0 -0
- {libigl-2.6.3.dev5 → libigl-2.6.4.dev1}/src/cross_field_mismatch.cpp +0 -0
- {libigl-2.6.3.dev5 → libigl-2.6.4.dev1}/src/crouzeix_raviart_cotmatrix.cpp +0 -0
- {libigl-2.6.3.dev5 → libigl-2.6.4.dev1}/src/crouzeix_raviart_massmatrix.cpp +0 -0
- {libigl-2.6.3.dev5 → libigl-2.6.4.dev1}/src/cubic.cpp +0 -0
- {libigl-2.6.3.dev5 → libigl-2.6.4.dev1}/src/cubic_is_flat.cpp +0 -0
- {libigl-2.6.3.dev5 → libigl-2.6.4.dev1}/src/cubic_monomial_bases.cpp +0 -0
- {libigl-2.6.3.dev5 → libigl-2.6.4.dev1}/src/cubic_split.cpp +0 -0
- {libigl-2.6.3.dev5 → libigl-2.6.4.dev1}/src/curved_hessian_energy.cpp +0 -0
- {libigl-2.6.3.dev5 → libigl-2.6.4.dev1}/src/cut_mesh.cpp +0 -0
- {libigl-2.6.3.dev5 → libigl-2.6.4.dev1}/src/cut_mesh_from_singularities.cpp +0 -0
- {libigl-2.6.3.dev5 → libigl-2.6.4.dev1}/src/cut_to_disk.cpp +0 -0
- {libigl-2.6.3.dev5 → libigl-2.6.4.dev1}/src/cycodebase/box_cubic.cpp +0 -0
- {libigl-2.6.3.dev5 → libigl-2.6.4.dev1}/src/cycodebase/module.cpp +0 -0
- {libigl-2.6.3.dev5 → libigl-2.6.4.dev1}/src/cycodebase/point_cubic_squared_distance.cpp +0 -0
- {libigl-2.6.3.dev5 → libigl-2.6.4.dev1}/src/cycodebase/point_spline_squared_distance.cpp +0 -0
- {libigl-2.6.3.dev5 → libigl-2.6.4.dev1}/src/cycodebase/roots.cpp +0 -0
- {libigl-2.6.3.dev5 → libigl-2.6.4.dev1}/src/cycodebase/spline_eytzinger_aabb.cpp +0 -0
- {libigl-2.6.3.dev5 → libigl-2.6.4.dev1}/src/cylinder.cpp +0 -0
- {libigl-2.6.3.dev5 → libigl-2.6.4.dev1}/src/decimate.cpp +0 -0
- {libigl-2.6.3.dev5 → libigl-2.6.4.dev1}/src/dihedral_angles.cpp +0 -0
- {libigl-2.6.3.dev5 → libigl-2.6.4.dev1}/src/dihedral_angles_intrinsic.cpp +0 -0
- {libigl-2.6.3.dev5 → libigl-2.6.4.dev1}/src/dijkstra.cpp +0 -0
- {libigl-2.6.3.dev5 → libigl-2.6.4.dev1}/src/directed_edge_parents.cpp +0 -0
- {libigl-2.6.3.dev5 → libigl-2.6.4.dev1}/src/doublearea.cpp +0 -0
- {libigl-2.6.3.dev5 → libigl-2.6.4.dev1}/src/dual_contouring.cpp +0 -0
- {libigl-2.6.3.dev5 → libigl-2.6.4.dev1}/src/ears.cpp +0 -0
- {libigl-2.6.3.dev5 → libigl-2.6.4.dev1}/src/edge_flaps.cpp +0 -0
- {libigl-2.6.3.dev5 → libigl-2.6.4.dev1}/src/edge_lengths.cpp +0 -0
- {libigl-2.6.3.dev5 → libigl-2.6.4.dev1}/src/edge_topology.cpp +0 -0
- {libigl-2.6.3.dev5 → libigl-2.6.4.dev1}/src/edges.cpp +0 -0
- {libigl-2.6.3.dev5 → libigl-2.6.4.dev1}/src/edges_to_path.cpp +0 -0
- {libigl-2.6.3.dev5 → libigl-2.6.4.dev1}/src/embree/EmbreeIntersector.cpp +0 -0
- {libigl-2.6.3.dev5 → libigl-2.6.4.dev1}/src/embree/ambient_occlusion.cpp +0 -0
- {libigl-2.6.3.dev5 → libigl-2.6.4.dev1}/src/embree/bone_visible.cpp +0 -0
- {libigl-2.6.3.dev5 → libigl-2.6.4.dev1}/src/embree/line_mesh_intersection.cpp +0 -0
- {libigl-2.6.3.dev5 → libigl-2.6.4.dev1}/src/embree/module.cpp +0 -0
- {libigl-2.6.3.dev5 → libigl-2.6.4.dev1}/src/embree/reorient_facets_raycast.cpp +0 -0
- {libigl-2.6.3.dev5 → libigl-2.6.4.dev1}/src/embree/shape_diameter_function.cpp +0 -0
- {libigl-2.6.3.dev5 → libigl-2.6.4.dev1}/src/euler_characteristic.cpp +0 -0
- {libigl-2.6.3.dev5 → libigl-2.6.4.dev1}/src/exact_geodesic.cpp +0 -0
- {libigl-2.6.3.dev5 → libigl-2.6.4.dev1}/src/exterior_edges.cpp +0 -0
- {libigl-2.6.3.dev5 → libigl-2.6.4.dev1}/src/extract_manifold_patches.cpp +0 -0
- {libigl-2.6.3.dev5 → libigl-2.6.4.dev1}/src/face_occurrences.cpp +0 -0
- {libigl-2.6.3.dev5 → libigl-2.6.4.dev1}/src/facet_adjacency_matrix.cpp +0 -0
- {libigl-2.6.3.dev5 → libigl-2.6.4.dev1}/src/facet_components.cpp +0 -0
- {libigl-2.6.3.dev5 → libigl-2.6.4.dev1}/src/false_barycentric_subdivision.cpp +0 -0
- {libigl-2.6.3.dev5 → libigl-2.6.4.dev1}/src/fast_winding_number.cpp +0 -0
- {libigl-2.6.3.dev5 → libigl-2.6.4.dev1}/src/find_cross_field_singularities.cpp +0 -0
- {libigl-2.6.3.dev5 → libigl-2.6.4.dev1}/src/fit_cubic_bezier.cpp +0 -0
- {libigl-2.6.3.dev5 → libigl-2.6.4.dev1}/src/fit_plane.cpp +0 -0
- {libigl-2.6.3.dev5 → libigl-2.6.4.dev1}/src/flipped_triangles.cpp +0 -0
- {libigl-2.6.3.dev5 → libigl-2.6.4.dev1}/src/flood_fill.cpp +0 -0
- {libigl-2.6.3.dev5 → libigl-2.6.4.dev1}/src/gaussian_curvature.cpp +0 -0
- {libigl-2.6.3.dev5 → libigl-2.6.4.dev1}/src/grad.cpp +0 -0
- {libigl-2.6.3.dev5 → libigl-2.6.4.dev1}/src/grid.cpp +0 -0
- {libigl-2.6.3.dev5 → libigl-2.6.4.dev1}/src/harmonic.cpp +0 -0
- {libigl-2.6.3.dev5 → libigl-2.6.4.dev1}/src/hausdorff.cpp +0 -0
- {libigl-2.6.3.dev5 → libigl-2.6.4.dev1}/src/heat_geodesics.cpp +0 -0
- {libigl-2.6.3.dev5 → libigl-2.6.4.dev1}/src/hessian.cpp +0 -0
- {libigl-2.6.3.dev5 → libigl-2.6.4.dev1}/src/hessian_energy.cpp +0 -0
- {libigl-2.6.3.dev5 → libigl-2.6.4.dev1}/src/hsv_to_rgb.cpp +0 -0
- {libigl-2.6.3.dev5 → libigl-2.6.4.dev1}/src/icosahedron.cpp +0 -0
- {libigl-2.6.3.dev5 → libigl-2.6.4.dev1}/src/in_element.cpp +0 -0
- {libigl-2.6.3.dev5 → libigl-2.6.4.dev1}/src/inradius.cpp +0 -0
- {libigl-2.6.3.dev5 → libigl-2.6.4.dev1}/src/internal_angles.cpp +0 -0
- {libigl-2.6.3.dev5 → libigl-2.6.4.dev1}/src/intrinsic_delaunay_cotmatrix.cpp +0 -0
- {libigl-2.6.3.dev5 → libigl-2.6.4.dev1}/src/intrinsic_delaunay_triangulation.cpp +0 -0
- {libigl-2.6.3.dev5 → libigl-2.6.4.dev1}/src/is_border_vertex.cpp +0 -0
- {libigl-2.6.3.dev5 → libigl-2.6.4.dev1}/src/is_boundary_edge.cpp +0 -0
- {libigl-2.6.3.dev5 → libigl-2.6.4.dev1}/src/is_delaunay.cpp +0 -0
- {libigl-2.6.3.dev5 → libigl-2.6.4.dev1}/src/is_edge_manifold.cpp +0 -0
- {libigl-2.6.3.dev5 → libigl-2.6.4.dev1}/src/is_intrinsic_delaunay.cpp +0 -0
- {libigl-2.6.3.dev5 → libigl-2.6.4.dev1}/src/is_irregular_vertex.cpp +0 -0
- {libigl-2.6.3.dev5 → libigl-2.6.4.dev1}/src/is_vertex_manifold.cpp +0 -0
- {libigl-2.6.3.dev5 → libigl-2.6.4.dev1}/src/ismember_rows.cpp +0 -0
- {libigl-2.6.3.dev5 → libigl-2.6.4.dev1}/src/isolines.cpp +0 -0
- {libigl-2.6.3.dev5 → libigl-2.6.4.dev1}/src/isolines_intrinsic.cpp +0 -0
- {libigl-2.6.3.dev5 → libigl-2.6.4.dev1}/src/iterative_closest_point.cpp +0 -0
- {libigl-2.6.3.dev5 → libigl-2.6.4.dev1}/src/kelvinlets.cpp +0 -0
- {libigl-2.6.3.dev5 → libigl-2.6.4.dev1}/src/knn.cpp +0 -0
- {libigl-2.6.3.dev5 → libigl-2.6.4.dev1}/src/lbs_matrix.cpp +0 -0
- {libigl-2.6.3.dev5 → libigl-2.6.4.dev1}/src/lexicographic_triangulation.cpp +0 -0
- {libigl-2.6.3.dev5 → libigl-2.6.4.dev1}/src/lipschitz_octree.cpp +0 -0
- {libigl-2.6.3.dev5 → libigl-2.6.4.dev1}/src/local_basis.cpp +0 -0
- {libigl-2.6.3.dev5 → libigl-2.6.4.dev1}/src/look_at.cpp +0 -0
- {libigl-2.6.3.dev5 → libigl-2.6.4.dev1}/src/loop.cpp +0 -0
- {libigl-2.6.3.dev5 → libigl-2.6.4.dev1}/src/lscm.cpp +0 -0
- {libigl-2.6.3.dev5 → libigl-2.6.4.dev1}/src/map_vertices_to_circle.cpp +0 -0
- {libigl-2.6.3.dev5 → libigl-2.6.4.dev1}/src/marching_cubes.cpp +0 -0
- {libigl-2.6.3.dev5 → libigl-2.6.4.dev1}/src/massmatrix.cpp +0 -0
- {libigl-2.6.3.dev5 → libigl-2.6.4.dev1}/src/massmatrix_intrinsic.cpp +0 -0
- {libigl-2.6.3.dev5 → libigl-2.6.4.dev1}/src/matlab_format.cpp +0 -0
- {libigl-2.6.3.dev5 → libigl-2.6.4.dev1}/src/min_quad_with_fixed.cpp +0 -0
- {libigl-2.6.3.dev5 → libigl-2.6.4.dev1}/src/module.cpp +0 -0
- {libigl-2.6.3.dev5 → libigl-2.6.4.dev1}/src/moments.cpp +0 -0
- {libigl-2.6.3.dev5 → libigl-2.6.4.dev1}/src/mvc.cpp +0 -0
- {libigl-2.6.3.dev5 → libigl-2.6.4.dev1}/src/noop.cpp +0 -0
- {libigl-2.6.3.dev5 → libigl-2.6.4.dev1}/src/octree.cpp +0 -0
- {libigl-2.6.3.dev5 → libigl-2.6.4.dev1}/src/offset_surface.cpp +0 -0
- {libigl-2.6.3.dev5 → libigl-2.6.4.dev1}/src/on_boundary.cpp +0 -0
- {libigl-2.6.3.dev5 → libigl-2.6.4.dev1}/src/orient_halfedges.cpp +0 -0
- {libigl-2.6.3.dev5 → libigl-2.6.4.dev1}/src/orient_outward.cpp +0 -0
- {libigl-2.6.3.dev5 → libigl-2.6.4.dev1}/src/orientable_patches.cpp +0 -0
- {libigl-2.6.3.dev5 → libigl-2.6.4.dev1}/src/oriented_bounding_box.cpp +0 -0
- {libigl-2.6.3.dev5 → libigl-2.6.4.dev1}/src/oriented_facets.cpp +0 -0
- {libigl-2.6.3.dev5 → libigl-2.6.4.dev1}/src/per_corner_normals.cpp +0 -0
- {libigl-2.6.3.dev5 → libigl-2.6.4.dev1}/src/per_edge_normals.cpp +0 -0
- {libigl-2.6.3.dev5 → libigl-2.6.4.dev1}/src/per_vertex_attribute_smoothing.cpp +0 -0
- {libigl-2.6.3.dev5 → libigl-2.6.4.dev1}/src/per_vertex_normals.cpp +0 -0
- {libigl-2.6.3.dev5 → libigl-2.6.4.dev1}/src/point_mesh_squared_distance.cpp +0 -0
- {libigl-2.6.3.dev5 → libigl-2.6.4.dev1}/src/polar_dec.cpp +0 -0
- {libigl-2.6.3.dev5 → libigl-2.6.4.dev1}/src/polar_svd.cpp +0 -0
- {libigl-2.6.3.dev5 → libigl-2.6.4.dev1}/src/polygon_corners.cpp +0 -0
- {libigl-2.6.3.dev5 → libigl-2.6.4.dev1}/src/polygons_to_triangles.cpp +0 -0
- {libigl-2.6.3.dev5 → libigl-2.6.4.dev1}/src/predicates/Orientation.cpp +0 -0
- {libigl-2.6.3.dev5 → libigl-2.6.4.dev1}/src/predicates/cubic_winding_number.cpp +0 -0
- {libigl-2.6.3.dev5 → libigl-2.6.4.dev1}/src/predicates/delaunay_triangulation.cpp +0 -0
- {libigl-2.6.3.dev5 → libigl-2.6.4.dev1}/src/predicates/ear_clipping.cpp +0 -0
- {libigl-2.6.3.dev5 → libigl-2.6.4.dev1}/src/predicates/find_intersections.cpp +0 -0
- {libigl-2.6.3.dev5 → libigl-2.6.4.dev1}/src/predicates/find_self_intersections.cpp +0 -0
- {libigl-2.6.3.dev5 → libigl-2.6.4.dev1}/src/predicates/incircle.cpp +0 -0
- {libigl-2.6.3.dev5 → libigl-2.6.4.dev1}/src/predicates/insphere.cpp +0 -0
- {libigl-2.6.3.dev5 → libigl-2.6.4.dev1}/src/predicates/lexicographic_triangulation.cpp +0 -0
- {libigl-2.6.3.dev5 → libigl-2.6.4.dev1}/src/predicates/module.cpp +0 -0
- {libigl-2.6.3.dev5 → libigl-2.6.4.dev1}/src/predicates/orient2d.cpp +0 -0
- {libigl-2.6.3.dev5 → libigl-2.6.4.dev1}/src/predicates/orient3d.cpp +0 -0
- {libigl-2.6.3.dev5 → libigl-2.6.4.dev1}/src/predicates/point_in_convex_hull.cpp +0 -0
- {libigl-2.6.3.dev5 → libigl-2.6.4.dev1}/src/predicates/point_inside_convex_polygon.cpp +0 -0
- {libigl-2.6.3.dev5 → libigl-2.6.4.dev1}/src/predicates/polygons_to_triangles.cpp +0 -0
- {libigl-2.6.3.dev5 → libigl-2.6.4.dev1}/src/predicates/segment_segment_intersect.cpp +0 -0
- {libigl-2.6.3.dev5 → libigl-2.6.4.dev1}/src/predicates/spline_winding_number.cpp +0 -0
- {libigl-2.6.3.dev5 → libigl-2.6.4.dev1}/src/predicates/triangle_triangle_intersect.cpp +0 -0
- {libigl-2.6.3.dev5 → libigl-2.6.4.dev1}/src/principal_curvature.cpp +0 -0
- {libigl-2.6.3.dev5 → libigl-2.6.4.dev1}/src/procrustes.cpp +0 -0
- {libigl-2.6.3.dev5 → libigl-2.6.4.dev1}/src/project.cpp +0 -0
- {libigl-2.6.3.dev5 → libigl-2.6.4.dev1}/src/project_to_line.cpp +0 -0
- {libigl-2.6.3.dev5 → libigl-2.6.4.dev1}/src/project_to_line_segment.cpp +0 -0
- {libigl-2.6.3.dev5 → libigl-2.6.4.dev1}/src/pseudonormal_test.cpp +0 -0
- {libigl-2.6.3.dev5 → libigl-2.6.4.dev1}/src/qslim.cpp +0 -0
- {libigl-2.6.3.dev5 → libigl-2.6.4.dev1}/src/quad_grid.cpp +0 -0
- {libigl-2.6.3.dev5 → libigl-2.6.4.dev1}/src/random_dir.cpp +0 -0
- {libigl-2.6.3.dev5 → libigl-2.6.4.dev1}/src/random_points_on_mesh.cpp +0 -0
- {libigl-2.6.3.dev5 → libigl-2.6.4.dev1}/src/ray_mesh_intersect.cpp +0 -0
- {libigl-2.6.3.dev5 → libigl-2.6.4.dev1}/src/ray_sphere_intersect.cpp +0 -0
- {libigl-2.6.3.dev5 → libigl-2.6.4.dev1}/src/ray_triangle_intersect.cpp +0 -0
- {libigl-2.6.3.dev5 → libigl-2.6.4.dev1}/src/readCSV.cpp +0 -0
- {libigl-2.6.3.dev5 → libigl-2.6.4.dev1}/src/readDMAT.cpp +0 -0
- {libigl-2.6.3.dev5 → libigl-2.6.4.dev1}/src/readMESH.cpp +0 -0
- {libigl-2.6.3.dev5 → libigl-2.6.4.dev1}/src/readMSH.cpp +0 -0
- {libigl-2.6.3.dev5 → libigl-2.6.4.dev1}/src/readOBJ.cpp +0 -0
- {libigl-2.6.3.dev5 → libigl-2.6.4.dev1}/src/readOFF.cpp +0 -0
- {libigl-2.6.3.dev5 → libigl-2.6.4.dev1}/src/readSTL.cpp +0 -0
- {libigl-2.6.3.dev5 → libigl-2.6.4.dev1}/src/read_triangle_mesh.cpp +0 -0
- {libigl-2.6.3.dev5 → libigl-2.6.4.dev1}/src/remove_duplicate_vertices.cpp +0 -0
- {libigl-2.6.3.dev5 → libigl-2.6.4.dev1}/src/remove_unreferenced.cpp +0 -0
- {libigl-2.6.3.dev5 → libigl-2.6.4.dev1}/src/resolve_duplicated_faces.cpp +0 -0
- {libigl-2.6.3.dev5 → libigl-2.6.4.dev1}/src/rgb_to_hsv.cpp +0 -0
- {libigl-2.6.3.dev5 → libigl-2.6.4.dev1}/src/rigid_alignment.cpp +0 -0
- {libigl-2.6.3.dev5 → libigl-2.6.4.dev1}/src/rotate_vectors.cpp +0 -0
- {libigl-2.6.3.dev5 → libigl-2.6.4.dev1}/src/rotation_matrix_from_directions.cpp +0 -0
- {libigl-2.6.3.dev5 → libigl-2.6.4.dev1}/src/sample_edges.cpp +0 -0
- {libigl-2.6.3.dev5 → libigl-2.6.4.dev1}/src/segment_segment_intersect.cpp +0 -0
- {libigl-2.6.3.dev5 → libigl-2.6.4.dev1}/src/sharp_edges.cpp +0 -0
- {libigl-2.6.3.dev5 → libigl-2.6.4.dev1}/src/signed_angle.cpp +0 -0
- {libigl-2.6.3.dev5 → libigl-2.6.4.dev1}/src/signed_distance.cpp +0 -0
- {libigl-2.6.3.dev5 → libigl-2.6.4.dev1}/src/slim.cpp +0 -0
- {libigl-2.6.3.dev5 → libigl-2.6.4.dev1}/src/snap_points.cpp +0 -0
- {libigl-2.6.3.dev5 → libigl-2.6.4.dev1}/src/solid_angle.cpp +0 -0
- {libigl-2.6.3.dev5 → libigl-2.6.4.dev1}/src/sparse_map_noop.cpp +0 -0
- {libigl-2.6.3.dev5 → libigl-2.6.4.dev1}/src/sparse_map_shape.cpp +0 -0
- {libigl-2.6.3.dev5 → libigl-2.6.4.dev1}/src/sparse_noop.cpp +0 -0
- {libigl-2.6.3.dev5 → libigl-2.6.4.dev1}/src/sparse_shape.cpp +0 -0
- {libigl-2.6.3.dev5 → libigl-2.6.4.dev1}/src/spectra/EigsType.cpp +0 -0
- {libigl-2.6.3.dev5 → libigl-2.6.4.dev1}/src/spectra/eigs.cpp +0 -0
- {libigl-2.6.3.dev5 → libigl-2.6.4.dev1}/src/spectra/lscm.cpp +0 -0
- {libigl-2.6.3.dev5 → libigl-2.6.4.dev1}/src/spectra/module.cpp +0 -0
- {libigl-2.6.3.dev5 → libigl-2.6.4.dev1}/src/split_nonmanifold.cpp +0 -0
- {libigl-2.6.3.dev5 → libigl-2.6.4.dev1}/src/squared_edge_lengths.cpp +0 -0
- {libigl-2.6.3.dev5 → libigl-2.6.4.dev1}/src/super_fibonacci.cpp +0 -0
- {libigl-2.6.3.dev5 → libigl-2.6.4.dev1}/src/swept_volume.cpp +0 -0
- {libigl-2.6.3.dev5 → libigl-2.6.4.dev1}/src/swept_volume_bounding_box.cpp +0 -0
- {libigl-2.6.3.dev5 → libigl-2.6.4.dev1}/src/swept_volume_signed_distance.cpp +0 -0
- {libigl-2.6.3.dev5 → libigl-2.6.4.dev1}/src/tet_tet_adjacency.cpp +0 -0
- {libigl-2.6.3.dev5 → libigl-2.6.4.dev1}/src/tri_tri_intersect.cpp +0 -0
- {libigl-2.6.3.dev5 → libigl-2.6.4.dev1}/src/triangle/cdt.cpp +0 -0
- {libigl-2.6.3.dev5 → libigl-2.6.4.dev1}/src/triangle/module.cpp +0 -0
- {libigl-2.6.3.dev5 → libigl-2.6.4.dev1}/src/triangle/refine.cpp +0 -0
- {libigl-2.6.3.dev5 → libigl-2.6.4.dev1}/src/triangle/scaf.cpp +0 -0
- {libigl-2.6.3.dev5 → libigl-2.6.4.dev1}/src/triangle/triangulate.cpp +0 -0
- {libigl-2.6.3.dev5 → libigl-2.6.4.dev1}/src/triangle_fan.cpp +0 -0
- {libigl-2.6.3.dev5 → libigl-2.6.4.dev1}/src/triangle_triangle_adjacency.cpp +0 -0
- {libigl-2.6.3.dev5 → libigl-2.6.4.dev1}/src/triangulated_grid.cpp +0 -0
- {libigl-2.6.3.dev5 → libigl-2.6.4.dev1}/src/turning_number.cpp +0 -0
- {libigl-2.6.3.dev5 → libigl-2.6.4.dev1}/src/uniformly_sample_two_manifold.cpp +0 -0
- {libigl-2.6.3.dev5 → libigl-2.6.4.dev1}/src/unique_edge_map.cpp +0 -0
- {libigl-2.6.3.dev5 → libigl-2.6.4.dev1}/src/unique_simplices.cpp +0 -0
- {libigl-2.6.3.dev5 → libigl-2.6.4.dev1}/src/unique_sparse_voxel_corners.cpp +0 -0
- {libigl-2.6.3.dev5 → libigl-2.6.4.dev1}/src/unproject.cpp +0 -0
- {libigl-2.6.3.dev5 → libigl-2.6.4.dev1}/src/upsample.cpp +0 -0
- {libigl-2.6.3.dev5 → libigl-2.6.4.dev1}/src/vector_area_matrix.cpp +0 -0
- {libigl-2.6.3.dev5 → libigl-2.6.4.dev1}/src/vertex_components.cpp +0 -0
- {libigl-2.6.3.dev5 → libigl-2.6.4.dev1}/src/vertex_triangle_adjacency.cpp +0 -0
- {libigl-2.6.3.dev5 → libigl-2.6.4.dev1}/src/volume.cpp +0 -0
- {libigl-2.6.3.dev5 → libigl-2.6.4.dev1}/src/voronoi_mass.cpp +0 -0
- {libigl-2.6.3.dev5 → libigl-2.6.4.dev1}/src/voxel_grid.cpp +0 -0
- {libigl-2.6.3.dev5 → libigl-2.6.4.dev1}/src/winding_number.cpp +0 -0
- {libigl-2.6.3.dev5 → libigl-2.6.4.dev1}/src/writeDMAT.cpp +0 -0
- {libigl-2.6.3.dev5 → libigl-2.6.4.dev1}/src/writeMESH.cpp +0 -0
- {libigl-2.6.3.dev5 → libigl-2.6.4.dev1}/src/writeMSH.cpp +0 -0
- {libigl-2.6.3.dev5 → libigl-2.6.4.dev1}/src/writeOBJ.cpp +0 -0
- {libigl-2.6.3.dev5 → libigl-2.6.4.dev1}/src/writeOFF.cpp +0 -0
- {libigl-2.6.3.dev5 → libigl-2.6.4.dev1}/src/writePLY.cpp +0 -0
- {libigl-2.6.3.dev5 → libigl-2.6.4.dev1}/src/writeSTL.cpp +0 -0
- {libigl-2.6.3.dev5 → libigl-2.6.4.dev1}/src/write_triangle_mesh.cpp +0 -0
- {libigl-2.6.3.dev5 → libigl-2.6.4.dev1}/tutorial/contributing.md +0 -0
- {libigl-2.6.3.dev5 → libigl-2.6.4.dev1}/tutorial/exporter.py +0 -0
- {libigl-2.6.3.dev5 → libigl-2.6.4.dev1}/tutorial/igl_docs.md +0 -0
- {libigl-2.6.3.dev5 → libigl-2.6.4.dev1}/tutorial/images/102_DrawMesh.png +0 -0
- {libigl-2.6.3.dev5 → libigl-2.6.4.dev1}/tutorial/images/104_Colors.png +0 -0
- {libigl-2.6.3.dev5 → libigl-2.6.4.dev1}/tutorial/images/105_Overlays.png +0 -0
- {libigl-2.6.3.dev5 → libigl-2.6.4.dev1}/tutorial/images/106_ViewerMenu.png +0 -0
- {libigl-2.6.3.dev5 → libigl-2.6.4.dev1}/tutorial/images/501_HarmonicParam.png +0 -0
- {libigl-2.6.3.dev5 → libigl-2.6.4.dev1}/tutorial/images/502_LSCMParam.png +0 -0
- {libigl-2.6.3.dev5 → libigl-2.6.4.dev1}/tutorial/images/503_ARAPParam.png +0 -0
- {libigl-2.6.3.dev5 → libigl-2.6.4.dev1}/tutorial/images/504_nrosy_field.png +0 -0
- {libigl-2.6.3.dev5 → libigl-2.6.4.dev1}/tutorial/images/504_vector_field.png +0 -0
- {libigl-2.6.3.dev5 → libigl-2.6.4.dev1}/tutorial/images/505_MIQ_1.png +0 -0
- {libigl-2.6.3.dev5 → libigl-2.6.4.dev1}/tutorial/images/505_MIQ_2.png +0 -0
- {libigl-2.6.3.dev5 → libigl-2.6.4.dev1}/tutorial/images/505_MIQ_3.png +0 -0
- {libigl-2.6.3.dev5 → libigl-2.6.4.dev1}/tutorial/images/505_MIQ_4.png +0 -0
- {libigl-2.6.3.dev5 → libigl-2.6.4.dev1}/tutorial/images/505_MIQ_5.png +0 -0
- {libigl-2.6.3.dev5 → libigl-2.6.4.dev1}/tutorial/images/505_MIQ_6.png +0 -0
- {libigl-2.6.3.dev5 → libigl-2.6.4.dev1}/tutorial/images/505_MIQ_7.png +0 -0
- {libigl-2.6.3.dev5 → libigl-2.6.4.dev1}/tutorial/images/505_MIQ_8.png +0 -0
- {libigl-2.6.3.dev5 → libigl-2.6.4.dev1}/tutorial/images/506_FrameField_1.png +0 -0
- {libigl-2.6.3.dev5 → libigl-2.6.4.dev1}/tutorial/images/506_FrameField_2.png +0 -0
- {libigl-2.6.3.dev5 → libigl-2.6.4.dev1}/tutorial/images/506_FrameField_3.png +0 -0
- {libigl-2.6.3.dev5 → libigl-2.6.4.dev1}/tutorial/images/506_FrameField_4.png +0 -0
- {libigl-2.6.3.dev5 → libigl-2.6.4.dev1}/tutorial/images/507_PolyVectorField.png +0 -0
- {libigl-2.6.3.dev5 → libigl-2.6.4.dev1}/tutorial/images/508_ConjugateField.png +0 -0
- {libigl-2.6.3.dev5 → libigl-2.6.4.dev1}/tutorial/images/509_Planarization.png +0 -0
- {libigl-2.6.3.dev5 → libigl-2.6.4.dev1}/tutorial/images/510_Integrable.png +0 -0
- {libigl-2.6.3.dev5 → libigl-2.6.4.dev1}/tutorial/images/511_PolyVectorFieldGeneral.png +0 -0
- {libigl-2.6.3.dev5 → libigl-2.6.4.dev1}/tutorial/images/602_Matlab_1.png +0 -0
- {libigl-2.6.3.dev5 → libigl-2.6.4.dev1}/tutorial/images/602_Matlab_2.png +0 -0
- {libigl-2.6.3.dev5 → libigl-2.6.4.dev1}/tutorial/images/604_Triangle.png +0 -0
- {libigl-2.6.3.dev5 → libigl-2.6.4.dev1}/tutorial/images/605_Tetgen.png +0 -0
- {libigl-2.6.3.dev5 → libigl-2.6.4.dev1}/tutorial/images/606_AmbientOcclusion.png +0 -0
- {libigl-2.6.3.dev5 → libigl-2.6.4.dev1}/tutorial/images/607_Picking.png +0 -0
- {libigl-2.6.3.dev5 → libigl-2.6.4.dev1}/tutorial/images/608_LIM.png +0 -0
- {libigl-2.6.3.dev5 → libigl-2.6.4.dev1}/tutorial/images/712_beetles.jpg +0 -0
- {libigl-2.6.3.dev5 → libigl-2.6.4.dev1}/tutorial/images/713_ShapeUp.png +0 -0
- {libigl-2.6.3.dev5 → libigl-2.6.4.dev1}/tutorial/images/VF.pdf +0 -0
- {libigl-2.6.3.dev5 → libigl-2.6.4.dev1}/tutorial/images/VF.png +0 -0
- {libigl-2.6.3.dev5 → libigl-2.6.4.dev1}/tutorial/images/arm-dqs.jpg +0 -0
- {libigl-2.6.3.dev5 → libigl-2.6.4.dev1}/tutorial/images/armadillo-fast.jpg +0 -0
- {libigl-2.6.3.dev5 → libigl-2.6.4.dev1}/tutorial/images/armadillo-marching-cubes.jpg +0 -0
- {libigl-2.6.3.dev5 → libigl-2.6.4.dev1}/tutorial/images/background.gif +0 -0
- {libigl-2.6.3.dev5 → libigl-2.6.4.dev1}/tutorial/images/beetle-eigen-decomposition.gif +0 -0
- {libigl-2.6.3.dev5 → libigl-2.6.4.dev1}/tutorial/images/big-sigcat-winding-number.gif +0 -0
- {libigl-2.6.3.dev5 → libigl-2.6.4.dev1}/tutorial/images/bump-k-harmonic.jpg +0 -0
- {libigl-2.6.3.dev5 → libigl-2.6.4.dev1}/tutorial/images/bumpy-gaussian-curvature.jpg +0 -0
- {libigl-2.6.3.dev5 → libigl-2.6.4.dev1}/tutorial/images/bunny-signed-distance.gif +0 -0
- {libigl-2.6.3.dev5 → libigl-2.6.4.dev1}/tutorial/images/bunny-swept-volume.gif +0 -0
- {libigl-2.6.3.dev5 → libigl-2.6.4.dev1}/tutorial/images/camelhead-laplace-equation.jpg +0 -0
- {libigl-2.6.3.dev5 → libigl-2.6.4.dev1}/tutorial/images/cheburashka-biharmonic-leq.jpg +0 -0
- {libigl-2.6.3.dev5 → libigl-2.6.4.dev1}/tutorial/images/cheburashka-gradient.jpg +0 -0
- {libigl-2.6.3.dev5 → libigl-2.6.4.dev1}/tutorial/images/cheburashka-knight-boolean.jpg +0 -0
- {libigl-2.6.3.dev5 → libigl-2.6.4.dev1}/tutorial/images/cheburashka-multiscale-biharmonic-kernels.jpg +0 -0
- {libigl-2.6.3.dev5 → libigl-2.6.4.dev1}/tutorial/images/cow-curvature-flow.jpg +0 -0
- {libigl-2.6.3.dev5 → libigl-2.6.4.dev1}/tutorial/images/cube-sphere-cylinders-csg-tree.jpg +0 -0
- {libigl-2.6.3.dev5 → libigl-2.6.4.dev1}/tutorial/images/cube-sphere-cylinders-csg.gif +0 -0
- {libigl-2.6.3.dev5 → libigl-2.6.4.dev1}/tutorial/images/decimated-knight-arap.jpg +0 -0
- {libigl-2.6.3.dev5 → libigl-2.6.4.dev1}/tutorial/images/decimated-knight-slice-color.jpg +0 -0
- {libigl-2.6.3.dev5 → libigl-2.6.4.dev1}/tutorial/images/decimated-knight-sort-color.jpg +0 -0
- {libigl-2.6.3.dev5 → libigl-2.6.4.dev1}/tutorial/images/decimated-knight-subdivision.gif +0 -0
- {libigl-2.6.3.dev5 → libigl-2.6.4.dev1}/tutorial/images/edge-collapse.jpg +0 -0
- {libigl-2.6.3.dev5 → libigl-2.6.4.dev1}/tutorial/images/edge-collapse.pdf +0 -0
- {libigl-2.6.3.dev5 → libigl-2.6.4.dev1}/tutorial/images/fandisk-normals.jpg +0 -0
- {libigl-2.6.3.dev5 → libigl-2.6.4.dev1}/tutorial/images/fertility-edge-collapse.gif +0 -0
- {libigl-2.6.3.dev5 → libigl-2.6.4.dev1}/tutorial/images/fertility-principal-curvature.jpg +0 -0
- {libigl-2.6.3.dev5 → libigl-2.6.4.dev1}/tutorial/images/geodesicdistance.jpg +0 -0
- {libigl-2.6.3.dev5 → libigl-2.6.4.dev1}/tutorial/images/hand-bbw.jpg +0 -0
- {libigl-2.6.3.dev5 → libigl-2.6.4.dev1}/tutorial/images/hat-function.jpg +0 -0
- {libigl-2.6.3.dev5 → libigl-2.6.4.dev1}/tutorial/images/heat-geodesic-beetle.gif +0 -0
- {libigl-2.6.3.dev5 → libigl-2.6.4.dev1}/tutorial/images/heat-geodesic-peaks.png +0 -0
- {libigl-2.6.3.dev5 → libigl-2.6.4.dev1}/tutorial/images/libigl-logo.jpg +0 -0
- {libigl-2.6.3.dev5 → libigl-2.6.4.dev1}/tutorial/images/max-biharmonic.jpg +0 -0
- {libigl-2.6.3.dev5 → libigl-2.6.4.dev1}/tutorial/images/multiple-meshes.png +0 -0
- {libigl-2.6.3.dev5 → libigl-2.6.4.dev1}/tutorial/images/octopus-biharmonic-coordinates-physics.gif +0 -0
- {libigl-2.6.3.dev5 → libigl-2.6.4.dev1}/tutorial/images/simplicial_complex_augmentation_framework.png +0 -0
- {libigl-2.6.3.dev5 → libigl-2.6.4.dev1}/tutorial/images/slim.png +0 -0
- {libigl-2.6.3.dev5 → libigl-2.6.4.dev1}/tutorial/images/streamlines.jpg +0 -0
- {libigl-2.6.3.dev5 → libigl-2.6.4.dev1}/tutorial/images/truck-facet-orientation.jpg +0 -0
- {libigl-2.6.3.dev5 → libigl-2.6.4.dev1}/tutorial/index.md +0 -0
- {libigl-2.6.3.dev5 → libigl-2.6.4.dev1}/tutorial/marching_cubes.py +0 -0
- {libigl-2.6.3.dev5 → libigl-2.6.4.dev1}/tutorial/plot_to_md.py +0 -0
- {libigl-2.6.3.dev5 → libigl-2.6.4.dev1}/tutorial/tut-chapter0.ipynb +0 -0
- {libigl-2.6.3.dev5 → libigl-2.6.4.dev1}/tutorial/tut-chapter1.ipynb +0 -0
- {libigl-2.6.3.dev5 → libigl-2.6.4.dev1}/tutorial/tut-chapter2.ipynb +0 -0
- {libigl-2.6.3.dev5 → libigl-2.6.4.dev1}/tutorial/tut-chapter3.ipynb +0 -0
- {libigl-2.6.3.dev5 → libigl-2.6.4.dev1}/tutorial/tut-chapter4.ipynb +0 -0
- {libigl-2.6.3.dev5 → libigl-2.6.4.dev1}/tutorial/tut-chapter5.ipynb +0 -0
- {libigl-2.6.3.dev5 → libigl-2.6.4.dev1}/tutorial/tut-chapter6.ipynb +0 -0
- {libigl-2.6.3.dev5 → libigl-2.6.4.dev1}/tutorial/tut-chapter7.ipynb +0 -0
- {libigl-2.6.3.dev5 → libigl-2.6.4.dev1}/tutorial/tutorials.ipynb +0 -0
|
@@ -25,26 +25,37 @@ jobs:
|
|
|
25
25
|
|
|
26
26
|
build_wheels:
|
|
27
27
|
runs-on: ${{ matrix.os }}
|
|
28
|
+
# windows-11-arm is newly added; its native toolchain may not build every
|
|
29
|
+
# dependency yet (embree / predicates use x86 SIMD), so don't let that leg
|
|
30
|
+
# block a release if it fails.
|
|
31
|
+
continue-on-error: ${{ matrix.os == 'windows-11-arm' }}
|
|
28
32
|
strategy:
|
|
29
33
|
fail-fast: false
|
|
34
|
+
# One runner per *native* target architecture; cibuildwheel builds the
|
|
35
|
+
# runner's native arch by default. Do NOT reintroduce a cross `arch`
|
|
36
|
+
# dimension: previously `arch: arm64` on the x86 ubuntu-24.04 / windows-latest
|
|
37
|
+
# runners silently built x86_64 / amd64 wheels (only CIBW_ARCHS_MACOS was
|
|
38
|
+
# wired up), producing duplicate wheels that collided during the release
|
|
39
|
+
# artifact download and left win_arm64 uncovered.
|
|
30
40
|
matrix:
|
|
31
|
-
os: [ubuntu-24.04, ubuntu-24.04-arm, macos-latest, macos-15-intel, windows-latest]
|
|
32
|
-
|
|
33
|
-
pybuilds: [cp38, cp39, cp310, cp311, cp312] # Define pybuilds at the top level
|
|
41
|
+
os: [ubuntu-24.04, ubuntu-24.04-arm, macos-latest, macos-15-intel, windows-latest, windows-11-arm]
|
|
42
|
+
pybuilds: [cp38, cp39, cp310, cp311, cp312]
|
|
34
43
|
exclude:
|
|
35
|
-
|
|
36
|
-
arch: x86_64 # Exclude x86_64 on ARM
|
|
44
|
+
# No macOS CPython 3.8 wheels are shipped.
|
|
37
45
|
- os: macos-latest
|
|
38
|
-
arch: x86_64 # Exclude x86_64 explicitly
|
|
39
|
-
- os: macos-latest # Exclude cp38
|
|
40
46
|
pybuilds: cp38
|
|
41
47
|
- os: macos-15-intel
|
|
42
|
-
arch: arm64 # Exclude arm64 on macOS 13
|
|
43
|
-
- os: macos-15-intel
|
|
44
48
|
pybuilds: cp38
|
|
49
|
+
# Windows on ARM64 has official CPython only for 3.11+.
|
|
50
|
+
- os: windows-11-arm
|
|
51
|
+
pybuilds: cp38
|
|
52
|
+
- os: windows-11-arm
|
|
53
|
+
pybuilds: cp39
|
|
54
|
+
- os: windows-11-arm
|
|
55
|
+
pybuilds: cp310
|
|
45
56
|
|
|
46
57
|
name: >
|
|
47
|
-
${{ matrix.pybuilds }} ${{ matrix.os }}
|
|
58
|
+
${{ matrix.pybuilds }} ${{ matrix.os }}
|
|
48
59
|
|
|
49
60
|
steps:
|
|
50
61
|
- uses: actions/checkout@v4
|
|
@@ -59,15 +70,21 @@ jobs:
|
|
|
59
70
|
CIBW_ENVIRONMENT_LINUX: "CC=clang CXX=clang++"
|
|
60
71
|
CIBW_MANYLINUX_X86_64_IMAGE: "manylinux_2_28"
|
|
61
72
|
CIBW_MANYLINUX_AARCH64_IMAGE: "manylinux_2_28"
|
|
62
|
-
CIBW_BUILD: "${{ matrix.pybuilds }}-*"
|
|
63
|
-
|
|
73
|
+
CIBW_BUILD: "${{ matrix.pybuilds }}-*"
|
|
74
|
+
# No CIBW_ARCHS_* override: each runner builds its native architecture.
|
|
64
75
|
CIBW_SKIP: "cp*-manylinux_i686 cp*-musllinux* cp*-win32"
|
|
76
|
+
# embree only enables its NEON (sse2neon) path when its build detects an
|
|
77
|
+
# ARM target; on Windows/MSVC-ARM64 that detection falls back to SSE2 and
|
|
78
|
+
# fails to compile (x86 immintrin.h). Drop embree on win_arm64 (the
|
|
79
|
+
# igl.embree submodule is simply absent from that wheel).
|
|
80
|
+
CIBW_ENVIRONMENT_WINDOWS: ${{ matrix.os == 'windows-11-arm' && 'CMAKE_ARGS=-DLIBIGL_EMBREE=OFF' || '' }}
|
|
65
81
|
- name: Upload Artifact
|
|
66
82
|
uses: actions/upload-artifact@v4
|
|
67
83
|
continue-on-error: true # Important: Continue if upload fails
|
|
68
84
|
with:
|
|
69
|
-
#
|
|
70
|
-
|
|
85
|
+
# Unique per (os, python); one native arch per runner so wheel
|
|
86
|
+
# filenames never collide when the release job merges artifacts.
|
|
87
|
+
name: wheels-${{ matrix.os }}-${{ matrix.pybuilds }}
|
|
71
88
|
path: ./wheelhouse/*.whl
|
|
72
89
|
if-no-files-found: error # Fail if no wheels are found
|
|
73
90
|
compression-level: 6
|
|
@@ -171,6 +188,9 @@ jobs:
|
|
|
171
188
|
name: ${{ needs.check_version.outputs.version }}
|
|
172
189
|
prerelease: ${{ needs.check_version.outputs.prerelease }}
|
|
173
190
|
allowUpdates: true
|
|
191
|
+
# Auto-populate the release body with the merged PRs since the
|
|
192
|
+
# previous tag (curated highlights live in CHANGELOG.md).
|
|
193
|
+
generateReleaseNotes: true
|
|
174
194
|
artifacts: "./artifacts/**/*"
|
|
175
195
|
token: ${{ secrets.GITHUB_TOKEN }}
|
|
176
196
|
- name: Publish to PyPI
|
|
@@ -0,0 +1,70 @@
|
|
|
1
|
+
# Changelog
|
|
2
|
+
|
|
3
|
+
All notable, user-facing changes to the `libigl` Python bindings are recorded
|
|
4
|
+
here. The project loosely follows [Semantic Versioning](https://semver.org) and
|
|
5
|
+
version numbers match the [PyPI releases](https://pypi.org/project/libigl/#history).
|
|
6
|
+
|
|
7
|
+
> Historical note: releases up to and including 2.6.2 were published to PyPI
|
|
8
|
+
> without matching git tags or GitHub releases (see #235). Starting with 2.6.3,
|
|
9
|
+
> pushing a version bump to `main` automatically creates the git tag, the GitHub
|
|
10
|
+
> release, and the PyPI upload together (#313). The 2.6.3 section below therefore
|
|
11
|
+
> folds in changes first shipped in the tag-less interim 2.6.2 release, i.e. it
|
|
12
|
+
> covers everything since the last tagged release, 2.6.1.
|
|
13
|
+
|
|
14
|
+
## 2.6.3 — 2026-08-31
|
|
15
|
+
|
|
16
|
+
### Added
|
|
17
|
+
|
|
18
|
+
New function bindings:
|
|
19
|
+
|
|
20
|
+
- **Distances & closest points:** `simplex_simplex_squared_distance`,
|
|
21
|
+
`point_simplex_squared_distance`, `offset_surface`.
|
|
22
|
+
- **Rotations / ARAP:** `polar_svd3x3`, `fit_rotations`.
|
|
23
|
+
- **Quad meshes:** `quad_planarity`, `planarize_quad_mesh`, `quad_edges`.
|
|
24
|
+
- **Curves & mesh topology:** `ramer_douglas_peucker`, `path_to_edges`,
|
|
25
|
+
`connect_boundary_to_infinity`, `smooth_corner_adjacency`,
|
|
26
|
+
`per_face_normals_stable`, `resolve_duplicated_faces`, `vertex_components`,
|
|
27
|
+
`is_vertex_manifold`, `is_intrinsic_delaunay`.
|
|
28
|
+
- **Remeshing:** `triangle.remesh_at_points`.
|
|
29
|
+
- **Winding numbers & distance fields:** `swept_volume`,
|
|
30
|
+
`swept_volume_bounding_box`, `swept_volume_signed_distance`,
|
|
31
|
+
point-cloud and pre-built-tree support for `fast_winding_number`,
|
|
32
|
+
`lipschitz_octree`, `unique_sparse_voxel_corners`, and an edge→vertex (`E2V`)
|
|
33
|
+
output for sparse `marching_cubes`.
|
|
34
|
+
- **Ambient occlusion:** core `ambient_occlusion` binding.
|
|
35
|
+
- **Solvers & energies:** `active_set`, `boundary_conditions`,
|
|
36
|
+
`harmonic_integrated_from_laplacian_and_mass`, Hessian and Hessian-energy
|
|
37
|
+
operators, and cross-field bindings.
|
|
38
|
+
- **Bounding boxes:** oriented-bounding-box functions, `bounding_box_diagonal`.
|
|
39
|
+
- **Curves & predicates:** cubic Bézier evaluation and roots, additional
|
|
40
|
+
`igl::predicates` bindings, `igl::spectra` bindings, and
|
|
41
|
+
`lexicographic_triangulation`.
|
|
42
|
+
- **Misc:** `centroid`, a `face_areas` overload taking intrinsic edge lengths,
|
|
43
|
+
and an optional `seed` parameter for `random_points_on_mesh`.
|
|
44
|
+
|
|
45
|
+
### Changed
|
|
46
|
+
|
|
47
|
+
- Bumped the bundled libigl to
|
|
48
|
+
[`f68f01c2`](https://github.com/libigl/libigl/commit/f68f01c23ac82351e2543ce8c529b6d4c89fdf16).
|
|
49
|
+
- `cycodebase` distance queries can now reuse a prebuilt AABB tree / precomputed
|
|
50
|
+
bases for fast repeated queries.
|
|
51
|
+
- Releases are now cut by pushing a version bump to `main`, which tags the
|
|
52
|
+
commit and creates the GitHub release and PyPI upload in one step (#313).
|
|
53
|
+
|
|
54
|
+
### Packaging / CI
|
|
55
|
+
|
|
56
|
+
- Added CPython 3.13 wheels.
|
|
57
|
+
- Switched the Linux CI builds to Clang to fix a 2.6.1 performance regression.
|
|
58
|
+
- Bumped `pypa/gh-action-pypi-publish` to 1.13.0.
|
|
59
|
+
|
|
60
|
+
## 2.6.2 — PyPI only
|
|
61
|
+
|
|
62
|
+
Interim release published to PyPI on 2025 without a git tag or GitHub release.
|
|
63
|
+
Its changes are folded into the 2.6.3 entry above.
|
|
64
|
+
|
|
65
|
+
## 2.6.1 — 2025-05-15
|
|
66
|
+
|
|
67
|
+
Last release before this changelog was introduced. See the
|
|
68
|
+
[git history](https://github.com/libigl/libigl-python-bindings/commits/2.6.1)
|
|
69
|
+
and the [PyPI release history](https://pypi.org/project/libigl/#history) for
|
|
70
|
+
earlier changes.
|
|
@@ -60,7 +60,9 @@ option(LIBIGL_CYCODEBASE "Build igl::cycodebase bindings" ON)
|
|
|
60
60
|
FetchContent_Declare(
|
|
61
61
|
libigl
|
|
62
62
|
GIT_REPOSITORY https://github.com/libigl/libigl.git
|
|
63
|
-
|
|
63
|
+
# libigl main, including igl::lazy_cage and core igl::progressive_hulls (moved
|
|
64
|
+
# to core in libigl PR #2558).
|
|
65
|
+
GIT_TAG c07f8586733378c163aae57f08c9da2ce5352fb9
|
|
64
66
|
)
|
|
65
67
|
FetchContent_MakeAvailable(libigl)
|
|
66
68
|
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.1
|
|
2
2
|
Name: libigl
|
|
3
|
-
Version: 2.6.
|
|
3
|
+
Version: 2.6.4.dev1
|
|
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)
|
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
#include "default_types.h"
|
|
2
|
+
#include <igl/lazy_cage.h>
|
|
3
|
+
#include <nanobind/nanobind.h>
|
|
4
|
+
|
|
5
|
+
namespace nb = nanobind;
|
|
6
|
+
using namespace nb::literals;
|
|
7
|
+
|
|
8
|
+
void bind_LazyCageDistance(nb::module_ &m)
|
|
9
|
+
{
|
|
10
|
+
nb::enum_<igl::LazyCageDistance>(m, "LazyCageDistance")
|
|
11
|
+
.value("LAZY_CAGE_DISTANCE_SIGNED", igl::LAZY_CAGE_DISTANCE_SIGNED)
|
|
12
|
+
.value("LAZY_CAGE_DISTANCE_UNSIGNED", igl::LAZY_CAGE_DISTANCE_UNSIGNED)
|
|
13
|
+
.value("NUM_LAZY_CAGE_DISTANCE", igl::NUM_LAZY_CAGE_DISTANCE)
|
|
14
|
+
.export_values()
|
|
15
|
+
;
|
|
16
|
+
}
|
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
#include "default_types.h"
|
|
2
|
+
#include <igl/lazy_cage.h>
|
|
3
|
+
#include <nanobind/nanobind.h>
|
|
4
|
+
|
|
5
|
+
namespace nb = nanobind;
|
|
6
|
+
using namespace nb::literals;
|
|
7
|
+
|
|
8
|
+
void bind_LazyCageGridMode(nb::module_ &m)
|
|
9
|
+
{
|
|
10
|
+
nb::enum_<igl::LazyCageGridMode>(m, "LazyCageGridMode")
|
|
11
|
+
.value("LAZY_CAGE_GRID_DENSE", igl::LAZY_CAGE_GRID_DENSE)
|
|
12
|
+
.value("LAZY_CAGE_GRID_SPARSE", igl::LAZY_CAGE_GRID_SPARSE)
|
|
13
|
+
.value("NUM_LAZY_CAGE_GRID_MODE", igl::NUM_LAZY_CAGE_GRID_MODE)
|
|
14
|
+
.export_values()
|
|
15
|
+
;
|
|
16
|
+
}
|
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
#include "default_types.h"
|
|
2
|
+
#include <igl/lazy_cage.h>
|
|
3
|
+
#include <nanobind/nanobind.h>
|
|
4
|
+
|
|
5
|
+
namespace nb = nanobind;
|
|
6
|
+
using namespace nb::literals;
|
|
7
|
+
|
|
8
|
+
void bind_LazyCageMetric(nb::module_ &m)
|
|
9
|
+
{
|
|
10
|
+
nb::enum_<igl::LazyCageMetric>(m, "LazyCageMetric")
|
|
11
|
+
.value("LAZY_CAGE_METRIC_SIGMA", igl::LAZY_CAGE_METRIC_SIGMA)
|
|
12
|
+
.value("LAZY_CAGE_METRIC_VOLUME", igl::LAZY_CAGE_METRIC_VOLUME)
|
|
13
|
+
.value("LAZY_CAGE_METRIC_SURFACE_AREA", igl::LAZY_CAGE_METRIC_SURFACE_AREA)
|
|
14
|
+
.value("NUM_LAZY_CAGE_METRIC", igl::NUM_LAZY_CAGE_METRIC)
|
|
15
|
+
.export_values()
|
|
16
|
+
;
|
|
17
|
+
}
|
|
@@ -0,0 +1,57 @@
|
|
|
1
|
+
#include "default_types.h"
|
|
2
|
+
#include <igl/connect_boundary_to_infinity.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 connect_boundary_to_infinity_F(
|
|
14
|
+
const nb::DRef<const Eigen::MatrixXI> &F)
|
|
15
|
+
{
|
|
16
|
+
Eigen::MatrixXI FO;
|
|
17
|
+
igl::connect_boundary_to_infinity(F, FO);
|
|
18
|
+
return FO;
|
|
19
|
+
}
|
|
20
|
+
|
|
21
|
+
auto connect_boundary_to_infinity_VF(
|
|
22
|
+
const nb::DRef<const Eigen::MatrixXN> &V,
|
|
23
|
+
const nb::DRef<const Eigen::MatrixXI> &F)
|
|
24
|
+
{
|
|
25
|
+
Eigen::MatrixXN VO;
|
|
26
|
+
Eigen::MatrixXI FO;
|
|
27
|
+
igl::connect_boundary_to_infinity(V, F, VO, FO);
|
|
28
|
+
return std::make_tuple(VO, FO);
|
|
29
|
+
}
|
|
30
|
+
}
|
|
31
|
+
|
|
32
|
+
void bind_connect_boundary_to_infinity(nb::module_ &m)
|
|
33
|
+
{
|
|
34
|
+
m.def(
|
|
35
|
+
"connect_boundary_to_infinity",
|
|
36
|
+
&pyigl::connect_boundary_to_infinity_F,
|
|
37
|
+
"F"_a,
|
|
38
|
+
R"(Connect all boundary edges to a fictitious point at infinity, closing an
|
|
39
|
+
open mesh (the result is edge-manifold if the input was manifold).
|
|
40
|
+
|
|
41
|
+
@param[in] F #F by 3 list of face indices into some V
|
|
42
|
+
@param[out] FO #F+#O by 3 list of face indices into [V; inf], original F come
|
|
43
|
+
first)");
|
|
44
|
+
m.def(
|
|
45
|
+
"connect_boundary_to_infinity",
|
|
46
|
+
&pyigl::connect_boundary_to_infinity_VF,
|
|
47
|
+
"V"_a,
|
|
48
|
+
"F"_a,
|
|
49
|
+
R"(Connect all boundary edges to a fictitious point at infinity, also
|
|
50
|
+
returning the augmented vertex list.
|
|
51
|
+
|
|
52
|
+
@param[in] V #V by 3 list of vertex positions
|
|
53
|
+
@param[in] F #F by 3 list of face indices into rows of V
|
|
54
|
+
@param[out] VO #V+1 by 3 list of vertex positions; original V come first and
|
|
55
|
+
the last row is (inf, inf, inf)
|
|
56
|
+
@param[out] FO #F+#O by 3 list of face indices into rows of VO)");
|
|
57
|
+
}
|
|
@@ -17,6 +17,14 @@ namespace pyigl
|
|
|
17
17
|
igl::face_areas(V, T, A);
|
|
18
18
|
return A;
|
|
19
19
|
}
|
|
20
|
+
|
|
21
|
+
auto face_areas_intrinsic(
|
|
22
|
+
const nb::DRef<const Eigen::MatrixXN>& L)
|
|
23
|
+
{
|
|
24
|
+
Eigen::MatrixXN A;
|
|
25
|
+
igl::face_areas(L, A);
|
|
26
|
+
return A;
|
|
27
|
+
}
|
|
20
28
|
}
|
|
21
29
|
|
|
22
30
|
void bind_face_areas(nb::module_ &m)
|
|
@@ -27,6 +35,13 @@ void bind_face_areas(nb::module_ &m)
|
|
|
27
35
|
R"(Constructs a list of face areas of faces opposite each index in a tet list
|
|
28
36
|
@param[in] V #V by 3 list of mesh vertex positions
|
|
29
37
|
@param[in] T #T by 3 list of tet mesh indices into V
|
|
38
|
+
@param[out] A #T by 4 list of face areas corresponding to faces opposite vertices
|
|
39
|
+
0,1,2,3)");
|
|
40
|
+
m.def("face_areas", &pyigl::face_areas_intrinsic,
|
|
41
|
+
"L"_a,
|
|
42
|
+
R"(Compute tet-mesh face areas from edge lengths.
|
|
43
|
+
@param[in] L #T by 6 list of tet-mesh edge lengths corresponding to edges
|
|
44
|
+
[1,2],[2,0],[0,1],[3,0],[3,1],[3,2]
|
|
30
45
|
@param[out] A #T by 4 list of face areas corresponding to faces opposite vertices
|
|
31
46
|
0,1,2,3)");
|
|
32
47
|
}
|
|
@@ -0,0 +1,35 @@
|
|
|
1
|
+
#include "default_types.h"
|
|
2
|
+
#include <igl/fit_rotations.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
|
+
namespace pyigl
|
|
11
|
+
{
|
|
12
|
+
auto fit_rotations(
|
|
13
|
+
const nb::DRef<const Eigen::MatrixXN> &S,
|
|
14
|
+
const bool single_precision)
|
|
15
|
+
{
|
|
16
|
+
Eigen::MatrixXN R;
|
|
17
|
+
igl::fit_rotations(S, single_precision, R);
|
|
18
|
+
return R;
|
|
19
|
+
}
|
|
20
|
+
}
|
|
21
|
+
|
|
22
|
+
void bind_fit_rotations(nb::module_ &m)
|
|
23
|
+
{
|
|
24
|
+
m.def(
|
|
25
|
+
"fit_rotations",
|
|
26
|
+
&pyigl::fit_rotations,
|
|
27
|
+
"S"_a,
|
|
28
|
+
"single_precision"_a = false,
|
|
29
|
+
R"(Given a stack of covariance matrices, find the closest rotation to each
|
|
30
|
+
(e.g. the local step of an as-rigid-as-possible optimization).
|
|
31
|
+
|
|
32
|
+
@param[in] S (n*dim) by dim stack of covariance matrices
|
|
33
|
+
@param[in] single_precision whether to use single precision (faster)
|
|
34
|
+
@param[out] R dim by (dim*n) list of rotations)");
|
|
35
|
+
}
|
|
@@ -0,0 +1,123 @@
|
|
|
1
|
+
#include "default_types.h"
|
|
2
|
+
#include <igl/lazy_cage.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
|
+
// Simple overload: {shortest edge, midpoint} decimation, the sigma metric, the
|
|
14
|
+
// dense grid, and the signed-distance field. grid_size <= 0 picks a heuristic.
|
|
15
|
+
auto lazy_cage(
|
|
16
|
+
const nb::DRef<const Eigen::MatrixXN> &V,
|
|
17
|
+
const nb::DRef<const Eigen::MatrixXI> &F,
|
|
18
|
+
const int num_faces,
|
|
19
|
+
const int grid_size)
|
|
20
|
+
{
|
|
21
|
+
const Eigen::MatrixXd Vd = V;
|
|
22
|
+
const Eigen::MatrixXi Fi = F.cast<int>();
|
|
23
|
+
Eigen::MatrixXd CV;
|
|
24
|
+
Eigen::MatrixXi CF;
|
|
25
|
+
double sigma;
|
|
26
|
+
const bool success = igl::lazy_cage(Vd, Fi, num_faces, grid_size, CV, CF, sigma);
|
|
27
|
+
return std::make_tuple(
|
|
28
|
+
success, Eigen::MatrixXN(CV), Eigen::MatrixXI(CF.cast<Integer>()), sigma);
|
|
29
|
+
}
|
|
30
|
+
|
|
31
|
+
// Full overload exposing every knob.
|
|
32
|
+
auto lazy_cage_full(
|
|
33
|
+
const nb::DRef<const Eigen::MatrixXN> &V,
|
|
34
|
+
const nb::DRef<const Eigen::MatrixXI> &F,
|
|
35
|
+
const int num_faces,
|
|
36
|
+
const int grid_size,
|
|
37
|
+
const double max_sigma,
|
|
38
|
+
const int num_iters,
|
|
39
|
+
const bool use_qslim,
|
|
40
|
+
const igl::LazyCageMetric metric,
|
|
41
|
+
const igl::LazyCageGridMode grid_mode,
|
|
42
|
+
const igl::LazyCageDistance distance)
|
|
43
|
+
{
|
|
44
|
+
const Eigen::MatrixXd Vd = V;
|
|
45
|
+
const Eigen::MatrixXi Fi = F.cast<int>();
|
|
46
|
+
Eigen::MatrixXd CV;
|
|
47
|
+
Eigen::MatrixXi CF;
|
|
48
|
+
double sigma;
|
|
49
|
+
const bool success = igl::lazy_cage(
|
|
50
|
+
Vd, Fi, num_faces, grid_size, max_sigma, num_iters, use_qslim,
|
|
51
|
+
metric, grid_mode, distance, CV, CF, sigma);
|
|
52
|
+
return std::make_tuple(
|
|
53
|
+
success, Eigen::MatrixXN(CV), Eigen::MatrixXI(CF.cast<Integer>()), sigma);
|
|
54
|
+
}
|
|
55
|
+
}
|
|
56
|
+
|
|
57
|
+
void bind_lazy_cage(nb::module_ &m)
|
|
58
|
+
{
|
|
59
|
+
m.def(
|
|
60
|
+
"lazy_cage_default_grid_size",
|
|
61
|
+
&igl::lazy_cage_default_grid_size,
|
|
62
|
+
"num_faces"_a,
|
|
63
|
+
R"(Heuristic isosurfacing grid resolution (cells across the largest side) for a
|
|
64
|
+
lazy cage with num_faces faces.
|
|
65
|
+
|
|
66
|
+
@param[in] num_faces desired number of cage faces
|
|
67
|
+
@return grid resolution)");
|
|
68
|
+
|
|
69
|
+
m.def(
|
|
70
|
+
"lazy_cage",
|
|
71
|
+
&pyigl::lazy_cage,
|
|
72
|
+
"V"_a,
|
|
73
|
+
"F"_a,
|
|
74
|
+
"num_faces"_a,
|
|
75
|
+
"grid_size"_a = 0,
|
|
76
|
+
R"(Compute a "lazy cage" enclosing a closed input mesh: offset the surface and
|
|
77
|
+
decimate it down to num_faces while it stays a valid cage (encloses the input,
|
|
78
|
+
free of self-intersections, and not intersecting the input surface).
|
|
79
|
+
|
|
80
|
+
Uses the default settings ({shortest edge, midpoint} decimation, the sigma
|
|
81
|
+
metric, the dense grid, and the signed-distance field).
|
|
82
|
+
|
|
83
|
+
@param[in] V #V by 3 list of input vertex positions (closed, manifold)
|
|
84
|
+
@param[in] F #F by 3 list of input triangle indices into V
|
|
85
|
+
@param[in] num_faces desired number of faces in the cage
|
|
86
|
+
@param[in] grid_size isosurfacing resolution (cells along the largest side);
|
|
87
|
+
<= 0 uses lazy_cage_default_grid_size(num_faces)
|
|
88
|
+
@param[out] success true if a valid cage with num_faces faces was found
|
|
89
|
+
@param[out] CV #CV by 3 list of cage vertex positions
|
|
90
|
+
@param[out] CF #CF by 3 list of cage triangle indices into CV
|
|
91
|
+
@param[out] sigma the offset distance used to build the returned cage)");
|
|
92
|
+
|
|
93
|
+
m.def(
|
|
94
|
+
"lazy_cage",
|
|
95
|
+
&pyigl::lazy_cage_full,
|
|
96
|
+
"V"_a,
|
|
97
|
+
"F"_a,
|
|
98
|
+
"num_faces"_a,
|
|
99
|
+
"grid_size"_a,
|
|
100
|
+
"max_sigma"_a,
|
|
101
|
+
"num_iters"_a = 12,
|
|
102
|
+
"use_qslim"_a = false,
|
|
103
|
+
"metric"_a = igl::LAZY_CAGE_METRIC_SIGMA,
|
|
104
|
+
"grid_mode"_a = igl::LAZY_CAGE_GRID_DENSE,
|
|
105
|
+
"distance"_a = igl::LAZY_CAGE_DISTANCE_SIGNED,
|
|
106
|
+
R"(Compute a "lazy cage" with full control over the offset-and-decimate search.
|
|
107
|
+
|
|
108
|
+
@param[in] V #V by 3 list of input vertex positions (closed, manifold)
|
|
109
|
+
@param[in] F #F by 3 list of input triangle indices into V
|
|
110
|
+
@param[in] num_faces desired number of faces in the cage
|
|
111
|
+
@param[in] grid_size isosurfacing resolution; <= 0 uses the heuristic
|
|
112
|
+
@param[in] max_sigma upper bound on the searched offset distance
|
|
113
|
+
@param[in] num_iters number of bisection iterations on sigma
|
|
114
|
+
@param[in] use_qslim decimate with igl.qslim (quadric error) instead of
|
|
115
|
+
{shortest edge, midpoint}
|
|
116
|
+
@param[in] metric objective minimized when choosing sigma (LazyCageMetric)
|
|
117
|
+
@param[in] grid_mode dense vs. sparse isosurface extraction (LazyCageGridMode)
|
|
118
|
+
@param[in] distance signed vs. unsigned distance field (LazyCageDistance)
|
|
119
|
+
@param[out] success true if a valid cage with num_faces faces was found
|
|
120
|
+
@param[out] CV #CV by 3 list of cage vertex positions
|
|
121
|
+
@param[out] CF #CF by 3 list of cage triangle indices into CV
|
|
122
|
+
@param[out] sigma the offset distance used to build the returned cage)");
|
|
123
|
+
}
|
|
@@ -0,0 +1,35 @@
|
|
|
1
|
+
#include "default_types.h"
|
|
2
|
+
#include <igl/path_to_edges.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
|
+
namespace pyigl
|
|
11
|
+
{
|
|
12
|
+
auto path_to_edges(
|
|
13
|
+
const nb::DRef<const Eigen::VectorXI> &I,
|
|
14
|
+
const bool make_loop)
|
|
15
|
+
{
|
|
16
|
+
Eigen::MatrixXI E;
|
|
17
|
+
igl::path_to_edges(I, E, make_loop);
|
|
18
|
+
return E;
|
|
19
|
+
}
|
|
20
|
+
}
|
|
21
|
+
|
|
22
|
+
void bind_path_to_edges(nb::module_ &m)
|
|
23
|
+
{
|
|
24
|
+
m.def(
|
|
25
|
+
"path_to_edges",
|
|
26
|
+
&pyigl::path_to_edges,
|
|
27
|
+
"I"_a,
|
|
28
|
+
"make_loop"_a = false,
|
|
29
|
+
R"(Given an ordered list of vertex indices describing a path, return the list
|
|
30
|
+
of undirected edges connecting consecutive entries.
|
|
31
|
+
|
|
32
|
+
@param[in] I #I list of vertex indices along the path
|
|
33
|
+
@param[in] make_loop whether to also connect the last vertex back to the first
|
|
34
|
+
@param[out] E #E by 2 list of edges (E = #I-1, or #I if make_loop))");
|
|
35
|
+
}
|
|
@@ -20,6 +20,15 @@ namespace pyigl
|
|
|
20
20
|
igl::per_face_normals(V,F,Z,N);
|
|
21
21
|
return N;
|
|
22
22
|
}
|
|
23
|
+
// Wrapper for per_face_normals_stable function
|
|
24
|
+
auto per_face_normals_stable(
|
|
25
|
+
const nb::DRef<const Eigen::MatrixXN> &V,
|
|
26
|
+
const nb::DRef<const Eigen::MatrixXI> &F)
|
|
27
|
+
{
|
|
28
|
+
Eigen::MatrixXN N;
|
|
29
|
+
igl::per_face_normals_stable(V,F,N);
|
|
30
|
+
return N;
|
|
31
|
+
}
|
|
23
32
|
// Wrapper for per_face_normals function
|
|
24
33
|
auto per_face_normals_VIC(
|
|
25
34
|
const nb::DRef<const Eigen::MatrixXN> &V,
|
|
@@ -69,4 +78,17 @@ R"(Compute face normals via vertex position list, polygon stream
|
|
|
69
78
|
@param[out] FF #I by 3 list of triangle indices into rows of VV
|
|
70
79
|
@param[out] J #I list of indices into original polygons)"
|
|
71
80
|
);
|
|
81
|
+
m.def(
|
|
82
|
+
"per_face_normals_stable",
|
|
83
|
+
&pyigl::per_face_normals_stable,
|
|
84
|
+
"V"_a,
|
|
85
|
+
"F"_a,
|
|
86
|
+
R"(Special version of per_face_normals where the order of the face indices is
|
|
87
|
+
guaranteed not to affect the output (i.e. cross products are accumulated in a
|
|
88
|
+
consistent order). Degenerate faces are given a zero normal.
|
|
89
|
+
|
|
90
|
+
@param[in] V #V by 3 eigen Matrix of mesh vertex 3D positions
|
|
91
|
+
@param[in] F #F by 3 eigen Matrix of face (triangle) indices
|
|
92
|
+
@param[out] N #F by 3 eigen Matrix of mesh face (triangle) 3D normals)"
|
|
93
|
+
);
|
|
72
94
|
}
|
|
@@ -0,0 +1,43 @@
|
|
|
1
|
+
#include "default_types.h"
|
|
2
|
+
#include <igl/planarize_quad_mesh.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
|
+
namespace pyigl
|
|
11
|
+
{
|
|
12
|
+
auto planarize_quad_mesh(
|
|
13
|
+
const nb::DRef<const Eigen::MatrixXN> &Vin,
|
|
14
|
+
const nb::DRef<const Eigen::MatrixXI> &F,
|
|
15
|
+
const int maxIter,
|
|
16
|
+
const Numeric threshold)
|
|
17
|
+
{
|
|
18
|
+
// Vout must share Vin's (deduced) type, so pass a concrete copy of the input
|
|
19
|
+
Eigen::MatrixXN Vin_copy = Vin;
|
|
20
|
+
Eigen::MatrixXN Vout;
|
|
21
|
+
igl::planarize_quad_mesh(Vin_copy, F, maxIter, threshold, Vout);
|
|
22
|
+
return Vout;
|
|
23
|
+
}
|
|
24
|
+
}
|
|
25
|
+
|
|
26
|
+
void bind_planarize_quad_mesh(nb::module_ &m)
|
|
27
|
+
{
|
|
28
|
+
m.def(
|
|
29
|
+
"planarize_quad_mesh",
|
|
30
|
+
&pyigl::planarize_quad_mesh,
|
|
31
|
+
"Vin"_a,
|
|
32
|
+
"F"_a,
|
|
33
|
+
"maxIter"_a = 100,
|
|
34
|
+
"threshold"_a = 0.005,
|
|
35
|
+
R"(Planarize a quad mesh, moving vertices so that each quad becomes as planar
|
|
36
|
+
as possible while staying close to the original surface.
|
|
37
|
+
|
|
38
|
+
@param[in] Vin #V by 3 list of input mesh vertex positions
|
|
39
|
+
@param[in] F #F by 4 list of quad face indices into rows of Vin
|
|
40
|
+
@param[in] maxIter maximum number of optimization iterations
|
|
41
|
+
@param[in] threshold planarity threshold at which to stop
|
|
42
|
+
@param[out] Vout #V by 3 list of planarized vertex positions)");
|
|
43
|
+
}
|
|
@@ -0,0 +1,64 @@
|
|
|
1
|
+
#include "default_types.h"
|
|
2
|
+
#include <igl/point_simplex_squared_distance.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 point_simplex_squared_distance(
|
|
14
|
+
const nb::DRef<const Eigen::RowVectorXN> &p,
|
|
15
|
+
const nb::DRef<const Eigen::MatrixXN> &V,
|
|
16
|
+
const nb::DRef<const Eigen::MatrixXI> &Ele,
|
|
17
|
+
const Integer i)
|
|
18
|
+
{
|
|
19
|
+
// Use concrete Eigen types (template deduction is finicky with DRef maps here).
|
|
20
|
+
// DIM (the ambient dimension) is a non-deduced template parameter, so we must
|
|
21
|
+
// supply it explicitly; dispatch on the number of columns of V.
|
|
22
|
+
const Eigen::RowVectorXN pc = p;
|
|
23
|
+
const Eigen::MatrixXN Vc = V;
|
|
24
|
+
const Eigen::MatrixXI Elec = Ele;
|
|
25
|
+
Numeric sqr_d;
|
|
26
|
+
Eigen::RowVectorXN c;
|
|
27
|
+
Eigen::RowVectorXN b;
|
|
28
|
+
switch (Vc.cols())
|
|
29
|
+
{
|
|
30
|
+
case 2:
|
|
31
|
+
igl::point_simplex_squared_distance<2>(pc, Vc, Elec, i, sqr_d, c, b);
|
|
32
|
+
break;
|
|
33
|
+
case 3:
|
|
34
|
+
igl::point_simplex_squared_distance<3>(pc, Vc, Elec, i, sqr_d, c, b);
|
|
35
|
+
break;
|
|
36
|
+
default:
|
|
37
|
+
throw std::runtime_error(
|
|
38
|
+
"point_simplex_squared_distance: only 2D and 3D points are supported");
|
|
39
|
+
}
|
|
40
|
+
return std::make_tuple(sqr_d, c, b);
|
|
41
|
+
}
|
|
42
|
+
}
|
|
43
|
+
|
|
44
|
+
void bind_point_simplex_squared_distance(nb::module_ &m)
|
|
45
|
+
{
|
|
46
|
+
m.def(
|
|
47
|
+
"point_simplex_squared_distance",
|
|
48
|
+
&pyigl::point_simplex_squared_distance,
|
|
49
|
+
"p"_a,
|
|
50
|
+
"V"_a,
|
|
51
|
+
"Ele"_a,
|
|
52
|
+
"i"_a,
|
|
53
|
+
R"(Determine the squared distance from a point p to the i-th linear simplex
|
|
54
|
+
(point/segment/triangle) of a mesh, along with the closest point and its
|
|
55
|
+
barycentric coordinates.
|
|
56
|
+
|
|
57
|
+
@param[in] p dim-long query point
|
|
58
|
+
@param[in] V #V by dim list of simplex-corner vertex positions
|
|
59
|
+
@param[in] Ele #Ele by (1|2|3) list of simplex indices into rows of V
|
|
60
|
+
@param[in] i index of the simplex (row of Ele) to measure against
|
|
61
|
+
@param[out] sqr_d squared distance from p to the i-th simplex
|
|
62
|
+
@param[out] c dim-long closest point on the i-th simplex
|
|
63
|
+
@param[out] b barycentric coordinates of the closest point c)");
|
|
64
|
+
}
|