libigl 2.6.3.dev3__tar.gz → 2.6.3.dev5__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.dev3 → libigl-2.6.3.dev5}/.github/workflows/pip.yml +1 -1
- libigl-2.6.3.dev5/.github/workflows/wheels.yml +180 -0
- {libigl-2.6.3.dev3 → libigl-2.6.3.dev5}/.gitignore +1 -0
- {libigl-2.6.3.dev3 → libigl-2.6.3.dev5}/CMakeLists.txt +17 -2
- {libigl-2.6.3.dev3 → libigl-2.6.3.dev5}/PKG-INFO +1 -1
- {libigl-2.6.3.dev3 → libigl-2.6.3.dev5}/include/default_types.h +1 -0
- libigl-2.6.3.dev5/include/parse_transforms.h +45 -0
- {libigl-2.6.3.dev3 → libigl-2.6.3.dev5}/pyproject.toml +1 -1
- libigl-2.6.3.dev5/src/active_set.cpp +100 -0
- libigl-2.6.3.dev5/src/ambient_occlusion.cpp +49 -0
- libigl-2.6.3.dev5/src/boundary_conditions.cpp +67 -0
- {libigl-2.6.3.dev3 → libigl-2.6.3.dev5}/src/boundary_loop.cpp +1 -1
- libigl-2.6.3.dev5/src/cubic.cpp +29 -0
- libigl-2.6.3.dev5/src/cubic_is_flat.cpp +31 -0
- libigl-2.6.3.dev5/src/cubic_monomial_bases.cpp +35 -0
- libigl-2.6.3.dev5/src/cubic_split.cpp +33 -0
- libigl-2.6.3.dev5/src/cycodebase/box_cubic.cpp +50 -0
- libigl-2.6.3.dev5/src/cycodebase/module.cpp +11 -0
- libigl-2.6.3.dev5/src/cycodebase/point_cubic_squared_distance.cpp +67 -0
- libigl-2.6.3.dev5/src/cycodebase/point_spline_squared_distance.cpp +78 -0
- libigl-2.6.3.dev5/src/cycodebase/roots.cpp +39 -0
- libigl-2.6.3.dev5/src/cycodebase/spline_eytzinger_aabb.cpp +35 -0
- libigl-2.6.3.dev5/src/fast_winding_number.cpp +181 -0
- libigl-2.6.3.dev5/src/fit_cubic_bezier.cpp +37 -0
- {libigl-2.6.3.dev3 → libigl-2.6.3.dev5}/src/marching_cubes.cpp +10 -4
- libigl-2.6.3.dev5/src/predicates/Orientation.cpp +21 -0
- libigl-2.6.3.dev5/src/predicates/cubic_winding_number.cpp +27 -0
- {libigl-2.6.3.dev3 → libigl-2.6.3.dev5}/src/predicates/incircle.cpp +1 -1
- {libigl-2.6.3.dev3 → libigl-2.6.3.dev5}/src/predicates/insphere.cpp +1 -1
- {libigl-2.6.3.dev3 → libigl-2.6.3.dev5}/src/predicates/orient2d.cpp +1 -1
- {libigl-2.6.3.dev3 → libigl-2.6.3.dev5}/src/predicates/orient3d.cpp +1 -1
- libigl-2.6.3.dev5/src/predicates/point_in_convex_hull.cpp +35 -0
- libigl-2.6.3.dev5/src/predicates/spline_winding_number.cpp +41 -0
- libigl-2.6.3.dev5/src/resolve_duplicated_faces.cpp +45 -0
- libigl-2.6.3.dev5/src/swept_volume.cpp +60 -0
- libigl-2.6.3.dev5/src/swept_volume_bounding_box.cpp +48 -0
- libigl-2.6.3.dev5/src/swept_volume_signed_distance.cpp +91 -0
- libigl-2.6.3.dev5/src/vertex_components.cpp +54 -0
- libigl-2.6.3.dev5/src/voxel_grid.cpp +81 -0
- {libigl-2.6.3.dev3 → libigl-2.6.3.dev5}/tests/test_all.py +524 -3
- {libigl-2.6.3.dev3 → libigl-2.6.3.dev5}/tutorial/tut-chapter1.ipynb +2 -16
- libigl-2.6.3.dev3/.github/workflows/wheels.yml +0 -97
- libigl-2.6.3.dev3/src/fast_winding_number.cpp +0 -38
- libigl-2.6.3.dev3/src/predicates/Orientation.cpp +0 -21
- libigl-2.6.3.dev3/src/vertex_components.cpp +0 -33
- libigl-2.6.3.dev3/src/voxel_grid.cpp +0 -42
- {libigl-2.6.3.dev3 → libigl-2.6.3.dev5}/LICENSE.GPL +0 -0
- {libigl-2.6.3.dev3 → libigl-2.6.3.dev5}/LICENSE.MPL2 +0 -0
- {libigl-2.6.3.dev3 → libigl-2.6.3.dev5}/README.md +0 -0
- {libigl-2.6.3.dev3 → libigl-2.6.3.dev5}/attic/copyleft/tetgen_tetrahedralize.cpp +0 -0
- {libigl-2.6.3.dev3 → libigl-2.6.3.dev5}/attic/copyleft/triangle_triangulate.cpp +0 -0
- {libigl-2.6.3.dev3 → libigl-2.6.3.dev5}/attic/skip/SolverStatus.cpp +0 -0
- {libigl-2.6.3.dev3 → libigl-2.6.3.dev5}/attic/skip/WindingNumberMethod.cpp +0 -0
- {libigl-2.6.3.dev3 → libigl-2.6.3.dev5}/attic/skip/angular_distance.cpp +0 -0
- {libigl-2.6.3.dev3 → libigl-2.6.3.dev5}/attic/skip/canonical_quaternions.cpp +0 -0
- {libigl-2.6.3.dev3 → libigl-2.6.3.dev5}/attic/skip/column_to_quats.cpp +0 -0
- {libigl-2.6.3.dev3 → libigl-2.6.3.dev5}/attic/skip/comiso_nrosy.cpp +0 -0
- {libigl-2.6.3.dev3 → libigl-2.6.3.dev5}/attic/skip/covariance_scatter_matrix.cpp +0 -0
- {libigl-2.6.3.dev3 → libigl-2.6.3.dev5}/attic/skip/file_contents_as_string.cpp +0 -0
- {libigl-2.6.3.dev3 → libigl-2.6.3.dev5}/attic/skip/fit_rotations.cpp +0 -0
- {libigl-2.6.3.dev3 → libigl-2.6.3.dev5}/attic/skip/frame_field_deformer.cpp +0 -0
- {libigl-2.6.3.dev3 → libigl-2.6.3.dev5}/attic/skip/frame_to_cross_field.cpp +0 -0
- {libigl-2.6.3.dev3 → libigl-2.6.3.dev5}/attic/skip/frustum.cpp +0 -0
- {libigl-2.6.3.dev3 → libigl-2.6.3.dev5}/attic/skip/group_sum_matrix.cpp +0 -0
- {libigl-2.6.3.dev3 → libigl-2.6.3.dev5}/attic/skip/harwell_boeing.cpp +0 -0
- {libigl-2.6.3.dev3 → libigl-2.6.3.dev5}/attic/skip/histc.cpp +0 -0
- {libigl-2.6.3.dev3 → libigl-2.6.3.dev5}/attic/skip/hsv_to_rgb.cpp +0 -0
- {libigl-2.6.3.dev3 → libigl-2.6.3.dev5}/attic/skip/infinite_cost_stopping_condition.cpp +0 -0
- {libigl-2.6.3.dev3 → libigl-2.6.3.dev5}/attic/skip/intersect.cpp +0 -0
- {libigl-2.6.3.dev3 → libigl-2.6.3.dev5}/attic/skip/invert_diag.cpp +0 -0
- {libigl-2.6.3.dev3 → libigl-2.6.3.dev5}/attic/skip/is_planar.cpp +0 -0
- {libigl-2.6.3.dev3 → libigl-2.6.3.dev5}/attic/skip/limit_faces.cpp +0 -0
- {libigl-2.6.3.dev3 → libigl-2.6.3.dev5}/attic/skip/line_field_missmatch.cpp +0 -0
- {libigl-2.6.3.dev3 → libigl-2.6.3.dev5}/attic/skip/line_search.cpp +0 -0
- {libigl-2.6.3.dev3 → libigl-2.6.3.dev5}/attic/skip/mat_to_quat.cpp +0 -0
- {libigl-2.6.3.dev3 → libigl-2.6.3.dev5}/attic/skip/material_colors.cpp +0 -0
- {libigl-2.6.3.dev3 → libigl-2.6.3.dev5}/attic/skip/max_faces_stopping_condition.cpp +0 -0
- {libigl-2.6.3.dev3 → libigl-2.6.3.dev5}/attic/skip/min_quad_dense.cpp +0 -0
- {libigl-2.6.3.dev3 → libigl-2.6.3.dev5}/attic/skip/normalize_quat.cpp +0 -0
- {libigl-2.6.3.dev3 → libigl-2.6.3.dev5}/attic/skip/on_boundary.cpp +0 -0
- {libigl-2.6.3.dev3 → libigl-2.6.3.dev5}/attic/skip/opengl2_draw_beach_ball.cpp +0 -0
- {libigl-2.6.3.dev3 → libigl-2.6.3.dev5}/attic/skip/opengl2_draw_floor.cpp +0 -0
- {libigl-2.6.3.dev3 → libigl-2.6.3.dev5}/attic/skip/opengl2_draw_mesh.cpp +0 -0
- {libigl-2.6.3.dev3 → libigl-2.6.3.dev5}/attic/skip/opengl2_draw_point.cpp +0 -0
- {libigl-2.6.3.dev3 → libigl-2.6.3.dev5}/attic/skip/opengl2_draw_rectangular_marquee.cpp +0 -0
- {libigl-2.6.3.dev3 → libigl-2.6.3.dev5}/attic/skip/opengl2_draw_skeleton_3d.cpp +0 -0
- {libigl-2.6.3.dev3 → libigl-2.6.3.dev5}/attic/skip/opengl2_draw_skeleton_vector_graphics.cpp +0 -0
- {libigl-2.6.3.dev3 → libigl-2.6.3.dev5}/attic/skip/opengl2_flare_textures.cpp +0 -0
- {libigl-2.6.3.dev3 → libigl-2.6.3.dev5}/attic/skip/opengl2_model_proj_viewport.cpp +0 -0
- {libigl-2.6.3.dev3 → libigl-2.6.3.dev5}/attic/skip/opengl2_print_gl_get.cpp +0 -0
- {libigl-2.6.3.dev3 → libigl-2.6.3.dev5}/attic/skip/opengl2_project.cpp +0 -0
- {libigl-2.6.3.dev3 → libigl-2.6.3.dev5}/attic/skip/opengl2_right_axis.cpp +0 -0
- {libigl-2.6.3.dev3 → libigl-2.6.3.dev5}/attic/skip/opengl2_shine_textures.cpp +0 -0
- {libigl-2.6.3.dev3 → libigl-2.6.3.dev5}/attic/skip/opengl2_sort_triangles.cpp +0 -0
- {libigl-2.6.3.dev3 → libigl-2.6.3.dev5}/attic/skip/opengl2_unproject.cpp +0 -0
- {libigl-2.6.3.dev3 → libigl-2.6.3.dev5}/attic/skip/opengl2_unproject_to_zero_plane.cpp +0 -0
- {libigl-2.6.3.dev3 → libigl-2.6.3.dev5}/attic/skip/opengl2_up_axis.cpp +0 -0
- {libigl-2.6.3.dev3 → libigl-2.6.3.dev5}/attic/skip/opengl2_view_axis.cpp +0 -0
- {libigl-2.6.3.dev3 → libigl-2.6.3.dev5}/attic/skip/opengl_create_shader_program.cpp +0 -0
- {libigl-2.6.3.dev3 → libigl-2.6.3.dev5}/attic/skip/opengl_destroy_shader_program.cpp +0 -0
- {libigl-2.6.3.dev3 → libigl-2.6.3.dev5}/attic/skip/opengl_gl_type_size.cpp +0 -0
- {libigl-2.6.3.dev3 → libigl-2.6.3.dev5}/attic/skip/opengl_glfw_background_window.cpp +0 -0
- {libigl-2.6.3.dev3 → libigl-2.6.3.dev5}/attic/skip/opengl_glfw_imgui_ImGuiHelpers.cpp +0 -0
- {libigl-2.6.3.dev3 → libigl-2.6.3.dev5}/attic/skip/opengl_init_render_to_texture.cpp +0 -0
- {libigl-2.6.3.dev3 → libigl-2.6.3.dev5}/attic/skip/opengl_load_shader.cpp +0 -0
- {libigl-2.6.3.dev3 → libigl-2.6.3.dev5}/attic/skip/opengl_print_program_info_log.cpp +0 -0
- {libigl-2.6.3.dev3 → libigl-2.6.3.dev5}/attic/skip/opengl_print_shader_info_log.cpp +0 -0
- {libigl-2.6.3.dev3 → libigl-2.6.3.dev5}/attic/skip/opengl_report_gl_error.cpp +0 -0
- {libigl-2.6.3.dev3 → libigl-2.6.3.dev5}/attic/skip/opengl_uniform_type_to_string.cpp +0 -0
- {libigl-2.6.3.dev3 → libigl-2.6.3.dev5}/attic/skip/ortho.cpp +0 -0
- {libigl-2.6.3.dev3 → libigl-2.6.3.dev5}/attic/skip/parallel_transport_angles.cpp +0 -0
- {libigl-2.6.3.dev3 → libigl-2.6.3.dev5}/attic/skip/polar_svd.cpp +0 -0
- {libigl-2.6.3.dev3 → libigl-2.6.3.dev5}/attic/skip/polar_svd3x3.cpp +0 -0
- {libigl-2.6.3.dev3 → libigl-2.6.3.dev5}/attic/skip/qslim_optimal_collapse_edge_callbacks.cpp +0 -0
- {libigl-2.6.3.dev3 → libigl-2.6.3.dev5}/attic/skip/quadric_binary_plus_operator.cpp +0 -0
- {libigl-2.6.3.dev3 → libigl-2.6.3.dev5}/attic/skip/quat_conjugate.cpp +0 -0
- {libigl-2.6.3.dev3 → libigl-2.6.3.dev5}/attic/skip/quat_mult.cpp +0 -0
- {libigl-2.6.3.dev3 → libigl-2.6.3.dev5}/attic/skip/quat_to_axis_angle.cpp +0 -0
- {libigl-2.6.3.dev3 → libigl-2.6.3.dev5}/attic/skip/quat_to_mat.cpp +0 -0
- {libigl-2.6.3.dev3 → libigl-2.6.3.dev5}/attic/skip/quats_to_column.cpp +0 -0
- {libigl-2.6.3.dev3 → libigl-2.6.3.dev5}/attic/skip/random_quaternion.cpp +0 -0
- {libigl-2.6.3.dev3 → libigl-2.6.3.dev5}/attic/skip/readBF.cpp +0 -0
- {libigl-2.6.3.dev3 → libigl-2.6.3.dev5}/attic/skip/readNODE.cpp +0 -0
- {libigl-2.6.3.dev3 → libigl-2.6.3.dev5}/attic/skip/readPLY.cpp +0 -0
- {libigl-2.6.3.dev3 → libigl-2.6.3.dev5}/attic/skip/readSTL.cpp +0 -0
- {libigl-2.6.3.dev3 → libigl-2.6.3.dev5}/attic/skip/rgb_to_hsv.cpp +0 -0
- {libigl-2.6.3.dev3 → libigl-2.6.3.dev5}/attic/skip/rotate_by_quat.cpp +0 -0
- {libigl-2.6.3.dev3 → libigl-2.6.3.dev5}/attic/skip/rotation_matrix_from_directions.cpp +0 -0
- {libigl-2.6.3.dev3 → libigl-2.6.3.dev5}/attic/skip/snap_to_canonical_view_quat.cpp +0 -0
- {libigl-2.6.3.dev3 → libigl-2.6.3.dev5}/attic/skip/snap_to_fixed_up.cpp +0 -0
- {libigl-2.6.3.dev3 → libigl-2.6.3.dev5}/attic/skip/sort_angles.cpp +0 -0
- {libigl-2.6.3.dev3 → libigl-2.6.3.dev5}/attic/skip/sort_triangles.cpp +0 -0
- {libigl-2.6.3.dev3 → libigl-2.6.3.dev5}/attic/skip/sort_vectors_ccw.cpp +0 -0
- {libigl-2.6.3.dev3 → libigl-2.6.3.dev5}/attic/skip/svd3x3.cpp +0 -0
- {libigl-2.6.3.dev3 → libigl-2.6.3.dev5}/attic/skip/svd3x3_avx.cpp +0 -0
- {libigl-2.6.3.dev3 → libigl-2.6.3.dev5}/attic/skip/svd3x3_sse.cpp +0 -0
- {libigl-2.6.3.dev3 → libigl-2.6.3.dev5}/attic/skip/trackball.cpp +0 -0
- {libigl-2.6.3.dev3 → libigl-2.6.3.dev5}/attic/skip/transpose_blocks.cpp +0 -0
- {libigl-2.6.3.dev3 → libigl-2.6.3.dev5}/attic/skip/unique_rows.cpp +0 -0
- {libigl-2.6.3.dev3 → libigl-2.6.3.dev5}/attic/skip/voxel_grid.cpp +0 -0
- {libigl-2.6.3.dev3 → libigl-2.6.3.dev5}/attic/skip/writePLY.cpp +0 -0
- {libigl-2.6.3.dev3 → libigl-2.6.3.dev5}/attic/skip/writeSTL.cpp +0 -0
- {libigl-2.6.3.dev3 → libigl-2.6.3.dev5}/attic/skip/writeWRL.cpp +0 -0
- {libigl-2.6.3.dev3 → libigl-2.6.3.dev5}/attic/todo-old/MeshBooleanType.cpp +0 -0
- {libigl-2.6.3.dev3 → libigl-2.6.3.dev5}/attic/todo-old/NormalType.cpp +0 -0
- {libigl-2.6.3.dev3 → libigl-2.6.3.dev5}/attic/todo-old/collapse_edge.cpp +0 -0
- {libigl-2.6.3.dev3 → libigl-2.6.3.dev5}/attic/todo-old/copyleft/copyleft_cgal_assign.cpp +0 -0
- {libigl-2.6.3.dev3 → libigl-2.6.3.dev5}/attic/todo-old/copyleft/copyleft_cgal_assign_scalar.cpp +0 -0
- {libigl-2.6.3.dev3 → libigl-2.6.3.dev5}/attic/todo-old/copyleft/copyleft_cgal_cell_adjacency.cpp +0 -0
- {libigl-2.6.3.dev3 → libigl-2.6.3.dev5}/attic/todo-old/copyleft/copyleft_cgal_closest_facet.cpp +0 -0
- {libigl-2.6.3.dev3 → libigl-2.6.3.dev5}/attic/todo-old/copyleft/copyleft_cgal_complex_to_mesh.cpp +0 -0
- {libigl-2.6.3.dev3 → libigl-2.6.3.dev5}/attic/todo-old/copyleft/copyleft_cgal_component_inside_component.cpp +0 -0
- {libigl-2.6.3.dev3 → libigl-2.6.3.dev5}/attic/todo-old/copyleft/copyleft_cgal_convex_hull.cpp +0 -0
- {libigl-2.6.3.dev3 → libigl-2.6.3.dev5}/attic/todo-old/copyleft/copyleft_cgal_delaunay_triangulation.cpp +0 -0
- {libigl-2.6.3.dev3 → libigl-2.6.3.dev5}/attic/todo-old/copyleft/copyleft_cgal_extract_cells.cpp +0 -0
- {libigl-2.6.3.dev3 → libigl-2.6.3.dev5}/attic/todo-old/copyleft/copyleft_cgal_extract_feature.cpp +0 -0
- {libigl-2.6.3.dev3 → libigl-2.6.3.dev5}/attic/todo-old/copyleft/copyleft_cgal_fast_winding_number.cpp +0 -0
- {libigl-2.6.3.dev3 → libigl-2.6.3.dev5}/attic/todo-old/copyleft/copyleft_cgal_half_space_box.cpp +0 -0
- {libigl-2.6.3.dev3 → libigl-2.6.3.dev5}/attic/todo-old/copyleft/copyleft_cgal_hausdorff.cpp +0 -0
- {libigl-2.6.3.dev3 → libigl-2.6.3.dev5}/attic/todo-old/copyleft/copyleft_cgal_incircle.cpp +0 -0
- {libigl-2.6.3.dev3 → libigl-2.6.3.dev5}/attic/todo-old/copyleft/copyleft_cgal_insert_into_cdt.cpp +0 -0
- {libigl-2.6.3.dev3 → libigl-2.6.3.dev5}/attic/todo-old/copyleft/copyleft_cgal_insphere.cpp +0 -0
- {libigl-2.6.3.dev3 → libigl-2.6.3.dev5}/attic/todo-old/copyleft/copyleft_cgal_intersect_other.cpp +0 -0
- {libigl-2.6.3.dev3 → libigl-2.6.3.dev5}/attic/todo-old/copyleft/copyleft_cgal_intersect_with_half_space.cpp +0 -0
- {libigl-2.6.3.dev3 → libigl-2.6.3.dev5}/attic/todo-old/copyleft/copyleft_cgal_lexicographic_triangulation.cpp +0 -0
- {libigl-2.6.3.dev3 → libigl-2.6.3.dev5}/attic/todo-old/copyleft/copyleft_cgal_mesh_boolean.cpp +0 -0
- {libigl-2.6.3.dev3 → libigl-2.6.3.dev5}/attic/todo-old/copyleft/copyleft_cgal_mesh_boolean_type_to_funcs.cpp +0 -0
- {libigl-2.6.3.dev3 → libigl-2.6.3.dev5}/attic/todo-old/copyleft/copyleft_cgal_mesh_to_cgal_triangle_list.cpp +0 -0
- {libigl-2.6.3.dev3 → libigl-2.6.3.dev5}/attic/todo-old/copyleft/copyleft_cgal_mesh_to_polyhedron.cpp +0 -0
- {libigl-2.6.3.dev3 → libigl-2.6.3.dev5}/attic/todo-old/copyleft/copyleft_cgal_minkowski_sum.cpp +0 -0
- {libigl-2.6.3.dev3 → libigl-2.6.3.dev5}/attic/todo-old/copyleft/copyleft_cgal_order_facets_around_edge.cpp +0 -0
- {libigl-2.6.3.dev3 → libigl-2.6.3.dev5}/attic/todo-old/copyleft/copyleft_cgal_order_facets_around_edges.cpp +0 -0
- {libigl-2.6.3.dev3 → libigl-2.6.3.dev5}/attic/todo-old/copyleft/copyleft_cgal_orient2D.cpp +0 -0
- {libigl-2.6.3.dev3 → libigl-2.6.3.dev5}/attic/todo-old/copyleft/copyleft_cgal_orient3D.cpp +0 -0
- {libigl-2.6.3.dev3 → libigl-2.6.3.dev5}/attic/todo-old/copyleft/copyleft_cgal_outer_element.cpp +0 -0
- {libigl-2.6.3.dev3 → libigl-2.6.3.dev5}/attic/todo-old/copyleft/copyleft_cgal_outer_facet.cpp +0 -0
- {libigl-2.6.3.dev3 → libigl-2.6.3.dev5}/attic/todo-old/copyleft/copyleft_cgal_outer_hull.cpp +0 -0
- {libigl-2.6.3.dev3 → libigl-2.6.3.dev5}/attic/todo-old/copyleft/copyleft_cgal_peel_outer_hull_layers.cpp +0 -0
- {libigl-2.6.3.dev3 → libigl-2.6.3.dev5}/attic/todo-old/copyleft/copyleft_cgal_peel_winding_number_layers.cpp +0 -0
- {libigl-2.6.3.dev3 → libigl-2.6.3.dev5}/attic/todo-old/copyleft/copyleft_cgal_piecewise_constant_winding_number.cpp +0 -0
- {libigl-2.6.3.dev3 → libigl-2.6.3.dev5}/attic/todo-old/copyleft/copyleft_cgal_point_areas.cpp +0 -0
- {libigl-2.6.3.dev3 → libigl-2.6.3.dev5}/attic/todo-old/copyleft/copyleft_cgal_point_mesh_squared_distance.cpp +0 -0
- {libigl-2.6.3.dev3 → libigl-2.6.3.dev5}/attic/todo-old/copyleft/copyleft_cgal_point_segment_squared_distance.cpp +0 -0
- {libigl-2.6.3.dev3 → libigl-2.6.3.dev5}/attic/todo-old/copyleft/copyleft_cgal_point_solid_signed_squared_distance.cpp +0 -0
- {libigl-2.6.3.dev3 → libigl-2.6.3.dev5}/attic/todo-old/copyleft/copyleft_cgal_point_triangle_squared_distance.cpp +0 -0
- {libigl-2.6.3.dev3 → libigl-2.6.3.dev5}/attic/todo-old/copyleft/copyleft_cgal_points_inside_component.cpp +0 -0
- {libigl-2.6.3.dev3 → libigl-2.6.3.dev5}/attic/todo-old/copyleft/copyleft_cgal_polyhedron_to_mesh.cpp +0 -0
- {libigl-2.6.3.dev3 → libigl-2.6.3.dev5}/attic/todo-old/copyleft/copyleft_cgal_projected_cdt.cpp +0 -0
- {libigl-2.6.3.dev3 → libigl-2.6.3.dev5}/attic/todo-old/copyleft/copyleft_cgal_projected_delaunay.cpp +0 -0
- {libigl-2.6.3.dev3 → libigl-2.6.3.dev5}/attic/todo-old/copyleft/copyleft_cgal_propagate_winding_numbers.cpp +0 -0
- {libigl-2.6.3.dev3 → libigl-2.6.3.dev5}/attic/todo-old/copyleft/copyleft_cgal_read_triangle_mesh.cpp +0 -0
- {libigl-2.6.3.dev3 → libigl-2.6.3.dev5}/attic/todo-old/copyleft/copyleft_cgal_relabel_small_immersed_cells.cpp +0 -0
- {libigl-2.6.3.dev3 → libigl-2.6.3.dev5}/attic/todo-old/copyleft/copyleft_cgal_remesh_intersections.cpp +0 -0
- {libigl-2.6.3.dev3 → libigl-2.6.3.dev5}/attic/todo-old/copyleft/copyleft_cgal_remesh_self_intersections.cpp +0 -0
- {libigl-2.6.3.dev3 → libigl-2.6.3.dev5}/attic/todo-old/copyleft/copyleft_cgal_resolve_intersections.cpp +0 -0
- {libigl-2.6.3.dev3 → libigl-2.6.3.dev5}/attic/todo-old/copyleft/copyleft_cgal_row_to_point.cpp +0 -0
- {libigl-2.6.3.dev3 → libigl-2.6.3.dev5}/attic/todo-old/copyleft/copyleft_cgal_segment_segment_squared_distance.cpp +0 -0
- {libigl-2.6.3.dev3 → libigl-2.6.3.dev5}/attic/todo-old/copyleft/copyleft_cgal_signed_distance_isosurface.cpp +0 -0
- {libigl-2.6.3.dev3 → libigl-2.6.3.dev5}/attic/todo-old/copyleft/copyleft_cgal_snap_rounding.cpp +0 -0
- {libigl-2.6.3.dev3 → libigl-2.6.3.dev5}/attic/todo-old/copyleft/copyleft_cgal_string_to_mesh_boolean_type.cpp +0 -0
- {libigl-2.6.3.dev3 → libigl-2.6.3.dev5}/attic/todo-old/copyleft/copyleft_cgal_subdivide_segments.cpp +0 -0
- {libigl-2.6.3.dev3 → libigl-2.6.3.dev5}/attic/todo-old/copyleft/copyleft_cgal_submesh_aabb_tree.cpp +0 -0
- {libigl-2.6.3.dev3 → libigl-2.6.3.dev5}/attic/todo-old/copyleft/copyleft_cgal_triangle_triangle_squared_distance.cpp +0 -0
- {libigl-2.6.3.dev3 → libigl-2.6.3.dev5}/attic/todo-old/copyleft/copyleft_cgal_trim_with_solid.cpp +0 -0
- {libigl-2.6.3.dev3 → libigl-2.6.3.dev5}/attic/todo-old/copyleft/copyleft_cgal_wire_mesh.cpp +0 -0
- {libigl-2.6.3.dev3 → libigl-2.6.3.dev5}/attic/todo-old/copyleft/copyleft_comiso_miq.cpp +0 -0
- {libigl-2.6.3.dev3 → libigl-2.6.3.dev5}/attic/todo-old/copyleft/copyleft_cork_mesh_boolean.cpp +0 -0
- {libigl-2.6.3.dev3 → libigl-2.6.3.dev5}/attic/todo-old/copyleft/copyleft_marching_cubes.cpp +0 -0
- {libigl-2.6.3.dev3 → libigl-2.6.3.dev5}/attic/todo-old/copyleft/copyleft_offset_surface.cpp +0 -0
- {libigl-2.6.3.dev3 → libigl-2.6.3.dev5}/attic/todo-old/copyleft/copyleft_opengl2_render_to_tga.cpp +0 -0
- {libigl-2.6.3.dev3 → libigl-2.6.3.dev5}/attic/todo-old/copyleft/copyleft_opengl2_texture_from_tga.cpp +0 -0
- {libigl-2.6.3.dev3 → libigl-2.6.3.dev5}/attic/todo-old/copyleft/copyleft_progressive_hulls.cpp +0 -0
- {libigl-2.6.3.dev3 → libigl-2.6.3.dev5}/attic/todo-old/copyleft/copyleft_progressive_hulls_cost_and_placement.cpp +0 -0
- {libigl-2.6.3.dev3 → libigl-2.6.3.dev5}/attic/todo-old/copyleft/copyleft_quadprog.cpp +0 -0
- {libigl-2.6.3.dev3 → libigl-2.6.3.dev5}/attic/todo-old/copyleft/copyleft_swept_volume.cpp +0 -0
- {libigl-2.6.3.dev3 → libigl-2.6.3.dev5}/attic/todo-old/copyleft/copyleft_tetgen_mesh_with_skeleton.cpp +0 -0
- {libigl-2.6.3.dev3 → libigl-2.6.3.dev5}/attic/todo-old/copyleft/copyleft_tetgen_read_into_tetgenio.cpp +0 -0
- {libigl-2.6.3.dev3 → libigl-2.6.3.dev5}/attic/todo-old/copyleft/copyleft_tetgen_tetrahedralize.cpp +0 -0
- {libigl-2.6.3.dev3 → libigl-2.6.3.dev5}/attic/todo-old/dijkstra.cpp +0 -0
- {libigl-2.6.3.dev3 → libigl-2.6.3.dev5}/attic/todo-old/embree_bone_heat.cpp +0 -0
- {libigl-2.6.3.dev3 → libigl-2.6.3.dev5}/attic/todo-old/embree_reorient_facets_raycast.cpp +0 -0
- {libigl-2.6.3.dev3 → libigl-2.6.3.dev5}/attic/todo-old/fast_winding_number.cpp +0 -0
- {libigl-2.6.3.dev3 → libigl-2.6.3.dev5}/attic/todo-old/flip_edge.cpp +0 -0
- {libigl-2.6.3.dev3 → libigl-2.6.3.dev5}/attic/todo-old/knn.cpp +0 -0
- {libigl-2.6.3.dev3 → libigl-2.6.3.dev5}/attic/todo-old/mosek_mosek_guarded.cpp +0 -0
- {libigl-2.6.3.dev3 → libigl-2.6.3.dev5}/attic/todo-old/mosek_mosek_linprog.cpp +0 -0
- {libigl-2.6.3.dev3 → libigl-2.6.3.dev5}/attic/todo-old/octree.cpp +0 -0
- {libigl-2.6.3.dev3 → libigl-2.6.3.dev5}/attic/todo-old/per_vertex_point_to_plane_quadrics.cpp +0 -0
- {libigl-2.6.3.dev3 → libigl-2.6.3.dev5}/attic/todo-old/png_readPNG.cpp +0 -0
- {libigl-2.6.3.dev3 → libigl-2.6.3.dev5}/attic/todo-old/png_render_to_png.cpp +0 -0
- {libigl-2.6.3.dev3 → libigl-2.6.3.dev5}/attic/todo-old/png_render_to_png_async.cpp +0 -0
- {libigl-2.6.3.dev3 → libigl-2.6.3.dev5}/attic/todo-old/png_texture_from_file.cpp +0 -0
- {libigl-2.6.3.dev3 → libigl-2.6.3.dev5}/attic/todo-old/png_texture_from_png.cpp +0 -0
- {libigl-2.6.3.dev3 → libigl-2.6.3.dev5}/attic/todo-old/png_writePNG.cpp +0 -0
- {libigl-2.6.3.dev3 → libigl-2.6.3.dev5}/attic/todo-old/pseudonormal_test.cpp +0 -0
- {libigl-2.6.3.dev3 → libigl-2.6.3.dev5}/attic/todo-old/readWRL.cpp +0 -0
- {libigl-2.6.3.dev3 → libigl-2.6.3.dev5}/attic/todo-old/remesh_along_isoline.cpp +0 -0
- {libigl-2.6.3.dev3 → libigl-2.6.3.dev5}/attic/todo-old/seam_edges.cpp +0 -0
- {libigl-2.6.3.dev3 → libigl-2.6.3.dev5}/attic/todo-old/shortest_edge_and_midpoint.cpp +0 -0
- {libigl-2.6.3.dev3 → libigl-2.6.3.dev5}/attic/todo-old/squared_edge_lengths.cpp +0 -0
- {libigl-2.6.3.dev3 → libigl-2.6.3.dev5}/attic/todo-old/straighten_seams.cpp +0 -0
- {libigl-2.6.3.dev3 → libigl-2.6.3.dev5}/attic/todo-old/swept_volume_signed_distance.cpp +0 -0
- {libigl-2.6.3.dev3 → libigl-2.6.3.dev5}/attic/todo-old/triangle_cdt.cpp +0 -0
- {libigl-2.6.3.dev3 → libigl-2.6.3.dev5}/attic/todo-old/unzip_corners.cpp +0 -0
- {libigl-2.6.3.dev3 → libigl-2.6.3.dev5}/attic/todo-old/writeBF.cpp +0 -0
- {libigl-2.6.3.dev3 → libigl-2.6.3.dev5}/attic/todo-old/writeDMAT.cpp +0 -0
- {libigl-2.6.3.dev3 → libigl-2.6.3.dev5}/attic/todo-old/writeMESH.cpp +0 -0
- {libigl-2.6.3.dev3 → libigl-2.6.3.dev5}/attic/todo-old/writeTGF.cpp +0 -0
- {libigl-2.6.3.dev3 → libigl-2.6.3.dev5}/attic/todo-old/xml_writeDAE.cpp +0 -0
- {libigl-2.6.3.dev3 → libigl-2.6.3.dev5}/attic/todo-old/xml_write_triangle_mesh.cpp +0 -0
- {libigl-2.6.3.dev3 → libigl-2.6.3.dev5}/classes/AABB.cpp +0 -0
- {libigl-2.6.3.dev3 → libigl-2.6.3.dev5}/classes/classes.cpp +0 -0
- {libigl-2.6.3.dev3 → libigl-2.6.3.dev5}/cmake/CXXFeatures.cmake +0 -0
- {libigl-2.6.3.dev3 → libigl-2.6.3.dev5}/cmake/FindLIBIGL.cmake +0 -0
- {libigl-2.6.3.dev3 → libigl-2.6.3.dev5}/cmake/UseColors.cmake +0 -0
- {libigl-2.6.3.dev3 → libigl-2.6.3.dev5}/cmake/Warnings.cmake +0 -0
- {libigl-2.6.3.dev3 → libigl-2.6.3.dev5}/memory/MEMORY.md +0 -0
- {libigl-2.6.3.dev3 → libigl-2.6.3.dev5}/missing.sh +0 -0
- {libigl-2.6.3.dev3 → libigl-2.6.3.dev5}/mkdocs.yml +0 -0
- {libigl-2.6.3.dev3 → libigl-2.6.3.dev5}/postBuild +0 -0
- {libigl-2.6.3.dev3 → libigl-2.6.3.dev5}/priority.txt +0 -0
- {libigl-2.6.3.dev3 → libigl-2.6.3.dev5}/scripts/basic_function.mako +0 -0
- {libigl-2.6.3.dev3 → libigl-2.6.3.dev5}/scripts/blender_igl_export.py +0 -0
- {libigl-2.6.3.dev3 → libigl-2.6.3.dev5}/scripts/generate_bindings.py +0 -0
- {libigl-2.6.3.dev3 → libigl-2.6.3.dev5}/scripts/make_lean.py +0 -0
- {libigl-2.6.3.dev3 → libigl-2.6.3.dev5}/scripts/parser.py +0 -0
- {libigl-2.6.3.dev3 → libigl-2.6.3.dev5}/src/AABB.cpp +0 -0
- {libigl-2.6.3.dev3 → libigl-2.6.3.dev5}/src/FileEncoding.cpp +0 -0
- {libigl-2.6.3.dev3 → libigl-2.6.3.dev5}/src/MappingEnergyType.cpp +0 -0
- {libigl-2.6.3.dev3 → libigl-2.6.3.dev5}/src/MassMatrixType.cpp +0 -0
- {libigl-2.6.3.dev3 → libigl-2.6.3.dev5}/src/OrientedBoundingBoxMinimizeType.cpp +0 -0
- {libigl-2.6.3.dev3 → libigl-2.6.3.dev5}/src/accumarray.cpp +0 -0
- {libigl-2.6.3.dev3 → libigl-2.6.3.dev5}/src/adjacency_list.cpp +0 -0
- {libigl-2.6.3.dev3 → libigl-2.6.3.dev5}/src/adjacency_matrix.cpp +0 -0
- {libigl-2.6.3.dev3 → libigl-2.6.3.dev5}/src/all_pairs_distances.cpp +0 -0
- {libigl-2.6.3.dev3 → libigl-2.6.3.dev5}/src/arap.cpp +0 -0
- {libigl-2.6.3.dev3 → libigl-2.6.3.dev5}/src/average_from_edges_onto_vertices.cpp +0 -0
- {libigl-2.6.3.dev3 → libigl-2.6.3.dev5}/src/average_onto_faces.cpp +0 -0
- {libigl-2.6.3.dev3 → libigl-2.6.3.dev5}/src/average_onto_vertices.cpp +0 -0
- {libigl-2.6.3.dev3 → libigl-2.6.3.dev5}/src/avg_edge_length.cpp +0 -0
- {libigl-2.6.3.dev3 → libigl-2.6.3.dev5}/src/barycenter.cpp +0 -0
- {libigl-2.6.3.dev3 → libigl-2.6.3.dev5}/src/barycentric_coordinates.cpp +0 -0
- {libigl-2.6.3.dev3 → libigl-2.6.3.dev5}/src/barycentric_interpolation.cpp +0 -0
- {libigl-2.6.3.dev3 → libigl-2.6.3.dev5}/src/bbw.cpp +0 -0
- {libigl-2.6.3.dev3 → libigl-2.6.3.dev5}/src/bezier.cpp +0 -0
- {libigl-2.6.3.dev3 → libigl-2.6.3.dev5}/src/bfs_orient.cpp +0 -0
- {libigl-2.6.3.dev3 → libigl-2.6.3.dev5}/src/biharmonic_coordinates.cpp +0 -0
- {libigl-2.6.3.dev3 → libigl-2.6.3.dev5}/src/bijective_composite_harmonic_mapping.cpp +0 -0
- {libigl-2.6.3.dev3 → libigl-2.6.3.dev5}/src/blue_noise.cpp +0 -0
- {libigl-2.6.3.dev3 → libigl-2.6.3.dev5}/src/boundary_facets.cpp +0 -0
- {libigl-2.6.3.dev3 → libigl-2.6.3.dev5}/src/bounding_box.cpp +0 -0
- {libigl-2.6.3.dev3 → libigl-2.6.3.dev5}/src/bounding_box_diagonal.cpp +0 -0
- {libigl-2.6.3.dev3 → libigl-2.6.3.dev5}/src/centroid.cpp +0 -0
- {libigl-2.6.3.dev3 → libigl-2.6.3.dev5}/src/circulation.cpp +0 -0
- {libigl-2.6.3.dev3 → libigl-2.6.3.dev5}/src/circumradius.cpp +0 -0
- {libigl-2.6.3.dev3 → libigl-2.6.3.dev5}/src/collapse_edge.cpp +0 -0
- {libigl-2.6.3.dev3 → libigl-2.6.3.dev5}/src/colormap.cpp +0 -0
- {libigl-2.6.3.dev3 → libigl-2.6.3.dev5}/src/comb_cross_field.cpp +0 -0
- {libigl-2.6.3.dev3 → libigl-2.6.3.dev5}/src/comb_frame_field.cpp +0 -0
- {libigl-2.6.3.dev3 → libigl-2.6.3.dev5}/src/combine.cpp +0 -0
- {libigl-2.6.3.dev3 → libigl-2.6.3.dev5}/src/compute_frame_field_bisectors.cpp +0 -0
- {libigl-2.6.3.dev3 → libigl-2.6.3.dev5}/src/connected_components.cpp +0 -0
- {libigl-2.6.3.dev3 → libigl-2.6.3.dev5}/src/copyleft/cgal/convex_hull.cpp +0 -0
- {libigl-2.6.3.dev3 → libigl-2.6.3.dev5}/src/copyleft/cgal/coplanar.cpp +0 -0
- {libigl-2.6.3.dev3 → libigl-2.6.3.dev5}/src/copyleft/cgal/delaunay_triangulation.cpp +0 -0
- {libigl-2.6.3.dev3 → libigl-2.6.3.dev5}/src/copyleft/cgal/extract_cells.cpp +0 -0
- {libigl-2.6.3.dev3 → libigl-2.6.3.dev5}/src/copyleft/cgal/fast_winding_number.cpp +0 -0
- {libigl-2.6.3.dev3 → libigl-2.6.3.dev5}/src/copyleft/cgal/intersect_other.cpp +0 -0
- {libigl-2.6.3.dev3 → libigl-2.6.3.dev5}/src/copyleft/cgal/intersect_with_half_space.cpp +0 -0
- {libigl-2.6.3.dev3 → libigl-2.6.3.dev5}/src/copyleft/cgal/mesh_boolean.cpp +0 -0
- {libigl-2.6.3.dev3 → libigl-2.6.3.dev5}/src/copyleft/cgal/module.cpp +0 -0
- {libigl-2.6.3.dev3 → libigl-2.6.3.dev5}/src/copyleft/cgal/oriented_bounding_box.cpp +0 -0
- {libigl-2.6.3.dev3 → libigl-2.6.3.dev5}/src/copyleft/cgal/outer_hull.cpp +0 -0
- {libigl-2.6.3.dev3 → libigl-2.6.3.dev5}/src/copyleft/cgal/peel_outer_hull_layers.cpp +0 -0
- {libigl-2.6.3.dev3 → libigl-2.6.3.dev5}/src/copyleft/cgal/peel_winding_number_layers.cpp +0 -0
- {libigl-2.6.3.dev3 → libigl-2.6.3.dev5}/src/copyleft/cgal/point_areas.cpp +0 -0
- {libigl-2.6.3.dev3 → libigl-2.6.3.dev5}/src/copyleft/cgal/remesh_self_intersections.cpp +0 -0
- {libigl-2.6.3.dev3 → libigl-2.6.3.dev5}/src/copyleft/cgal/trim_with_solid.cpp +0 -0
- {libigl-2.6.3.dev3 → libigl-2.6.3.dev5}/src/copyleft/marching_cubes.cpp +0 -0
- {libigl-2.6.3.dev3 → libigl-2.6.3.dev5}/src/copyleft/module.cpp +0 -0
- {libigl-2.6.3.dev3 → libigl-2.6.3.dev5}/src/copyleft/progressive_hulls.cpp +0 -0
- {libigl-2.6.3.dev3 → libigl-2.6.3.dev5}/src/copyleft/quadprog.cpp +0 -0
- {libigl-2.6.3.dev3 → libigl-2.6.3.dev5}/src/copyleft/tetgen/cdt.cpp +0 -0
- {libigl-2.6.3.dev3 → libigl-2.6.3.dev5}/src/copyleft/tetgen/mesh_with_skeleton.cpp +0 -0
- {libigl-2.6.3.dev3 → libigl-2.6.3.dev5}/src/copyleft/tetgen/module.cpp +0 -0
- {libigl-2.6.3.dev3 → libigl-2.6.3.dev5}/src/copyleft/tetgen/tetrahedralize.cpp +0 -0
- {libigl-2.6.3.dev3 → libigl-2.6.3.dev5}/src/cotmatrix.cpp +0 -0
- {libigl-2.6.3.dev3 → libigl-2.6.3.dev5}/src/cotmatrix_entries.cpp +0 -0
- {libigl-2.6.3.dev3 → libigl-2.6.3.dev5}/src/cotmatrix_intrinsic.cpp +0 -0
- {libigl-2.6.3.dev3 → libigl-2.6.3.dev5}/src/cross_field_mismatch.cpp +0 -0
- {libigl-2.6.3.dev3 → libigl-2.6.3.dev5}/src/crouzeix_raviart_cotmatrix.cpp +0 -0
- {libigl-2.6.3.dev3 → libigl-2.6.3.dev5}/src/crouzeix_raviart_massmatrix.cpp +0 -0
- {libigl-2.6.3.dev3 → libigl-2.6.3.dev5}/src/curved_hessian_energy.cpp +0 -0
- {libigl-2.6.3.dev3 → libigl-2.6.3.dev5}/src/cut_mesh.cpp +0 -0
- {libigl-2.6.3.dev3 → libigl-2.6.3.dev5}/src/cut_mesh_from_singularities.cpp +0 -0
- {libigl-2.6.3.dev3 → libigl-2.6.3.dev5}/src/cut_to_disk.cpp +0 -0
- {libigl-2.6.3.dev3 → libigl-2.6.3.dev5}/src/cylinder.cpp +0 -0
- {libigl-2.6.3.dev3 → libigl-2.6.3.dev5}/src/decimate.cpp +0 -0
- {libigl-2.6.3.dev3 → libigl-2.6.3.dev5}/src/dihedral_angles.cpp +0 -0
- {libigl-2.6.3.dev3 → libigl-2.6.3.dev5}/src/dihedral_angles_intrinsic.cpp +0 -0
- {libigl-2.6.3.dev3 → libigl-2.6.3.dev5}/src/dijkstra.cpp +0 -0
- {libigl-2.6.3.dev3 → libigl-2.6.3.dev5}/src/directed_edge_parents.cpp +0 -0
- {libigl-2.6.3.dev3 → libigl-2.6.3.dev5}/src/doublearea.cpp +0 -0
- {libigl-2.6.3.dev3 → libigl-2.6.3.dev5}/src/dual_contouring.cpp +0 -0
- {libigl-2.6.3.dev3 → libigl-2.6.3.dev5}/src/ears.cpp +0 -0
- {libigl-2.6.3.dev3 → libigl-2.6.3.dev5}/src/edge_flaps.cpp +0 -0
- {libigl-2.6.3.dev3 → libigl-2.6.3.dev5}/src/edge_lengths.cpp +0 -0
- {libigl-2.6.3.dev3 → libigl-2.6.3.dev5}/src/edge_topology.cpp +0 -0
- {libigl-2.6.3.dev3 → libigl-2.6.3.dev5}/src/edges.cpp +0 -0
- {libigl-2.6.3.dev3 → libigl-2.6.3.dev5}/src/edges_to_path.cpp +0 -0
- {libigl-2.6.3.dev3 → libigl-2.6.3.dev5}/src/embree/EmbreeIntersector.cpp +0 -0
- {libigl-2.6.3.dev3 → libigl-2.6.3.dev5}/src/embree/ambient_occlusion.cpp +0 -0
- {libigl-2.6.3.dev3 → libigl-2.6.3.dev5}/src/embree/bone_visible.cpp +0 -0
- {libigl-2.6.3.dev3 → libigl-2.6.3.dev5}/src/embree/line_mesh_intersection.cpp +0 -0
- {libigl-2.6.3.dev3 → libigl-2.6.3.dev5}/src/embree/module.cpp +0 -0
- {libigl-2.6.3.dev3 → libigl-2.6.3.dev5}/src/embree/reorient_facets_raycast.cpp +0 -0
- {libigl-2.6.3.dev3 → libigl-2.6.3.dev5}/src/embree/shape_diameter_function.cpp +0 -0
- {libigl-2.6.3.dev3 → libigl-2.6.3.dev5}/src/euler_characteristic.cpp +0 -0
- {libigl-2.6.3.dev3 → libigl-2.6.3.dev5}/src/exact_geodesic.cpp +0 -0
- {libigl-2.6.3.dev3 → libigl-2.6.3.dev5}/src/exterior_edges.cpp +0 -0
- {libigl-2.6.3.dev3 → libigl-2.6.3.dev5}/src/extract_manifold_patches.cpp +0 -0
- {libigl-2.6.3.dev3 → libigl-2.6.3.dev5}/src/face_areas.cpp +0 -0
- {libigl-2.6.3.dev3 → libigl-2.6.3.dev5}/src/face_occurrences.cpp +0 -0
- {libigl-2.6.3.dev3 → libigl-2.6.3.dev5}/src/facet_adjacency_matrix.cpp +0 -0
- {libigl-2.6.3.dev3 → libigl-2.6.3.dev5}/src/facet_components.cpp +0 -0
- {libigl-2.6.3.dev3 → libigl-2.6.3.dev5}/src/false_barycentric_subdivision.cpp +0 -0
- {libigl-2.6.3.dev3 → libigl-2.6.3.dev5}/src/find_cross_field_singularities.cpp +0 -0
- {libigl-2.6.3.dev3 → libigl-2.6.3.dev5}/src/fit_plane.cpp +0 -0
- {libigl-2.6.3.dev3 → libigl-2.6.3.dev5}/src/flipped_triangles.cpp +0 -0
- {libigl-2.6.3.dev3 → libigl-2.6.3.dev5}/src/flood_fill.cpp +0 -0
- {libigl-2.6.3.dev3 → libigl-2.6.3.dev5}/src/gaussian_curvature.cpp +0 -0
- {libigl-2.6.3.dev3 → libigl-2.6.3.dev5}/src/grad.cpp +0 -0
- {libigl-2.6.3.dev3 → libigl-2.6.3.dev5}/src/grid.cpp +0 -0
- {libigl-2.6.3.dev3 → libigl-2.6.3.dev5}/src/harmonic.cpp +0 -0
- {libigl-2.6.3.dev3 → libigl-2.6.3.dev5}/src/hausdorff.cpp +0 -0
- {libigl-2.6.3.dev3 → libigl-2.6.3.dev5}/src/heat_geodesics.cpp +0 -0
- {libigl-2.6.3.dev3 → libigl-2.6.3.dev5}/src/hessian.cpp +0 -0
- {libigl-2.6.3.dev3 → libigl-2.6.3.dev5}/src/hessian_energy.cpp +0 -0
- {libigl-2.6.3.dev3 → libigl-2.6.3.dev5}/src/hsv_to_rgb.cpp +0 -0
- {libigl-2.6.3.dev3 → libigl-2.6.3.dev5}/src/icosahedron.cpp +0 -0
- {libigl-2.6.3.dev3 → libigl-2.6.3.dev5}/src/in_element.cpp +0 -0
- {libigl-2.6.3.dev3 → libigl-2.6.3.dev5}/src/inradius.cpp +0 -0
- {libigl-2.6.3.dev3 → libigl-2.6.3.dev5}/src/internal_angles.cpp +0 -0
- {libigl-2.6.3.dev3 → libigl-2.6.3.dev5}/src/intrinsic_delaunay_cotmatrix.cpp +0 -0
- {libigl-2.6.3.dev3 → libigl-2.6.3.dev5}/src/intrinsic_delaunay_triangulation.cpp +0 -0
- {libigl-2.6.3.dev3 → libigl-2.6.3.dev5}/src/is_border_vertex.cpp +0 -0
- {libigl-2.6.3.dev3 → libigl-2.6.3.dev5}/src/is_boundary_edge.cpp +0 -0
- {libigl-2.6.3.dev3 → libigl-2.6.3.dev5}/src/is_delaunay.cpp +0 -0
- {libigl-2.6.3.dev3 → libigl-2.6.3.dev5}/src/is_edge_manifold.cpp +0 -0
- {libigl-2.6.3.dev3 → libigl-2.6.3.dev5}/src/is_intrinsic_delaunay.cpp +0 -0
- {libigl-2.6.3.dev3 → libigl-2.6.3.dev5}/src/is_irregular_vertex.cpp +0 -0
- {libigl-2.6.3.dev3 → libigl-2.6.3.dev5}/src/is_vertex_manifold.cpp +0 -0
- {libigl-2.6.3.dev3 → libigl-2.6.3.dev5}/src/ismember_rows.cpp +0 -0
- {libigl-2.6.3.dev3 → libigl-2.6.3.dev5}/src/isolines.cpp +0 -0
- {libigl-2.6.3.dev3 → libigl-2.6.3.dev5}/src/isolines_intrinsic.cpp +0 -0
- {libigl-2.6.3.dev3 → libigl-2.6.3.dev5}/src/iterative_closest_point.cpp +0 -0
- {libigl-2.6.3.dev3 → libigl-2.6.3.dev5}/src/kelvinlets.cpp +0 -0
- {libigl-2.6.3.dev3 → libigl-2.6.3.dev5}/src/knn.cpp +0 -0
- {libigl-2.6.3.dev3 → libigl-2.6.3.dev5}/src/lbs_matrix.cpp +0 -0
- {libigl-2.6.3.dev3 → libigl-2.6.3.dev5}/src/lexicographic_triangulation.cpp +0 -0
- {libigl-2.6.3.dev3 → libigl-2.6.3.dev5}/src/lipschitz_octree.cpp +0 -0
- {libigl-2.6.3.dev3 → libigl-2.6.3.dev5}/src/local_basis.cpp +0 -0
- {libigl-2.6.3.dev3 → libigl-2.6.3.dev5}/src/look_at.cpp +0 -0
- {libigl-2.6.3.dev3 → libigl-2.6.3.dev5}/src/loop.cpp +0 -0
- {libigl-2.6.3.dev3 → libigl-2.6.3.dev5}/src/lscm.cpp +0 -0
- {libigl-2.6.3.dev3 → libigl-2.6.3.dev5}/src/map_vertices_to_circle.cpp +0 -0
- {libigl-2.6.3.dev3 → libigl-2.6.3.dev5}/src/massmatrix.cpp +0 -0
- {libigl-2.6.3.dev3 → libigl-2.6.3.dev5}/src/massmatrix_intrinsic.cpp +0 -0
- {libigl-2.6.3.dev3 → libigl-2.6.3.dev5}/src/matlab_format.cpp +0 -0
- {libigl-2.6.3.dev3 → libigl-2.6.3.dev5}/src/min_quad_with_fixed.cpp +0 -0
- {libigl-2.6.3.dev3 → libigl-2.6.3.dev5}/src/module.cpp +0 -0
- {libigl-2.6.3.dev3 → libigl-2.6.3.dev5}/src/moments.cpp +0 -0
- {libigl-2.6.3.dev3 → libigl-2.6.3.dev5}/src/mvc.cpp +0 -0
- {libigl-2.6.3.dev3 → libigl-2.6.3.dev5}/src/noop.cpp +0 -0
- {libigl-2.6.3.dev3 → libigl-2.6.3.dev5}/src/octree.cpp +0 -0
- {libigl-2.6.3.dev3 → libigl-2.6.3.dev5}/src/offset_surface.cpp +0 -0
- {libigl-2.6.3.dev3 → libigl-2.6.3.dev5}/src/on_boundary.cpp +0 -0
- {libigl-2.6.3.dev3 → libigl-2.6.3.dev5}/src/orient_halfedges.cpp +0 -0
- {libigl-2.6.3.dev3 → libigl-2.6.3.dev5}/src/orient_outward.cpp +0 -0
- {libigl-2.6.3.dev3 → libigl-2.6.3.dev5}/src/orientable_patches.cpp +0 -0
- {libigl-2.6.3.dev3 → libigl-2.6.3.dev5}/src/oriented_bounding_box.cpp +0 -0
- {libigl-2.6.3.dev3 → libigl-2.6.3.dev5}/src/oriented_facets.cpp +0 -0
- {libigl-2.6.3.dev3 → libigl-2.6.3.dev5}/src/per_corner_normals.cpp +0 -0
- {libigl-2.6.3.dev3 → libigl-2.6.3.dev5}/src/per_edge_normals.cpp +0 -0
- {libigl-2.6.3.dev3 → libigl-2.6.3.dev5}/src/per_face_normals.cpp +0 -0
- {libigl-2.6.3.dev3 → libigl-2.6.3.dev5}/src/per_vertex_attribute_smoothing.cpp +0 -0
- {libigl-2.6.3.dev3 → libigl-2.6.3.dev5}/src/per_vertex_normals.cpp +0 -0
- {libigl-2.6.3.dev3 → libigl-2.6.3.dev5}/src/point_mesh_squared_distance.cpp +0 -0
- {libigl-2.6.3.dev3 → libigl-2.6.3.dev5}/src/polar_dec.cpp +0 -0
- {libigl-2.6.3.dev3 → libigl-2.6.3.dev5}/src/polar_svd.cpp +0 -0
- {libigl-2.6.3.dev3 → libigl-2.6.3.dev5}/src/polygon_corners.cpp +0 -0
- {libigl-2.6.3.dev3 → libigl-2.6.3.dev5}/src/polygons_to_triangles.cpp +0 -0
- {libigl-2.6.3.dev3 → libigl-2.6.3.dev5}/src/predicates/delaunay_triangulation.cpp +0 -0
- {libigl-2.6.3.dev3 → libigl-2.6.3.dev5}/src/predicates/ear_clipping.cpp +0 -0
- {libigl-2.6.3.dev3 → libigl-2.6.3.dev5}/src/predicates/find_intersections.cpp +0 -0
- {libigl-2.6.3.dev3 → libigl-2.6.3.dev5}/src/predicates/find_self_intersections.cpp +0 -0
- {libigl-2.6.3.dev3 → libigl-2.6.3.dev5}/src/predicates/lexicographic_triangulation.cpp +0 -0
- {libigl-2.6.3.dev3 → libigl-2.6.3.dev5}/src/predicates/module.cpp +0 -0
- {libigl-2.6.3.dev3 → libigl-2.6.3.dev5}/src/predicates/point_inside_convex_polygon.cpp +0 -0
- {libigl-2.6.3.dev3 → libigl-2.6.3.dev5}/src/predicates/polygons_to_triangles.cpp +0 -0
- {libigl-2.6.3.dev3 → libigl-2.6.3.dev5}/src/predicates/segment_segment_intersect.cpp +0 -0
- {libigl-2.6.3.dev3 → libigl-2.6.3.dev5}/src/predicates/triangle_triangle_intersect.cpp +0 -0
- {libigl-2.6.3.dev3 → libigl-2.6.3.dev5}/src/principal_curvature.cpp +0 -0
- {libigl-2.6.3.dev3 → libigl-2.6.3.dev5}/src/procrustes.cpp +0 -0
- {libigl-2.6.3.dev3 → libigl-2.6.3.dev5}/src/project.cpp +0 -0
- {libigl-2.6.3.dev3 → libigl-2.6.3.dev5}/src/project_to_line.cpp +0 -0
- {libigl-2.6.3.dev3 → libigl-2.6.3.dev5}/src/project_to_line_segment.cpp +0 -0
- {libigl-2.6.3.dev3 → libigl-2.6.3.dev5}/src/pseudonormal_test.cpp +0 -0
- {libigl-2.6.3.dev3 → libigl-2.6.3.dev5}/src/qslim.cpp +0 -0
- {libigl-2.6.3.dev3 → libigl-2.6.3.dev5}/src/quad_grid.cpp +0 -0
- {libigl-2.6.3.dev3 → libigl-2.6.3.dev5}/src/random_dir.cpp +0 -0
- {libigl-2.6.3.dev3 → libigl-2.6.3.dev5}/src/random_points_on_mesh.cpp +0 -0
- {libigl-2.6.3.dev3 → libigl-2.6.3.dev5}/src/ray_mesh_intersect.cpp +0 -0
- {libigl-2.6.3.dev3 → libigl-2.6.3.dev5}/src/ray_sphere_intersect.cpp +0 -0
- {libigl-2.6.3.dev3 → libigl-2.6.3.dev5}/src/ray_triangle_intersect.cpp +0 -0
- {libigl-2.6.3.dev3 → libigl-2.6.3.dev5}/src/readCSV.cpp +0 -0
- {libigl-2.6.3.dev3 → libigl-2.6.3.dev5}/src/readDMAT.cpp +0 -0
- {libigl-2.6.3.dev3 → libigl-2.6.3.dev5}/src/readMESH.cpp +0 -0
- {libigl-2.6.3.dev3 → libigl-2.6.3.dev5}/src/readMSH.cpp +0 -0
- {libigl-2.6.3.dev3 → libigl-2.6.3.dev5}/src/readOBJ.cpp +0 -0
- {libigl-2.6.3.dev3 → libigl-2.6.3.dev5}/src/readOFF.cpp +0 -0
- {libigl-2.6.3.dev3 → libigl-2.6.3.dev5}/src/readSTL.cpp +0 -0
- {libigl-2.6.3.dev3 → libigl-2.6.3.dev5}/src/read_triangle_mesh.cpp +0 -0
- {libigl-2.6.3.dev3 → libigl-2.6.3.dev5}/src/remove_duplicate_vertices.cpp +0 -0
- {libigl-2.6.3.dev3 → libigl-2.6.3.dev5}/src/remove_unreferenced.cpp +0 -0
- {libigl-2.6.3.dev3 → libigl-2.6.3.dev5}/src/rgb_to_hsv.cpp +0 -0
- {libigl-2.6.3.dev3 → libigl-2.6.3.dev5}/src/rigid_alignment.cpp +0 -0
- {libigl-2.6.3.dev3 → libigl-2.6.3.dev5}/src/rotate_vectors.cpp +0 -0
- {libigl-2.6.3.dev3 → libigl-2.6.3.dev5}/src/rotation_matrix_from_directions.cpp +0 -0
- {libigl-2.6.3.dev3 → libigl-2.6.3.dev5}/src/sample_edges.cpp +0 -0
- {libigl-2.6.3.dev3 → libigl-2.6.3.dev5}/src/segment_segment_intersect.cpp +0 -0
- {libigl-2.6.3.dev3 → libigl-2.6.3.dev5}/src/sharp_edges.cpp +0 -0
- {libigl-2.6.3.dev3 → libigl-2.6.3.dev5}/src/signed_angle.cpp +0 -0
- {libigl-2.6.3.dev3 → libigl-2.6.3.dev5}/src/signed_distance.cpp +0 -0
- {libigl-2.6.3.dev3 → libigl-2.6.3.dev5}/src/slim.cpp +0 -0
- {libigl-2.6.3.dev3 → libigl-2.6.3.dev5}/src/snap_points.cpp +0 -0
- {libigl-2.6.3.dev3 → libigl-2.6.3.dev5}/src/solid_angle.cpp +0 -0
- {libigl-2.6.3.dev3 → libigl-2.6.3.dev5}/src/sparse_map_noop.cpp +0 -0
- {libigl-2.6.3.dev3 → libigl-2.6.3.dev5}/src/sparse_map_shape.cpp +0 -0
- {libigl-2.6.3.dev3 → libigl-2.6.3.dev5}/src/sparse_noop.cpp +0 -0
- {libigl-2.6.3.dev3 → libigl-2.6.3.dev5}/src/sparse_shape.cpp +0 -0
- {libigl-2.6.3.dev3 → libigl-2.6.3.dev5}/src/spectra/EigsType.cpp +0 -0
- {libigl-2.6.3.dev3 → libigl-2.6.3.dev5}/src/spectra/eigs.cpp +0 -0
- {libigl-2.6.3.dev3 → libigl-2.6.3.dev5}/src/spectra/lscm.cpp +0 -0
- {libigl-2.6.3.dev3 → libigl-2.6.3.dev5}/src/spectra/module.cpp +0 -0
- {libigl-2.6.3.dev3 → libigl-2.6.3.dev5}/src/split_nonmanifold.cpp +0 -0
- {libigl-2.6.3.dev3 → libigl-2.6.3.dev5}/src/squared_edge_lengths.cpp +0 -0
- {libigl-2.6.3.dev3 → libigl-2.6.3.dev5}/src/super_fibonacci.cpp +0 -0
- {libigl-2.6.3.dev3 → libigl-2.6.3.dev5}/src/tet_tet_adjacency.cpp +0 -0
- {libigl-2.6.3.dev3 → libigl-2.6.3.dev5}/src/tri_tri_intersect.cpp +0 -0
- {libigl-2.6.3.dev3 → libigl-2.6.3.dev5}/src/triangle/cdt.cpp +0 -0
- {libigl-2.6.3.dev3 → libigl-2.6.3.dev5}/src/triangle/module.cpp +0 -0
- {libigl-2.6.3.dev3 → libigl-2.6.3.dev5}/src/triangle/refine.cpp +0 -0
- {libigl-2.6.3.dev3 → libigl-2.6.3.dev5}/src/triangle/scaf.cpp +0 -0
- {libigl-2.6.3.dev3 → libigl-2.6.3.dev5}/src/triangle/triangulate.cpp +0 -0
- {libigl-2.6.3.dev3 → libigl-2.6.3.dev5}/src/triangle_fan.cpp +0 -0
- {libigl-2.6.3.dev3 → libigl-2.6.3.dev5}/src/triangle_triangle_adjacency.cpp +0 -0
- {libigl-2.6.3.dev3 → libigl-2.6.3.dev5}/src/triangulated_grid.cpp +0 -0
- {libigl-2.6.3.dev3 → libigl-2.6.3.dev5}/src/turning_number.cpp +0 -0
- {libigl-2.6.3.dev3 → libigl-2.6.3.dev5}/src/uniformly_sample_two_manifold.cpp +0 -0
- {libigl-2.6.3.dev3 → libigl-2.6.3.dev5}/src/unique_edge_map.cpp +0 -0
- {libigl-2.6.3.dev3 → libigl-2.6.3.dev5}/src/unique_simplices.cpp +0 -0
- {libigl-2.6.3.dev3 → libigl-2.6.3.dev5}/src/unique_sparse_voxel_corners.cpp +0 -0
- {libigl-2.6.3.dev3 → libigl-2.6.3.dev5}/src/unproject.cpp +0 -0
- {libigl-2.6.3.dev3 → libigl-2.6.3.dev5}/src/upsample.cpp +0 -0
- {libigl-2.6.3.dev3 → libigl-2.6.3.dev5}/src/vector_area_matrix.cpp +0 -0
- {libigl-2.6.3.dev3 → libigl-2.6.3.dev5}/src/vertex_triangle_adjacency.cpp +0 -0
- {libigl-2.6.3.dev3 → libigl-2.6.3.dev5}/src/volume.cpp +0 -0
- {libigl-2.6.3.dev3 → libigl-2.6.3.dev5}/src/voronoi_mass.cpp +0 -0
- {libigl-2.6.3.dev3 → libigl-2.6.3.dev5}/src/winding_number.cpp +0 -0
- {libigl-2.6.3.dev3 → libigl-2.6.3.dev5}/src/writeDMAT.cpp +0 -0
- {libigl-2.6.3.dev3 → libigl-2.6.3.dev5}/src/writeMESH.cpp +0 -0
- {libigl-2.6.3.dev3 → libigl-2.6.3.dev5}/src/writeMSH.cpp +0 -0
- {libigl-2.6.3.dev3 → libigl-2.6.3.dev5}/src/writeOBJ.cpp +0 -0
- {libigl-2.6.3.dev3 → libigl-2.6.3.dev5}/src/writeOFF.cpp +0 -0
- {libigl-2.6.3.dev3 → libigl-2.6.3.dev5}/src/writePLY.cpp +0 -0
- {libigl-2.6.3.dev3 → libigl-2.6.3.dev5}/src/writeSTL.cpp +0 -0
- {libigl-2.6.3.dev3 → libigl-2.6.3.dev5}/src/write_triangle_mesh.cpp +0 -0
- {libigl-2.6.3.dev3 → libigl-2.6.3.dev5}/tutorial/contributing.md +0 -0
- {libigl-2.6.3.dev3 → libigl-2.6.3.dev5}/tutorial/exporter.py +0 -0
- {libigl-2.6.3.dev3 → libigl-2.6.3.dev5}/tutorial/igl_docs.md +0 -0
- {libigl-2.6.3.dev3 → libigl-2.6.3.dev5}/tutorial/images/102_DrawMesh.png +0 -0
- {libigl-2.6.3.dev3 → libigl-2.6.3.dev5}/tutorial/images/104_Colors.png +0 -0
- {libigl-2.6.3.dev3 → libigl-2.6.3.dev5}/tutorial/images/105_Overlays.png +0 -0
- {libigl-2.6.3.dev3 → libigl-2.6.3.dev5}/tutorial/images/106_ViewerMenu.png +0 -0
- {libigl-2.6.3.dev3 → libigl-2.6.3.dev5}/tutorial/images/501_HarmonicParam.png +0 -0
- {libigl-2.6.3.dev3 → libigl-2.6.3.dev5}/tutorial/images/502_LSCMParam.png +0 -0
- {libigl-2.6.3.dev3 → libigl-2.6.3.dev5}/tutorial/images/503_ARAPParam.png +0 -0
- {libigl-2.6.3.dev3 → libigl-2.6.3.dev5}/tutorial/images/504_nrosy_field.png +0 -0
- {libigl-2.6.3.dev3 → libigl-2.6.3.dev5}/tutorial/images/504_vector_field.png +0 -0
- {libigl-2.6.3.dev3 → libigl-2.6.3.dev5}/tutorial/images/505_MIQ_1.png +0 -0
- {libigl-2.6.3.dev3 → libigl-2.6.3.dev5}/tutorial/images/505_MIQ_2.png +0 -0
- {libigl-2.6.3.dev3 → libigl-2.6.3.dev5}/tutorial/images/505_MIQ_3.png +0 -0
- {libigl-2.6.3.dev3 → libigl-2.6.3.dev5}/tutorial/images/505_MIQ_4.png +0 -0
- {libigl-2.6.3.dev3 → libigl-2.6.3.dev5}/tutorial/images/505_MIQ_5.png +0 -0
- {libigl-2.6.3.dev3 → libigl-2.6.3.dev5}/tutorial/images/505_MIQ_6.png +0 -0
- {libigl-2.6.3.dev3 → libigl-2.6.3.dev5}/tutorial/images/505_MIQ_7.png +0 -0
- {libigl-2.6.3.dev3 → libigl-2.6.3.dev5}/tutorial/images/505_MIQ_8.png +0 -0
- {libigl-2.6.3.dev3 → libigl-2.6.3.dev5}/tutorial/images/506_FrameField_1.png +0 -0
- {libigl-2.6.3.dev3 → libigl-2.6.3.dev5}/tutorial/images/506_FrameField_2.png +0 -0
- {libigl-2.6.3.dev3 → libigl-2.6.3.dev5}/tutorial/images/506_FrameField_3.png +0 -0
- {libigl-2.6.3.dev3 → libigl-2.6.3.dev5}/tutorial/images/506_FrameField_4.png +0 -0
- {libigl-2.6.3.dev3 → libigl-2.6.3.dev5}/tutorial/images/507_PolyVectorField.png +0 -0
- {libigl-2.6.3.dev3 → libigl-2.6.3.dev5}/tutorial/images/508_ConjugateField.png +0 -0
- {libigl-2.6.3.dev3 → libigl-2.6.3.dev5}/tutorial/images/509_Planarization.png +0 -0
- {libigl-2.6.3.dev3 → libigl-2.6.3.dev5}/tutorial/images/510_Integrable.png +0 -0
- {libigl-2.6.3.dev3 → libigl-2.6.3.dev5}/tutorial/images/511_PolyVectorFieldGeneral.png +0 -0
- {libigl-2.6.3.dev3 → libigl-2.6.3.dev5}/tutorial/images/602_Matlab_1.png +0 -0
- {libigl-2.6.3.dev3 → libigl-2.6.3.dev5}/tutorial/images/602_Matlab_2.png +0 -0
- {libigl-2.6.3.dev3 → libigl-2.6.3.dev5}/tutorial/images/604_Triangle.png +0 -0
- {libigl-2.6.3.dev3 → libigl-2.6.3.dev5}/tutorial/images/605_Tetgen.png +0 -0
- {libigl-2.6.3.dev3 → libigl-2.6.3.dev5}/tutorial/images/606_AmbientOcclusion.png +0 -0
- {libigl-2.6.3.dev3 → libigl-2.6.3.dev5}/tutorial/images/607_Picking.png +0 -0
- {libigl-2.6.3.dev3 → libigl-2.6.3.dev5}/tutorial/images/608_LIM.png +0 -0
- {libigl-2.6.3.dev3 → libigl-2.6.3.dev5}/tutorial/images/712_beetles.jpg +0 -0
- {libigl-2.6.3.dev3 → libigl-2.6.3.dev5}/tutorial/images/713_ShapeUp.png +0 -0
- {libigl-2.6.3.dev3 → libigl-2.6.3.dev5}/tutorial/images/VF.pdf +0 -0
- {libigl-2.6.3.dev3 → libigl-2.6.3.dev5}/tutorial/images/VF.png +0 -0
- {libigl-2.6.3.dev3 → libigl-2.6.3.dev5}/tutorial/images/arm-dqs.jpg +0 -0
- {libigl-2.6.3.dev3 → libigl-2.6.3.dev5}/tutorial/images/armadillo-fast.jpg +0 -0
- {libigl-2.6.3.dev3 → libigl-2.6.3.dev5}/tutorial/images/armadillo-marching-cubes.jpg +0 -0
- {libigl-2.6.3.dev3 → libigl-2.6.3.dev5}/tutorial/images/background.gif +0 -0
- {libigl-2.6.3.dev3 → libigl-2.6.3.dev5}/tutorial/images/beetle-eigen-decomposition.gif +0 -0
- {libigl-2.6.3.dev3 → libigl-2.6.3.dev5}/tutorial/images/big-sigcat-winding-number.gif +0 -0
- {libigl-2.6.3.dev3 → libigl-2.6.3.dev5}/tutorial/images/bump-k-harmonic.jpg +0 -0
- {libigl-2.6.3.dev3 → libigl-2.6.3.dev5}/tutorial/images/bumpy-gaussian-curvature.jpg +0 -0
- {libigl-2.6.3.dev3 → libigl-2.6.3.dev5}/tutorial/images/bunny-signed-distance.gif +0 -0
- {libigl-2.6.3.dev3 → libigl-2.6.3.dev5}/tutorial/images/bunny-swept-volume.gif +0 -0
- {libigl-2.6.3.dev3 → libigl-2.6.3.dev5}/tutorial/images/camelhead-laplace-equation.jpg +0 -0
- {libigl-2.6.3.dev3 → libigl-2.6.3.dev5}/tutorial/images/cheburashka-biharmonic-leq.jpg +0 -0
- {libigl-2.6.3.dev3 → libigl-2.6.3.dev5}/tutorial/images/cheburashka-gradient.jpg +0 -0
- {libigl-2.6.3.dev3 → libigl-2.6.3.dev5}/tutorial/images/cheburashka-knight-boolean.jpg +0 -0
- {libigl-2.6.3.dev3 → libigl-2.6.3.dev5}/tutorial/images/cheburashka-multiscale-biharmonic-kernels.jpg +0 -0
- {libigl-2.6.3.dev3 → libigl-2.6.3.dev5}/tutorial/images/cow-curvature-flow.jpg +0 -0
- {libigl-2.6.3.dev3 → libigl-2.6.3.dev5}/tutorial/images/cube-sphere-cylinders-csg-tree.jpg +0 -0
- {libigl-2.6.3.dev3 → libigl-2.6.3.dev5}/tutorial/images/cube-sphere-cylinders-csg.gif +0 -0
- {libigl-2.6.3.dev3 → libigl-2.6.3.dev5}/tutorial/images/decimated-knight-arap.jpg +0 -0
- {libigl-2.6.3.dev3 → libigl-2.6.3.dev5}/tutorial/images/decimated-knight-slice-color.jpg +0 -0
- {libigl-2.6.3.dev3 → libigl-2.6.3.dev5}/tutorial/images/decimated-knight-sort-color.jpg +0 -0
- {libigl-2.6.3.dev3 → libigl-2.6.3.dev5}/tutorial/images/decimated-knight-subdivision.gif +0 -0
- {libigl-2.6.3.dev3 → libigl-2.6.3.dev5}/tutorial/images/edge-collapse.jpg +0 -0
- {libigl-2.6.3.dev3 → libigl-2.6.3.dev5}/tutorial/images/edge-collapse.pdf +0 -0
- {libigl-2.6.3.dev3 → libigl-2.6.3.dev5}/tutorial/images/fandisk-normals.jpg +0 -0
- {libigl-2.6.3.dev3 → libigl-2.6.3.dev5}/tutorial/images/fertility-edge-collapse.gif +0 -0
- {libigl-2.6.3.dev3 → libigl-2.6.3.dev5}/tutorial/images/fertility-principal-curvature.jpg +0 -0
- {libigl-2.6.3.dev3 → libigl-2.6.3.dev5}/tutorial/images/geodesicdistance.jpg +0 -0
- {libigl-2.6.3.dev3 → libigl-2.6.3.dev5}/tutorial/images/hand-bbw.jpg +0 -0
- {libigl-2.6.3.dev3 → libigl-2.6.3.dev5}/tutorial/images/hat-function.jpg +0 -0
- {libigl-2.6.3.dev3 → libigl-2.6.3.dev5}/tutorial/images/heat-geodesic-beetle.gif +0 -0
- {libigl-2.6.3.dev3 → libigl-2.6.3.dev5}/tutorial/images/heat-geodesic-peaks.png +0 -0
- {libigl-2.6.3.dev3 → libigl-2.6.3.dev5}/tutorial/images/libigl-logo.jpg +0 -0
- {libigl-2.6.3.dev3 → libigl-2.6.3.dev5}/tutorial/images/max-biharmonic.jpg +0 -0
- {libigl-2.6.3.dev3 → libigl-2.6.3.dev5}/tutorial/images/multiple-meshes.png +0 -0
- {libigl-2.6.3.dev3 → libigl-2.6.3.dev5}/tutorial/images/octopus-biharmonic-coordinates-physics.gif +0 -0
- {libigl-2.6.3.dev3 → libigl-2.6.3.dev5}/tutorial/images/simplicial_complex_augmentation_framework.png +0 -0
- {libigl-2.6.3.dev3 → libigl-2.6.3.dev5}/tutorial/images/slim.png +0 -0
- {libigl-2.6.3.dev3 → libigl-2.6.3.dev5}/tutorial/images/streamlines.jpg +0 -0
- {libigl-2.6.3.dev3 → libigl-2.6.3.dev5}/tutorial/images/truck-facet-orientation.jpg +0 -0
- {libigl-2.6.3.dev3 → libigl-2.6.3.dev5}/tutorial/index.md +0 -0
- {libigl-2.6.3.dev3 → libigl-2.6.3.dev5}/tutorial/marching_cubes.py +0 -0
- {libigl-2.6.3.dev3 → libigl-2.6.3.dev5}/tutorial/plot_to_md.py +0 -0
- {libigl-2.6.3.dev3 → libigl-2.6.3.dev5}/tutorial/tut-chapter0.ipynb +0 -0
- {libigl-2.6.3.dev3 → libigl-2.6.3.dev5}/tutorial/tut-chapter2.ipynb +0 -0
- {libigl-2.6.3.dev3 → libigl-2.6.3.dev5}/tutorial/tut-chapter3.ipynb +0 -0
- {libigl-2.6.3.dev3 → libigl-2.6.3.dev5}/tutorial/tut-chapter4.ipynb +0 -0
- {libigl-2.6.3.dev3 → libigl-2.6.3.dev5}/tutorial/tut-chapter5.ipynb +0 -0
- {libigl-2.6.3.dev3 → libigl-2.6.3.dev5}/tutorial/tut-chapter6.ipynb +0 -0
- {libigl-2.6.3.dev3 → libigl-2.6.3.dev5}/tutorial/tut-chapter7.ipynb +0 -0
- {libigl-2.6.3.dev3 → libigl-2.6.3.dev5}/tutorial/tutorials.ipynb +0 -0
|
@@ -0,0 +1,180 @@
|
|
|
1
|
+
name: Wheels
|
|
2
|
+
|
|
3
|
+
on:
|
|
4
|
+
workflow_dispatch:
|
|
5
|
+
push:
|
|
6
|
+
branches:
|
|
7
|
+
- main
|
|
8
|
+
pull_request:
|
|
9
|
+
branches:
|
|
10
|
+
- main
|
|
11
|
+
|
|
12
|
+
jobs:
|
|
13
|
+
build_sdist:
|
|
14
|
+
runs-on: ubuntu-latest
|
|
15
|
+
steps:
|
|
16
|
+
- uses: actions/checkout@v4
|
|
17
|
+
with:
|
|
18
|
+
submodules: true
|
|
19
|
+
- run: pipx run build --sdist
|
|
20
|
+
- run: pipx run twine check dist/* || exit 1 # Ensure failure on twine check errors
|
|
21
|
+
- uses: actions/upload-artifact@v4
|
|
22
|
+
with:
|
|
23
|
+
name: dist-sdist
|
|
24
|
+
path: dist/*.tar.gz
|
|
25
|
+
|
|
26
|
+
build_wheels:
|
|
27
|
+
runs-on: ${{ matrix.os }}
|
|
28
|
+
strategy:
|
|
29
|
+
fail-fast: false
|
|
30
|
+
matrix:
|
|
31
|
+
os: [ubuntu-24.04, ubuntu-24.04-arm, macos-latest, macos-15-intel, windows-latest] # Use specific versions for clarity
|
|
32
|
+
arch: [x86_64, arm64]
|
|
33
|
+
pybuilds: [cp38, cp39, cp310, cp311, cp312] # Define pybuilds at the top level
|
|
34
|
+
exclude:
|
|
35
|
+
- os: ubuntu-24.04-arm # No need to specify arch, it's already implicit
|
|
36
|
+
arch: x86_64 # Exclude x86_64 on ARM
|
|
37
|
+
- os: macos-latest
|
|
38
|
+
arch: x86_64 # Exclude x86_64 explicitly
|
|
39
|
+
- os: macos-latest # Exclude cp38
|
|
40
|
+
pybuilds: cp38
|
|
41
|
+
- os: macos-15-intel
|
|
42
|
+
arch: arm64 # Exclude arm64 on macOS 13
|
|
43
|
+
- os: macos-15-intel
|
|
44
|
+
pybuilds: cp38
|
|
45
|
+
|
|
46
|
+
name: >
|
|
47
|
+
${{ matrix.pybuilds }} ${{ matrix.os }} ${{ matrix.arch }}
|
|
48
|
+
|
|
49
|
+
steps:
|
|
50
|
+
- uses: actions/checkout@v4
|
|
51
|
+
- uses: actions/setup-python@v5
|
|
52
|
+
with:
|
|
53
|
+
python-version: '3.12'
|
|
54
|
+
- run: pip install cibuildwheel==3.1.4
|
|
55
|
+
- name: Build wheels
|
|
56
|
+
run: python -m cibuildwheel --output-dir wheelhouse
|
|
57
|
+
env:
|
|
58
|
+
CIBW_BEFORE_ALL_LINUX: "yum install -y clang"
|
|
59
|
+
CIBW_ENVIRONMENT_LINUX: "CC=clang CXX=clang++"
|
|
60
|
+
CIBW_MANYLINUX_X86_64_IMAGE: "manylinux_2_28"
|
|
61
|
+
CIBW_MANYLINUX_AARCH64_IMAGE: "manylinux_2_28"
|
|
62
|
+
CIBW_BUILD: "${{ matrix.pybuilds }}-*" # Use matrix.pybuilds and matrix.arch
|
|
63
|
+
CIBW_ARCHS_MACOS: ${{ matrix.arch }}
|
|
64
|
+
CIBW_SKIP: "cp*-manylinux_i686 cp*-musllinux* cp*-win32"
|
|
65
|
+
- name: Upload Artifact
|
|
66
|
+
uses: actions/upload-artifact@v4
|
|
67
|
+
continue-on-error: true # Important: Continue if upload fails
|
|
68
|
+
with:
|
|
69
|
+
# Include pybuilds in the artifact name
|
|
70
|
+
name: wheels-${{ matrix.os }}-${{ matrix.arch }}-${{ matrix.pybuilds }}
|
|
71
|
+
path: ./wheelhouse/*.whl
|
|
72
|
+
if-no-files-found: error # Fail if no wheels are found
|
|
73
|
+
compression-level: 6
|
|
74
|
+
overwrite: false
|
|
75
|
+
include-hidden-files: false
|
|
76
|
+
|
|
77
|
+
check_version:
|
|
78
|
+
name: Check for a version bump
|
|
79
|
+
# Only a push to main can release; PRs and workflow_dispatch never do.
|
|
80
|
+
if: github.event_name == 'push' && github.ref == 'refs/heads/main'
|
|
81
|
+
runs-on: ubuntu-latest
|
|
82
|
+
outputs:
|
|
83
|
+
should_release: ${{ steps.check.outputs.should_release }}
|
|
84
|
+
version: ${{ steps.check.outputs.version }}
|
|
85
|
+
prerelease: ${{ steps.check.outputs.prerelease }}
|
|
86
|
+
steps:
|
|
87
|
+
- uses: actions/checkout@v4
|
|
88
|
+
with:
|
|
89
|
+
# Need history to read pyproject.toml as of the previous commit
|
|
90
|
+
fetch-depth: 0
|
|
91
|
+
- uses: actions/setup-python@v5
|
|
92
|
+
with:
|
|
93
|
+
python-version: '3.12' # tomllib needs >=3.11
|
|
94
|
+
- name: Compare pyproject.toml version against the previous commit
|
|
95
|
+
id: check
|
|
96
|
+
env:
|
|
97
|
+
BEFORE: ${{ github.event.before }}
|
|
98
|
+
run: |
|
|
99
|
+
set -euo pipefail
|
|
100
|
+
|
|
101
|
+
# Read project.version from pyproject.toml at a given revision
|
|
102
|
+
# (empty revision = the working tree)
|
|
103
|
+
read_version() {
|
|
104
|
+
if [ -z "${1:-}" ]; then cat pyproject.toml; else git show "$1:pyproject.toml"; fi \
|
|
105
|
+
| python3 -c 'import sys,tomllib; print(tomllib.loads(sys.stdin.read())["project"]["version"])'
|
|
106
|
+
}
|
|
107
|
+
|
|
108
|
+
version=$(read_version)
|
|
109
|
+
echo "version=$version" >> "$GITHUB_OUTPUT"
|
|
110
|
+
# PEP 440 pre-releases (aN/bN/rcN/.devN) are flagged as such on GitHub.
|
|
111
|
+
# Note `.postN` is deliberately not a pre-release.
|
|
112
|
+
if printf '%s' "$version" | grep -Eq '(a[0-9]+|b[0-9]+|rc[0-9]+|\.dev[0-9]*)$'; then
|
|
113
|
+
echo "prerelease=true" >> "$GITHUB_OUTPUT"
|
|
114
|
+
else
|
|
115
|
+
echo "prerelease=false" >> "$GITHUB_OUTPUT"
|
|
116
|
+
fi
|
|
117
|
+
|
|
118
|
+
# `before` is all-zeros when the branch is first created, and can point
|
|
119
|
+
# at a vanished commit after a force-push; fall back to the first parent.
|
|
120
|
+
base="$BEFORE"
|
|
121
|
+
if [ -z "$base" ] || [ "$base" = "0000000000000000000000000000000000000000" ] \
|
|
122
|
+
|| ! git cat-file -e "$base^{commit}" 2>/dev/null; then
|
|
123
|
+
base=$(git rev-parse --verify --quiet HEAD^ || true)
|
|
124
|
+
fi
|
|
125
|
+
if [ -z "$base" ]; then
|
|
126
|
+
echo "No previous commit to compare against; not releasing."
|
|
127
|
+
echo "should_release=false" >> "$GITHUB_OUTPUT"
|
|
128
|
+
exit 0
|
|
129
|
+
fi
|
|
130
|
+
|
|
131
|
+
previous=$(read_version "$base")
|
|
132
|
+
echo "previous version: $previous"
|
|
133
|
+
echo "current version: $version"
|
|
134
|
+
if [ "$version" = "$previous" ]; then
|
|
135
|
+
echo "Version unchanged; not releasing."
|
|
136
|
+
echo "should_release=false" >> "$GITHUB_OUTPUT"
|
|
137
|
+
exit 0
|
|
138
|
+
fi
|
|
139
|
+
|
|
140
|
+
# Belt and braces: PyPI refuses to overwrite an existing version, and a
|
|
141
|
+
# re-run of this workflow would otherwise try to. Also covers the case
|
|
142
|
+
# where a bump was published by some other route.
|
|
143
|
+
if curl -sfL -o /dev/null "https://pypi.org/pypi/libigl/$version/json"; then
|
|
144
|
+
echo "libigl $version is already on PyPI; not releasing."
|
|
145
|
+
echo "should_release=false" >> "$GITHUB_OUTPUT"
|
|
146
|
+
exit 0
|
|
147
|
+
fi
|
|
148
|
+
|
|
149
|
+
echo "Version bumped $previous -> $version; releasing."
|
|
150
|
+
echo "should_release=true" >> "$GITHUB_OUTPUT"
|
|
151
|
+
|
|
152
|
+
release_artifacts:
|
|
153
|
+
name: Publish ${{ needs.check_version.outputs.version }} to PyPI
|
|
154
|
+
needs: [check_version, build_sdist, build_wheels]
|
|
155
|
+
if: needs.check_version.outputs.should_release == 'true'
|
|
156
|
+
runs-on: ubuntu-latest
|
|
157
|
+
permissions:
|
|
158
|
+
id-token: write # for PyPI trusted publishing
|
|
159
|
+
contents: write # to create the tag and GitHub release
|
|
160
|
+
steps:
|
|
161
|
+
- uses: actions/download-artifact@v4
|
|
162
|
+
with:
|
|
163
|
+
path: ./artifacts
|
|
164
|
+
merge-multiple: true
|
|
165
|
+
- run: ls -R ./artifacts
|
|
166
|
+
- name: Tag and create a GitHub release
|
|
167
|
+
uses: ncipollo/release-action@v1
|
|
168
|
+
with:
|
|
169
|
+
tag: ${{ needs.check_version.outputs.version }}
|
|
170
|
+
commit: ${{ github.sha }}
|
|
171
|
+
name: ${{ needs.check_version.outputs.version }}
|
|
172
|
+
prerelease: ${{ needs.check_version.outputs.prerelease }}
|
|
173
|
+
allowUpdates: true
|
|
174
|
+
artifacts: "./artifacts/**/*"
|
|
175
|
+
token: ${{ secrets.GITHUB_TOKEN }}
|
|
176
|
+
- name: Publish to PyPI
|
|
177
|
+
uses: pypa/gh-action-pypi-publish@v1.13.0
|
|
178
|
+
with:
|
|
179
|
+
packages-dir: ./artifacts
|
|
180
|
+
skip-existing: true
|
|
@@ -36,6 +36,18 @@ FetchContent_Declare(
|
|
|
36
36
|
)
|
|
37
37
|
FetchContent_MakeAvailable(nanobind)
|
|
38
38
|
|
|
39
|
+
# Pin Eigen to 3.4.0. Recent libigl bumped its Eigen dependency to 5.0.1, whose
|
|
40
|
+
# stricter ScalarBinaryOpTraits rejects the int64-vs-int comparisons in some
|
|
41
|
+
# libigl headers (e.g. unique_edge_map), which the 64-bit-index Python bindings
|
|
42
|
+
# instantiate. Declaring Eigen first makes FetchContent use this version instead
|
|
43
|
+
# of the one requested by libigl's own recipe.
|
|
44
|
+
FetchContent_Declare(
|
|
45
|
+
eigen
|
|
46
|
+
GIT_REPOSITORY https://gitlab.com/libeigen/eigen.git
|
|
47
|
+
GIT_TAG tags/3.4.0
|
|
48
|
+
GIT_SHALLOW TRUE
|
|
49
|
+
)
|
|
50
|
+
|
|
39
51
|
# Download and set up libigl
|
|
40
52
|
option(LIBIGL_COPYLEFT_CORE "Build target igl_copyleft::core" ON)
|
|
41
53
|
option(LIBIGL_COPYLEFT_CGAL "Build target igl_copyleft::cgal" ON)
|
|
@@ -44,10 +56,11 @@ option(LIBIGL_COPYLEFT_TETGEN "Build target igl_copyleft::tetgen" ON)
|
|
|
44
56
|
option(LIBIGL_RESTRICTED_TRIANGLE "Build target igl_restricted::triangle" ON)
|
|
45
57
|
option(LIBIGL_SPECTRA "Build igl::spectra bindings" ON)
|
|
46
58
|
option(LIBIGL_PREDICATES "Build igl::predicates bindings" ON)
|
|
59
|
+
option(LIBIGL_CYCODEBASE "Build igl::cycodebase bindings" ON)
|
|
47
60
|
FetchContent_Declare(
|
|
48
61
|
libigl
|
|
49
62
|
GIT_REPOSITORY https://github.com/libigl/libigl.git
|
|
50
|
-
GIT_TAG
|
|
63
|
+
GIT_TAG 0cbcaf886314ff331402c38fbb04cc4de8d7c033
|
|
51
64
|
)
|
|
52
65
|
FetchContent_MakeAvailable(libigl)
|
|
53
66
|
|
|
@@ -190,6 +203,8 @@ endif()
|
|
|
190
203
|
if(LIBIGL_PREDICATES)
|
|
191
204
|
pyigl_include("" "predicates")
|
|
192
205
|
endif()
|
|
193
|
-
|
|
206
|
+
if(LIBIGL_CYCODEBASE)
|
|
207
|
+
pyigl_include("" "cycodebase")
|
|
208
|
+
endif()
|
|
194
209
|
|
|
195
210
|
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.1
|
|
2
2
|
Name: libigl
|
|
3
|
-
Version: 2.6.3.
|
|
3
|
+
Version: 2.6.3.dev5
|
|
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,45 @@
|
|
|
1
|
+
#pragma once
|
|
2
|
+
#include "default_types.h"
|
|
3
|
+
#include <Eigen/Geometry>
|
|
4
|
+
#include <stdexcept>
|
|
5
|
+
#include <string>
|
|
6
|
+
#include <vector>
|
|
7
|
+
|
|
8
|
+
namespace pyigl
|
|
9
|
+
{
|
|
10
|
+
typedef Eigen::Transform<Numeric,3,Eigen::Affine> AffineN3;
|
|
11
|
+
typedef std::vector<AffineN3,Eigen::aligned_allocator<AffineN3> > AffineN3List;
|
|
12
|
+
|
|
13
|
+
/// Convert a Python list of 4×4 (or 3×4) matrices into the list of
|
|
14
|
+
/// Eigen::Transforms that the igl::swept_volume* functions expect.
|
|
15
|
+
///
|
|
16
|
+
/// @param[in] transforms #transforms list of 4×4 or 3×4 matrices
|
|
17
|
+
/// @param[in] caller name used to prefix error messages
|
|
18
|
+
/// @return #transforms list of affine transformations
|
|
19
|
+
inline AffineN3List parse_transforms(
|
|
20
|
+
const std::vector<Eigen::MatrixXN> &transforms,
|
|
21
|
+
const char * const caller)
|
|
22
|
+
{
|
|
23
|
+
if(transforms.empty())
|
|
24
|
+
{
|
|
25
|
+
throw std::runtime_error(
|
|
26
|
+
std::string(caller)+": transforms must be non-empty");
|
|
27
|
+
}
|
|
28
|
+
AffineN3List T;
|
|
29
|
+
T.reserve(transforms.size());
|
|
30
|
+
for(const auto & M : transforms)
|
|
31
|
+
{
|
|
32
|
+
if(M.cols() != 4 || (M.rows() != 3 && M.rows() != 4))
|
|
33
|
+
{
|
|
34
|
+
throw std::runtime_error(
|
|
35
|
+
std::string(caller)+": each transform must be 3×4 or 4×4");
|
|
36
|
+
}
|
|
37
|
+
AffineN3 Ti;
|
|
38
|
+
// A 3×4 input leaves the implicit bottom row as [0 0 0 1]
|
|
39
|
+
Ti.matrix().setIdentity();
|
|
40
|
+
Ti.matrix().topRows(M.rows()) = M;
|
|
41
|
+
T.emplace_back(Ti);
|
|
42
|
+
}
|
|
43
|
+
return T;
|
|
44
|
+
}
|
|
45
|
+
}
|
|
@@ -0,0 +1,100 @@
|
|
|
1
|
+
#include "default_types.h"
|
|
2
|
+
#include <igl/active_set.h>
|
|
3
|
+
#include <nanobind/nanobind.h>
|
|
4
|
+
#include <nanobind/ndarray.h>
|
|
5
|
+
#include <nanobind/eigen/dense.h>
|
|
6
|
+
#include <nanobind/eigen/sparse.h>
|
|
7
|
+
|
|
8
|
+
namespace nb = nanobind;
|
|
9
|
+
using namespace nb::literals;
|
|
10
|
+
|
|
11
|
+
namespace pyigl
|
|
12
|
+
{
|
|
13
|
+
// Wrapper for active_set function
|
|
14
|
+
auto active_set(
|
|
15
|
+
const Eigen::SparseMatrixN &A,
|
|
16
|
+
const nb::DRef<const Eigen::VectorXN> &B,
|
|
17
|
+
const nb::DRef<const Eigen::VectorXI> &known,
|
|
18
|
+
const nb::DRef<const Eigen::VectorXN> &Y,
|
|
19
|
+
const Eigen::SparseMatrixN &Aeq,
|
|
20
|
+
const nb::DRef<const Eigen::VectorXN> &Beq,
|
|
21
|
+
const Eigen::SparseMatrixN &Aieq,
|
|
22
|
+
const nb::DRef<const Eigen::VectorXN> &Bieq,
|
|
23
|
+
const nb::DRef<const Eigen::VectorXN> &lx,
|
|
24
|
+
const nb::DRef<const Eigen::VectorXN> &ux,
|
|
25
|
+
const bool Auu_pd,
|
|
26
|
+
const int max_iter,
|
|
27
|
+
const double inactive_threshold,
|
|
28
|
+
const double constraint_threshold,
|
|
29
|
+
const double solution_diff_threshold)
|
|
30
|
+
{
|
|
31
|
+
igl::active_set_params params;
|
|
32
|
+
params.Auu_pd = Auu_pd;
|
|
33
|
+
params.max_iter = max_iter;
|
|
34
|
+
params.inactive_threshold = inactive_threshold;
|
|
35
|
+
params.constraint_threshold = constraint_threshold;
|
|
36
|
+
params.solution_diff_threshold = solution_diff_threshold;
|
|
37
|
+
|
|
38
|
+
Eigen::VectorXN Z;
|
|
39
|
+
igl::SolverStatus status = igl::active_set(
|
|
40
|
+
A, B, known, Y, Aeq, Beq, Aieq, Bieq, lx, ux, params, Z);
|
|
41
|
+
|
|
42
|
+
if(status == igl::SOLVER_STATUS_ERROR)
|
|
43
|
+
{
|
|
44
|
+
throw std::runtime_error("active_set: solver failed");
|
|
45
|
+
}
|
|
46
|
+
return Z;
|
|
47
|
+
}
|
|
48
|
+
}
|
|
49
|
+
|
|
50
|
+
// Bind the wrapper to the Python module
|
|
51
|
+
void bind_active_set(nb::module_ &m)
|
|
52
|
+
{
|
|
53
|
+
igl::active_set_params params;
|
|
54
|
+
m.def(
|
|
55
|
+
"active_set",
|
|
56
|
+
&pyigl::active_set,
|
|
57
|
+
"A"_a,
|
|
58
|
+
"B"_a,
|
|
59
|
+
"known"_a = Eigen::VectorXI(),
|
|
60
|
+
"Y"_a = Eigen::VectorXN(),
|
|
61
|
+
"Aeq"_a = Eigen::SparseMatrixN(),
|
|
62
|
+
"Beq"_a = Eigen::VectorXN(),
|
|
63
|
+
"Aieq"_a = Eigen::SparseMatrixN(),
|
|
64
|
+
"Bieq"_a = Eigen::VectorXN(),
|
|
65
|
+
"lx"_a = Eigen::VectorXN(),
|
|
66
|
+
"ux"_a = Eigen::VectorXN(),
|
|
67
|
+
"Auu_pd"_a = params.Auu_pd,
|
|
68
|
+
"max_iter"_a = params.max_iter,
|
|
69
|
+
"inactive_threshold"_a = params.inactive_threshold,
|
|
70
|
+
"constraint_threshold"_a = params.constraint_threshold,
|
|
71
|
+
"solution_diff_threshold"_a = params.solution_diff_threshold,
|
|
72
|
+
R"(Minimize a convex quadratic energy subject to linear constraints.
|
|
73
|
+
|
|
74
|
+
Solves:
|
|
75
|
+
min 0.5 * Z' * A * Z + Z' * B
|
|
76
|
+
Z
|
|
77
|
+
subject to
|
|
78
|
+
Z(known) = Y
|
|
79
|
+
Aeq * Z = Beq
|
|
80
|
+
Aieq * Z <= Bieq
|
|
81
|
+
lx <= Z <= ux
|
|
82
|
+
|
|
83
|
+
@param[in] A n by n matrix of quadratic coefficients
|
|
84
|
+
@param[in] B n by 1 column of linear coefficients
|
|
85
|
+
@param[in] known list of indices to known rows in Z
|
|
86
|
+
@param[in] Y list of fixed values corresponding to known rows in Z
|
|
87
|
+
@param[in] Aeq meq by n list of linear equality constraint coefficients
|
|
88
|
+
@param[in] Beq meq by 1 list of linear equality constraint constant values
|
|
89
|
+
@param[in] Aieq mieq by n list of linear inequality constraint coefficients
|
|
90
|
+
@param[in] Bieq mieq by 1 list of linear inequality constraint constant values
|
|
91
|
+
@param[in] lx n by 1 list of lower bounds [] implies -Inf
|
|
92
|
+
@param[in] ux n by 1 list of upper bounds [] implies Inf
|
|
93
|
+
@param[in] Auu_pd whether Auu is positive definite {false}
|
|
94
|
+
@param[in] max_iter maximum number of iterations {100}
|
|
95
|
+
@param[in] inactive_threshold threshold on Lagrange multiplier values {1e-14}
|
|
96
|
+
@param[in] constraint_threshold threshold on constraint violation {1e-14}
|
|
97
|
+
@param[in] solution_diff_threshold threshold on solution difference {1e-14}
|
|
98
|
+
@return Z n by 1 solution vector)"
|
|
99
|
+
);
|
|
100
|
+
}
|
|
@@ -0,0 +1,49 @@
|
|
|
1
|
+
#include "default_types.h"
|
|
2
|
+
#include <igl/ambient_occlusion.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
|
+
// Core (embree-free) ambient occlusion: builds an AABB over (V,F) and shoots
|
|
12
|
+
// rays with libigl's own intersector, so it is available in every wheel
|
|
13
|
+
// regardless of whether the embree module was built.
|
|
14
|
+
auto ambient_occlusion(
|
|
15
|
+
const nb::DRef<const Eigen::MatrixXN> &V,
|
|
16
|
+
const nb::DRef<const Eigen::MatrixXI> &F,
|
|
17
|
+
const nb::DRef<const Eigen::MatrixXN> &P,
|
|
18
|
+
const nb::DRef<const Eigen::MatrixXN> &N,
|
|
19
|
+
const int num_samples)
|
|
20
|
+
{
|
|
21
|
+
Eigen::VectorXN S;
|
|
22
|
+
igl::ambient_occlusion(V, F, P, N, num_samples, S);
|
|
23
|
+
return S;
|
|
24
|
+
}
|
|
25
|
+
}
|
|
26
|
+
|
|
27
|
+
void bind_ambient_occlusion(nb::module_ &m)
|
|
28
|
+
{
|
|
29
|
+
m.def(
|
|
30
|
+
"ambient_occlusion",
|
|
31
|
+
&pyigl::ambient_occlusion,
|
|
32
|
+
"V"_a,
|
|
33
|
+
"F"_a,
|
|
34
|
+
"P"_a,
|
|
35
|
+
"N"_a,
|
|
36
|
+
"num_samples"_a,
|
|
37
|
+
R"(Compute ambient occlusion per given point for a mesh (V,F).
|
|
38
|
+
|
|
39
|
+
This is the embree-free implementation from igl::core; for the (typically
|
|
40
|
+
faster) embree-accelerated version see igl.embree.ambient_occlusion.
|
|
41
|
+
|
|
42
|
+
@param[in] V #V by 3 list of mesh vertex positions
|
|
43
|
+
@param[in] F #F by 3 list of mesh triangle indices into rows of V
|
|
44
|
+
@param[in] P #P by 3 list of origin points
|
|
45
|
+
@param[in] N #P by 3 list of origin normals
|
|
46
|
+
@param[in] num_samples number of rays to shoot per point (e.g. 1000)
|
|
47
|
+
@return S #P list of ambient occlusion values between 1 (fully occluded) and
|
|
48
|
+
0 (not occluded))");
|
|
49
|
+
}
|
|
@@ -0,0 +1,67 @@
|
|
|
1
|
+
#include "default_types.h"
|
|
2
|
+
#include <igl/boundary_conditions.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
|
+
namespace pyigl
|
|
11
|
+
{
|
|
12
|
+
auto boundary_conditions(
|
|
13
|
+
const nb::DRef<const Eigen::MatrixXN> &V,
|
|
14
|
+
const nb::DRef<const Eigen::MatrixXI> &Ele,
|
|
15
|
+
const nb::DRef<const Eigen::MatrixXN> &C,
|
|
16
|
+
const nb::DRef<const Eigen::VectorXI> &P,
|
|
17
|
+
const nb::DRef<const Eigen::MatrixXI> &BE,
|
|
18
|
+
const nb::DRef<const Eigen::MatrixXI> &CE,
|
|
19
|
+
const nb::DRef<const Eigen::MatrixXI> &CF)
|
|
20
|
+
{
|
|
21
|
+
|
|
22
|
+
Eigen::VectorXI b;
|
|
23
|
+
Eigen::MatrixXN bc;
|
|
24
|
+
if(!igl::boundary_conditions(V, Ele, C, P, BE, CE, CF, b, bc))
|
|
25
|
+
{
|
|
26
|
+
throw std::runtime_error("boundary_conditions: failed to compute");
|
|
27
|
+
}
|
|
28
|
+
return std::make_tuple(b, bc);
|
|
29
|
+
}
|
|
30
|
+
}
|
|
31
|
+
|
|
32
|
+
void bind_boundary_conditions(nb::module_ &m)
|
|
33
|
+
{
|
|
34
|
+
m.def(
|
|
35
|
+
"boundary_conditions",
|
|
36
|
+
&pyigl::boundary_conditions,
|
|
37
|
+
"V"_a,
|
|
38
|
+
"Ele"_a,
|
|
39
|
+
"C"_a,
|
|
40
|
+
"P"_a=Eigen::VectorXI(),
|
|
41
|
+
"BE"_a=Eigen::MatrixXI(),
|
|
42
|
+
"CE"_a=Eigen::MatrixXI(),
|
|
43
|
+
"CF"_a=Eigen::MatrixXI(),
|
|
44
|
+
R"(Compute boundary conditions for automatic weights computation. This
|
|
45
|
+
function expects that the given mesh (V,Ele) has sufficient samples
|
|
46
|
+
(vertices) exactly at point handle locations and exactly along bone and
|
|
47
|
+
cage edges/faces.
|
|
48
|
+
@param[in] V #V by dim list of domain vertices
|
|
49
|
+
@param[in] Ele #Ele by simplex-size list of simplex indices
|
|
50
|
+
@param[in] C #C by dim list of handle positions
|
|
51
|
+
@param[in] P #P by 1 list of point handle indices into C
|
|
52
|
+
@param[in] BE #BE by 2 list of bone edge indices into C
|
|
53
|
+
@param[in] CE #CE by 2 list of cage edge indices into *P*
|
|
54
|
+
@param[in] CF #CF by 3 list of (triangular) cage face indices into *P*
|
|
55
|
+
@param[out] b #b list of boundary indices (indices into V of vertices which have
|
|
56
|
+
known, fixed values)
|
|
57
|
+
@param[out] bc #b by #weights list of known/fixed values for boundary vertices
|
|
58
|
+
(notice the #b != #weights in general because #b will include all the
|
|
59
|
+
intermediary samples along each bone, etc.. The ordering of the
|
|
60
|
+
weights corresponds to [P;BE]
|
|
61
|
+
throws error if boundary conditions are suspicious:
|
|
62
|
+
P and BE are empty
|
|
63
|
+
bc is empty
|
|
64
|
+
some column of bc doesn't have a 0 (assuming bc has >1 columns)
|
|
65
|
+
some column of bc doesn't have a 1 (assuming bc has >1 columns))"
|
|
66
|
+
);
|
|
67
|
+
}
|
|
@@ -16,7 +16,7 @@ namespace pyigl
|
|
|
16
16
|
igl::boundary_loop(F, loops);
|
|
17
17
|
return loops;
|
|
18
18
|
}
|
|
19
|
-
// Wrapper for boundary_loop that returns
|
|
19
|
+
// Wrapper for boundary_loop that returns only the longest loop as a vector
|
|
20
20
|
auto boundary_loop(const nb::DRef<const Eigen::MatrixXI> &F)
|
|
21
21
|
{
|
|
22
22
|
Eigen::VectorXI longest;
|
|
@@ -0,0 +1,29 @@
|
|
|
1
|
+
#include "default_types.h"
|
|
2
|
+
#include <igl/cubic.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 cubic(
|
|
12
|
+
const nb::DRef<const Eigen::MatrixXN> &C,
|
|
13
|
+
const Numeric t)
|
|
14
|
+
{
|
|
15
|
+
Eigen::MatrixXN P;
|
|
16
|
+
igl::cubic(C, t, P);
|
|
17
|
+
return P;
|
|
18
|
+
}
|
|
19
|
+
}
|
|
20
|
+
|
|
21
|
+
void bind_cubic(nb::module_ &m)
|
|
22
|
+
{
|
|
23
|
+
m.def("cubic", &pyigl::cubic, "C"_a, "t"_a,
|
|
24
|
+
R"(Evaluate a cubic Bézier curve defined by control points C at parameter t.
|
|
25
|
+
|
|
26
|
+
@param[in] C 4 by dim matrix of control points for a cubic Bézier curve
|
|
27
|
+
@param[in] t parameter at which to evaluate the curve
|
|
28
|
+
@return P 1 by dim point on the curve C(t))");
|
|
29
|
+
}
|
|
@@ -0,0 +1,31 @@
|
|
|
1
|
+
#include "default_types.h"
|
|
2
|
+
#include <igl/cubic_is_flat.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 cubic_is_flat(
|
|
12
|
+
const nb::DRef<const Eigen::MatrixXN> &C,
|
|
13
|
+
const Numeric squared_distance_bound)
|
|
14
|
+
{
|
|
15
|
+
return igl::cubic_is_flat(C, squared_distance_bound);
|
|
16
|
+
}
|
|
17
|
+
}
|
|
18
|
+
|
|
19
|
+
void bind_cubic_is_flat(nb::module_ &m)
|
|
20
|
+
{
|
|
21
|
+
m.def("cubic_is_flat", &pyigl::cubic_is_flat, "C"_a, "squared_distance_bound"_a,
|
|
22
|
+
R"(Test whether a cubic Bézier curve is flat within a given tolerance.
|
|
23
|
+
|
|
24
|
+
"Piecewise Linear Approximation of Bézier Curves" [Fischer 2000]. If the test
|
|
25
|
+
passes, the curve's maximum squared distance to the chord from its first to its
|
|
26
|
+
last control point is less than squared_distance_bound.
|
|
27
|
+
|
|
28
|
+
@param[in] C 4 by dim matrix of control points for a cubic Bézier curve
|
|
29
|
+
@param[in] squared_distance_bound squared distance tolerance
|
|
30
|
+
@return True if the curve is flat within the given tolerance)");
|
|
31
|
+
}
|
|
@@ -0,0 +1,35 @@
|
|
|
1
|
+
#include "default_types.h"
|
|
2
|
+
#include <igl/cubic_monomial_bases.h>
|
|
3
|
+
#include <nanobind/nanobind.h>
|
|
4
|
+
#include <nanobind/eigen/dense.h>
|
|
5
|
+
#include <nanobind/stl/tuple.h>
|
|
6
|
+
#include <tuple>
|
|
7
|
+
|
|
8
|
+
namespace nb = nanobind;
|
|
9
|
+
using namespace nb::literals;
|
|
10
|
+
|
|
11
|
+
namespace pyigl
|
|
12
|
+
{
|
|
13
|
+
auto cubic_monomial_bases(
|
|
14
|
+
const nb::DRef<const Eigen::MatrixXN> &C)
|
|
15
|
+
{
|
|
16
|
+
Eigen::MatrixXN M, D;
|
|
17
|
+
// B is a 6-vector of inner products (cubic_monomial_bases calls vector
|
|
18
|
+
// methods on it), so it must be a vector type, not a general matrix.
|
|
19
|
+
Eigen::VectorXN B;
|
|
20
|
+
igl::cubic_monomial_bases(C, M, D, B);
|
|
21
|
+
return std::make_tuple(M, D, B);
|
|
22
|
+
}
|
|
23
|
+
}
|
|
24
|
+
|
|
25
|
+
void bind_cubic_monomial_bases(nb::module_ &m)
|
|
26
|
+
{
|
|
27
|
+
m.def("cubic_monomial_bases", &pyigl::cubic_monomial_bases, "C"_a,
|
|
28
|
+
R"(Compute monomial basis representations for a cubic Bézier curve.
|
|
29
|
+
|
|
30
|
+
@param[in] C 4 by dim matrix of control points for a cubic Bézier curve
|
|
31
|
+
@return Tuple (M, D, B) where
|
|
32
|
+
M 4 by dim matrix of monomial coefficients for C(t)
|
|
33
|
+
D 3 by dim matrix of monomial coefficients for dC/dt
|
|
34
|
+
B 6-vector of inner products of those basis functions for C(t))");
|
|
35
|
+
}
|
|
@@ -0,0 +1,33 @@
|
|
|
1
|
+
#include "default_types.h"
|
|
2
|
+
#include <igl/cubic_split.h>
|
|
3
|
+
#include <nanobind/nanobind.h>
|
|
4
|
+
#include <nanobind/eigen/dense.h>
|
|
5
|
+
#include <nanobind/stl/tuple.h>
|
|
6
|
+
#include <tuple>
|
|
7
|
+
|
|
8
|
+
namespace nb = nanobind;
|
|
9
|
+
using namespace nb::literals;
|
|
10
|
+
|
|
11
|
+
namespace pyigl
|
|
12
|
+
{
|
|
13
|
+
auto cubic_split(
|
|
14
|
+
const nb::DRef<const Eigen::MatrixXN> &C,
|
|
15
|
+
const Numeric t)
|
|
16
|
+
{
|
|
17
|
+
Eigen::MatrixXN C1, C2;
|
|
18
|
+
igl::cubic_split(C, t, C1, C2);
|
|
19
|
+
return std::make_tuple(C1, C2);
|
|
20
|
+
}
|
|
21
|
+
}
|
|
22
|
+
|
|
23
|
+
void bind_cubic_split(nb::module_ &m)
|
|
24
|
+
{
|
|
25
|
+
m.def("cubic_split", &pyigl::cubic_split, "C"_a, "t"_a,
|
|
26
|
+
R"(Split a cubic Bézier curve at parameter t into two cubic Bézier curves.
|
|
27
|
+
|
|
28
|
+
@param[in] C 4 by dim matrix of control points for a cubic Bézier curve
|
|
29
|
+
@param[in] t parameter at which to split the curve
|
|
30
|
+
@return Tuple (C1, C2) where
|
|
31
|
+
C1 4 by dim control points of the sub-curve from C(0) to C(t)
|
|
32
|
+
C2 4 by dim control points of the sub-curve from C(t) to C(1))");
|
|
33
|
+
}
|