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