libigl 2.6.3.dev4__tar.gz → 2.6.4.dev0__tar.gz

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (623) hide show
  1. {libigl-2.6.3.dev4 → libigl-2.6.4.dev0}/.github/workflows/pip.yml +1 -1
  2. libigl-2.6.4.dev0/.github/workflows/wheels.yml +200 -0
  3. libigl-2.6.4.dev0/CHANGELOG.md +70 -0
  4. {libigl-2.6.3.dev4 → libigl-2.6.4.dev0}/CMakeLists.txt +1 -2
  5. {libigl-2.6.3.dev4 → libigl-2.6.4.dev0}/PKG-INFO +1 -1
  6. {libigl-2.6.3.dev4 → libigl-2.6.4.dev0}/include/default_types.h +1 -0
  7. libigl-2.6.4.dev0/include/parse_transforms.h +45 -0
  8. {libigl-2.6.3.dev4 → libigl-2.6.4.dev0}/pyproject.toml +1 -1
  9. libigl-2.6.4.dev0/src/active_set.cpp +100 -0
  10. libigl-2.6.4.dev0/src/ambient_occlusion.cpp +49 -0
  11. libigl-2.6.4.dev0/src/boundary_conditions.cpp +67 -0
  12. {libigl-2.6.3.dev4 → libigl-2.6.4.dev0}/src/boundary_loop.cpp +1 -1
  13. libigl-2.6.4.dev0/src/connect_boundary_to_infinity.cpp +57 -0
  14. libigl-2.6.4.dev0/src/cycodebase/point_cubic_squared_distance.cpp +67 -0
  15. libigl-2.6.4.dev0/src/cycodebase/point_spline_squared_distance.cpp +78 -0
  16. {libigl-2.6.3.dev4 → libigl-2.6.4.dev0}/src/face_areas.cpp +15 -0
  17. libigl-2.6.4.dev0/src/fast_winding_number.cpp +181 -0
  18. libigl-2.6.4.dev0/src/fit_rotations.cpp +35 -0
  19. {libigl-2.6.3.dev4 → libigl-2.6.4.dev0}/src/marching_cubes.cpp +10 -4
  20. libigl-2.6.4.dev0/src/path_to_edges.cpp +35 -0
  21. {libigl-2.6.3.dev4 → libigl-2.6.4.dev0}/src/per_face_normals.cpp +22 -0
  22. libigl-2.6.4.dev0/src/planarize_quad_mesh.cpp +43 -0
  23. libigl-2.6.4.dev0/src/point_simplex_squared_distance.cpp +64 -0
  24. libigl-2.6.4.dev0/src/polar_svd3x3.cpp +32 -0
  25. libigl-2.6.4.dev0/src/quad_edges.cpp +33 -0
  26. libigl-2.6.4.dev0/src/quad_planarity.cpp +36 -0
  27. libigl-2.6.4.dev0/src/ramer_douglas_peucker.cpp +38 -0
  28. libigl-2.6.4.dev0/src/resolve_duplicated_faces.cpp +45 -0
  29. libigl-2.6.4.dev0/src/simplex_simplex_squared_distance.cpp +44 -0
  30. libigl-2.6.4.dev0/src/smooth_corner_adjacency.cpp +44 -0
  31. libigl-2.6.4.dev0/src/swept_volume.cpp +60 -0
  32. libigl-2.6.4.dev0/src/swept_volume_bounding_box.cpp +48 -0
  33. libigl-2.6.4.dev0/src/swept_volume_signed_distance.cpp +91 -0
  34. libigl-2.6.4.dev0/src/triangle/remesh_at_points.cpp +55 -0
  35. libigl-2.6.4.dev0/src/vertex_components.cpp +54 -0
  36. libigl-2.6.4.dev0/src/voxel_grid.cpp +81 -0
  37. {libigl-2.6.3.dev4 → libigl-2.6.4.dev0}/tests/test_all.py +513 -4
  38. {libigl-2.6.3.dev4 → libigl-2.6.4.dev0}/tutorial/tut-chapter1.ipynb +2 -16
  39. libigl-2.6.3.dev4/.github/workflows/wheels.yml +0 -97
  40. libigl-2.6.3.dev4/src/cycodebase/point_cubic_squared_distance.cpp +0 -36
  41. libigl-2.6.3.dev4/src/cycodebase/point_spline_squared_distance.cpp +0 -40
  42. libigl-2.6.3.dev4/src/fast_winding_number.cpp +0 -38
  43. libigl-2.6.3.dev4/src/vertex_components.cpp +0 -33
  44. libigl-2.6.3.dev4/src/voxel_grid.cpp +0 -42
  45. {libigl-2.6.3.dev4 → libigl-2.6.4.dev0}/.gitignore +0 -0
  46. {libigl-2.6.3.dev4 → libigl-2.6.4.dev0}/LICENSE.GPL +0 -0
  47. {libigl-2.6.3.dev4 → libigl-2.6.4.dev0}/LICENSE.MPL2 +0 -0
  48. {libigl-2.6.3.dev4 → libigl-2.6.4.dev0}/README.md +0 -0
  49. {libigl-2.6.3.dev4 → libigl-2.6.4.dev0}/attic/copyleft/tetgen_tetrahedralize.cpp +0 -0
  50. {libigl-2.6.3.dev4 → libigl-2.6.4.dev0}/attic/copyleft/triangle_triangulate.cpp +0 -0
  51. {libigl-2.6.3.dev4 → libigl-2.6.4.dev0}/attic/skip/SolverStatus.cpp +0 -0
  52. {libigl-2.6.3.dev4 → libigl-2.6.4.dev0}/attic/skip/WindingNumberMethod.cpp +0 -0
  53. {libigl-2.6.3.dev4 → libigl-2.6.4.dev0}/attic/skip/angular_distance.cpp +0 -0
  54. {libigl-2.6.3.dev4 → libigl-2.6.4.dev0}/attic/skip/canonical_quaternions.cpp +0 -0
  55. {libigl-2.6.3.dev4 → libigl-2.6.4.dev0}/attic/skip/column_to_quats.cpp +0 -0
  56. {libigl-2.6.3.dev4 → libigl-2.6.4.dev0}/attic/skip/comiso_nrosy.cpp +0 -0
  57. {libigl-2.6.3.dev4 → libigl-2.6.4.dev0}/attic/skip/covariance_scatter_matrix.cpp +0 -0
  58. {libigl-2.6.3.dev4 → libigl-2.6.4.dev0}/attic/skip/file_contents_as_string.cpp +0 -0
  59. {libigl-2.6.3.dev4 → libigl-2.6.4.dev0}/attic/skip/fit_rotations.cpp +0 -0
  60. {libigl-2.6.3.dev4 → libigl-2.6.4.dev0}/attic/skip/frame_field_deformer.cpp +0 -0
  61. {libigl-2.6.3.dev4 → libigl-2.6.4.dev0}/attic/skip/frame_to_cross_field.cpp +0 -0
  62. {libigl-2.6.3.dev4 → libigl-2.6.4.dev0}/attic/skip/frustum.cpp +0 -0
  63. {libigl-2.6.3.dev4 → libigl-2.6.4.dev0}/attic/skip/group_sum_matrix.cpp +0 -0
  64. {libigl-2.6.3.dev4 → libigl-2.6.4.dev0}/attic/skip/harwell_boeing.cpp +0 -0
  65. {libigl-2.6.3.dev4 → libigl-2.6.4.dev0}/attic/skip/histc.cpp +0 -0
  66. {libigl-2.6.3.dev4 → libigl-2.6.4.dev0}/attic/skip/hsv_to_rgb.cpp +0 -0
  67. {libigl-2.6.3.dev4 → libigl-2.6.4.dev0}/attic/skip/infinite_cost_stopping_condition.cpp +0 -0
  68. {libigl-2.6.3.dev4 → libigl-2.6.4.dev0}/attic/skip/intersect.cpp +0 -0
  69. {libigl-2.6.3.dev4 → libigl-2.6.4.dev0}/attic/skip/invert_diag.cpp +0 -0
  70. {libigl-2.6.3.dev4 → libigl-2.6.4.dev0}/attic/skip/is_planar.cpp +0 -0
  71. {libigl-2.6.3.dev4 → libigl-2.6.4.dev0}/attic/skip/limit_faces.cpp +0 -0
  72. {libigl-2.6.3.dev4 → libigl-2.6.4.dev0}/attic/skip/line_field_missmatch.cpp +0 -0
  73. {libigl-2.6.3.dev4 → libigl-2.6.4.dev0}/attic/skip/line_search.cpp +0 -0
  74. {libigl-2.6.3.dev4 → libigl-2.6.4.dev0}/attic/skip/mat_to_quat.cpp +0 -0
  75. {libigl-2.6.3.dev4 → libigl-2.6.4.dev0}/attic/skip/material_colors.cpp +0 -0
  76. {libigl-2.6.3.dev4 → libigl-2.6.4.dev0}/attic/skip/max_faces_stopping_condition.cpp +0 -0
  77. {libigl-2.6.3.dev4 → libigl-2.6.4.dev0}/attic/skip/min_quad_dense.cpp +0 -0
  78. {libigl-2.6.3.dev4 → libigl-2.6.4.dev0}/attic/skip/normalize_quat.cpp +0 -0
  79. {libigl-2.6.3.dev4 → libigl-2.6.4.dev0}/attic/skip/on_boundary.cpp +0 -0
  80. {libigl-2.6.3.dev4 → libigl-2.6.4.dev0}/attic/skip/opengl2_draw_beach_ball.cpp +0 -0
  81. {libigl-2.6.3.dev4 → libigl-2.6.4.dev0}/attic/skip/opengl2_draw_floor.cpp +0 -0
  82. {libigl-2.6.3.dev4 → libigl-2.6.4.dev0}/attic/skip/opengl2_draw_mesh.cpp +0 -0
  83. {libigl-2.6.3.dev4 → libigl-2.6.4.dev0}/attic/skip/opengl2_draw_point.cpp +0 -0
  84. {libigl-2.6.3.dev4 → libigl-2.6.4.dev0}/attic/skip/opengl2_draw_rectangular_marquee.cpp +0 -0
  85. {libigl-2.6.3.dev4 → libigl-2.6.4.dev0}/attic/skip/opengl2_draw_skeleton_3d.cpp +0 -0
  86. {libigl-2.6.3.dev4 → libigl-2.6.4.dev0}/attic/skip/opengl2_draw_skeleton_vector_graphics.cpp +0 -0
  87. {libigl-2.6.3.dev4 → libigl-2.6.4.dev0}/attic/skip/opengl2_flare_textures.cpp +0 -0
  88. {libigl-2.6.3.dev4 → libigl-2.6.4.dev0}/attic/skip/opengl2_model_proj_viewport.cpp +0 -0
  89. {libigl-2.6.3.dev4 → libigl-2.6.4.dev0}/attic/skip/opengl2_print_gl_get.cpp +0 -0
  90. {libigl-2.6.3.dev4 → libigl-2.6.4.dev0}/attic/skip/opengl2_project.cpp +0 -0
  91. {libigl-2.6.3.dev4 → libigl-2.6.4.dev0}/attic/skip/opengl2_right_axis.cpp +0 -0
  92. {libigl-2.6.3.dev4 → libigl-2.6.4.dev0}/attic/skip/opengl2_shine_textures.cpp +0 -0
  93. {libigl-2.6.3.dev4 → libigl-2.6.4.dev0}/attic/skip/opengl2_sort_triangles.cpp +0 -0
  94. {libigl-2.6.3.dev4 → libigl-2.6.4.dev0}/attic/skip/opengl2_unproject.cpp +0 -0
  95. {libigl-2.6.3.dev4 → libigl-2.6.4.dev0}/attic/skip/opengl2_unproject_to_zero_plane.cpp +0 -0
  96. {libigl-2.6.3.dev4 → libigl-2.6.4.dev0}/attic/skip/opengl2_up_axis.cpp +0 -0
  97. {libigl-2.6.3.dev4 → libigl-2.6.4.dev0}/attic/skip/opengl2_view_axis.cpp +0 -0
  98. {libigl-2.6.3.dev4 → libigl-2.6.4.dev0}/attic/skip/opengl_create_shader_program.cpp +0 -0
  99. {libigl-2.6.3.dev4 → libigl-2.6.4.dev0}/attic/skip/opengl_destroy_shader_program.cpp +0 -0
  100. {libigl-2.6.3.dev4 → libigl-2.6.4.dev0}/attic/skip/opengl_gl_type_size.cpp +0 -0
  101. {libigl-2.6.3.dev4 → libigl-2.6.4.dev0}/attic/skip/opengl_glfw_background_window.cpp +0 -0
  102. {libigl-2.6.3.dev4 → libigl-2.6.4.dev0}/attic/skip/opengl_glfw_imgui_ImGuiHelpers.cpp +0 -0
  103. {libigl-2.6.3.dev4 → libigl-2.6.4.dev0}/attic/skip/opengl_init_render_to_texture.cpp +0 -0
  104. {libigl-2.6.3.dev4 → libigl-2.6.4.dev0}/attic/skip/opengl_load_shader.cpp +0 -0
  105. {libigl-2.6.3.dev4 → libigl-2.6.4.dev0}/attic/skip/opengl_print_program_info_log.cpp +0 -0
  106. {libigl-2.6.3.dev4 → libigl-2.6.4.dev0}/attic/skip/opengl_print_shader_info_log.cpp +0 -0
  107. {libigl-2.6.3.dev4 → libigl-2.6.4.dev0}/attic/skip/opengl_report_gl_error.cpp +0 -0
  108. {libigl-2.6.3.dev4 → libigl-2.6.4.dev0}/attic/skip/opengl_uniform_type_to_string.cpp +0 -0
  109. {libigl-2.6.3.dev4 → libigl-2.6.4.dev0}/attic/skip/ortho.cpp +0 -0
  110. {libigl-2.6.3.dev4 → libigl-2.6.4.dev0}/attic/skip/parallel_transport_angles.cpp +0 -0
  111. {libigl-2.6.3.dev4 → libigl-2.6.4.dev0}/attic/skip/polar_svd.cpp +0 -0
  112. {libigl-2.6.3.dev4 → libigl-2.6.4.dev0}/attic/skip/polar_svd3x3.cpp +0 -0
  113. {libigl-2.6.3.dev4 → libigl-2.6.4.dev0}/attic/skip/qslim_optimal_collapse_edge_callbacks.cpp +0 -0
  114. {libigl-2.6.3.dev4 → libigl-2.6.4.dev0}/attic/skip/quadric_binary_plus_operator.cpp +0 -0
  115. {libigl-2.6.3.dev4 → libigl-2.6.4.dev0}/attic/skip/quat_conjugate.cpp +0 -0
  116. {libigl-2.6.3.dev4 → libigl-2.6.4.dev0}/attic/skip/quat_mult.cpp +0 -0
  117. {libigl-2.6.3.dev4 → libigl-2.6.4.dev0}/attic/skip/quat_to_axis_angle.cpp +0 -0
  118. {libigl-2.6.3.dev4 → libigl-2.6.4.dev0}/attic/skip/quat_to_mat.cpp +0 -0
  119. {libigl-2.6.3.dev4 → libigl-2.6.4.dev0}/attic/skip/quats_to_column.cpp +0 -0
  120. {libigl-2.6.3.dev4 → libigl-2.6.4.dev0}/attic/skip/random_quaternion.cpp +0 -0
  121. {libigl-2.6.3.dev4 → libigl-2.6.4.dev0}/attic/skip/readBF.cpp +0 -0
  122. {libigl-2.6.3.dev4 → libigl-2.6.4.dev0}/attic/skip/readNODE.cpp +0 -0
  123. {libigl-2.6.3.dev4 → libigl-2.6.4.dev0}/attic/skip/readPLY.cpp +0 -0
  124. {libigl-2.6.3.dev4 → libigl-2.6.4.dev0}/attic/skip/readSTL.cpp +0 -0
  125. {libigl-2.6.3.dev4 → libigl-2.6.4.dev0}/attic/skip/rgb_to_hsv.cpp +0 -0
  126. {libigl-2.6.3.dev4 → libigl-2.6.4.dev0}/attic/skip/rotate_by_quat.cpp +0 -0
  127. {libigl-2.6.3.dev4 → libigl-2.6.4.dev0}/attic/skip/rotation_matrix_from_directions.cpp +0 -0
  128. {libigl-2.6.3.dev4 → libigl-2.6.4.dev0}/attic/skip/snap_to_canonical_view_quat.cpp +0 -0
  129. {libigl-2.6.3.dev4 → libigl-2.6.4.dev0}/attic/skip/snap_to_fixed_up.cpp +0 -0
  130. {libigl-2.6.3.dev4 → libigl-2.6.4.dev0}/attic/skip/sort_angles.cpp +0 -0
  131. {libigl-2.6.3.dev4 → libigl-2.6.4.dev0}/attic/skip/sort_triangles.cpp +0 -0
  132. {libigl-2.6.3.dev4 → libigl-2.6.4.dev0}/attic/skip/sort_vectors_ccw.cpp +0 -0
  133. {libigl-2.6.3.dev4 → libigl-2.6.4.dev0}/attic/skip/svd3x3.cpp +0 -0
  134. {libigl-2.6.3.dev4 → libigl-2.6.4.dev0}/attic/skip/svd3x3_avx.cpp +0 -0
  135. {libigl-2.6.3.dev4 → libigl-2.6.4.dev0}/attic/skip/svd3x3_sse.cpp +0 -0
  136. {libigl-2.6.3.dev4 → libigl-2.6.4.dev0}/attic/skip/trackball.cpp +0 -0
  137. {libigl-2.6.3.dev4 → libigl-2.6.4.dev0}/attic/skip/transpose_blocks.cpp +0 -0
  138. {libigl-2.6.3.dev4 → libigl-2.6.4.dev0}/attic/skip/unique_rows.cpp +0 -0
  139. {libigl-2.6.3.dev4 → libigl-2.6.4.dev0}/attic/skip/voxel_grid.cpp +0 -0
  140. {libigl-2.6.3.dev4 → libigl-2.6.4.dev0}/attic/skip/writePLY.cpp +0 -0
  141. {libigl-2.6.3.dev4 → libigl-2.6.4.dev0}/attic/skip/writeSTL.cpp +0 -0
  142. {libigl-2.6.3.dev4 → libigl-2.6.4.dev0}/attic/skip/writeWRL.cpp +0 -0
  143. {libigl-2.6.3.dev4 → libigl-2.6.4.dev0}/attic/todo-old/MeshBooleanType.cpp +0 -0
  144. {libigl-2.6.3.dev4 → libigl-2.6.4.dev0}/attic/todo-old/NormalType.cpp +0 -0
  145. {libigl-2.6.3.dev4 → libigl-2.6.4.dev0}/attic/todo-old/collapse_edge.cpp +0 -0
  146. {libigl-2.6.3.dev4 → libigl-2.6.4.dev0}/attic/todo-old/copyleft/copyleft_cgal_assign.cpp +0 -0
  147. {libigl-2.6.3.dev4 → libigl-2.6.4.dev0}/attic/todo-old/copyleft/copyleft_cgal_assign_scalar.cpp +0 -0
  148. {libigl-2.6.3.dev4 → libigl-2.6.4.dev0}/attic/todo-old/copyleft/copyleft_cgal_cell_adjacency.cpp +0 -0
  149. {libigl-2.6.3.dev4 → libigl-2.6.4.dev0}/attic/todo-old/copyleft/copyleft_cgal_closest_facet.cpp +0 -0
  150. {libigl-2.6.3.dev4 → libigl-2.6.4.dev0}/attic/todo-old/copyleft/copyleft_cgal_complex_to_mesh.cpp +0 -0
  151. {libigl-2.6.3.dev4 → libigl-2.6.4.dev0}/attic/todo-old/copyleft/copyleft_cgal_component_inside_component.cpp +0 -0
  152. {libigl-2.6.3.dev4 → libigl-2.6.4.dev0}/attic/todo-old/copyleft/copyleft_cgal_convex_hull.cpp +0 -0
  153. {libigl-2.6.3.dev4 → libigl-2.6.4.dev0}/attic/todo-old/copyleft/copyleft_cgal_delaunay_triangulation.cpp +0 -0
  154. {libigl-2.6.3.dev4 → libigl-2.6.4.dev0}/attic/todo-old/copyleft/copyleft_cgal_extract_cells.cpp +0 -0
  155. {libigl-2.6.3.dev4 → libigl-2.6.4.dev0}/attic/todo-old/copyleft/copyleft_cgal_extract_feature.cpp +0 -0
  156. {libigl-2.6.3.dev4 → libigl-2.6.4.dev0}/attic/todo-old/copyleft/copyleft_cgal_fast_winding_number.cpp +0 -0
  157. {libigl-2.6.3.dev4 → libigl-2.6.4.dev0}/attic/todo-old/copyleft/copyleft_cgal_half_space_box.cpp +0 -0
  158. {libigl-2.6.3.dev4 → libigl-2.6.4.dev0}/attic/todo-old/copyleft/copyleft_cgal_hausdorff.cpp +0 -0
  159. {libigl-2.6.3.dev4 → libigl-2.6.4.dev0}/attic/todo-old/copyleft/copyleft_cgal_incircle.cpp +0 -0
  160. {libigl-2.6.3.dev4 → libigl-2.6.4.dev0}/attic/todo-old/copyleft/copyleft_cgal_insert_into_cdt.cpp +0 -0
  161. {libigl-2.6.3.dev4 → libigl-2.6.4.dev0}/attic/todo-old/copyleft/copyleft_cgal_insphere.cpp +0 -0
  162. {libigl-2.6.3.dev4 → libigl-2.6.4.dev0}/attic/todo-old/copyleft/copyleft_cgal_intersect_other.cpp +0 -0
  163. {libigl-2.6.3.dev4 → libigl-2.6.4.dev0}/attic/todo-old/copyleft/copyleft_cgal_intersect_with_half_space.cpp +0 -0
  164. {libigl-2.6.3.dev4 → libigl-2.6.4.dev0}/attic/todo-old/copyleft/copyleft_cgal_lexicographic_triangulation.cpp +0 -0
  165. {libigl-2.6.3.dev4 → libigl-2.6.4.dev0}/attic/todo-old/copyleft/copyleft_cgal_mesh_boolean.cpp +0 -0
  166. {libigl-2.6.3.dev4 → libigl-2.6.4.dev0}/attic/todo-old/copyleft/copyleft_cgal_mesh_boolean_type_to_funcs.cpp +0 -0
  167. {libigl-2.6.3.dev4 → libigl-2.6.4.dev0}/attic/todo-old/copyleft/copyleft_cgal_mesh_to_cgal_triangle_list.cpp +0 -0
  168. {libigl-2.6.3.dev4 → libigl-2.6.4.dev0}/attic/todo-old/copyleft/copyleft_cgal_mesh_to_polyhedron.cpp +0 -0
  169. {libigl-2.6.3.dev4 → libigl-2.6.4.dev0}/attic/todo-old/copyleft/copyleft_cgal_minkowski_sum.cpp +0 -0
  170. {libigl-2.6.3.dev4 → libigl-2.6.4.dev0}/attic/todo-old/copyleft/copyleft_cgal_order_facets_around_edge.cpp +0 -0
  171. {libigl-2.6.3.dev4 → libigl-2.6.4.dev0}/attic/todo-old/copyleft/copyleft_cgal_order_facets_around_edges.cpp +0 -0
  172. {libigl-2.6.3.dev4 → libigl-2.6.4.dev0}/attic/todo-old/copyleft/copyleft_cgal_orient2D.cpp +0 -0
  173. {libigl-2.6.3.dev4 → libigl-2.6.4.dev0}/attic/todo-old/copyleft/copyleft_cgal_orient3D.cpp +0 -0
  174. {libigl-2.6.3.dev4 → libigl-2.6.4.dev0}/attic/todo-old/copyleft/copyleft_cgal_outer_element.cpp +0 -0
  175. {libigl-2.6.3.dev4 → libigl-2.6.4.dev0}/attic/todo-old/copyleft/copyleft_cgal_outer_facet.cpp +0 -0
  176. {libigl-2.6.3.dev4 → libigl-2.6.4.dev0}/attic/todo-old/copyleft/copyleft_cgal_outer_hull.cpp +0 -0
  177. {libigl-2.6.3.dev4 → libigl-2.6.4.dev0}/attic/todo-old/copyleft/copyleft_cgal_peel_outer_hull_layers.cpp +0 -0
  178. {libigl-2.6.3.dev4 → libigl-2.6.4.dev0}/attic/todo-old/copyleft/copyleft_cgal_peel_winding_number_layers.cpp +0 -0
  179. {libigl-2.6.3.dev4 → libigl-2.6.4.dev0}/attic/todo-old/copyleft/copyleft_cgal_piecewise_constant_winding_number.cpp +0 -0
  180. {libigl-2.6.3.dev4 → libigl-2.6.4.dev0}/attic/todo-old/copyleft/copyleft_cgal_point_areas.cpp +0 -0
  181. {libigl-2.6.3.dev4 → libigl-2.6.4.dev0}/attic/todo-old/copyleft/copyleft_cgal_point_mesh_squared_distance.cpp +0 -0
  182. {libigl-2.6.3.dev4 → libigl-2.6.4.dev0}/attic/todo-old/copyleft/copyleft_cgal_point_segment_squared_distance.cpp +0 -0
  183. {libigl-2.6.3.dev4 → libigl-2.6.4.dev0}/attic/todo-old/copyleft/copyleft_cgal_point_solid_signed_squared_distance.cpp +0 -0
  184. {libigl-2.6.3.dev4 → libigl-2.6.4.dev0}/attic/todo-old/copyleft/copyleft_cgal_point_triangle_squared_distance.cpp +0 -0
  185. {libigl-2.6.3.dev4 → libigl-2.6.4.dev0}/attic/todo-old/copyleft/copyleft_cgal_points_inside_component.cpp +0 -0
  186. {libigl-2.6.3.dev4 → libigl-2.6.4.dev0}/attic/todo-old/copyleft/copyleft_cgal_polyhedron_to_mesh.cpp +0 -0
  187. {libigl-2.6.3.dev4 → libigl-2.6.4.dev0}/attic/todo-old/copyleft/copyleft_cgal_projected_cdt.cpp +0 -0
  188. {libigl-2.6.3.dev4 → libigl-2.6.4.dev0}/attic/todo-old/copyleft/copyleft_cgal_projected_delaunay.cpp +0 -0
  189. {libigl-2.6.3.dev4 → libigl-2.6.4.dev0}/attic/todo-old/copyleft/copyleft_cgal_propagate_winding_numbers.cpp +0 -0
  190. {libigl-2.6.3.dev4 → libigl-2.6.4.dev0}/attic/todo-old/copyleft/copyleft_cgal_read_triangle_mesh.cpp +0 -0
  191. {libigl-2.6.3.dev4 → libigl-2.6.4.dev0}/attic/todo-old/copyleft/copyleft_cgal_relabel_small_immersed_cells.cpp +0 -0
  192. {libigl-2.6.3.dev4 → libigl-2.6.4.dev0}/attic/todo-old/copyleft/copyleft_cgal_remesh_intersections.cpp +0 -0
  193. {libigl-2.6.3.dev4 → libigl-2.6.4.dev0}/attic/todo-old/copyleft/copyleft_cgal_remesh_self_intersections.cpp +0 -0
  194. {libigl-2.6.3.dev4 → libigl-2.6.4.dev0}/attic/todo-old/copyleft/copyleft_cgal_resolve_intersections.cpp +0 -0
  195. {libigl-2.6.3.dev4 → libigl-2.6.4.dev0}/attic/todo-old/copyleft/copyleft_cgal_row_to_point.cpp +0 -0
  196. {libigl-2.6.3.dev4 → libigl-2.6.4.dev0}/attic/todo-old/copyleft/copyleft_cgal_segment_segment_squared_distance.cpp +0 -0
  197. {libigl-2.6.3.dev4 → libigl-2.6.4.dev0}/attic/todo-old/copyleft/copyleft_cgal_signed_distance_isosurface.cpp +0 -0
  198. {libigl-2.6.3.dev4 → libigl-2.6.4.dev0}/attic/todo-old/copyleft/copyleft_cgal_snap_rounding.cpp +0 -0
  199. {libigl-2.6.3.dev4 → libigl-2.6.4.dev0}/attic/todo-old/copyleft/copyleft_cgal_string_to_mesh_boolean_type.cpp +0 -0
  200. {libigl-2.6.3.dev4 → libigl-2.6.4.dev0}/attic/todo-old/copyleft/copyleft_cgal_subdivide_segments.cpp +0 -0
  201. {libigl-2.6.3.dev4 → libigl-2.6.4.dev0}/attic/todo-old/copyleft/copyleft_cgal_submesh_aabb_tree.cpp +0 -0
  202. {libigl-2.6.3.dev4 → libigl-2.6.4.dev0}/attic/todo-old/copyleft/copyleft_cgal_triangle_triangle_squared_distance.cpp +0 -0
  203. {libigl-2.6.3.dev4 → libigl-2.6.4.dev0}/attic/todo-old/copyleft/copyleft_cgal_trim_with_solid.cpp +0 -0
  204. {libigl-2.6.3.dev4 → libigl-2.6.4.dev0}/attic/todo-old/copyleft/copyleft_cgal_wire_mesh.cpp +0 -0
  205. {libigl-2.6.3.dev4 → libigl-2.6.4.dev0}/attic/todo-old/copyleft/copyleft_comiso_miq.cpp +0 -0
  206. {libigl-2.6.3.dev4 → libigl-2.6.4.dev0}/attic/todo-old/copyleft/copyleft_cork_mesh_boolean.cpp +0 -0
  207. {libigl-2.6.3.dev4 → libigl-2.6.4.dev0}/attic/todo-old/copyleft/copyleft_marching_cubes.cpp +0 -0
  208. {libigl-2.6.3.dev4 → libigl-2.6.4.dev0}/attic/todo-old/copyleft/copyleft_offset_surface.cpp +0 -0
  209. {libigl-2.6.3.dev4 → libigl-2.6.4.dev0}/attic/todo-old/copyleft/copyleft_opengl2_render_to_tga.cpp +0 -0
  210. {libigl-2.6.3.dev4 → libigl-2.6.4.dev0}/attic/todo-old/copyleft/copyleft_opengl2_texture_from_tga.cpp +0 -0
  211. {libigl-2.6.3.dev4 → libigl-2.6.4.dev0}/attic/todo-old/copyleft/copyleft_progressive_hulls.cpp +0 -0
  212. {libigl-2.6.3.dev4 → libigl-2.6.4.dev0}/attic/todo-old/copyleft/copyleft_progressive_hulls_cost_and_placement.cpp +0 -0
  213. {libigl-2.6.3.dev4 → libigl-2.6.4.dev0}/attic/todo-old/copyleft/copyleft_quadprog.cpp +0 -0
  214. {libigl-2.6.3.dev4 → libigl-2.6.4.dev0}/attic/todo-old/copyleft/copyleft_swept_volume.cpp +0 -0
  215. {libigl-2.6.3.dev4 → libigl-2.6.4.dev0}/attic/todo-old/copyleft/copyleft_tetgen_mesh_with_skeleton.cpp +0 -0
  216. {libigl-2.6.3.dev4 → libigl-2.6.4.dev0}/attic/todo-old/copyleft/copyleft_tetgen_read_into_tetgenio.cpp +0 -0
  217. {libigl-2.6.3.dev4 → libigl-2.6.4.dev0}/attic/todo-old/copyleft/copyleft_tetgen_tetrahedralize.cpp +0 -0
  218. {libigl-2.6.3.dev4 → libigl-2.6.4.dev0}/attic/todo-old/dijkstra.cpp +0 -0
  219. {libigl-2.6.3.dev4 → libigl-2.6.4.dev0}/attic/todo-old/embree_bone_heat.cpp +0 -0
  220. {libigl-2.6.3.dev4 → libigl-2.6.4.dev0}/attic/todo-old/embree_reorient_facets_raycast.cpp +0 -0
  221. {libigl-2.6.3.dev4 → libigl-2.6.4.dev0}/attic/todo-old/fast_winding_number.cpp +0 -0
  222. {libigl-2.6.3.dev4 → libigl-2.6.4.dev0}/attic/todo-old/flip_edge.cpp +0 -0
  223. {libigl-2.6.3.dev4 → libigl-2.6.4.dev0}/attic/todo-old/knn.cpp +0 -0
  224. {libigl-2.6.3.dev4 → libigl-2.6.4.dev0}/attic/todo-old/mosek_mosek_guarded.cpp +0 -0
  225. {libigl-2.6.3.dev4 → libigl-2.6.4.dev0}/attic/todo-old/mosek_mosek_linprog.cpp +0 -0
  226. {libigl-2.6.3.dev4 → libigl-2.6.4.dev0}/attic/todo-old/octree.cpp +0 -0
  227. {libigl-2.6.3.dev4 → libigl-2.6.4.dev0}/attic/todo-old/per_vertex_point_to_plane_quadrics.cpp +0 -0
  228. {libigl-2.6.3.dev4 → libigl-2.6.4.dev0}/attic/todo-old/png_readPNG.cpp +0 -0
  229. {libigl-2.6.3.dev4 → libigl-2.6.4.dev0}/attic/todo-old/png_render_to_png.cpp +0 -0
  230. {libigl-2.6.3.dev4 → libigl-2.6.4.dev0}/attic/todo-old/png_render_to_png_async.cpp +0 -0
  231. {libigl-2.6.3.dev4 → libigl-2.6.4.dev0}/attic/todo-old/png_texture_from_file.cpp +0 -0
  232. {libigl-2.6.3.dev4 → libigl-2.6.4.dev0}/attic/todo-old/png_texture_from_png.cpp +0 -0
  233. {libigl-2.6.3.dev4 → libigl-2.6.4.dev0}/attic/todo-old/png_writePNG.cpp +0 -0
  234. {libigl-2.6.3.dev4 → libigl-2.6.4.dev0}/attic/todo-old/pseudonormal_test.cpp +0 -0
  235. {libigl-2.6.3.dev4 → libigl-2.6.4.dev0}/attic/todo-old/readWRL.cpp +0 -0
  236. {libigl-2.6.3.dev4 → libigl-2.6.4.dev0}/attic/todo-old/remesh_along_isoline.cpp +0 -0
  237. {libigl-2.6.3.dev4 → libigl-2.6.4.dev0}/attic/todo-old/seam_edges.cpp +0 -0
  238. {libigl-2.6.3.dev4 → libigl-2.6.4.dev0}/attic/todo-old/shortest_edge_and_midpoint.cpp +0 -0
  239. {libigl-2.6.3.dev4 → libigl-2.6.4.dev0}/attic/todo-old/squared_edge_lengths.cpp +0 -0
  240. {libigl-2.6.3.dev4 → libigl-2.6.4.dev0}/attic/todo-old/straighten_seams.cpp +0 -0
  241. {libigl-2.6.3.dev4 → libigl-2.6.4.dev0}/attic/todo-old/swept_volume_signed_distance.cpp +0 -0
  242. {libigl-2.6.3.dev4 → libigl-2.6.4.dev0}/attic/todo-old/triangle_cdt.cpp +0 -0
  243. {libigl-2.6.3.dev4 → libigl-2.6.4.dev0}/attic/todo-old/unzip_corners.cpp +0 -0
  244. {libigl-2.6.3.dev4 → libigl-2.6.4.dev0}/attic/todo-old/writeBF.cpp +0 -0
  245. {libigl-2.6.3.dev4 → libigl-2.6.4.dev0}/attic/todo-old/writeDMAT.cpp +0 -0
  246. {libigl-2.6.3.dev4 → libigl-2.6.4.dev0}/attic/todo-old/writeMESH.cpp +0 -0
  247. {libigl-2.6.3.dev4 → libigl-2.6.4.dev0}/attic/todo-old/writeTGF.cpp +0 -0
  248. {libigl-2.6.3.dev4 → libigl-2.6.4.dev0}/attic/todo-old/xml_writeDAE.cpp +0 -0
  249. {libigl-2.6.3.dev4 → libigl-2.6.4.dev0}/attic/todo-old/xml_write_triangle_mesh.cpp +0 -0
  250. {libigl-2.6.3.dev4 → libigl-2.6.4.dev0}/classes/AABB.cpp +0 -0
  251. {libigl-2.6.3.dev4 → libigl-2.6.4.dev0}/classes/classes.cpp +0 -0
  252. {libigl-2.6.3.dev4 → libigl-2.6.4.dev0}/cmake/CXXFeatures.cmake +0 -0
  253. {libigl-2.6.3.dev4 → libigl-2.6.4.dev0}/cmake/FindLIBIGL.cmake +0 -0
  254. {libigl-2.6.3.dev4 → libigl-2.6.4.dev0}/cmake/UseColors.cmake +0 -0
  255. {libigl-2.6.3.dev4 → libigl-2.6.4.dev0}/cmake/Warnings.cmake +0 -0
  256. {libigl-2.6.3.dev4 → libigl-2.6.4.dev0}/memory/MEMORY.md +0 -0
  257. {libigl-2.6.3.dev4 → libigl-2.6.4.dev0}/missing.sh +0 -0
  258. {libigl-2.6.3.dev4 → libigl-2.6.4.dev0}/mkdocs.yml +0 -0
  259. {libigl-2.6.3.dev4 → libigl-2.6.4.dev0}/postBuild +0 -0
  260. {libigl-2.6.3.dev4 → libigl-2.6.4.dev0}/priority.txt +0 -0
  261. {libigl-2.6.3.dev4 → libigl-2.6.4.dev0}/scripts/basic_function.mako +0 -0
  262. {libigl-2.6.3.dev4 → libigl-2.6.4.dev0}/scripts/blender_igl_export.py +0 -0
  263. {libigl-2.6.3.dev4 → libigl-2.6.4.dev0}/scripts/generate_bindings.py +0 -0
  264. {libigl-2.6.3.dev4 → libigl-2.6.4.dev0}/scripts/make_lean.py +0 -0
  265. {libigl-2.6.3.dev4 → libigl-2.6.4.dev0}/scripts/parser.py +0 -0
  266. {libigl-2.6.3.dev4 → libigl-2.6.4.dev0}/src/AABB.cpp +0 -0
  267. {libigl-2.6.3.dev4 → libigl-2.6.4.dev0}/src/FileEncoding.cpp +0 -0
  268. {libigl-2.6.3.dev4 → libigl-2.6.4.dev0}/src/MappingEnergyType.cpp +0 -0
  269. {libigl-2.6.3.dev4 → libigl-2.6.4.dev0}/src/MassMatrixType.cpp +0 -0
  270. {libigl-2.6.3.dev4 → libigl-2.6.4.dev0}/src/OrientedBoundingBoxMinimizeType.cpp +0 -0
  271. {libigl-2.6.3.dev4 → libigl-2.6.4.dev0}/src/accumarray.cpp +0 -0
  272. {libigl-2.6.3.dev4 → libigl-2.6.4.dev0}/src/adjacency_list.cpp +0 -0
  273. {libigl-2.6.3.dev4 → libigl-2.6.4.dev0}/src/adjacency_matrix.cpp +0 -0
  274. {libigl-2.6.3.dev4 → libigl-2.6.4.dev0}/src/all_pairs_distances.cpp +0 -0
  275. {libigl-2.6.3.dev4 → libigl-2.6.4.dev0}/src/arap.cpp +0 -0
  276. {libigl-2.6.3.dev4 → libigl-2.6.4.dev0}/src/average_from_edges_onto_vertices.cpp +0 -0
  277. {libigl-2.6.3.dev4 → libigl-2.6.4.dev0}/src/average_onto_faces.cpp +0 -0
  278. {libigl-2.6.3.dev4 → libigl-2.6.4.dev0}/src/average_onto_vertices.cpp +0 -0
  279. {libigl-2.6.3.dev4 → libigl-2.6.4.dev0}/src/avg_edge_length.cpp +0 -0
  280. {libigl-2.6.3.dev4 → libigl-2.6.4.dev0}/src/barycenter.cpp +0 -0
  281. {libigl-2.6.3.dev4 → libigl-2.6.4.dev0}/src/barycentric_coordinates.cpp +0 -0
  282. {libigl-2.6.3.dev4 → libigl-2.6.4.dev0}/src/barycentric_interpolation.cpp +0 -0
  283. {libigl-2.6.3.dev4 → libigl-2.6.4.dev0}/src/bbw.cpp +0 -0
  284. {libigl-2.6.3.dev4 → libigl-2.6.4.dev0}/src/bezier.cpp +0 -0
  285. {libigl-2.6.3.dev4 → libigl-2.6.4.dev0}/src/bfs_orient.cpp +0 -0
  286. {libigl-2.6.3.dev4 → libigl-2.6.4.dev0}/src/biharmonic_coordinates.cpp +0 -0
  287. {libigl-2.6.3.dev4 → libigl-2.6.4.dev0}/src/bijective_composite_harmonic_mapping.cpp +0 -0
  288. {libigl-2.6.3.dev4 → libigl-2.6.4.dev0}/src/blue_noise.cpp +0 -0
  289. {libigl-2.6.3.dev4 → libigl-2.6.4.dev0}/src/boundary_facets.cpp +0 -0
  290. {libigl-2.6.3.dev4 → libigl-2.6.4.dev0}/src/bounding_box.cpp +0 -0
  291. {libigl-2.6.3.dev4 → libigl-2.6.4.dev0}/src/bounding_box_diagonal.cpp +0 -0
  292. {libigl-2.6.3.dev4 → libigl-2.6.4.dev0}/src/centroid.cpp +0 -0
  293. {libigl-2.6.3.dev4 → libigl-2.6.4.dev0}/src/circulation.cpp +0 -0
  294. {libigl-2.6.3.dev4 → libigl-2.6.4.dev0}/src/circumradius.cpp +0 -0
  295. {libigl-2.6.3.dev4 → libigl-2.6.4.dev0}/src/collapse_edge.cpp +0 -0
  296. {libigl-2.6.3.dev4 → libigl-2.6.4.dev0}/src/colormap.cpp +0 -0
  297. {libigl-2.6.3.dev4 → libigl-2.6.4.dev0}/src/comb_cross_field.cpp +0 -0
  298. {libigl-2.6.3.dev4 → libigl-2.6.4.dev0}/src/comb_frame_field.cpp +0 -0
  299. {libigl-2.6.3.dev4 → libigl-2.6.4.dev0}/src/combine.cpp +0 -0
  300. {libigl-2.6.3.dev4 → libigl-2.6.4.dev0}/src/compute_frame_field_bisectors.cpp +0 -0
  301. {libigl-2.6.3.dev4 → libigl-2.6.4.dev0}/src/connected_components.cpp +0 -0
  302. {libigl-2.6.3.dev4 → libigl-2.6.4.dev0}/src/copyleft/cgal/convex_hull.cpp +0 -0
  303. {libigl-2.6.3.dev4 → libigl-2.6.4.dev0}/src/copyleft/cgal/coplanar.cpp +0 -0
  304. {libigl-2.6.3.dev4 → libigl-2.6.4.dev0}/src/copyleft/cgal/delaunay_triangulation.cpp +0 -0
  305. {libigl-2.6.3.dev4 → libigl-2.6.4.dev0}/src/copyleft/cgal/extract_cells.cpp +0 -0
  306. {libigl-2.6.3.dev4 → libigl-2.6.4.dev0}/src/copyleft/cgal/fast_winding_number.cpp +0 -0
  307. {libigl-2.6.3.dev4 → libigl-2.6.4.dev0}/src/copyleft/cgal/intersect_other.cpp +0 -0
  308. {libigl-2.6.3.dev4 → libigl-2.6.4.dev0}/src/copyleft/cgal/intersect_with_half_space.cpp +0 -0
  309. {libigl-2.6.3.dev4 → libigl-2.6.4.dev0}/src/copyleft/cgal/mesh_boolean.cpp +0 -0
  310. {libigl-2.6.3.dev4 → libigl-2.6.4.dev0}/src/copyleft/cgal/module.cpp +0 -0
  311. {libigl-2.6.3.dev4 → libigl-2.6.4.dev0}/src/copyleft/cgal/oriented_bounding_box.cpp +0 -0
  312. {libigl-2.6.3.dev4 → libigl-2.6.4.dev0}/src/copyleft/cgal/outer_hull.cpp +0 -0
  313. {libigl-2.6.3.dev4 → libigl-2.6.4.dev0}/src/copyleft/cgal/peel_outer_hull_layers.cpp +0 -0
  314. {libigl-2.6.3.dev4 → libigl-2.6.4.dev0}/src/copyleft/cgal/peel_winding_number_layers.cpp +0 -0
  315. {libigl-2.6.3.dev4 → libigl-2.6.4.dev0}/src/copyleft/cgal/point_areas.cpp +0 -0
  316. {libigl-2.6.3.dev4 → libigl-2.6.4.dev0}/src/copyleft/cgal/remesh_self_intersections.cpp +0 -0
  317. {libigl-2.6.3.dev4 → libigl-2.6.4.dev0}/src/copyleft/cgal/trim_with_solid.cpp +0 -0
  318. {libigl-2.6.3.dev4 → libigl-2.6.4.dev0}/src/copyleft/marching_cubes.cpp +0 -0
  319. {libigl-2.6.3.dev4 → libigl-2.6.4.dev0}/src/copyleft/module.cpp +0 -0
  320. {libigl-2.6.3.dev4 → libigl-2.6.4.dev0}/src/copyleft/progressive_hulls.cpp +0 -0
  321. {libigl-2.6.3.dev4 → libigl-2.6.4.dev0}/src/copyleft/quadprog.cpp +0 -0
  322. {libigl-2.6.3.dev4 → libigl-2.6.4.dev0}/src/copyleft/tetgen/cdt.cpp +0 -0
  323. {libigl-2.6.3.dev4 → libigl-2.6.4.dev0}/src/copyleft/tetgen/mesh_with_skeleton.cpp +0 -0
  324. {libigl-2.6.3.dev4 → libigl-2.6.4.dev0}/src/copyleft/tetgen/module.cpp +0 -0
  325. {libigl-2.6.3.dev4 → libigl-2.6.4.dev0}/src/copyleft/tetgen/tetrahedralize.cpp +0 -0
  326. {libigl-2.6.3.dev4 → libigl-2.6.4.dev0}/src/cotmatrix.cpp +0 -0
  327. {libigl-2.6.3.dev4 → libigl-2.6.4.dev0}/src/cotmatrix_entries.cpp +0 -0
  328. {libigl-2.6.3.dev4 → libigl-2.6.4.dev0}/src/cotmatrix_intrinsic.cpp +0 -0
  329. {libigl-2.6.3.dev4 → libigl-2.6.4.dev0}/src/cross_field_mismatch.cpp +0 -0
  330. {libigl-2.6.3.dev4 → libigl-2.6.4.dev0}/src/crouzeix_raviart_cotmatrix.cpp +0 -0
  331. {libigl-2.6.3.dev4 → libigl-2.6.4.dev0}/src/crouzeix_raviart_massmatrix.cpp +0 -0
  332. {libigl-2.6.3.dev4 → libigl-2.6.4.dev0}/src/cubic.cpp +0 -0
  333. {libigl-2.6.3.dev4 → libigl-2.6.4.dev0}/src/cubic_is_flat.cpp +0 -0
  334. {libigl-2.6.3.dev4 → libigl-2.6.4.dev0}/src/cubic_monomial_bases.cpp +0 -0
  335. {libigl-2.6.3.dev4 → libigl-2.6.4.dev0}/src/cubic_split.cpp +0 -0
  336. {libigl-2.6.3.dev4 → libigl-2.6.4.dev0}/src/curved_hessian_energy.cpp +0 -0
  337. {libigl-2.6.3.dev4 → libigl-2.6.4.dev0}/src/cut_mesh.cpp +0 -0
  338. {libigl-2.6.3.dev4 → libigl-2.6.4.dev0}/src/cut_mesh_from_singularities.cpp +0 -0
  339. {libigl-2.6.3.dev4 → libigl-2.6.4.dev0}/src/cut_to_disk.cpp +0 -0
  340. {libigl-2.6.3.dev4 → libigl-2.6.4.dev0}/src/cycodebase/box_cubic.cpp +0 -0
  341. {libigl-2.6.3.dev4 → libigl-2.6.4.dev0}/src/cycodebase/module.cpp +0 -0
  342. {libigl-2.6.3.dev4 → libigl-2.6.4.dev0}/src/cycodebase/roots.cpp +0 -0
  343. {libigl-2.6.3.dev4 → libigl-2.6.4.dev0}/src/cycodebase/spline_eytzinger_aabb.cpp +0 -0
  344. {libigl-2.6.3.dev4 → libigl-2.6.4.dev0}/src/cylinder.cpp +0 -0
  345. {libigl-2.6.3.dev4 → libigl-2.6.4.dev0}/src/decimate.cpp +0 -0
  346. {libigl-2.6.3.dev4 → libigl-2.6.4.dev0}/src/dihedral_angles.cpp +0 -0
  347. {libigl-2.6.3.dev4 → libigl-2.6.4.dev0}/src/dihedral_angles_intrinsic.cpp +0 -0
  348. {libigl-2.6.3.dev4 → libigl-2.6.4.dev0}/src/dijkstra.cpp +0 -0
  349. {libigl-2.6.3.dev4 → libigl-2.6.4.dev0}/src/directed_edge_parents.cpp +0 -0
  350. {libigl-2.6.3.dev4 → libigl-2.6.4.dev0}/src/doublearea.cpp +0 -0
  351. {libigl-2.6.3.dev4 → libigl-2.6.4.dev0}/src/dual_contouring.cpp +0 -0
  352. {libigl-2.6.3.dev4 → libigl-2.6.4.dev0}/src/ears.cpp +0 -0
  353. {libigl-2.6.3.dev4 → libigl-2.6.4.dev0}/src/edge_flaps.cpp +0 -0
  354. {libigl-2.6.3.dev4 → libigl-2.6.4.dev0}/src/edge_lengths.cpp +0 -0
  355. {libigl-2.6.3.dev4 → libigl-2.6.4.dev0}/src/edge_topology.cpp +0 -0
  356. {libigl-2.6.3.dev4 → libigl-2.6.4.dev0}/src/edges.cpp +0 -0
  357. {libigl-2.6.3.dev4 → libigl-2.6.4.dev0}/src/edges_to_path.cpp +0 -0
  358. {libigl-2.6.3.dev4 → libigl-2.6.4.dev0}/src/embree/EmbreeIntersector.cpp +0 -0
  359. {libigl-2.6.3.dev4 → libigl-2.6.4.dev0}/src/embree/ambient_occlusion.cpp +0 -0
  360. {libigl-2.6.3.dev4 → libigl-2.6.4.dev0}/src/embree/bone_visible.cpp +0 -0
  361. {libigl-2.6.3.dev4 → libigl-2.6.4.dev0}/src/embree/line_mesh_intersection.cpp +0 -0
  362. {libigl-2.6.3.dev4 → libigl-2.6.4.dev0}/src/embree/module.cpp +0 -0
  363. {libigl-2.6.3.dev4 → libigl-2.6.4.dev0}/src/embree/reorient_facets_raycast.cpp +0 -0
  364. {libigl-2.6.3.dev4 → libigl-2.6.4.dev0}/src/embree/shape_diameter_function.cpp +0 -0
  365. {libigl-2.6.3.dev4 → libigl-2.6.4.dev0}/src/euler_characteristic.cpp +0 -0
  366. {libigl-2.6.3.dev4 → libigl-2.6.4.dev0}/src/exact_geodesic.cpp +0 -0
  367. {libigl-2.6.3.dev4 → libigl-2.6.4.dev0}/src/exterior_edges.cpp +0 -0
  368. {libigl-2.6.3.dev4 → libigl-2.6.4.dev0}/src/extract_manifold_patches.cpp +0 -0
  369. {libigl-2.6.3.dev4 → libigl-2.6.4.dev0}/src/face_occurrences.cpp +0 -0
  370. {libigl-2.6.3.dev4 → libigl-2.6.4.dev0}/src/facet_adjacency_matrix.cpp +0 -0
  371. {libigl-2.6.3.dev4 → libigl-2.6.4.dev0}/src/facet_components.cpp +0 -0
  372. {libigl-2.6.3.dev4 → libigl-2.6.4.dev0}/src/false_barycentric_subdivision.cpp +0 -0
  373. {libigl-2.6.3.dev4 → libigl-2.6.4.dev0}/src/find_cross_field_singularities.cpp +0 -0
  374. {libigl-2.6.3.dev4 → libigl-2.6.4.dev0}/src/fit_cubic_bezier.cpp +0 -0
  375. {libigl-2.6.3.dev4 → libigl-2.6.4.dev0}/src/fit_plane.cpp +0 -0
  376. {libigl-2.6.3.dev4 → libigl-2.6.4.dev0}/src/flipped_triangles.cpp +0 -0
  377. {libigl-2.6.3.dev4 → libigl-2.6.4.dev0}/src/flood_fill.cpp +0 -0
  378. {libigl-2.6.3.dev4 → libigl-2.6.4.dev0}/src/gaussian_curvature.cpp +0 -0
  379. {libigl-2.6.3.dev4 → libigl-2.6.4.dev0}/src/grad.cpp +0 -0
  380. {libigl-2.6.3.dev4 → libigl-2.6.4.dev0}/src/grid.cpp +0 -0
  381. {libigl-2.6.3.dev4 → libigl-2.6.4.dev0}/src/harmonic.cpp +0 -0
  382. {libigl-2.6.3.dev4 → libigl-2.6.4.dev0}/src/hausdorff.cpp +0 -0
  383. {libigl-2.6.3.dev4 → libigl-2.6.4.dev0}/src/heat_geodesics.cpp +0 -0
  384. {libigl-2.6.3.dev4 → libigl-2.6.4.dev0}/src/hessian.cpp +0 -0
  385. {libigl-2.6.3.dev4 → libigl-2.6.4.dev0}/src/hessian_energy.cpp +0 -0
  386. {libigl-2.6.3.dev4 → libigl-2.6.4.dev0}/src/hsv_to_rgb.cpp +0 -0
  387. {libigl-2.6.3.dev4 → libigl-2.6.4.dev0}/src/icosahedron.cpp +0 -0
  388. {libigl-2.6.3.dev4 → libigl-2.6.4.dev0}/src/in_element.cpp +0 -0
  389. {libigl-2.6.3.dev4 → libigl-2.6.4.dev0}/src/inradius.cpp +0 -0
  390. {libigl-2.6.3.dev4 → libigl-2.6.4.dev0}/src/internal_angles.cpp +0 -0
  391. {libigl-2.6.3.dev4 → libigl-2.6.4.dev0}/src/intrinsic_delaunay_cotmatrix.cpp +0 -0
  392. {libigl-2.6.3.dev4 → libigl-2.6.4.dev0}/src/intrinsic_delaunay_triangulation.cpp +0 -0
  393. {libigl-2.6.3.dev4 → libigl-2.6.4.dev0}/src/is_border_vertex.cpp +0 -0
  394. {libigl-2.6.3.dev4 → libigl-2.6.4.dev0}/src/is_boundary_edge.cpp +0 -0
  395. {libigl-2.6.3.dev4 → libigl-2.6.4.dev0}/src/is_delaunay.cpp +0 -0
  396. {libigl-2.6.3.dev4 → libigl-2.6.4.dev0}/src/is_edge_manifold.cpp +0 -0
  397. {libigl-2.6.3.dev4 → libigl-2.6.4.dev0}/src/is_intrinsic_delaunay.cpp +0 -0
  398. {libigl-2.6.3.dev4 → libigl-2.6.4.dev0}/src/is_irregular_vertex.cpp +0 -0
  399. {libigl-2.6.3.dev4 → libigl-2.6.4.dev0}/src/is_vertex_manifold.cpp +0 -0
  400. {libigl-2.6.3.dev4 → libigl-2.6.4.dev0}/src/ismember_rows.cpp +0 -0
  401. {libigl-2.6.3.dev4 → libigl-2.6.4.dev0}/src/isolines.cpp +0 -0
  402. {libigl-2.6.3.dev4 → libigl-2.6.4.dev0}/src/isolines_intrinsic.cpp +0 -0
  403. {libigl-2.6.3.dev4 → libigl-2.6.4.dev0}/src/iterative_closest_point.cpp +0 -0
  404. {libigl-2.6.3.dev4 → libigl-2.6.4.dev0}/src/kelvinlets.cpp +0 -0
  405. {libigl-2.6.3.dev4 → libigl-2.6.4.dev0}/src/knn.cpp +0 -0
  406. {libigl-2.6.3.dev4 → libigl-2.6.4.dev0}/src/lbs_matrix.cpp +0 -0
  407. {libigl-2.6.3.dev4 → libigl-2.6.4.dev0}/src/lexicographic_triangulation.cpp +0 -0
  408. {libigl-2.6.3.dev4 → libigl-2.6.4.dev0}/src/lipschitz_octree.cpp +0 -0
  409. {libigl-2.6.3.dev4 → libigl-2.6.4.dev0}/src/local_basis.cpp +0 -0
  410. {libigl-2.6.3.dev4 → libigl-2.6.4.dev0}/src/look_at.cpp +0 -0
  411. {libigl-2.6.3.dev4 → libigl-2.6.4.dev0}/src/loop.cpp +0 -0
  412. {libigl-2.6.3.dev4 → libigl-2.6.4.dev0}/src/lscm.cpp +0 -0
  413. {libigl-2.6.3.dev4 → libigl-2.6.4.dev0}/src/map_vertices_to_circle.cpp +0 -0
  414. {libigl-2.6.3.dev4 → libigl-2.6.4.dev0}/src/massmatrix.cpp +0 -0
  415. {libigl-2.6.3.dev4 → libigl-2.6.4.dev0}/src/massmatrix_intrinsic.cpp +0 -0
  416. {libigl-2.6.3.dev4 → libigl-2.6.4.dev0}/src/matlab_format.cpp +0 -0
  417. {libigl-2.6.3.dev4 → libigl-2.6.4.dev0}/src/min_quad_with_fixed.cpp +0 -0
  418. {libigl-2.6.3.dev4 → libigl-2.6.4.dev0}/src/module.cpp +0 -0
  419. {libigl-2.6.3.dev4 → libigl-2.6.4.dev0}/src/moments.cpp +0 -0
  420. {libigl-2.6.3.dev4 → libigl-2.6.4.dev0}/src/mvc.cpp +0 -0
  421. {libigl-2.6.3.dev4 → libigl-2.6.4.dev0}/src/noop.cpp +0 -0
  422. {libigl-2.6.3.dev4 → libigl-2.6.4.dev0}/src/octree.cpp +0 -0
  423. {libigl-2.6.3.dev4 → libigl-2.6.4.dev0}/src/offset_surface.cpp +0 -0
  424. {libigl-2.6.3.dev4 → libigl-2.6.4.dev0}/src/on_boundary.cpp +0 -0
  425. {libigl-2.6.3.dev4 → libigl-2.6.4.dev0}/src/orient_halfedges.cpp +0 -0
  426. {libigl-2.6.3.dev4 → libigl-2.6.4.dev0}/src/orient_outward.cpp +0 -0
  427. {libigl-2.6.3.dev4 → libigl-2.6.4.dev0}/src/orientable_patches.cpp +0 -0
  428. {libigl-2.6.3.dev4 → libigl-2.6.4.dev0}/src/oriented_bounding_box.cpp +0 -0
  429. {libigl-2.6.3.dev4 → libigl-2.6.4.dev0}/src/oriented_facets.cpp +0 -0
  430. {libigl-2.6.3.dev4 → libigl-2.6.4.dev0}/src/per_corner_normals.cpp +0 -0
  431. {libigl-2.6.3.dev4 → libigl-2.6.4.dev0}/src/per_edge_normals.cpp +0 -0
  432. {libigl-2.6.3.dev4 → libigl-2.6.4.dev0}/src/per_vertex_attribute_smoothing.cpp +0 -0
  433. {libigl-2.6.3.dev4 → libigl-2.6.4.dev0}/src/per_vertex_normals.cpp +0 -0
  434. {libigl-2.6.3.dev4 → libigl-2.6.4.dev0}/src/point_mesh_squared_distance.cpp +0 -0
  435. {libigl-2.6.3.dev4 → libigl-2.6.4.dev0}/src/polar_dec.cpp +0 -0
  436. {libigl-2.6.3.dev4 → libigl-2.6.4.dev0}/src/polar_svd.cpp +0 -0
  437. {libigl-2.6.3.dev4 → libigl-2.6.4.dev0}/src/polygon_corners.cpp +0 -0
  438. {libigl-2.6.3.dev4 → libigl-2.6.4.dev0}/src/polygons_to_triangles.cpp +0 -0
  439. {libigl-2.6.3.dev4 → libigl-2.6.4.dev0}/src/predicates/Orientation.cpp +0 -0
  440. {libigl-2.6.3.dev4 → libigl-2.6.4.dev0}/src/predicates/cubic_winding_number.cpp +0 -0
  441. {libigl-2.6.3.dev4 → libigl-2.6.4.dev0}/src/predicates/delaunay_triangulation.cpp +0 -0
  442. {libigl-2.6.3.dev4 → libigl-2.6.4.dev0}/src/predicates/ear_clipping.cpp +0 -0
  443. {libigl-2.6.3.dev4 → libigl-2.6.4.dev0}/src/predicates/find_intersections.cpp +0 -0
  444. {libigl-2.6.3.dev4 → libigl-2.6.4.dev0}/src/predicates/find_self_intersections.cpp +0 -0
  445. {libigl-2.6.3.dev4 → libigl-2.6.4.dev0}/src/predicates/incircle.cpp +0 -0
  446. {libigl-2.6.3.dev4 → libigl-2.6.4.dev0}/src/predicates/insphere.cpp +0 -0
  447. {libigl-2.6.3.dev4 → libigl-2.6.4.dev0}/src/predicates/lexicographic_triangulation.cpp +0 -0
  448. {libigl-2.6.3.dev4 → libigl-2.6.4.dev0}/src/predicates/module.cpp +0 -0
  449. {libigl-2.6.3.dev4 → libigl-2.6.4.dev0}/src/predicates/orient2d.cpp +0 -0
  450. {libigl-2.6.3.dev4 → libigl-2.6.4.dev0}/src/predicates/orient3d.cpp +0 -0
  451. {libigl-2.6.3.dev4 → libigl-2.6.4.dev0}/src/predicates/point_in_convex_hull.cpp +0 -0
  452. {libigl-2.6.3.dev4 → libigl-2.6.4.dev0}/src/predicates/point_inside_convex_polygon.cpp +0 -0
  453. {libigl-2.6.3.dev4 → libigl-2.6.4.dev0}/src/predicates/polygons_to_triangles.cpp +0 -0
  454. {libigl-2.6.3.dev4 → libigl-2.6.4.dev0}/src/predicates/segment_segment_intersect.cpp +0 -0
  455. {libigl-2.6.3.dev4 → libigl-2.6.4.dev0}/src/predicates/spline_winding_number.cpp +0 -0
  456. {libigl-2.6.3.dev4 → libigl-2.6.4.dev0}/src/predicates/triangle_triangle_intersect.cpp +0 -0
  457. {libigl-2.6.3.dev4 → libigl-2.6.4.dev0}/src/principal_curvature.cpp +0 -0
  458. {libigl-2.6.3.dev4 → libigl-2.6.4.dev0}/src/procrustes.cpp +0 -0
  459. {libigl-2.6.3.dev4 → libigl-2.6.4.dev0}/src/project.cpp +0 -0
  460. {libigl-2.6.3.dev4 → libigl-2.6.4.dev0}/src/project_to_line.cpp +0 -0
  461. {libigl-2.6.3.dev4 → libigl-2.6.4.dev0}/src/project_to_line_segment.cpp +0 -0
  462. {libigl-2.6.3.dev4 → libigl-2.6.4.dev0}/src/pseudonormal_test.cpp +0 -0
  463. {libigl-2.6.3.dev4 → libigl-2.6.4.dev0}/src/qslim.cpp +0 -0
  464. {libigl-2.6.3.dev4 → libigl-2.6.4.dev0}/src/quad_grid.cpp +0 -0
  465. {libigl-2.6.3.dev4 → libigl-2.6.4.dev0}/src/random_dir.cpp +0 -0
  466. {libigl-2.6.3.dev4 → libigl-2.6.4.dev0}/src/random_points_on_mesh.cpp +0 -0
  467. {libigl-2.6.3.dev4 → libigl-2.6.4.dev0}/src/ray_mesh_intersect.cpp +0 -0
  468. {libigl-2.6.3.dev4 → libigl-2.6.4.dev0}/src/ray_sphere_intersect.cpp +0 -0
  469. {libigl-2.6.3.dev4 → libigl-2.6.4.dev0}/src/ray_triangle_intersect.cpp +0 -0
  470. {libigl-2.6.3.dev4 → libigl-2.6.4.dev0}/src/readCSV.cpp +0 -0
  471. {libigl-2.6.3.dev4 → libigl-2.6.4.dev0}/src/readDMAT.cpp +0 -0
  472. {libigl-2.6.3.dev4 → libigl-2.6.4.dev0}/src/readMESH.cpp +0 -0
  473. {libigl-2.6.3.dev4 → libigl-2.6.4.dev0}/src/readMSH.cpp +0 -0
  474. {libigl-2.6.3.dev4 → libigl-2.6.4.dev0}/src/readOBJ.cpp +0 -0
  475. {libigl-2.6.3.dev4 → libigl-2.6.4.dev0}/src/readOFF.cpp +0 -0
  476. {libigl-2.6.3.dev4 → libigl-2.6.4.dev0}/src/readSTL.cpp +0 -0
  477. {libigl-2.6.3.dev4 → libigl-2.6.4.dev0}/src/read_triangle_mesh.cpp +0 -0
  478. {libigl-2.6.3.dev4 → libigl-2.6.4.dev0}/src/remove_duplicate_vertices.cpp +0 -0
  479. {libigl-2.6.3.dev4 → libigl-2.6.4.dev0}/src/remove_unreferenced.cpp +0 -0
  480. {libigl-2.6.3.dev4 → libigl-2.6.4.dev0}/src/rgb_to_hsv.cpp +0 -0
  481. {libigl-2.6.3.dev4 → libigl-2.6.4.dev0}/src/rigid_alignment.cpp +0 -0
  482. {libigl-2.6.3.dev4 → libigl-2.6.4.dev0}/src/rotate_vectors.cpp +0 -0
  483. {libigl-2.6.3.dev4 → libigl-2.6.4.dev0}/src/rotation_matrix_from_directions.cpp +0 -0
  484. {libigl-2.6.3.dev4 → libigl-2.6.4.dev0}/src/sample_edges.cpp +0 -0
  485. {libigl-2.6.3.dev4 → libigl-2.6.4.dev0}/src/segment_segment_intersect.cpp +0 -0
  486. {libigl-2.6.3.dev4 → libigl-2.6.4.dev0}/src/sharp_edges.cpp +0 -0
  487. {libigl-2.6.3.dev4 → libigl-2.6.4.dev0}/src/signed_angle.cpp +0 -0
  488. {libigl-2.6.3.dev4 → libigl-2.6.4.dev0}/src/signed_distance.cpp +0 -0
  489. {libigl-2.6.3.dev4 → libigl-2.6.4.dev0}/src/slim.cpp +0 -0
  490. {libigl-2.6.3.dev4 → libigl-2.6.4.dev0}/src/snap_points.cpp +0 -0
  491. {libigl-2.6.3.dev4 → libigl-2.6.4.dev0}/src/solid_angle.cpp +0 -0
  492. {libigl-2.6.3.dev4 → libigl-2.6.4.dev0}/src/sparse_map_noop.cpp +0 -0
  493. {libigl-2.6.3.dev4 → libigl-2.6.4.dev0}/src/sparse_map_shape.cpp +0 -0
  494. {libigl-2.6.3.dev4 → libigl-2.6.4.dev0}/src/sparse_noop.cpp +0 -0
  495. {libigl-2.6.3.dev4 → libigl-2.6.4.dev0}/src/sparse_shape.cpp +0 -0
  496. {libigl-2.6.3.dev4 → libigl-2.6.4.dev0}/src/spectra/EigsType.cpp +0 -0
  497. {libigl-2.6.3.dev4 → libigl-2.6.4.dev0}/src/spectra/eigs.cpp +0 -0
  498. {libigl-2.6.3.dev4 → libigl-2.6.4.dev0}/src/spectra/lscm.cpp +0 -0
  499. {libigl-2.6.3.dev4 → libigl-2.6.4.dev0}/src/spectra/module.cpp +0 -0
  500. {libigl-2.6.3.dev4 → libigl-2.6.4.dev0}/src/split_nonmanifold.cpp +0 -0
  501. {libigl-2.6.3.dev4 → libigl-2.6.4.dev0}/src/squared_edge_lengths.cpp +0 -0
  502. {libigl-2.6.3.dev4 → libigl-2.6.4.dev0}/src/super_fibonacci.cpp +0 -0
  503. {libigl-2.6.3.dev4 → libigl-2.6.4.dev0}/src/tet_tet_adjacency.cpp +0 -0
  504. {libigl-2.6.3.dev4 → libigl-2.6.4.dev0}/src/tri_tri_intersect.cpp +0 -0
  505. {libigl-2.6.3.dev4 → libigl-2.6.4.dev0}/src/triangle/cdt.cpp +0 -0
  506. {libigl-2.6.3.dev4 → libigl-2.6.4.dev0}/src/triangle/module.cpp +0 -0
  507. {libigl-2.6.3.dev4 → libigl-2.6.4.dev0}/src/triangle/refine.cpp +0 -0
  508. {libigl-2.6.3.dev4 → libigl-2.6.4.dev0}/src/triangle/scaf.cpp +0 -0
  509. {libigl-2.6.3.dev4 → libigl-2.6.4.dev0}/src/triangle/triangulate.cpp +0 -0
  510. {libigl-2.6.3.dev4 → libigl-2.6.4.dev0}/src/triangle_fan.cpp +0 -0
  511. {libigl-2.6.3.dev4 → libigl-2.6.4.dev0}/src/triangle_triangle_adjacency.cpp +0 -0
  512. {libigl-2.6.3.dev4 → libigl-2.6.4.dev0}/src/triangulated_grid.cpp +0 -0
  513. {libigl-2.6.3.dev4 → libigl-2.6.4.dev0}/src/turning_number.cpp +0 -0
  514. {libigl-2.6.3.dev4 → libigl-2.6.4.dev0}/src/uniformly_sample_two_manifold.cpp +0 -0
  515. {libigl-2.6.3.dev4 → libigl-2.6.4.dev0}/src/unique_edge_map.cpp +0 -0
  516. {libigl-2.6.3.dev4 → libigl-2.6.4.dev0}/src/unique_simplices.cpp +0 -0
  517. {libigl-2.6.3.dev4 → libigl-2.6.4.dev0}/src/unique_sparse_voxel_corners.cpp +0 -0
  518. {libigl-2.6.3.dev4 → libigl-2.6.4.dev0}/src/unproject.cpp +0 -0
  519. {libigl-2.6.3.dev4 → libigl-2.6.4.dev0}/src/upsample.cpp +0 -0
  520. {libigl-2.6.3.dev4 → libigl-2.6.4.dev0}/src/vector_area_matrix.cpp +0 -0
  521. {libigl-2.6.3.dev4 → libigl-2.6.4.dev0}/src/vertex_triangle_adjacency.cpp +0 -0
  522. {libigl-2.6.3.dev4 → libigl-2.6.4.dev0}/src/volume.cpp +0 -0
  523. {libigl-2.6.3.dev4 → libigl-2.6.4.dev0}/src/voronoi_mass.cpp +0 -0
  524. {libigl-2.6.3.dev4 → libigl-2.6.4.dev0}/src/winding_number.cpp +0 -0
  525. {libigl-2.6.3.dev4 → libigl-2.6.4.dev0}/src/writeDMAT.cpp +0 -0
  526. {libigl-2.6.3.dev4 → libigl-2.6.4.dev0}/src/writeMESH.cpp +0 -0
  527. {libigl-2.6.3.dev4 → libigl-2.6.4.dev0}/src/writeMSH.cpp +0 -0
  528. {libigl-2.6.3.dev4 → libigl-2.6.4.dev0}/src/writeOBJ.cpp +0 -0
  529. {libigl-2.6.3.dev4 → libigl-2.6.4.dev0}/src/writeOFF.cpp +0 -0
  530. {libigl-2.6.3.dev4 → libigl-2.6.4.dev0}/src/writePLY.cpp +0 -0
  531. {libigl-2.6.3.dev4 → libigl-2.6.4.dev0}/src/writeSTL.cpp +0 -0
  532. {libigl-2.6.3.dev4 → libigl-2.6.4.dev0}/src/write_triangle_mesh.cpp +0 -0
  533. {libigl-2.6.3.dev4 → libigl-2.6.4.dev0}/tutorial/contributing.md +0 -0
  534. {libigl-2.6.3.dev4 → libigl-2.6.4.dev0}/tutorial/exporter.py +0 -0
  535. {libigl-2.6.3.dev4 → libigl-2.6.4.dev0}/tutorial/igl_docs.md +0 -0
  536. {libigl-2.6.3.dev4 → libigl-2.6.4.dev0}/tutorial/images/102_DrawMesh.png +0 -0
  537. {libigl-2.6.3.dev4 → libigl-2.6.4.dev0}/tutorial/images/104_Colors.png +0 -0
  538. {libigl-2.6.3.dev4 → libigl-2.6.4.dev0}/tutorial/images/105_Overlays.png +0 -0
  539. {libigl-2.6.3.dev4 → libigl-2.6.4.dev0}/tutorial/images/106_ViewerMenu.png +0 -0
  540. {libigl-2.6.3.dev4 → libigl-2.6.4.dev0}/tutorial/images/501_HarmonicParam.png +0 -0
  541. {libigl-2.6.3.dev4 → libigl-2.6.4.dev0}/tutorial/images/502_LSCMParam.png +0 -0
  542. {libigl-2.6.3.dev4 → libigl-2.6.4.dev0}/tutorial/images/503_ARAPParam.png +0 -0
  543. {libigl-2.6.3.dev4 → libigl-2.6.4.dev0}/tutorial/images/504_nrosy_field.png +0 -0
  544. {libigl-2.6.3.dev4 → libigl-2.6.4.dev0}/tutorial/images/504_vector_field.png +0 -0
  545. {libigl-2.6.3.dev4 → libigl-2.6.4.dev0}/tutorial/images/505_MIQ_1.png +0 -0
  546. {libigl-2.6.3.dev4 → libigl-2.6.4.dev0}/tutorial/images/505_MIQ_2.png +0 -0
  547. {libigl-2.6.3.dev4 → libigl-2.6.4.dev0}/tutorial/images/505_MIQ_3.png +0 -0
  548. {libigl-2.6.3.dev4 → libigl-2.6.4.dev0}/tutorial/images/505_MIQ_4.png +0 -0
  549. {libigl-2.6.3.dev4 → libigl-2.6.4.dev0}/tutorial/images/505_MIQ_5.png +0 -0
  550. {libigl-2.6.3.dev4 → libigl-2.6.4.dev0}/tutorial/images/505_MIQ_6.png +0 -0
  551. {libigl-2.6.3.dev4 → libigl-2.6.4.dev0}/tutorial/images/505_MIQ_7.png +0 -0
  552. {libigl-2.6.3.dev4 → libigl-2.6.4.dev0}/tutorial/images/505_MIQ_8.png +0 -0
  553. {libigl-2.6.3.dev4 → libigl-2.6.4.dev0}/tutorial/images/506_FrameField_1.png +0 -0
  554. {libigl-2.6.3.dev4 → libigl-2.6.4.dev0}/tutorial/images/506_FrameField_2.png +0 -0
  555. {libigl-2.6.3.dev4 → libigl-2.6.4.dev0}/tutorial/images/506_FrameField_3.png +0 -0
  556. {libigl-2.6.3.dev4 → libigl-2.6.4.dev0}/tutorial/images/506_FrameField_4.png +0 -0
  557. {libigl-2.6.3.dev4 → libigl-2.6.4.dev0}/tutorial/images/507_PolyVectorField.png +0 -0
  558. {libigl-2.6.3.dev4 → libigl-2.6.4.dev0}/tutorial/images/508_ConjugateField.png +0 -0
  559. {libigl-2.6.3.dev4 → libigl-2.6.4.dev0}/tutorial/images/509_Planarization.png +0 -0
  560. {libigl-2.6.3.dev4 → libigl-2.6.4.dev0}/tutorial/images/510_Integrable.png +0 -0
  561. {libigl-2.6.3.dev4 → libigl-2.6.4.dev0}/tutorial/images/511_PolyVectorFieldGeneral.png +0 -0
  562. {libigl-2.6.3.dev4 → libigl-2.6.4.dev0}/tutorial/images/602_Matlab_1.png +0 -0
  563. {libigl-2.6.3.dev4 → libigl-2.6.4.dev0}/tutorial/images/602_Matlab_2.png +0 -0
  564. {libigl-2.6.3.dev4 → libigl-2.6.4.dev0}/tutorial/images/604_Triangle.png +0 -0
  565. {libigl-2.6.3.dev4 → libigl-2.6.4.dev0}/tutorial/images/605_Tetgen.png +0 -0
  566. {libigl-2.6.3.dev4 → libigl-2.6.4.dev0}/tutorial/images/606_AmbientOcclusion.png +0 -0
  567. {libigl-2.6.3.dev4 → libigl-2.6.4.dev0}/tutorial/images/607_Picking.png +0 -0
  568. {libigl-2.6.3.dev4 → libigl-2.6.4.dev0}/tutorial/images/608_LIM.png +0 -0
  569. {libigl-2.6.3.dev4 → libigl-2.6.4.dev0}/tutorial/images/712_beetles.jpg +0 -0
  570. {libigl-2.6.3.dev4 → libigl-2.6.4.dev0}/tutorial/images/713_ShapeUp.png +0 -0
  571. {libigl-2.6.3.dev4 → libigl-2.6.4.dev0}/tutorial/images/VF.pdf +0 -0
  572. {libigl-2.6.3.dev4 → libigl-2.6.4.dev0}/tutorial/images/VF.png +0 -0
  573. {libigl-2.6.3.dev4 → libigl-2.6.4.dev0}/tutorial/images/arm-dqs.jpg +0 -0
  574. {libigl-2.6.3.dev4 → libigl-2.6.4.dev0}/tutorial/images/armadillo-fast.jpg +0 -0
  575. {libigl-2.6.3.dev4 → libigl-2.6.4.dev0}/tutorial/images/armadillo-marching-cubes.jpg +0 -0
  576. {libigl-2.6.3.dev4 → libigl-2.6.4.dev0}/tutorial/images/background.gif +0 -0
  577. {libigl-2.6.3.dev4 → libigl-2.6.4.dev0}/tutorial/images/beetle-eigen-decomposition.gif +0 -0
  578. {libigl-2.6.3.dev4 → libigl-2.6.4.dev0}/tutorial/images/big-sigcat-winding-number.gif +0 -0
  579. {libigl-2.6.3.dev4 → libigl-2.6.4.dev0}/tutorial/images/bump-k-harmonic.jpg +0 -0
  580. {libigl-2.6.3.dev4 → libigl-2.6.4.dev0}/tutorial/images/bumpy-gaussian-curvature.jpg +0 -0
  581. {libigl-2.6.3.dev4 → libigl-2.6.4.dev0}/tutorial/images/bunny-signed-distance.gif +0 -0
  582. {libigl-2.6.3.dev4 → libigl-2.6.4.dev0}/tutorial/images/bunny-swept-volume.gif +0 -0
  583. {libigl-2.6.3.dev4 → libigl-2.6.4.dev0}/tutorial/images/camelhead-laplace-equation.jpg +0 -0
  584. {libigl-2.6.3.dev4 → libigl-2.6.4.dev0}/tutorial/images/cheburashka-biharmonic-leq.jpg +0 -0
  585. {libigl-2.6.3.dev4 → libigl-2.6.4.dev0}/tutorial/images/cheburashka-gradient.jpg +0 -0
  586. {libigl-2.6.3.dev4 → libigl-2.6.4.dev0}/tutorial/images/cheburashka-knight-boolean.jpg +0 -0
  587. {libigl-2.6.3.dev4 → libigl-2.6.4.dev0}/tutorial/images/cheburashka-multiscale-biharmonic-kernels.jpg +0 -0
  588. {libigl-2.6.3.dev4 → libigl-2.6.4.dev0}/tutorial/images/cow-curvature-flow.jpg +0 -0
  589. {libigl-2.6.3.dev4 → libigl-2.6.4.dev0}/tutorial/images/cube-sphere-cylinders-csg-tree.jpg +0 -0
  590. {libigl-2.6.3.dev4 → libigl-2.6.4.dev0}/tutorial/images/cube-sphere-cylinders-csg.gif +0 -0
  591. {libigl-2.6.3.dev4 → libigl-2.6.4.dev0}/tutorial/images/decimated-knight-arap.jpg +0 -0
  592. {libigl-2.6.3.dev4 → libigl-2.6.4.dev0}/tutorial/images/decimated-knight-slice-color.jpg +0 -0
  593. {libigl-2.6.3.dev4 → libigl-2.6.4.dev0}/tutorial/images/decimated-knight-sort-color.jpg +0 -0
  594. {libigl-2.6.3.dev4 → libigl-2.6.4.dev0}/tutorial/images/decimated-knight-subdivision.gif +0 -0
  595. {libigl-2.6.3.dev4 → libigl-2.6.4.dev0}/tutorial/images/edge-collapse.jpg +0 -0
  596. {libigl-2.6.3.dev4 → libigl-2.6.4.dev0}/tutorial/images/edge-collapse.pdf +0 -0
  597. {libigl-2.6.3.dev4 → libigl-2.6.4.dev0}/tutorial/images/fandisk-normals.jpg +0 -0
  598. {libigl-2.6.3.dev4 → libigl-2.6.4.dev0}/tutorial/images/fertility-edge-collapse.gif +0 -0
  599. {libigl-2.6.3.dev4 → libigl-2.6.4.dev0}/tutorial/images/fertility-principal-curvature.jpg +0 -0
  600. {libigl-2.6.3.dev4 → libigl-2.6.4.dev0}/tutorial/images/geodesicdistance.jpg +0 -0
  601. {libigl-2.6.3.dev4 → libigl-2.6.4.dev0}/tutorial/images/hand-bbw.jpg +0 -0
  602. {libigl-2.6.3.dev4 → libigl-2.6.4.dev0}/tutorial/images/hat-function.jpg +0 -0
  603. {libigl-2.6.3.dev4 → libigl-2.6.4.dev0}/tutorial/images/heat-geodesic-beetle.gif +0 -0
  604. {libigl-2.6.3.dev4 → libigl-2.6.4.dev0}/tutorial/images/heat-geodesic-peaks.png +0 -0
  605. {libigl-2.6.3.dev4 → libigl-2.6.4.dev0}/tutorial/images/libigl-logo.jpg +0 -0
  606. {libigl-2.6.3.dev4 → libigl-2.6.4.dev0}/tutorial/images/max-biharmonic.jpg +0 -0
  607. {libigl-2.6.3.dev4 → libigl-2.6.4.dev0}/tutorial/images/multiple-meshes.png +0 -0
  608. {libigl-2.6.3.dev4 → libigl-2.6.4.dev0}/tutorial/images/octopus-biharmonic-coordinates-physics.gif +0 -0
  609. {libigl-2.6.3.dev4 → libigl-2.6.4.dev0}/tutorial/images/simplicial_complex_augmentation_framework.png +0 -0
  610. {libigl-2.6.3.dev4 → libigl-2.6.4.dev0}/tutorial/images/slim.png +0 -0
  611. {libigl-2.6.3.dev4 → libigl-2.6.4.dev0}/tutorial/images/streamlines.jpg +0 -0
  612. {libigl-2.6.3.dev4 → libigl-2.6.4.dev0}/tutorial/images/truck-facet-orientation.jpg +0 -0
  613. {libigl-2.6.3.dev4 → libigl-2.6.4.dev0}/tutorial/index.md +0 -0
  614. {libigl-2.6.3.dev4 → libigl-2.6.4.dev0}/tutorial/marching_cubes.py +0 -0
  615. {libigl-2.6.3.dev4 → libigl-2.6.4.dev0}/tutorial/plot_to_md.py +0 -0
  616. {libigl-2.6.3.dev4 → libigl-2.6.4.dev0}/tutorial/tut-chapter0.ipynb +0 -0
  617. {libigl-2.6.3.dev4 → libigl-2.6.4.dev0}/tutorial/tut-chapter2.ipynb +0 -0
  618. {libigl-2.6.3.dev4 → libigl-2.6.4.dev0}/tutorial/tut-chapter3.ipynb +0 -0
  619. {libigl-2.6.3.dev4 → libigl-2.6.4.dev0}/tutorial/tut-chapter4.ipynb +0 -0
  620. {libigl-2.6.3.dev4 → libigl-2.6.4.dev0}/tutorial/tut-chapter5.ipynb +0 -0
  621. {libigl-2.6.3.dev4 → libigl-2.6.4.dev0}/tutorial/tut-chapter6.ipynb +0 -0
  622. {libigl-2.6.3.dev4 → libigl-2.6.4.dev0}/tutorial/tut-chapter7.ipynb +0 -0
  623. {libigl-2.6.3.dev4 → libigl-2.6.4.dev0}/tutorial/tutorials.ipynb +0 -0
