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.
Files changed (622) hide show
  1. {libigl-2.6.3.dev5 → libigl-2.6.4.dev1}/.github/workflows/wheels.yml +34 -14
  2. libigl-2.6.4.dev1/CHANGELOG.md +70 -0
  3. {libigl-2.6.3.dev5 → libigl-2.6.4.dev1}/CMakeLists.txt +3 -1
  4. {libigl-2.6.3.dev5 → libigl-2.6.4.dev1}/PKG-INFO +1 -1
  5. {libigl-2.6.3.dev5 → libigl-2.6.4.dev1}/pyproject.toml +1 -1
  6. libigl-2.6.4.dev1/src/LazyCageDistance.cpp +16 -0
  7. libigl-2.6.4.dev1/src/LazyCageGridMode.cpp +16 -0
  8. libigl-2.6.4.dev1/src/LazyCageMetric.cpp +17 -0
  9. libigl-2.6.4.dev1/src/connect_boundary_to_infinity.cpp +57 -0
  10. {libigl-2.6.3.dev5 → libigl-2.6.4.dev1}/src/face_areas.cpp +15 -0
  11. libigl-2.6.4.dev1/src/fit_rotations.cpp +35 -0
  12. libigl-2.6.4.dev1/src/lazy_cage.cpp +123 -0
  13. libigl-2.6.4.dev1/src/path_to_edges.cpp +35 -0
  14. {libigl-2.6.3.dev5 → libigl-2.6.4.dev1}/src/per_face_normals.cpp +22 -0
  15. libigl-2.6.4.dev1/src/planarize_quad_mesh.cpp +43 -0
  16. libigl-2.6.4.dev1/src/point_simplex_squared_distance.cpp +64 -0
  17. libigl-2.6.4.dev1/src/polar_svd3x3.cpp +32 -0
  18. libigl-2.6.4.dev1/src/progressive_hulls.cpp +60 -0
  19. libigl-2.6.4.dev1/src/quad_edges.cpp +33 -0
  20. libigl-2.6.4.dev1/src/quad_planarity.cpp +36 -0
  21. libigl-2.6.4.dev1/src/ramer_douglas_peucker.cpp +38 -0
  22. libigl-2.6.4.dev1/src/simplex_simplex_squared_distance.cpp +44 -0
  23. libigl-2.6.4.dev1/src/smooth_corner_adjacency.cpp +44 -0
  24. libigl-2.6.4.dev1/src/triangle/remesh_at_points.cpp +55 -0
  25. {libigl-2.6.3.dev5 → libigl-2.6.4.dev1}/tests/test_all.py +247 -4
  26. libigl-2.6.3.dev5/src/copyleft/progressive_hulls.cpp +0 -42
  27. {libigl-2.6.3.dev5 → libigl-2.6.4.dev1}/.github/workflows/pip.yml +0 -0
  28. {libigl-2.6.3.dev5 → libigl-2.6.4.dev1}/.gitignore +0 -0
  29. {libigl-2.6.3.dev5 → libigl-2.6.4.dev1}/LICENSE.GPL +0 -0
  30. {libigl-2.6.3.dev5 → libigl-2.6.4.dev1}/LICENSE.MPL2 +0 -0
  31. {libigl-2.6.3.dev5 → libigl-2.6.4.dev1}/README.md +0 -0
  32. {libigl-2.6.3.dev5 → libigl-2.6.4.dev1}/attic/copyleft/tetgen_tetrahedralize.cpp +0 -0
  33. {libigl-2.6.3.dev5 → libigl-2.6.4.dev1}/attic/copyleft/triangle_triangulate.cpp +0 -0
  34. {libigl-2.6.3.dev5 → libigl-2.6.4.dev1}/attic/skip/SolverStatus.cpp +0 -0
  35. {libigl-2.6.3.dev5 → libigl-2.6.4.dev1}/attic/skip/WindingNumberMethod.cpp +0 -0
  36. {libigl-2.6.3.dev5 → libigl-2.6.4.dev1}/attic/skip/angular_distance.cpp +0 -0
  37. {libigl-2.6.3.dev5 → libigl-2.6.4.dev1}/attic/skip/canonical_quaternions.cpp +0 -0
  38. {libigl-2.6.3.dev5 → libigl-2.6.4.dev1}/attic/skip/column_to_quats.cpp +0 -0
  39. {libigl-2.6.3.dev5 → libigl-2.6.4.dev1}/attic/skip/comiso_nrosy.cpp +0 -0
  40. {libigl-2.6.3.dev5 → libigl-2.6.4.dev1}/attic/skip/covariance_scatter_matrix.cpp +0 -0
  41. {libigl-2.6.3.dev5 → libigl-2.6.4.dev1}/attic/skip/file_contents_as_string.cpp +0 -0
  42. {libigl-2.6.3.dev5 → libigl-2.6.4.dev1}/attic/skip/fit_rotations.cpp +0 -0
  43. {libigl-2.6.3.dev5 → libigl-2.6.4.dev1}/attic/skip/frame_field_deformer.cpp +0 -0
  44. {libigl-2.6.3.dev5 → libigl-2.6.4.dev1}/attic/skip/frame_to_cross_field.cpp +0 -0
  45. {libigl-2.6.3.dev5 → libigl-2.6.4.dev1}/attic/skip/frustum.cpp +0 -0
  46. {libigl-2.6.3.dev5 → libigl-2.6.4.dev1}/attic/skip/group_sum_matrix.cpp +0 -0
  47. {libigl-2.6.3.dev5 → libigl-2.6.4.dev1}/attic/skip/harwell_boeing.cpp +0 -0
  48. {libigl-2.6.3.dev5 → libigl-2.6.4.dev1}/attic/skip/histc.cpp +0 -0
  49. {libigl-2.6.3.dev5 → libigl-2.6.4.dev1}/attic/skip/hsv_to_rgb.cpp +0 -0
  50. {libigl-2.6.3.dev5 → libigl-2.6.4.dev1}/attic/skip/infinite_cost_stopping_condition.cpp +0 -0
  51. {libigl-2.6.3.dev5 → libigl-2.6.4.dev1}/attic/skip/intersect.cpp +0 -0
  52. {libigl-2.6.3.dev5 → libigl-2.6.4.dev1}/attic/skip/invert_diag.cpp +0 -0
  53. {libigl-2.6.3.dev5 → libigl-2.6.4.dev1}/attic/skip/is_planar.cpp +0 -0
  54. {libigl-2.6.3.dev5 → libigl-2.6.4.dev1}/attic/skip/limit_faces.cpp +0 -0
  55. {libigl-2.6.3.dev5 → libigl-2.6.4.dev1}/attic/skip/line_field_missmatch.cpp +0 -0
  56. {libigl-2.6.3.dev5 → libigl-2.6.4.dev1}/attic/skip/line_search.cpp +0 -0
  57. {libigl-2.6.3.dev5 → libigl-2.6.4.dev1}/attic/skip/mat_to_quat.cpp +0 -0
  58. {libigl-2.6.3.dev5 → libigl-2.6.4.dev1}/attic/skip/material_colors.cpp +0 -0
  59. {libigl-2.6.3.dev5 → libigl-2.6.4.dev1}/attic/skip/max_faces_stopping_condition.cpp +0 -0
  60. {libigl-2.6.3.dev5 → libigl-2.6.4.dev1}/attic/skip/min_quad_dense.cpp +0 -0
  61. {libigl-2.6.3.dev5 → libigl-2.6.4.dev1}/attic/skip/normalize_quat.cpp +0 -0
  62. {libigl-2.6.3.dev5 → libigl-2.6.4.dev1}/attic/skip/on_boundary.cpp +0 -0
  63. {libigl-2.6.3.dev5 → libigl-2.6.4.dev1}/attic/skip/opengl2_draw_beach_ball.cpp +0 -0
  64. {libigl-2.6.3.dev5 → libigl-2.6.4.dev1}/attic/skip/opengl2_draw_floor.cpp +0 -0
  65. {libigl-2.6.3.dev5 → libigl-2.6.4.dev1}/attic/skip/opengl2_draw_mesh.cpp +0 -0
  66. {libigl-2.6.3.dev5 → libigl-2.6.4.dev1}/attic/skip/opengl2_draw_point.cpp +0 -0
  67. {libigl-2.6.3.dev5 → libigl-2.6.4.dev1}/attic/skip/opengl2_draw_rectangular_marquee.cpp +0 -0
  68. {libigl-2.6.3.dev5 → libigl-2.6.4.dev1}/attic/skip/opengl2_draw_skeleton_3d.cpp +0 -0
  69. {libigl-2.6.3.dev5 → libigl-2.6.4.dev1}/attic/skip/opengl2_draw_skeleton_vector_graphics.cpp +0 -0
  70. {libigl-2.6.3.dev5 → libigl-2.6.4.dev1}/attic/skip/opengl2_flare_textures.cpp +0 -0
  71. {libigl-2.6.3.dev5 → libigl-2.6.4.dev1}/attic/skip/opengl2_model_proj_viewport.cpp +0 -0
  72. {libigl-2.6.3.dev5 → libigl-2.6.4.dev1}/attic/skip/opengl2_print_gl_get.cpp +0 -0
  73. {libigl-2.6.3.dev5 → libigl-2.6.4.dev1}/attic/skip/opengl2_project.cpp +0 -0
  74. {libigl-2.6.3.dev5 → libigl-2.6.4.dev1}/attic/skip/opengl2_right_axis.cpp +0 -0
  75. {libigl-2.6.3.dev5 → libigl-2.6.4.dev1}/attic/skip/opengl2_shine_textures.cpp +0 -0
  76. {libigl-2.6.3.dev5 → libigl-2.6.4.dev1}/attic/skip/opengl2_sort_triangles.cpp +0 -0
  77. {libigl-2.6.3.dev5 → libigl-2.6.4.dev1}/attic/skip/opengl2_unproject.cpp +0 -0
  78. {libigl-2.6.3.dev5 → libigl-2.6.4.dev1}/attic/skip/opengl2_unproject_to_zero_plane.cpp +0 -0
  79. {libigl-2.6.3.dev5 → libigl-2.6.4.dev1}/attic/skip/opengl2_up_axis.cpp +0 -0
  80. {libigl-2.6.3.dev5 → libigl-2.6.4.dev1}/attic/skip/opengl2_view_axis.cpp +0 -0
  81. {libigl-2.6.3.dev5 → libigl-2.6.4.dev1}/attic/skip/opengl_create_shader_program.cpp +0 -0
  82. {libigl-2.6.3.dev5 → libigl-2.6.4.dev1}/attic/skip/opengl_destroy_shader_program.cpp +0 -0
  83. {libigl-2.6.3.dev5 → libigl-2.6.4.dev1}/attic/skip/opengl_gl_type_size.cpp +0 -0
  84. {libigl-2.6.3.dev5 → libigl-2.6.4.dev1}/attic/skip/opengl_glfw_background_window.cpp +0 -0
  85. {libigl-2.6.3.dev5 → libigl-2.6.4.dev1}/attic/skip/opengl_glfw_imgui_ImGuiHelpers.cpp +0 -0
  86. {libigl-2.6.3.dev5 → libigl-2.6.4.dev1}/attic/skip/opengl_init_render_to_texture.cpp +0 -0
  87. {libigl-2.6.3.dev5 → libigl-2.6.4.dev1}/attic/skip/opengl_load_shader.cpp +0 -0
  88. {libigl-2.6.3.dev5 → libigl-2.6.4.dev1}/attic/skip/opengl_print_program_info_log.cpp +0 -0
  89. {libigl-2.6.3.dev5 → libigl-2.6.4.dev1}/attic/skip/opengl_print_shader_info_log.cpp +0 -0
  90. {libigl-2.6.3.dev5 → libigl-2.6.4.dev1}/attic/skip/opengl_report_gl_error.cpp +0 -0
  91. {libigl-2.6.3.dev5 → libigl-2.6.4.dev1}/attic/skip/opengl_uniform_type_to_string.cpp +0 -0
  92. {libigl-2.6.3.dev5 → libigl-2.6.4.dev1}/attic/skip/ortho.cpp +0 -0
  93. {libigl-2.6.3.dev5 → libigl-2.6.4.dev1}/attic/skip/parallel_transport_angles.cpp +0 -0
  94. {libigl-2.6.3.dev5 → libigl-2.6.4.dev1}/attic/skip/polar_svd.cpp +0 -0
  95. {libigl-2.6.3.dev5 → libigl-2.6.4.dev1}/attic/skip/polar_svd3x3.cpp +0 -0
  96. {libigl-2.6.3.dev5 → libigl-2.6.4.dev1}/attic/skip/qslim_optimal_collapse_edge_callbacks.cpp +0 -0
  97. {libigl-2.6.3.dev5 → libigl-2.6.4.dev1}/attic/skip/quadric_binary_plus_operator.cpp +0 -0
  98. {libigl-2.6.3.dev5 → libigl-2.6.4.dev1}/attic/skip/quat_conjugate.cpp +0 -0
  99. {libigl-2.6.3.dev5 → libigl-2.6.4.dev1}/attic/skip/quat_mult.cpp +0 -0
  100. {libigl-2.6.3.dev5 → libigl-2.6.4.dev1}/attic/skip/quat_to_axis_angle.cpp +0 -0
  101. {libigl-2.6.3.dev5 → libigl-2.6.4.dev1}/attic/skip/quat_to_mat.cpp +0 -0
  102. {libigl-2.6.3.dev5 → libigl-2.6.4.dev1}/attic/skip/quats_to_column.cpp +0 -0
  103. {libigl-2.6.3.dev5 → libigl-2.6.4.dev1}/attic/skip/random_quaternion.cpp +0 -0
  104. {libigl-2.6.3.dev5 → libigl-2.6.4.dev1}/attic/skip/readBF.cpp +0 -0
  105. {libigl-2.6.3.dev5 → libigl-2.6.4.dev1}/attic/skip/readNODE.cpp +0 -0
  106. {libigl-2.6.3.dev5 → libigl-2.6.4.dev1}/attic/skip/readPLY.cpp +0 -0
  107. {libigl-2.6.3.dev5 → libigl-2.6.4.dev1}/attic/skip/readSTL.cpp +0 -0
  108. {libigl-2.6.3.dev5 → libigl-2.6.4.dev1}/attic/skip/rgb_to_hsv.cpp +0 -0
  109. {libigl-2.6.3.dev5 → libigl-2.6.4.dev1}/attic/skip/rotate_by_quat.cpp +0 -0
  110. {libigl-2.6.3.dev5 → libigl-2.6.4.dev1}/attic/skip/rotation_matrix_from_directions.cpp +0 -0
  111. {libigl-2.6.3.dev5 → libigl-2.6.4.dev1}/attic/skip/snap_to_canonical_view_quat.cpp +0 -0
  112. {libigl-2.6.3.dev5 → libigl-2.6.4.dev1}/attic/skip/snap_to_fixed_up.cpp +0 -0
  113. {libigl-2.6.3.dev5 → libigl-2.6.4.dev1}/attic/skip/sort_angles.cpp +0 -0
  114. {libigl-2.6.3.dev5 → libigl-2.6.4.dev1}/attic/skip/sort_triangles.cpp +0 -0
  115. {libigl-2.6.3.dev5 → libigl-2.6.4.dev1}/attic/skip/sort_vectors_ccw.cpp +0 -0
  116. {libigl-2.6.3.dev5 → libigl-2.6.4.dev1}/attic/skip/svd3x3.cpp +0 -0
  117. {libigl-2.6.3.dev5 → libigl-2.6.4.dev1}/attic/skip/svd3x3_avx.cpp +0 -0
  118. {libigl-2.6.3.dev5 → libigl-2.6.4.dev1}/attic/skip/svd3x3_sse.cpp +0 -0
  119. {libigl-2.6.3.dev5 → libigl-2.6.4.dev1}/attic/skip/trackball.cpp +0 -0
  120. {libigl-2.6.3.dev5 → libigl-2.6.4.dev1}/attic/skip/transpose_blocks.cpp +0 -0
  121. {libigl-2.6.3.dev5 → libigl-2.6.4.dev1}/attic/skip/unique_rows.cpp +0 -0
  122. {libigl-2.6.3.dev5 → libigl-2.6.4.dev1}/attic/skip/voxel_grid.cpp +0 -0
  123. {libigl-2.6.3.dev5 → libigl-2.6.4.dev1}/attic/skip/writePLY.cpp +0 -0
  124. {libigl-2.6.3.dev5 → libigl-2.6.4.dev1}/attic/skip/writeSTL.cpp +0 -0
  125. {libigl-2.6.3.dev5 → libigl-2.6.4.dev1}/attic/skip/writeWRL.cpp +0 -0
  126. {libigl-2.6.3.dev5 → libigl-2.6.4.dev1}/attic/todo-old/MeshBooleanType.cpp +0 -0
  127. {libigl-2.6.3.dev5 → libigl-2.6.4.dev1}/attic/todo-old/NormalType.cpp +0 -0
  128. {libigl-2.6.3.dev5 → libigl-2.6.4.dev1}/attic/todo-old/collapse_edge.cpp +0 -0
  129. {libigl-2.6.3.dev5 → libigl-2.6.4.dev1}/attic/todo-old/copyleft/copyleft_cgal_assign.cpp +0 -0
  130. {libigl-2.6.3.dev5 → libigl-2.6.4.dev1}/attic/todo-old/copyleft/copyleft_cgal_assign_scalar.cpp +0 -0
  131. {libigl-2.6.3.dev5 → libigl-2.6.4.dev1}/attic/todo-old/copyleft/copyleft_cgal_cell_adjacency.cpp +0 -0
  132. {libigl-2.6.3.dev5 → libigl-2.6.4.dev1}/attic/todo-old/copyleft/copyleft_cgal_closest_facet.cpp +0 -0
  133. {libigl-2.6.3.dev5 → libigl-2.6.4.dev1}/attic/todo-old/copyleft/copyleft_cgal_complex_to_mesh.cpp +0 -0
  134. {libigl-2.6.3.dev5 → libigl-2.6.4.dev1}/attic/todo-old/copyleft/copyleft_cgal_component_inside_component.cpp +0 -0
  135. {libigl-2.6.3.dev5 → libigl-2.6.4.dev1}/attic/todo-old/copyleft/copyleft_cgal_convex_hull.cpp +0 -0
  136. {libigl-2.6.3.dev5 → libigl-2.6.4.dev1}/attic/todo-old/copyleft/copyleft_cgal_delaunay_triangulation.cpp +0 -0
  137. {libigl-2.6.3.dev5 → libigl-2.6.4.dev1}/attic/todo-old/copyleft/copyleft_cgal_extract_cells.cpp +0 -0
  138. {libigl-2.6.3.dev5 → libigl-2.6.4.dev1}/attic/todo-old/copyleft/copyleft_cgal_extract_feature.cpp +0 -0
  139. {libigl-2.6.3.dev5 → libigl-2.6.4.dev1}/attic/todo-old/copyleft/copyleft_cgal_fast_winding_number.cpp +0 -0
  140. {libigl-2.6.3.dev5 → libigl-2.6.4.dev1}/attic/todo-old/copyleft/copyleft_cgal_half_space_box.cpp +0 -0
  141. {libigl-2.6.3.dev5 → libigl-2.6.4.dev1}/attic/todo-old/copyleft/copyleft_cgal_hausdorff.cpp +0 -0
  142. {libigl-2.6.3.dev5 → libigl-2.6.4.dev1}/attic/todo-old/copyleft/copyleft_cgal_incircle.cpp +0 -0
  143. {libigl-2.6.3.dev5 → libigl-2.6.4.dev1}/attic/todo-old/copyleft/copyleft_cgal_insert_into_cdt.cpp +0 -0
  144. {libigl-2.6.3.dev5 → libigl-2.6.4.dev1}/attic/todo-old/copyleft/copyleft_cgal_insphere.cpp +0 -0
  145. {libigl-2.6.3.dev5 → libigl-2.6.4.dev1}/attic/todo-old/copyleft/copyleft_cgal_intersect_other.cpp +0 -0
  146. {libigl-2.6.3.dev5 → libigl-2.6.4.dev1}/attic/todo-old/copyleft/copyleft_cgal_intersect_with_half_space.cpp +0 -0
  147. {libigl-2.6.3.dev5 → libigl-2.6.4.dev1}/attic/todo-old/copyleft/copyleft_cgal_lexicographic_triangulation.cpp +0 -0
  148. {libigl-2.6.3.dev5 → libigl-2.6.4.dev1}/attic/todo-old/copyleft/copyleft_cgal_mesh_boolean.cpp +0 -0
  149. {libigl-2.6.3.dev5 → libigl-2.6.4.dev1}/attic/todo-old/copyleft/copyleft_cgal_mesh_boolean_type_to_funcs.cpp +0 -0
  150. {libigl-2.6.3.dev5 → libigl-2.6.4.dev1}/attic/todo-old/copyleft/copyleft_cgal_mesh_to_cgal_triangle_list.cpp +0 -0
  151. {libigl-2.6.3.dev5 → libigl-2.6.4.dev1}/attic/todo-old/copyleft/copyleft_cgal_mesh_to_polyhedron.cpp +0 -0
  152. {libigl-2.6.3.dev5 → libigl-2.6.4.dev1}/attic/todo-old/copyleft/copyleft_cgal_minkowski_sum.cpp +0 -0
  153. {libigl-2.6.3.dev5 → libigl-2.6.4.dev1}/attic/todo-old/copyleft/copyleft_cgal_order_facets_around_edge.cpp +0 -0
  154. {libigl-2.6.3.dev5 → libigl-2.6.4.dev1}/attic/todo-old/copyleft/copyleft_cgal_order_facets_around_edges.cpp +0 -0
  155. {libigl-2.6.3.dev5 → libigl-2.6.4.dev1}/attic/todo-old/copyleft/copyleft_cgal_orient2D.cpp +0 -0
  156. {libigl-2.6.3.dev5 → libigl-2.6.4.dev1}/attic/todo-old/copyleft/copyleft_cgal_orient3D.cpp +0 -0
  157. {libigl-2.6.3.dev5 → libigl-2.6.4.dev1}/attic/todo-old/copyleft/copyleft_cgal_outer_element.cpp +0 -0
  158. {libigl-2.6.3.dev5 → libigl-2.6.4.dev1}/attic/todo-old/copyleft/copyleft_cgal_outer_facet.cpp +0 -0
  159. {libigl-2.6.3.dev5 → libigl-2.6.4.dev1}/attic/todo-old/copyleft/copyleft_cgal_outer_hull.cpp +0 -0
  160. {libigl-2.6.3.dev5 → libigl-2.6.4.dev1}/attic/todo-old/copyleft/copyleft_cgal_peel_outer_hull_layers.cpp +0 -0
  161. {libigl-2.6.3.dev5 → libigl-2.6.4.dev1}/attic/todo-old/copyleft/copyleft_cgal_peel_winding_number_layers.cpp +0 -0
  162. {libigl-2.6.3.dev5 → libigl-2.6.4.dev1}/attic/todo-old/copyleft/copyleft_cgal_piecewise_constant_winding_number.cpp +0 -0
  163. {libigl-2.6.3.dev5 → libigl-2.6.4.dev1}/attic/todo-old/copyleft/copyleft_cgal_point_areas.cpp +0 -0
  164. {libigl-2.6.3.dev5 → libigl-2.6.4.dev1}/attic/todo-old/copyleft/copyleft_cgal_point_mesh_squared_distance.cpp +0 -0
  165. {libigl-2.6.3.dev5 → libigl-2.6.4.dev1}/attic/todo-old/copyleft/copyleft_cgal_point_segment_squared_distance.cpp +0 -0
  166. {libigl-2.6.3.dev5 → libigl-2.6.4.dev1}/attic/todo-old/copyleft/copyleft_cgal_point_solid_signed_squared_distance.cpp +0 -0
  167. {libigl-2.6.3.dev5 → libigl-2.6.4.dev1}/attic/todo-old/copyleft/copyleft_cgal_point_triangle_squared_distance.cpp +0 -0
  168. {libigl-2.6.3.dev5 → libigl-2.6.4.dev1}/attic/todo-old/copyleft/copyleft_cgal_points_inside_component.cpp +0 -0
  169. {libigl-2.6.3.dev5 → libigl-2.6.4.dev1}/attic/todo-old/copyleft/copyleft_cgal_polyhedron_to_mesh.cpp +0 -0
  170. {libigl-2.6.3.dev5 → libigl-2.6.4.dev1}/attic/todo-old/copyleft/copyleft_cgal_projected_cdt.cpp +0 -0
  171. {libigl-2.6.3.dev5 → libigl-2.6.4.dev1}/attic/todo-old/copyleft/copyleft_cgal_projected_delaunay.cpp +0 -0
  172. {libigl-2.6.3.dev5 → libigl-2.6.4.dev1}/attic/todo-old/copyleft/copyleft_cgal_propagate_winding_numbers.cpp +0 -0
  173. {libigl-2.6.3.dev5 → libigl-2.6.4.dev1}/attic/todo-old/copyleft/copyleft_cgal_read_triangle_mesh.cpp +0 -0
  174. {libigl-2.6.3.dev5 → libigl-2.6.4.dev1}/attic/todo-old/copyleft/copyleft_cgal_relabel_small_immersed_cells.cpp +0 -0
  175. {libigl-2.6.3.dev5 → libigl-2.6.4.dev1}/attic/todo-old/copyleft/copyleft_cgal_remesh_intersections.cpp +0 -0
  176. {libigl-2.6.3.dev5 → libigl-2.6.4.dev1}/attic/todo-old/copyleft/copyleft_cgal_remesh_self_intersections.cpp +0 -0
  177. {libigl-2.6.3.dev5 → libigl-2.6.4.dev1}/attic/todo-old/copyleft/copyleft_cgal_resolve_intersections.cpp +0 -0
  178. {libigl-2.6.3.dev5 → libigl-2.6.4.dev1}/attic/todo-old/copyleft/copyleft_cgal_row_to_point.cpp +0 -0
  179. {libigl-2.6.3.dev5 → libigl-2.6.4.dev1}/attic/todo-old/copyleft/copyleft_cgal_segment_segment_squared_distance.cpp +0 -0
  180. {libigl-2.6.3.dev5 → libigl-2.6.4.dev1}/attic/todo-old/copyleft/copyleft_cgal_signed_distance_isosurface.cpp +0 -0
  181. {libigl-2.6.3.dev5 → libigl-2.6.4.dev1}/attic/todo-old/copyleft/copyleft_cgal_snap_rounding.cpp +0 -0
  182. {libigl-2.6.3.dev5 → libigl-2.6.4.dev1}/attic/todo-old/copyleft/copyleft_cgal_string_to_mesh_boolean_type.cpp +0 -0
  183. {libigl-2.6.3.dev5 → libigl-2.6.4.dev1}/attic/todo-old/copyleft/copyleft_cgal_subdivide_segments.cpp +0 -0
  184. {libigl-2.6.3.dev5 → libigl-2.6.4.dev1}/attic/todo-old/copyleft/copyleft_cgal_submesh_aabb_tree.cpp +0 -0
  185. {libigl-2.6.3.dev5 → libigl-2.6.4.dev1}/attic/todo-old/copyleft/copyleft_cgal_triangle_triangle_squared_distance.cpp +0 -0
  186. {libigl-2.6.3.dev5 → libigl-2.6.4.dev1}/attic/todo-old/copyleft/copyleft_cgal_trim_with_solid.cpp +0 -0
  187. {libigl-2.6.3.dev5 → libigl-2.6.4.dev1}/attic/todo-old/copyleft/copyleft_cgal_wire_mesh.cpp +0 -0
  188. {libigl-2.6.3.dev5 → libigl-2.6.4.dev1}/attic/todo-old/copyleft/copyleft_comiso_miq.cpp +0 -0
  189. {libigl-2.6.3.dev5 → libigl-2.6.4.dev1}/attic/todo-old/copyleft/copyleft_cork_mesh_boolean.cpp +0 -0
  190. {libigl-2.6.3.dev5 → libigl-2.6.4.dev1}/attic/todo-old/copyleft/copyleft_marching_cubes.cpp +0 -0
  191. {libigl-2.6.3.dev5 → libigl-2.6.4.dev1}/attic/todo-old/copyleft/copyleft_offset_surface.cpp +0 -0
  192. {libigl-2.6.3.dev5 → libigl-2.6.4.dev1}/attic/todo-old/copyleft/copyleft_opengl2_render_to_tga.cpp +0 -0
  193. {libigl-2.6.3.dev5 → libigl-2.6.4.dev1}/attic/todo-old/copyleft/copyleft_opengl2_texture_from_tga.cpp +0 -0
  194. {libigl-2.6.3.dev5 → libigl-2.6.4.dev1}/attic/todo-old/copyleft/copyleft_progressive_hulls.cpp +0 -0
  195. {libigl-2.6.3.dev5 → libigl-2.6.4.dev1}/attic/todo-old/copyleft/copyleft_progressive_hulls_cost_and_placement.cpp +0 -0
  196. {libigl-2.6.3.dev5 → libigl-2.6.4.dev1}/attic/todo-old/copyleft/copyleft_quadprog.cpp +0 -0
  197. {libigl-2.6.3.dev5 → libigl-2.6.4.dev1}/attic/todo-old/copyleft/copyleft_swept_volume.cpp +0 -0
  198. {libigl-2.6.3.dev5 → libigl-2.6.4.dev1}/attic/todo-old/copyleft/copyleft_tetgen_mesh_with_skeleton.cpp +0 -0
  199. {libigl-2.6.3.dev5 → libigl-2.6.4.dev1}/attic/todo-old/copyleft/copyleft_tetgen_read_into_tetgenio.cpp +0 -0
  200. {libigl-2.6.3.dev5 → libigl-2.6.4.dev1}/attic/todo-old/copyleft/copyleft_tetgen_tetrahedralize.cpp +0 -0
  201. {libigl-2.6.3.dev5 → libigl-2.6.4.dev1}/attic/todo-old/dijkstra.cpp +0 -0
  202. {libigl-2.6.3.dev5 → libigl-2.6.4.dev1}/attic/todo-old/embree_bone_heat.cpp +0 -0
  203. {libigl-2.6.3.dev5 → libigl-2.6.4.dev1}/attic/todo-old/embree_reorient_facets_raycast.cpp +0 -0
  204. {libigl-2.6.3.dev5 → libigl-2.6.4.dev1}/attic/todo-old/fast_winding_number.cpp +0 -0
  205. {libigl-2.6.3.dev5 → libigl-2.6.4.dev1}/attic/todo-old/flip_edge.cpp +0 -0
  206. {libigl-2.6.3.dev5 → libigl-2.6.4.dev1}/attic/todo-old/knn.cpp +0 -0
  207. {libigl-2.6.3.dev5 → libigl-2.6.4.dev1}/attic/todo-old/mosek_mosek_guarded.cpp +0 -0
  208. {libigl-2.6.3.dev5 → libigl-2.6.4.dev1}/attic/todo-old/mosek_mosek_linprog.cpp +0 -0
  209. {libigl-2.6.3.dev5 → libigl-2.6.4.dev1}/attic/todo-old/octree.cpp +0 -0
  210. {libigl-2.6.3.dev5 → libigl-2.6.4.dev1}/attic/todo-old/per_vertex_point_to_plane_quadrics.cpp +0 -0
  211. {libigl-2.6.3.dev5 → libigl-2.6.4.dev1}/attic/todo-old/png_readPNG.cpp +0 -0
  212. {libigl-2.6.3.dev5 → libigl-2.6.4.dev1}/attic/todo-old/png_render_to_png.cpp +0 -0
  213. {libigl-2.6.3.dev5 → libigl-2.6.4.dev1}/attic/todo-old/png_render_to_png_async.cpp +0 -0
  214. {libigl-2.6.3.dev5 → libigl-2.6.4.dev1}/attic/todo-old/png_texture_from_file.cpp +0 -0
  215. {libigl-2.6.3.dev5 → libigl-2.6.4.dev1}/attic/todo-old/png_texture_from_png.cpp +0 -0
  216. {libigl-2.6.3.dev5 → libigl-2.6.4.dev1}/attic/todo-old/png_writePNG.cpp +0 -0
  217. {libigl-2.6.3.dev5 → libigl-2.6.4.dev1}/attic/todo-old/pseudonormal_test.cpp +0 -0
  218. {libigl-2.6.3.dev5 → libigl-2.6.4.dev1}/attic/todo-old/readWRL.cpp +0 -0
  219. {libigl-2.6.3.dev5 → libigl-2.6.4.dev1}/attic/todo-old/remesh_along_isoline.cpp +0 -0
  220. {libigl-2.6.3.dev5 → libigl-2.6.4.dev1}/attic/todo-old/seam_edges.cpp +0 -0
  221. {libigl-2.6.3.dev5 → libigl-2.6.4.dev1}/attic/todo-old/shortest_edge_and_midpoint.cpp +0 -0
  222. {libigl-2.6.3.dev5 → libigl-2.6.4.dev1}/attic/todo-old/squared_edge_lengths.cpp +0 -0
  223. {libigl-2.6.3.dev5 → libigl-2.6.4.dev1}/attic/todo-old/straighten_seams.cpp +0 -0
  224. {libigl-2.6.3.dev5 → libigl-2.6.4.dev1}/attic/todo-old/swept_volume_signed_distance.cpp +0 -0
  225. {libigl-2.6.3.dev5 → libigl-2.6.4.dev1}/attic/todo-old/triangle_cdt.cpp +0 -0
  226. {libigl-2.6.3.dev5 → libigl-2.6.4.dev1}/attic/todo-old/unzip_corners.cpp +0 -0
  227. {libigl-2.6.3.dev5 → libigl-2.6.4.dev1}/attic/todo-old/writeBF.cpp +0 -0
  228. {libigl-2.6.3.dev5 → libigl-2.6.4.dev1}/attic/todo-old/writeDMAT.cpp +0 -0
  229. {libigl-2.6.3.dev5 → libigl-2.6.4.dev1}/attic/todo-old/writeMESH.cpp +0 -0
  230. {libigl-2.6.3.dev5 → libigl-2.6.4.dev1}/attic/todo-old/writeTGF.cpp +0 -0
  231. {libigl-2.6.3.dev5 → libigl-2.6.4.dev1}/attic/todo-old/xml_writeDAE.cpp +0 -0
  232. {libigl-2.6.3.dev5 → libigl-2.6.4.dev1}/attic/todo-old/xml_write_triangle_mesh.cpp +0 -0
  233. {libigl-2.6.3.dev5 → libigl-2.6.4.dev1}/classes/AABB.cpp +0 -0
  234. {libigl-2.6.3.dev5 → libigl-2.6.4.dev1}/classes/classes.cpp +0 -0
  235. {libigl-2.6.3.dev5 → libigl-2.6.4.dev1}/cmake/CXXFeatures.cmake +0 -0
  236. {libigl-2.6.3.dev5 → libigl-2.6.4.dev1}/cmake/FindLIBIGL.cmake +0 -0
  237. {libigl-2.6.3.dev5 → libigl-2.6.4.dev1}/cmake/UseColors.cmake +0 -0
  238. {libigl-2.6.3.dev5 → libigl-2.6.4.dev1}/cmake/Warnings.cmake +0 -0
  239. {libigl-2.6.3.dev5 → libigl-2.6.4.dev1}/include/default_types.h +0 -0
  240. {libigl-2.6.3.dev5 → libigl-2.6.4.dev1}/include/parse_transforms.h +0 -0
  241. {libigl-2.6.3.dev5 → libigl-2.6.4.dev1}/memory/MEMORY.md +0 -0
  242. {libigl-2.6.3.dev5 → libigl-2.6.4.dev1}/missing.sh +0 -0
  243. {libigl-2.6.3.dev5 → libigl-2.6.4.dev1}/mkdocs.yml +0 -0
  244. {libigl-2.6.3.dev5 → libigl-2.6.4.dev1}/postBuild +0 -0
  245. {libigl-2.6.3.dev5 → libigl-2.6.4.dev1}/priority.txt +0 -0
  246. {libigl-2.6.3.dev5 → libigl-2.6.4.dev1}/scripts/basic_function.mako +0 -0
  247. {libigl-2.6.3.dev5 → libigl-2.6.4.dev1}/scripts/blender_igl_export.py +0 -0
  248. {libigl-2.6.3.dev5 → libigl-2.6.4.dev1}/scripts/generate_bindings.py +0 -0
  249. {libigl-2.6.3.dev5 → libigl-2.6.4.dev1}/scripts/make_lean.py +0 -0
  250. {libigl-2.6.3.dev5 → libigl-2.6.4.dev1}/scripts/parser.py +0 -0
  251. {libigl-2.6.3.dev5 → libigl-2.6.4.dev1}/src/AABB.cpp +0 -0
  252. {libigl-2.6.3.dev5 → libigl-2.6.4.dev1}/src/FileEncoding.cpp +0 -0
  253. {libigl-2.6.3.dev5 → libigl-2.6.4.dev1}/src/MappingEnergyType.cpp +0 -0
  254. {libigl-2.6.3.dev5 → libigl-2.6.4.dev1}/src/MassMatrixType.cpp +0 -0
  255. {libigl-2.6.3.dev5 → libigl-2.6.4.dev1}/src/OrientedBoundingBoxMinimizeType.cpp +0 -0
  256. {libigl-2.6.3.dev5 → libigl-2.6.4.dev1}/src/accumarray.cpp +0 -0
  257. {libigl-2.6.3.dev5 → libigl-2.6.4.dev1}/src/active_set.cpp +0 -0
  258. {libigl-2.6.3.dev5 → libigl-2.6.4.dev1}/src/adjacency_list.cpp +0 -0
  259. {libigl-2.6.3.dev5 → libigl-2.6.4.dev1}/src/adjacency_matrix.cpp +0 -0
  260. {libigl-2.6.3.dev5 → libigl-2.6.4.dev1}/src/all_pairs_distances.cpp +0 -0
  261. {libigl-2.6.3.dev5 → libigl-2.6.4.dev1}/src/ambient_occlusion.cpp +0 -0
  262. {libigl-2.6.3.dev5 → libigl-2.6.4.dev1}/src/arap.cpp +0 -0
  263. {libigl-2.6.3.dev5 → libigl-2.6.4.dev1}/src/average_from_edges_onto_vertices.cpp +0 -0
  264. {libigl-2.6.3.dev5 → libigl-2.6.4.dev1}/src/average_onto_faces.cpp +0 -0
  265. {libigl-2.6.3.dev5 → libigl-2.6.4.dev1}/src/average_onto_vertices.cpp +0 -0
  266. {libigl-2.6.3.dev5 → libigl-2.6.4.dev1}/src/avg_edge_length.cpp +0 -0
  267. {libigl-2.6.3.dev5 → libigl-2.6.4.dev1}/src/barycenter.cpp +0 -0
  268. {libigl-2.6.3.dev5 → libigl-2.6.4.dev1}/src/barycentric_coordinates.cpp +0 -0
  269. {libigl-2.6.3.dev5 → libigl-2.6.4.dev1}/src/barycentric_interpolation.cpp +0 -0
  270. {libigl-2.6.3.dev5 → libigl-2.6.4.dev1}/src/bbw.cpp +0 -0
  271. {libigl-2.6.3.dev5 → libigl-2.6.4.dev1}/src/bezier.cpp +0 -0
  272. {libigl-2.6.3.dev5 → libigl-2.6.4.dev1}/src/bfs_orient.cpp +0 -0
  273. {libigl-2.6.3.dev5 → libigl-2.6.4.dev1}/src/biharmonic_coordinates.cpp +0 -0
  274. {libigl-2.6.3.dev5 → libigl-2.6.4.dev1}/src/bijective_composite_harmonic_mapping.cpp +0 -0
  275. {libigl-2.6.3.dev5 → libigl-2.6.4.dev1}/src/blue_noise.cpp +0 -0
  276. {libigl-2.6.3.dev5 → libigl-2.6.4.dev1}/src/boundary_conditions.cpp +0 -0
  277. {libigl-2.6.3.dev5 → libigl-2.6.4.dev1}/src/boundary_facets.cpp +0 -0
  278. {libigl-2.6.3.dev5 → libigl-2.6.4.dev1}/src/boundary_loop.cpp +0 -0
  279. {libigl-2.6.3.dev5 → libigl-2.6.4.dev1}/src/bounding_box.cpp +0 -0
  280. {libigl-2.6.3.dev5 → libigl-2.6.4.dev1}/src/bounding_box_diagonal.cpp +0 -0
  281. {libigl-2.6.3.dev5 → libigl-2.6.4.dev1}/src/centroid.cpp +0 -0
  282. {libigl-2.6.3.dev5 → libigl-2.6.4.dev1}/src/circulation.cpp +0 -0
  283. {libigl-2.6.3.dev5 → libigl-2.6.4.dev1}/src/circumradius.cpp +0 -0
  284. {libigl-2.6.3.dev5 → libigl-2.6.4.dev1}/src/collapse_edge.cpp +0 -0
  285. {libigl-2.6.3.dev5 → libigl-2.6.4.dev1}/src/colormap.cpp +0 -0
  286. {libigl-2.6.3.dev5 → libigl-2.6.4.dev1}/src/comb_cross_field.cpp +0 -0
  287. {libigl-2.6.3.dev5 → libigl-2.6.4.dev1}/src/comb_frame_field.cpp +0 -0
  288. {libigl-2.6.3.dev5 → libigl-2.6.4.dev1}/src/combine.cpp +0 -0
  289. {libigl-2.6.3.dev5 → libigl-2.6.4.dev1}/src/compute_frame_field_bisectors.cpp +0 -0
  290. {libigl-2.6.3.dev5 → libigl-2.6.4.dev1}/src/connected_components.cpp +0 -0
  291. {libigl-2.6.3.dev5 → libigl-2.6.4.dev1}/src/copyleft/cgal/convex_hull.cpp +0 -0
  292. {libigl-2.6.3.dev5 → libigl-2.6.4.dev1}/src/copyleft/cgal/coplanar.cpp +0 -0
  293. {libigl-2.6.3.dev5 → libigl-2.6.4.dev1}/src/copyleft/cgal/delaunay_triangulation.cpp +0 -0
  294. {libigl-2.6.3.dev5 → libigl-2.6.4.dev1}/src/copyleft/cgal/extract_cells.cpp +0 -0
  295. {libigl-2.6.3.dev5 → libigl-2.6.4.dev1}/src/copyleft/cgal/fast_winding_number.cpp +0 -0
  296. {libigl-2.6.3.dev5 → libigl-2.6.4.dev1}/src/copyleft/cgal/intersect_other.cpp +0 -0
  297. {libigl-2.6.3.dev5 → libigl-2.6.4.dev1}/src/copyleft/cgal/intersect_with_half_space.cpp +0 -0
  298. {libigl-2.6.3.dev5 → libigl-2.6.4.dev1}/src/copyleft/cgal/mesh_boolean.cpp +0 -0
  299. {libigl-2.6.3.dev5 → libigl-2.6.4.dev1}/src/copyleft/cgal/module.cpp +0 -0
  300. {libigl-2.6.3.dev5 → libigl-2.6.4.dev1}/src/copyleft/cgal/oriented_bounding_box.cpp +0 -0
  301. {libigl-2.6.3.dev5 → libigl-2.6.4.dev1}/src/copyleft/cgal/outer_hull.cpp +0 -0
  302. {libigl-2.6.3.dev5 → libigl-2.6.4.dev1}/src/copyleft/cgal/peel_outer_hull_layers.cpp +0 -0
  303. {libigl-2.6.3.dev5 → libigl-2.6.4.dev1}/src/copyleft/cgal/peel_winding_number_layers.cpp +0 -0
  304. {libigl-2.6.3.dev5 → libigl-2.6.4.dev1}/src/copyleft/cgal/point_areas.cpp +0 -0
  305. {libigl-2.6.3.dev5 → libigl-2.6.4.dev1}/src/copyleft/cgal/remesh_self_intersections.cpp +0 -0
  306. {libigl-2.6.3.dev5 → libigl-2.6.4.dev1}/src/copyleft/cgal/trim_with_solid.cpp +0 -0
  307. {libigl-2.6.3.dev5 → libigl-2.6.4.dev1}/src/copyleft/marching_cubes.cpp +0 -0
  308. {libigl-2.6.3.dev5 → libigl-2.6.4.dev1}/src/copyleft/module.cpp +0 -0
  309. {libigl-2.6.3.dev5 → libigl-2.6.4.dev1}/src/copyleft/quadprog.cpp +0 -0
  310. {libigl-2.6.3.dev5 → libigl-2.6.4.dev1}/src/copyleft/tetgen/cdt.cpp +0 -0
  311. {libigl-2.6.3.dev5 → libigl-2.6.4.dev1}/src/copyleft/tetgen/mesh_with_skeleton.cpp +0 -0
  312. {libigl-2.6.3.dev5 → libigl-2.6.4.dev1}/src/copyleft/tetgen/module.cpp +0 -0
  313. {libigl-2.6.3.dev5 → libigl-2.6.4.dev1}/src/copyleft/tetgen/tetrahedralize.cpp +0 -0
  314. {libigl-2.6.3.dev5 → libigl-2.6.4.dev1}/src/cotmatrix.cpp +0 -0
  315. {libigl-2.6.3.dev5 → libigl-2.6.4.dev1}/src/cotmatrix_entries.cpp +0 -0
  316. {libigl-2.6.3.dev5 → libigl-2.6.4.dev1}/src/cotmatrix_intrinsic.cpp +0 -0
  317. {libigl-2.6.3.dev5 → libigl-2.6.4.dev1}/src/cross_field_mismatch.cpp +0 -0
  318. {libigl-2.6.3.dev5 → libigl-2.6.4.dev1}/src/crouzeix_raviart_cotmatrix.cpp +0 -0
  319. {libigl-2.6.3.dev5 → libigl-2.6.4.dev1}/src/crouzeix_raviart_massmatrix.cpp +0 -0
  320. {libigl-2.6.3.dev5 → libigl-2.6.4.dev1}/src/cubic.cpp +0 -0
  321. {libigl-2.6.3.dev5 → libigl-2.6.4.dev1}/src/cubic_is_flat.cpp +0 -0
  322. {libigl-2.6.3.dev5 → libigl-2.6.4.dev1}/src/cubic_monomial_bases.cpp +0 -0
  323. {libigl-2.6.3.dev5 → libigl-2.6.4.dev1}/src/cubic_split.cpp +0 -0
  324. {libigl-2.6.3.dev5 → libigl-2.6.4.dev1}/src/curved_hessian_energy.cpp +0 -0
  325. {libigl-2.6.3.dev5 → libigl-2.6.4.dev1}/src/cut_mesh.cpp +0 -0
  326. {libigl-2.6.3.dev5 → libigl-2.6.4.dev1}/src/cut_mesh_from_singularities.cpp +0 -0
  327. {libigl-2.6.3.dev5 → libigl-2.6.4.dev1}/src/cut_to_disk.cpp +0 -0
  328. {libigl-2.6.3.dev5 → libigl-2.6.4.dev1}/src/cycodebase/box_cubic.cpp +0 -0
  329. {libigl-2.6.3.dev5 → libigl-2.6.4.dev1}/src/cycodebase/module.cpp +0 -0
  330. {libigl-2.6.3.dev5 → libigl-2.6.4.dev1}/src/cycodebase/point_cubic_squared_distance.cpp +0 -0
  331. {libigl-2.6.3.dev5 → libigl-2.6.4.dev1}/src/cycodebase/point_spline_squared_distance.cpp +0 -0
  332. {libigl-2.6.3.dev5 → libigl-2.6.4.dev1}/src/cycodebase/roots.cpp +0 -0
  333. {libigl-2.6.3.dev5 → libigl-2.6.4.dev1}/src/cycodebase/spline_eytzinger_aabb.cpp +0 -0
  334. {libigl-2.6.3.dev5 → libigl-2.6.4.dev1}/src/cylinder.cpp +0 -0
  335. {libigl-2.6.3.dev5 → libigl-2.6.4.dev1}/src/decimate.cpp +0 -0
  336. {libigl-2.6.3.dev5 → libigl-2.6.4.dev1}/src/dihedral_angles.cpp +0 -0
  337. {libigl-2.6.3.dev5 → libigl-2.6.4.dev1}/src/dihedral_angles_intrinsic.cpp +0 -0
  338. {libigl-2.6.3.dev5 → libigl-2.6.4.dev1}/src/dijkstra.cpp +0 -0
  339. {libigl-2.6.3.dev5 → libigl-2.6.4.dev1}/src/directed_edge_parents.cpp +0 -0
  340. {libigl-2.6.3.dev5 → libigl-2.6.4.dev1}/src/doublearea.cpp +0 -0
  341. {libigl-2.6.3.dev5 → libigl-2.6.4.dev1}/src/dual_contouring.cpp +0 -0
  342. {libigl-2.6.3.dev5 → libigl-2.6.4.dev1}/src/ears.cpp +0 -0
  343. {libigl-2.6.3.dev5 → libigl-2.6.4.dev1}/src/edge_flaps.cpp +0 -0
  344. {libigl-2.6.3.dev5 → libigl-2.6.4.dev1}/src/edge_lengths.cpp +0 -0
  345. {libigl-2.6.3.dev5 → libigl-2.6.4.dev1}/src/edge_topology.cpp +0 -0
  346. {libigl-2.6.3.dev5 → libigl-2.6.4.dev1}/src/edges.cpp +0 -0
  347. {libigl-2.6.3.dev5 → libigl-2.6.4.dev1}/src/edges_to_path.cpp +0 -0
  348. {libigl-2.6.3.dev5 → libigl-2.6.4.dev1}/src/embree/EmbreeIntersector.cpp +0 -0
  349. {libigl-2.6.3.dev5 → libigl-2.6.4.dev1}/src/embree/ambient_occlusion.cpp +0 -0
  350. {libigl-2.6.3.dev5 → libigl-2.6.4.dev1}/src/embree/bone_visible.cpp +0 -0
  351. {libigl-2.6.3.dev5 → libigl-2.6.4.dev1}/src/embree/line_mesh_intersection.cpp +0 -0
  352. {libigl-2.6.3.dev5 → libigl-2.6.4.dev1}/src/embree/module.cpp +0 -0
  353. {libigl-2.6.3.dev5 → libigl-2.6.4.dev1}/src/embree/reorient_facets_raycast.cpp +0 -0
  354. {libigl-2.6.3.dev5 → libigl-2.6.4.dev1}/src/embree/shape_diameter_function.cpp +0 -0
  355. {libigl-2.6.3.dev5 → libigl-2.6.4.dev1}/src/euler_characteristic.cpp +0 -0
  356. {libigl-2.6.3.dev5 → libigl-2.6.4.dev1}/src/exact_geodesic.cpp +0 -0
  357. {libigl-2.6.3.dev5 → libigl-2.6.4.dev1}/src/exterior_edges.cpp +0 -0
  358. {libigl-2.6.3.dev5 → libigl-2.6.4.dev1}/src/extract_manifold_patches.cpp +0 -0
  359. {libigl-2.6.3.dev5 → libigl-2.6.4.dev1}/src/face_occurrences.cpp +0 -0
  360. {libigl-2.6.3.dev5 → libigl-2.6.4.dev1}/src/facet_adjacency_matrix.cpp +0 -0
  361. {libigl-2.6.3.dev5 → libigl-2.6.4.dev1}/src/facet_components.cpp +0 -0
  362. {libigl-2.6.3.dev5 → libigl-2.6.4.dev1}/src/false_barycentric_subdivision.cpp +0 -0
  363. {libigl-2.6.3.dev5 → libigl-2.6.4.dev1}/src/fast_winding_number.cpp +0 -0
  364. {libigl-2.6.3.dev5 → libigl-2.6.4.dev1}/src/find_cross_field_singularities.cpp +0 -0
  365. {libigl-2.6.3.dev5 → libigl-2.6.4.dev1}/src/fit_cubic_bezier.cpp +0 -0
  366. {libigl-2.6.3.dev5 → libigl-2.6.4.dev1}/src/fit_plane.cpp +0 -0
  367. {libigl-2.6.3.dev5 → libigl-2.6.4.dev1}/src/flipped_triangles.cpp +0 -0
  368. {libigl-2.6.3.dev5 → libigl-2.6.4.dev1}/src/flood_fill.cpp +0 -0
  369. {libigl-2.6.3.dev5 → libigl-2.6.4.dev1}/src/gaussian_curvature.cpp +0 -0
  370. {libigl-2.6.3.dev5 → libigl-2.6.4.dev1}/src/grad.cpp +0 -0
  371. {libigl-2.6.3.dev5 → libigl-2.6.4.dev1}/src/grid.cpp +0 -0
  372. {libigl-2.6.3.dev5 → libigl-2.6.4.dev1}/src/harmonic.cpp +0 -0
  373. {libigl-2.6.3.dev5 → libigl-2.6.4.dev1}/src/hausdorff.cpp +0 -0
  374. {libigl-2.6.3.dev5 → libigl-2.6.4.dev1}/src/heat_geodesics.cpp +0 -0
  375. {libigl-2.6.3.dev5 → libigl-2.6.4.dev1}/src/hessian.cpp +0 -0
  376. {libigl-2.6.3.dev5 → libigl-2.6.4.dev1}/src/hessian_energy.cpp +0 -0
  377. {libigl-2.6.3.dev5 → libigl-2.6.4.dev1}/src/hsv_to_rgb.cpp +0 -0
  378. {libigl-2.6.3.dev5 → libigl-2.6.4.dev1}/src/icosahedron.cpp +0 -0
  379. {libigl-2.6.3.dev5 → libigl-2.6.4.dev1}/src/in_element.cpp +0 -0
  380. {libigl-2.6.3.dev5 → libigl-2.6.4.dev1}/src/inradius.cpp +0 -0
  381. {libigl-2.6.3.dev5 → libigl-2.6.4.dev1}/src/internal_angles.cpp +0 -0
  382. {libigl-2.6.3.dev5 → libigl-2.6.4.dev1}/src/intrinsic_delaunay_cotmatrix.cpp +0 -0
  383. {libigl-2.6.3.dev5 → libigl-2.6.4.dev1}/src/intrinsic_delaunay_triangulation.cpp +0 -0
  384. {libigl-2.6.3.dev5 → libigl-2.6.4.dev1}/src/is_border_vertex.cpp +0 -0
  385. {libigl-2.6.3.dev5 → libigl-2.6.4.dev1}/src/is_boundary_edge.cpp +0 -0
  386. {libigl-2.6.3.dev5 → libigl-2.6.4.dev1}/src/is_delaunay.cpp +0 -0
  387. {libigl-2.6.3.dev5 → libigl-2.6.4.dev1}/src/is_edge_manifold.cpp +0 -0
  388. {libigl-2.6.3.dev5 → libigl-2.6.4.dev1}/src/is_intrinsic_delaunay.cpp +0 -0
  389. {libigl-2.6.3.dev5 → libigl-2.6.4.dev1}/src/is_irregular_vertex.cpp +0 -0
  390. {libigl-2.6.3.dev5 → libigl-2.6.4.dev1}/src/is_vertex_manifold.cpp +0 -0
  391. {libigl-2.6.3.dev5 → libigl-2.6.4.dev1}/src/ismember_rows.cpp +0 -0
  392. {libigl-2.6.3.dev5 → libigl-2.6.4.dev1}/src/isolines.cpp +0 -0
  393. {libigl-2.6.3.dev5 → libigl-2.6.4.dev1}/src/isolines_intrinsic.cpp +0 -0
  394. {libigl-2.6.3.dev5 → libigl-2.6.4.dev1}/src/iterative_closest_point.cpp +0 -0
  395. {libigl-2.6.3.dev5 → libigl-2.6.4.dev1}/src/kelvinlets.cpp +0 -0
  396. {libigl-2.6.3.dev5 → libigl-2.6.4.dev1}/src/knn.cpp +0 -0
  397. {libigl-2.6.3.dev5 → libigl-2.6.4.dev1}/src/lbs_matrix.cpp +0 -0
  398. {libigl-2.6.3.dev5 → libigl-2.6.4.dev1}/src/lexicographic_triangulation.cpp +0 -0
  399. {libigl-2.6.3.dev5 → libigl-2.6.4.dev1}/src/lipschitz_octree.cpp +0 -0
  400. {libigl-2.6.3.dev5 → libigl-2.6.4.dev1}/src/local_basis.cpp +0 -0
  401. {libigl-2.6.3.dev5 → libigl-2.6.4.dev1}/src/look_at.cpp +0 -0
  402. {libigl-2.6.3.dev5 → libigl-2.6.4.dev1}/src/loop.cpp +0 -0
  403. {libigl-2.6.3.dev5 → libigl-2.6.4.dev1}/src/lscm.cpp +0 -0
  404. {libigl-2.6.3.dev5 → libigl-2.6.4.dev1}/src/map_vertices_to_circle.cpp +0 -0
  405. {libigl-2.6.3.dev5 → libigl-2.6.4.dev1}/src/marching_cubes.cpp +0 -0
  406. {libigl-2.6.3.dev5 → libigl-2.6.4.dev1}/src/massmatrix.cpp +0 -0
  407. {libigl-2.6.3.dev5 → libigl-2.6.4.dev1}/src/massmatrix_intrinsic.cpp +0 -0
  408. {libigl-2.6.3.dev5 → libigl-2.6.4.dev1}/src/matlab_format.cpp +0 -0
  409. {libigl-2.6.3.dev5 → libigl-2.6.4.dev1}/src/min_quad_with_fixed.cpp +0 -0
  410. {libigl-2.6.3.dev5 → libigl-2.6.4.dev1}/src/module.cpp +0 -0
  411. {libigl-2.6.3.dev5 → libigl-2.6.4.dev1}/src/moments.cpp +0 -0
  412. {libigl-2.6.3.dev5 → libigl-2.6.4.dev1}/src/mvc.cpp +0 -0
  413. {libigl-2.6.3.dev5 → libigl-2.6.4.dev1}/src/noop.cpp +0 -0
  414. {libigl-2.6.3.dev5 → libigl-2.6.4.dev1}/src/octree.cpp +0 -0
  415. {libigl-2.6.3.dev5 → libigl-2.6.4.dev1}/src/offset_surface.cpp +0 -0
  416. {libigl-2.6.3.dev5 → libigl-2.6.4.dev1}/src/on_boundary.cpp +0 -0
  417. {libigl-2.6.3.dev5 → libigl-2.6.4.dev1}/src/orient_halfedges.cpp +0 -0
  418. {libigl-2.6.3.dev5 → libigl-2.6.4.dev1}/src/orient_outward.cpp +0 -0
  419. {libigl-2.6.3.dev5 → libigl-2.6.4.dev1}/src/orientable_patches.cpp +0 -0
  420. {libigl-2.6.3.dev5 → libigl-2.6.4.dev1}/src/oriented_bounding_box.cpp +0 -0
  421. {libigl-2.6.3.dev5 → libigl-2.6.4.dev1}/src/oriented_facets.cpp +0 -0
  422. {libigl-2.6.3.dev5 → libigl-2.6.4.dev1}/src/per_corner_normals.cpp +0 -0
  423. {libigl-2.6.3.dev5 → libigl-2.6.4.dev1}/src/per_edge_normals.cpp +0 -0
  424. {libigl-2.6.3.dev5 → libigl-2.6.4.dev1}/src/per_vertex_attribute_smoothing.cpp +0 -0
  425. {libigl-2.6.3.dev5 → libigl-2.6.4.dev1}/src/per_vertex_normals.cpp +0 -0
  426. {libigl-2.6.3.dev5 → libigl-2.6.4.dev1}/src/point_mesh_squared_distance.cpp +0 -0
  427. {libigl-2.6.3.dev5 → libigl-2.6.4.dev1}/src/polar_dec.cpp +0 -0
  428. {libigl-2.6.3.dev5 → libigl-2.6.4.dev1}/src/polar_svd.cpp +0 -0
  429. {libigl-2.6.3.dev5 → libigl-2.6.4.dev1}/src/polygon_corners.cpp +0 -0
  430. {libigl-2.6.3.dev5 → libigl-2.6.4.dev1}/src/polygons_to_triangles.cpp +0 -0
  431. {libigl-2.6.3.dev5 → libigl-2.6.4.dev1}/src/predicates/Orientation.cpp +0 -0
  432. {libigl-2.6.3.dev5 → libigl-2.6.4.dev1}/src/predicates/cubic_winding_number.cpp +0 -0
  433. {libigl-2.6.3.dev5 → libigl-2.6.4.dev1}/src/predicates/delaunay_triangulation.cpp +0 -0
  434. {libigl-2.6.3.dev5 → libigl-2.6.4.dev1}/src/predicates/ear_clipping.cpp +0 -0
  435. {libigl-2.6.3.dev5 → libigl-2.6.4.dev1}/src/predicates/find_intersections.cpp +0 -0
  436. {libigl-2.6.3.dev5 → libigl-2.6.4.dev1}/src/predicates/find_self_intersections.cpp +0 -0
  437. {libigl-2.6.3.dev5 → libigl-2.6.4.dev1}/src/predicates/incircle.cpp +0 -0
  438. {libigl-2.6.3.dev5 → libigl-2.6.4.dev1}/src/predicates/insphere.cpp +0 -0
  439. {libigl-2.6.3.dev5 → libigl-2.6.4.dev1}/src/predicates/lexicographic_triangulation.cpp +0 -0
  440. {libigl-2.6.3.dev5 → libigl-2.6.4.dev1}/src/predicates/module.cpp +0 -0
  441. {libigl-2.6.3.dev5 → libigl-2.6.4.dev1}/src/predicates/orient2d.cpp +0 -0
  442. {libigl-2.6.3.dev5 → libigl-2.6.4.dev1}/src/predicates/orient3d.cpp +0 -0
  443. {libigl-2.6.3.dev5 → libigl-2.6.4.dev1}/src/predicates/point_in_convex_hull.cpp +0 -0
  444. {libigl-2.6.3.dev5 → libigl-2.6.4.dev1}/src/predicates/point_inside_convex_polygon.cpp +0 -0
  445. {libigl-2.6.3.dev5 → libigl-2.6.4.dev1}/src/predicates/polygons_to_triangles.cpp +0 -0
  446. {libigl-2.6.3.dev5 → libigl-2.6.4.dev1}/src/predicates/segment_segment_intersect.cpp +0 -0
  447. {libigl-2.6.3.dev5 → libigl-2.6.4.dev1}/src/predicates/spline_winding_number.cpp +0 -0
  448. {libigl-2.6.3.dev5 → libigl-2.6.4.dev1}/src/predicates/triangle_triangle_intersect.cpp +0 -0
  449. {libigl-2.6.3.dev5 → libigl-2.6.4.dev1}/src/principal_curvature.cpp +0 -0
  450. {libigl-2.6.3.dev5 → libigl-2.6.4.dev1}/src/procrustes.cpp +0 -0
  451. {libigl-2.6.3.dev5 → libigl-2.6.4.dev1}/src/project.cpp +0 -0
  452. {libigl-2.6.3.dev5 → libigl-2.6.4.dev1}/src/project_to_line.cpp +0 -0
  453. {libigl-2.6.3.dev5 → libigl-2.6.4.dev1}/src/project_to_line_segment.cpp +0 -0
  454. {libigl-2.6.3.dev5 → libigl-2.6.4.dev1}/src/pseudonormal_test.cpp +0 -0
  455. {libigl-2.6.3.dev5 → libigl-2.6.4.dev1}/src/qslim.cpp +0 -0
  456. {libigl-2.6.3.dev5 → libigl-2.6.4.dev1}/src/quad_grid.cpp +0 -0
  457. {libigl-2.6.3.dev5 → libigl-2.6.4.dev1}/src/random_dir.cpp +0 -0
  458. {libigl-2.6.3.dev5 → libigl-2.6.4.dev1}/src/random_points_on_mesh.cpp +0 -0
  459. {libigl-2.6.3.dev5 → libigl-2.6.4.dev1}/src/ray_mesh_intersect.cpp +0 -0
  460. {libigl-2.6.3.dev5 → libigl-2.6.4.dev1}/src/ray_sphere_intersect.cpp +0 -0
  461. {libigl-2.6.3.dev5 → libigl-2.6.4.dev1}/src/ray_triangle_intersect.cpp +0 -0
  462. {libigl-2.6.3.dev5 → libigl-2.6.4.dev1}/src/readCSV.cpp +0 -0
  463. {libigl-2.6.3.dev5 → libigl-2.6.4.dev1}/src/readDMAT.cpp +0 -0
  464. {libigl-2.6.3.dev5 → libigl-2.6.4.dev1}/src/readMESH.cpp +0 -0
  465. {libigl-2.6.3.dev5 → libigl-2.6.4.dev1}/src/readMSH.cpp +0 -0
  466. {libigl-2.6.3.dev5 → libigl-2.6.4.dev1}/src/readOBJ.cpp +0 -0
  467. {libigl-2.6.3.dev5 → libigl-2.6.4.dev1}/src/readOFF.cpp +0 -0
  468. {libigl-2.6.3.dev5 → libigl-2.6.4.dev1}/src/readSTL.cpp +0 -0
  469. {libigl-2.6.3.dev5 → libigl-2.6.4.dev1}/src/read_triangle_mesh.cpp +0 -0
  470. {libigl-2.6.3.dev5 → libigl-2.6.4.dev1}/src/remove_duplicate_vertices.cpp +0 -0
  471. {libigl-2.6.3.dev5 → libigl-2.6.4.dev1}/src/remove_unreferenced.cpp +0 -0
  472. {libigl-2.6.3.dev5 → libigl-2.6.4.dev1}/src/resolve_duplicated_faces.cpp +0 -0
  473. {libigl-2.6.3.dev5 → libigl-2.6.4.dev1}/src/rgb_to_hsv.cpp +0 -0
  474. {libigl-2.6.3.dev5 → libigl-2.6.4.dev1}/src/rigid_alignment.cpp +0 -0
  475. {libigl-2.6.3.dev5 → libigl-2.6.4.dev1}/src/rotate_vectors.cpp +0 -0
  476. {libigl-2.6.3.dev5 → libigl-2.6.4.dev1}/src/rotation_matrix_from_directions.cpp +0 -0
  477. {libigl-2.6.3.dev5 → libigl-2.6.4.dev1}/src/sample_edges.cpp +0 -0
  478. {libigl-2.6.3.dev5 → libigl-2.6.4.dev1}/src/segment_segment_intersect.cpp +0 -0
  479. {libigl-2.6.3.dev5 → libigl-2.6.4.dev1}/src/sharp_edges.cpp +0 -0
  480. {libigl-2.6.3.dev5 → libigl-2.6.4.dev1}/src/signed_angle.cpp +0 -0
  481. {libigl-2.6.3.dev5 → libigl-2.6.4.dev1}/src/signed_distance.cpp +0 -0
  482. {libigl-2.6.3.dev5 → libigl-2.6.4.dev1}/src/slim.cpp +0 -0
  483. {libigl-2.6.3.dev5 → libigl-2.6.4.dev1}/src/snap_points.cpp +0 -0
  484. {libigl-2.6.3.dev5 → libigl-2.6.4.dev1}/src/solid_angle.cpp +0 -0
  485. {libigl-2.6.3.dev5 → libigl-2.6.4.dev1}/src/sparse_map_noop.cpp +0 -0
  486. {libigl-2.6.3.dev5 → libigl-2.6.4.dev1}/src/sparse_map_shape.cpp +0 -0
  487. {libigl-2.6.3.dev5 → libigl-2.6.4.dev1}/src/sparse_noop.cpp +0 -0
  488. {libigl-2.6.3.dev5 → libigl-2.6.4.dev1}/src/sparse_shape.cpp +0 -0
  489. {libigl-2.6.3.dev5 → libigl-2.6.4.dev1}/src/spectra/EigsType.cpp +0 -0
  490. {libigl-2.6.3.dev5 → libigl-2.6.4.dev1}/src/spectra/eigs.cpp +0 -0
  491. {libigl-2.6.3.dev5 → libigl-2.6.4.dev1}/src/spectra/lscm.cpp +0 -0
  492. {libigl-2.6.3.dev5 → libigl-2.6.4.dev1}/src/spectra/module.cpp +0 -0
  493. {libigl-2.6.3.dev5 → libigl-2.6.4.dev1}/src/split_nonmanifold.cpp +0 -0
  494. {libigl-2.6.3.dev5 → libigl-2.6.4.dev1}/src/squared_edge_lengths.cpp +0 -0
  495. {libigl-2.6.3.dev5 → libigl-2.6.4.dev1}/src/super_fibonacci.cpp +0 -0
  496. {libigl-2.6.3.dev5 → libigl-2.6.4.dev1}/src/swept_volume.cpp +0 -0
  497. {libigl-2.6.3.dev5 → libigl-2.6.4.dev1}/src/swept_volume_bounding_box.cpp +0 -0
  498. {libigl-2.6.3.dev5 → libigl-2.6.4.dev1}/src/swept_volume_signed_distance.cpp +0 -0
  499. {libigl-2.6.3.dev5 → libigl-2.6.4.dev1}/src/tet_tet_adjacency.cpp +0 -0
  500. {libigl-2.6.3.dev5 → libigl-2.6.4.dev1}/src/tri_tri_intersect.cpp +0 -0
  501. {libigl-2.6.3.dev5 → libigl-2.6.4.dev1}/src/triangle/cdt.cpp +0 -0
  502. {libigl-2.6.3.dev5 → libigl-2.6.4.dev1}/src/triangle/module.cpp +0 -0
  503. {libigl-2.6.3.dev5 → libigl-2.6.4.dev1}/src/triangle/refine.cpp +0 -0
  504. {libigl-2.6.3.dev5 → libigl-2.6.4.dev1}/src/triangle/scaf.cpp +0 -0
  505. {libigl-2.6.3.dev5 → libigl-2.6.4.dev1}/src/triangle/triangulate.cpp +0 -0
  506. {libigl-2.6.3.dev5 → libigl-2.6.4.dev1}/src/triangle_fan.cpp +0 -0
  507. {libigl-2.6.3.dev5 → libigl-2.6.4.dev1}/src/triangle_triangle_adjacency.cpp +0 -0
  508. {libigl-2.6.3.dev5 → libigl-2.6.4.dev1}/src/triangulated_grid.cpp +0 -0
  509. {libigl-2.6.3.dev5 → libigl-2.6.4.dev1}/src/turning_number.cpp +0 -0
  510. {libigl-2.6.3.dev5 → libigl-2.6.4.dev1}/src/uniformly_sample_two_manifold.cpp +0 -0
  511. {libigl-2.6.3.dev5 → libigl-2.6.4.dev1}/src/unique_edge_map.cpp +0 -0
  512. {libigl-2.6.3.dev5 → libigl-2.6.4.dev1}/src/unique_simplices.cpp +0 -0
  513. {libigl-2.6.3.dev5 → libigl-2.6.4.dev1}/src/unique_sparse_voxel_corners.cpp +0 -0
  514. {libigl-2.6.3.dev5 → libigl-2.6.4.dev1}/src/unproject.cpp +0 -0
  515. {libigl-2.6.3.dev5 → libigl-2.6.4.dev1}/src/upsample.cpp +0 -0
  516. {libigl-2.6.3.dev5 → libigl-2.6.4.dev1}/src/vector_area_matrix.cpp +0 -0
  517. {libigl-2.6.3.dev5 → libigl-2.6.4.dev1}/src/vertex_components.cpp +0 -0
  518. {libigl-2.6.3.dev5 → libigl-2.6.4.dev1}/src/vertex_triangle_adjacency.cpp +0 -0
  519. {libigl-2.6.3.dev5 → libigl-2.6.4.dev1}/src/volume.cpp +0 -0
  520. {libigl-2.6.3.dev5 → libigl-2.6.4.dev1}/src/voronoi_mass.cpp +0 -0
  521. {libigl-2.6.3.dev5 → libigl-2.6.4.dev1}/src/voxel_grid.cpp +0 -0
  522. {libigl-2.6.3.dev5 → libigl-2.6.4.dev1}/src/winding_number.cpp +0 -0
  523. {libigl-2.6.3.dev5 → libigl-2.6.4.dev1}/src/writeDMAT.cpp +0 -0
  524. {libigl-2.6.3.dev5 → libigl-2.6.4.dev1}/src/writeMESH.cpp +0 -0
  525. {libigl-2.6.3.dev5 → libigl-2.6.4.dev1}/src/writeMSH.cpp +0 -0
  526. {libigl-2.6.3.dev5 → libigl-2.6.4.dev1}/src/writeOBJ.cpp +0 -0
  527. {libigl-2.6.3.dev5 → libigl-2.6.4.dev1}/src/writeOFF.cpp +0 -0
  528. {libigl-2.6.3.dev5 → libigl-2.6.4.dev1}/src/writePLY.cpp +0 -0
  529. {libigl-2.6.3.dev5 → libigl-2.6.4.dev1}/src/writeSTL.cpp +0 -0
  530. {libigl-2.6.3.dev5 → libigl-2.6.4.dev1}/src/write_triangle_mesh.cpp +0 -0
  531. {libigl-2.6.3.dev5 → libigl-2.6.4.dev1}/tutorial/contributing.md +0 -0
  532. {libigl-2.6.3.dev5 → libigl-2.6.4.dev1}/tutorial/exporter.py +0 -0
  533. {libigl-2.6.3.dev5 → libigl-2.6.4.dev1}/tutorial/igl_docs.md +0 -0
  534. {libigl-2.6.3.dev5 → libigl-2.6.4.dev1}/tutorial/images/102_DrawMesh.png +0 -0
  535. {libigl-2.6.3.dev5 → libigl-2.6.4.dev1}/tutorial/images/104_Colors.png +0 -0
  536. {libigl-2.6.3.dev5 → libigl-2.6.4.dev1}/tutorial/images/105_Overlays.png +0 -0
  537. {libigl-2.6.3.dev5 → libigl-2.6.4.dev1}/tutorial/images/106_ViewerMenu.png +0 -0
  538. {libigl-2.6.3.dev5 → libigl-2.6.4.dev1}/tutorial/images/501_HarmonicParam.png +0 -0
  539. {libigl-2.6.3.dev5 → libigl-2.6.4.dev1}/tutorial/images/502_LSCMParam.png +0 -0
  540. {libigl-2.6.3.dev5 → libigl-2.6.4.dev1}/tutorial/images/503_ARAPParam.png +0 -0
  541. {libigl-2.6.3.dev5 → libigl-2.6.4.dev1}/tutorial/images/504_nrosy_field.png +0 -0
  542. {libigl-2.6.3.dev5 → libigl-2.6.4.dev1}/tutorial/images/504_vector_field.png +0 -0
  543. {libigl-2.6.3.dev5 → libigl-2.6.4.dev1}/tutorial/images/505_MIQ_1.png +0 -0
  544. {libigl-2.6.3.dev5 → libigl-2.6.4.dev1}/tutorial/images/505_MIQ_2.png +0 -0
  545. {libigl-2.6.3.dev5 → libigl-2.6.4.dev1}/tutorial/images/505_MIQ_3.png +0 -0
  546. {libigl-2.6.3.dev5 → libigl-2.6.4.dev1}/tutorial/images/505_MIQ_4.png +0 -0
  547. {libigl-2.6.3.dev5 → libigl-2.6.4.dev1}/tutorial/images/505_MIQ_5.png +0 -0
  548. {libigl-2.6.3.dev5 → libigl-2.6.4.dev1}/tutorial/images/505_MIQ_6.png +0 -0
  549. {libigl-2.6.3.dev5 → libigl-2.6.4.dev1}/tutorial/images/505_MIQ_7.png +0 -0
  550. {libigl-2.6.3.dev5 → libigl-2.6.4.dev1}/tutorial/images/505_MIQ_8.png +0 -0
  551. {libigl-2.6.3.dev5 → libigl-2.6.4.dev1}/tutorial/images/506_FrameField_1.png +0 -0
  552. {libigl-2.6.3.dev5 → libigl-2.6.4.dev1}/tutorial/images/506_FrameField_2.png +0 -0
  553. {libigl-2.6.3.dev5 → libigl-2.6.4.dev1}/tutorial/images/506_FrameField_3.png +0 -0
  554. {libigl-2.6.3.dev5 → libigl-2.6.4.dev1}/tutorial/images/506_FrameField_4.png +0 -0
  555. {libigl-2.6.3.dev5 → libigl-2.6.4.dev1}/tutorial/images/507_PolyVectorField.png +0 -0
  556. {libigl-2.6.3.dev5 → libigl-2.6.4.dev1}/tutorial/images/508_ConjugateField.png +0 -0
  557. {libigl-2.6.3.dev5 → libigl-2.6.4.dev1}/tutorial/images/509_Planarization.png +0 -0
  558. {libigl-2.6.3.dev5 → libigl-2.6.4.dev1}/tutorial/images/510_Integrable.png +0 -0
  559. {libigl-2.6.3.dev5 → libigl-2.6.4.dev1}/tutorial/images/511_PolyVectorFieldGeneral.png +0 -0
  560. {libigl-2.6.3.dev5 → libigl-2.6.4.dev1}/tutorial/images/602_Matlab_1.png +0 -0
  561. {libigl-2.6.3.dev5 → libigl-2.6.4.dev1}/tutorial/images/602_Matlab_2.png +0 -0
  562. {libigl-2.6.3.dev5 → libigl-2.6.4.dev1}/tutorial/images/604_Triangle.png +0 -0
  563. {libigl-2.6.3.dev5 → libigl-2.6.4.dev1}/tutorial/images/605_Tetgen.png +0 -0
  564. {libigl-2.6.3.dev5 → libigl-2.6.4.dev1}/tutorial/images/606_AmbientOcclusion.png +0 -0
  565. {libigl-2.6.3.dev5 → libigl-2.6.4.dev1}/tutorial/images/607_Picking.png +0 -0
  566. {libigl-2.6.3.dev5 → libigl-2.6.4.dev1}/tutorial/images/608_LIM.png +0 -0
  567. {libigl-2.6.3.dev5 → libigl-2.6.4.dev1}/tutorial/images/712_beetles.jpg +0 -0
  568. {libigl-2.6.3.dev5 → libigl-2.6.4.dev1}/tutorial/images/713_ShapeUp.png +0 -0
  569. {libigl-2.6.3.dev5 → libigl-2.6.4.dev1}/tutorial/images/VF.pdf +0 -0
  570. {libigl-2.6.3.dev5 → libigl-2.6.4.dev1}/tutorial/images/VF.png +0 -0
  571. {libigl-2.6.3.dev5 → libigl-2.6.4.dev1}/tutorial/images/arm-dqs.jpg +0 -0
  572. {libigl-2.6.3.dev5 → libigl-2.6.4.dev1}/tutorial/images/armadillo-fast.jpg +0 -0
  573. {libigl-2.6.3.dev5 → libigl-2.6.4.dev1}/tutorial/images/armadillo-marching-cubes.jpg +0 -0
  574. {libigl-2.6.3.dev5 → libigl-2.6.4.dev1}/tutorial/images/background.gif +0 -0
  575. {libigl-2.6.3.dev5 → libigl-2.6.4.dev1}/tutorial/images/beetle-eigen-decomposition.gif +0 -0
  576. {libigl-2.6.3.dev5 → libigl-2.6.4.dev1}/tutorial/images/big-sigcat-winding-number.gif +0 -0
  577. {libigl-2.6.3.dev5 → libigl-2.6.4.dev1}/tutorial/images/bump-k-harmonic.jpg +0 -0
  578. {libigl-2.6.3.dev5 → libigl-2.6.4.dev1}/tutorial/images/bumpy-gaussian-curvature.jpg +0 -0
  579. {libigl-2.6.3.dev5 → libigl-2.6.4.dev1}/tutorial/images/bunny-signed-distance.gif +0 -0
  580. {libigl-2.6.3.dev5 → libigl-2.6.4.dev1}/tutorial/images/bunny-swept-volume.gif +0 -0
  581. {libigl-2.6.3.dev5 → libigl-2.6.4.dev1}/tutorial/images/camelhead-laplace-equation.jpg +0 -0
  582. {libigl-2.6.3.dev5 → libigl-2.6.4.dev1}/tutorial/images/cheburashka-biharmonic-leq.jpg +0 -0
  583. {libigl-2.6.3.dev5 → libigl-2.6.4.dev1}/tutorial/images/cheburashka-gradient.jpg +0 -0
  584. {libigl-2.6.3.dev5 → libigl-2.6.4.dev1}/tutorial/images/cheburashka-knight-boolean.jpg +0 -0
  585. {libigl-2.6.3.dev5 → libigl-2.6.4.dev1}/tutorial/images/cheburashka-multiscale-biharmonic-kernels.jpg +0 -0
  586. {libigl-2.6.3.dev5 → libigl-2.6.4.dev1}/tutorial/images/cow-curvature-flow.jpg +0 -0
  587. {libigl-2.6.3.dev5 → libigl-2.6.4.dev1}/tutorial/images/cube-sphere-cylinders-csg-tree.jpg +0 -0
  588. {libigl-2.6.3.dev5 → libigl-2.6.4.dev1}/tutorial/images/cube-sphere-cylinders-csg.gif +0 -0
  589. {libigl-2.6.3.dev5 → libigl-2.6.4.dev1}/tutorial/images/decimated-knight-arap.jpg +0 -0
  590. {libigl-2.6.3.dev5 → libigl-2.6.4.dev1}/tutorial/images/decimated-knight-slice-color.jpg +0 -0
  591. {libigl-2.6.3.dev5 → libigl-2.6.4.dev1}/tutorial/images/decimated-knight-sort-color.jpg +0 -0
  592. {libigl-2.6.3.dev5 → libigl-2.6.4.dev1}/tutorial/images/decimated-knight-subdivision.gif +0 -0
  593. {libigl-2.6.3.dev5 → libigl-2.6.4.dev1}/tutorial/images/edge-collapse.jpg +0 -0
  594. {libigl-2.6.3.dev5 → libigl-2.6.4.dev1}/tutorial/images/edge-collapse.pdf +0 -0
  595. {libigl-2.6.3.dev5 → libigl-2.6.4.dev1}/tutorial/images/fandisk-normals.jpg +0 -0
  596. {libigl-2.6.3.dev5 → libigl-2.6.4.dev1}/tutorial/images/fertility-edge-collapse.gif +0 -0
  597. {libigl-2.6.3.dev5 → libigl-2.6.4.dev1}/tutorial/images/fertility-principal-curvature.jpg +0 -0
  598. {libigl-2.6.3.dev5 → libigl-2.6.4.dev1}/tutorial/images/geodesicdistance.jpg +0 -0
  599. {libigl-2.6.3.dev5 → libigl-2.6.4.dev1}/tutorial/images/hand-bbw.jpg +0 -0
  600. {libigl-2.6.3.dev5 → libigl-2.6.4.dev1}/tutorial/images/hat-function.jpg +0 -0
  601. {libigl-2.6.3.dev5 → libigl-2.6.4.dev1}/tutorial/images/heat-geodesic-beetle.gif +0 -0
  602. {libigl-2.6.3.dev5 → libigl-2.6.4.dev1}/tutorial/images/heat-geodesic-peaks.png +0 -0
  603. {libigl-2.6.3.dev5 → libigl-2.6.4.dev1}/tutorial/images/libigl-logo.jpg +0 -0
  604. {libigl-2.6.3.dev5 → libigl-2.6.4.dev1}/tutorial/images/max-biharmonic.jpg +0 -0
  605. {libigl-2.6.3.dev5 → libigl-2.6.4.dev1}/tutorial/images/multiple-meshes.png +0 -0
  606. {libigl-2.6.3.dev5 → libigl-2.6.4.dev1}/tutorial/images/octopus-biharmonic-coordinates-physics.gif +0 -0
  607. {libigl-2.6.3.dev5 → libigl-2.6.4.dev1}/tutorial/images/simplicial_complex_augmentation_framework.png +0 -0
  608. {libigl-2.6.3.dev5 → libigl-2.6.4.dev1}/tutorial/images/slim.png +0 -0
  609. {libigl-2.6.3.dev5 → libigl-2.6.4.dev1}/tutorial/images/streamlines.jpg +0 -0
  610. {libigl-2.6.3.dev5 → libigl-2.6.4.dev1}/tutorial/images/truck-facet-orientation.jpg +0 -0
  611. {libigl-2.6.3.dev5 → libigl-2.6.4.dev1}/tutorial/index.md +0 -0
  612. {libigl-2.6.3.dev5 → libigl-2.6.4.dev1}/tutorial/marching_cubes.py +0 -0
  613. {libigl-2.6.3.dev5 → libigl-2.6.4.dev1}/tutorial/plot_to_md.py +0 -0
  614. {libigl-2.6.3.dev5 → libigl-2.6.4.dev1}/tutorial/tut-chapter0.ipynb +0 -0
  615. {libigl-2.6.3.dev5 → libigl-2.6.4.dev1}/tutorial/tut-chapter1.ipynb +0 -0
  616. {libigl-2.6.3.dev5 → libigl-2.6.4.dev1}/tutorial/tut-chapter2.ipynb +0 -0
  617. {libigl-2.6.3.dev5 → libigl-2.6.4.dev1}/tutorial/tut-chapter3.ipynb +0 -0
  618. {libigl-2.6.3.dev5 → libigl-2.6.4.dev1}/tutorial/tut-chapter4.ipynb +0 -0
  619. {libigl-2.6.3.dev5 → libigl-2.6.4.dev1}/tutorial/tut-chapter5.ipynb +0 -0
  620. {libigl-2.6.3.dev5 → libigl-2.6.4.dev1}/tutorial/tut-chapter6.ipynb +0 -0
  621. {libigl-2.6.3.dev5 → libigl-2.6.4.dev1}/tutorial/tut-chapter7.ipynb +0 -0
  622. {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] # Use specific versions for clarity
32
- arch: [x86_64, arm64]
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
- - os: ubuntu-24.04-arm # No need to specify arch, it's already implicit
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 }} ${{ matrix.arch }}
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 }}-*" # Use matrix.pybuilds and matrix.arch
63
- CIBW_ARCHS_MACOS: ${{ matrix.arch }}
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
- # Include pybuilds in the artifact name
70
- name: wheels-${{ matrix.os }}-${{ matrix.arch }}-${{ matrix.pybuilds }}
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
- GIT_TAG 0cbcaf886314ff331402c38fbb04cc4de8d7c033
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.dev5
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)
@@ -13,7 +13,7 @@ build-backend = "scikit_build_core.build"
13
13
 
14
14
  [project]
15
15
  name = "libigl"
16
- version = "2.6.3.dev5"
16
+ version = "2.6.4.dev1"
17
17
  description = "libigl: A simple C++ geometry processing library"
18
18
  readme = "README.md"
19
19
  requires-python = ">=3.8"
@@ -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
+ }