libigl 2.6.2.dev0__tar.gz → 2.6.3__tar.gz

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