@@ -5,7 +5,7 @@ on:
5
5
  pull_request:
6
6
  push:
7
7
  branches:
8
- - master
8
+ - main
9
9
 
10
10
  jobs:
11
11
  build:
@@ -0,0 +1,200 @@
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
+ # 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' }}
32
+ strategy:
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.
40
+ matrix:
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]
43
+ exclude:
44
+ # No macOS CPython 3.8 wheels are shipped.
45
+ - os: macos-latest
46
+ pybuilds: cp38
47
+ - os: macos-15-intel
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
56
+
57
+ name: >
58
+ ${{ matrix.pybuilds }} ${{ matrix.os }}
59
+
60
+ steps:
61
+ - uses: actions/checkout@v4
62
+ - uses: actions/setup-python@v5
63
+ with:
64
+ python-version: '3.12'
65
+ - run: pip install cibuildwheel==3.1.4
66
+ - name: Build wheels
67
+ run: python -m cibuildwheel --output-dir wheelhouse
68
+ env:
69
+ CIBW_BEFORE_ALL_LINUX: "yum install -y clang"
70
+ CIBW_ENVIRONMENT_LINUX: "CC=clang CXX=clang++"
71
+ CIBW_MANYLINUX_X86_64_IMAGE: "manylinux_2_28"
72
+ CIBW_MANYLINUX_AARCH64_IMAGE: "manylinux_2_28"
73
+ CIBW_BUILD: "${{ matrix.pybuilds }}-*"
74
+ # No CIBW_ARCHS_* override: each runner builds its native architecture.
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' || '' }}
81
+ - name: Upload Artifact
82
+ uses: actions/upload-artifact@v4
83
+ continue-on-error: true # Important: Continue if upload fails
84
+ with:
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 }}
88
+ path: ./wheelhouse/*.whl
89
+ if-no-files-found: error # Fail if no wheels are found
90
+ compression-level: 6
91
+ overwrite: false
92
+ include-hidden-files: false
93
+
94
+ check_version:
95
+ name: Check for a version bump
96
+ # Only a push to main can release; PRs and workflow_dispatch never do.
97
+ if: github.event_name == 'push' && github.ref == 'refs/heads/main'
98
+ runs-on: ubuntu-latest
99
+ outputs:
100
+ should_release: ${{ steps.check.outputs.should_release }}
101
+ version: ${{ steps.check.outputs.version }}
102
+ prerelease: ${{ steps.check.outputs.prerelease }}
103
+ steps:
104
+ - uses: actions/checkout@v4
105
+ with:
106
+ # Need history to read pyproject.toml as of the previous commit
107
+ fetch-depth: 0
108
+ - uses: actions/setup-python@v5
109
+ with:
110
+ python-version: '3.12' # tomllib needs >=3.11
111
+ - name: Compare pyproject.toml version against the previous commit
112
+ id: check
113
+ env:
114
+ BEFORE: ${{ github.event.before }}
115
+ run: |
116
+ set -euo pipefail
117
+
118
+ # Read project.version from pyproject.toml at a given revision
119
+ # (empty revision = the working tree)
120
+ read_version() {
121
+ if [ -z "${1:-}" ]; then cat pyproject.toml; else git show "$1:pyproject.toml"; fi \
122
+ | python3 -c 'import sys,tomllib; print(tomllib.loads(sys.stdin.read())["project"]["version"])'
123
+ }
124
+
125
+ version=$(read_version)
126
+ echo "version=$version" >> "$GITHUB_OUTPUT"
127
+ # PEP 440 pre-releases (aN/bN/rcN/.devN) are flagged as such on GitHub.
128
+ # Note `.postN` is deliberately not a pre-release.
129
+ if printf '%s' "$version" | grep -Eq '(a[0-9]+|b[0-9]+|rc[0-9]+|\.dev[0-9]*)$'; then
130
+ echo "prerelease=true" >> "$GITHUB_OUTPUT"
131
+ else
132
+ echo "prerelease=false" >> "$GITHUB_OUTPUT"
133
+ fi
134
+
135
+ # `before` is all-zeros when the branch is first created, and can point
136
+ # at a vanished commit after a force-push; fall back to the first parent.
137
+ base="$BEFORE"
138
+ if [ -z "$base" ] || [ "$base" = "0000000000000000000000000000000000000000" ] \
139
+ || ! git cat-file -e "$base^{commit}" 2>/dev/null; then
140
+ base=$(git rev-parse --verify --quiet HEAD^ || true)
141
+ fi
142
+ if [ -z "$base" ]; then
143
+ echo "No previous commit to compare against; not releasing."
144
+ echo "should_release=false" >> "$GITHUB_OUTPUT"
145
+ exit 0
146
+ fi
147
+
148
+ previous=$(read_version "$base")
149
+ echo "previous version: $previous"
150
+ echo "current version: $version"
151
+ if [ "$version" = "$previous" ]; then
152
+ echo "Version unchanged; not releasing."
153
+ echo "should_release=false" >> "$GITHUB_OUTPUT"
154
+ exit 0
155
+ fi
156
+
157
+ # Belt and braces: PyPI refuses to overwrite an existing version, and a
158
+ # re-run of this workflow would otherwise try to. Also covers the case
159
+ # where a bump was published by some other route.
160
+ if curl -sfL -o /dev/null "https://pypi.org/pypi/libigl/$version/json"; then
161
+ echo "libigl $version is already on PyPI; not releasing."
162
+ echo "should_release=false" >> "$GITHUB_OUTPUT"
163
+ exit 0
164
+ fi
165
+
166
+ echo "Version bumped $previous -> $version; releasing."
167
+ echo "should_release=true" >> "$GITHUB_OUTPUT"
168
+
169
+ release_artifacts:
170
+ name: Publish ${{ needs.check_version.outputs.version }} to PyPI
171
+ needs: [check_version, build_sdist, build_wheels]
172
+ if: needs.check_version.outputs.should_release == 'true'
173
+ runs-on: ubuntu-latest
174
+ permissions:
175
+ id-token: write # for PyPI trusted publishing
176
+ contents: write # to create the tag and GitHub release
177
+ steps:
178
+ - uses: actions/download-artifact@v4
179
+ with:
180
+ path: ./artifacts
181
+ merge-multiple: true
182
+ - run: ls -R ./artifacts
183
+ - name: Tag and create a GitHub release
184
+ uses: ncipollo/release-action@v1
185
+ with:
186
+ tag: ${{ needs.check_version.outputs.version }}
187
+ commit: ${{ github.sha }}
188
+ name: ${{ needs.check_version.outputs.version }}
189
+ prerelease: ${{ needs.check_version.outputs.prerelease }}
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
194
+ artifacts: "./artifacts/**/*"
195
+ token: ${{ secrets.GITHUB_TOKEN }}
196
+ - name: Publish to PyPI
197
+ uses: pypa/gh-action-pypi-publish@v1.13.0
198
+ with:
199
+ packages-dir: ./artifacts
200
+ skip-existing: true
@@ -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,7 @@ 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 477e15a3d566a21f415aa5ee62992b12a836b01b
63
+ GIT_TAG f68f01c23ac82351e2543ce8c529b6d4c89fdf16
64
64
  )
65
65
  FetchContent_MakeAvailable(libigl)
66
66
 
@@ -208,4 +208,3 @@ if(LIBIGL_CYCODEBASE)
208
208
  endif()
209
209
 
210
210
 
211
-
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.1
2
2
  Name: libigl
3
- Version: 2.6.3.dev4
3
+ Version: 2.6.4.dev0
4
4
  Summary: libigl: A simple C++ geometry processing library
5
5
  Author-Email: Alec Jacobson <alecjacobson@gmail.com>
6
6
  Classifier: License :: OSI Approved :: Mozilla Public License 2.0 (MPL 2.0)
@@ -1,3 +1,4 @@
1
+ #pragma once
1
2
  #include <Eigen/Dense>
2
3
  #include <Eigen/Sparse>
3
4
  #include <cstdint>
@@ -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
+ }
@@ -13,7 +13,7 @@ build-backend = "scikit_build_core.build"
13
13
 
14
14
  [project]
15
15
  name = "libigl"
16
- version = "2.6.3.dev4"
16
+ version = "2.6.4.dev0"
17
17
  description = "libigl: A simple C++ geometry processing library"
18
18
  readme = "README.md"
19
19
  requires-python = ">=3.8"
@@ -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 all loops as a vector of vectors
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,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
+ }