libigl 2.6.2__tar.gz → 2.6.3.dev1__tar.gz

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (548) hide show
  1. {libigl-2.6.2 → libigl-2.6.3.dev1}/.github/workflows/wheels.yml +1 -1
  2. {libigl-2.6.2 → libigl-2.6.3.dev1}/PKG-INFO +1 -1
  3. libigl-2.6.3.dev1/memory/MEMORY.md +26 -0
  4. {libigl-2.6.2 → libigl-2.6.3.dev1}/pyproject.toml +1 -1
  5. libigl-2.6.3.dev1/src/accumarray.cpp +48 -0
  6. libigl-2.6.3.dev1/src/barycentric_interpolation.cpp +36 -0
  7. libigl-2.6.3.dev1/src/bezier.cpp +48 -0
  8. libigl-2.6.3.dev1/src/centroid.cpp +40 -0
  9. libigl-2.6.3.dev1/src/colormap.cpp +62 -0
  10. libigl-2.6.3.dev1/src/combine.cpp +33 -0
  11. libigl-2.6.3.dev1/src/dijkstra.cpp +84 -0
  12. libigl-2.6.3.dev1/src/directed_edge_parents.cpp +26 -0
  13. libigl-2.6.3.dev1/src/edge_topology.cpp +32 -0
  14. libigl-2.6.3.dev1/src/edges_to_path.cpp +36 -0
  15. libigl-2.6.3.dev1/src/euler_characteristic.cpp +20 -0
  16. libigl-2.6.3.dev1/src/exterior_edges.cpp +26 -0
  17. libigl-2.6.3.dev1/src/extract_manifold_patches.cpp +30 -0
  18. libigl-2.6.3.dev1/src/face_occurrences.cpp +26 -0
  19. libigl-2.6.3.dev1/src/fit_plane.cpp +30 -0
  20. libigl-2.6.3.dev1/src/flipped_triangles.cpp +29 -0
  21. libigl-2.6.3.dev1/src/flood_fill.cpp +31 -0
  22. libigl-2.6.3.dev1/src/hausdorff.cpp +37 -0
  23. libigl-2.6.3.dev1/src/hsv_to_rgb.cpp +26 -0
  24. libigl-2.6.3.dev1/src/is_boundary_edge.cpp +55 -0
  25. libigl-2.6.3.dev1/src/is_delaunay.cpp +30 -0
  26. libigl-2.6.3.dev1/src/is_irregular_vertex.cpp +22 -0
  27. libigl-2.6.3.dev1/src/iterative_closest_point.cpp +45 -0
  28. libigl-2.6.3.dev1/src/lbs_matrix.cpp +34 -0
  29. libigl-2.6.3.dev1/src/look_at.cpp +36 -0
  30. libigl-2.6.3.dev1/src/mvc.cpp +31 -0
  31. libigl-2.6.3.dev1/src/orient_outward.cpp +39 -0
  32. libigl-2.6.3.dev1/src/orientable_patches.cpp +45 -0
  33. libigl-2.6.3.dev1/src/per_corner_normals.cpp +34 -0
  34. libigl-2.6.3.dev1/src/per_edge_normals.cpp +47 -0
  35. libigl-2.6.3.dev1/src/per_vertex_attribute_smoothing.cpp +32 -0
  36. libigl-2.6.3.dev1/src/polar_dec.cpp +57 -0
  37. libigl-2.6.3.dev1/src/procrustes.cpp +41 -0
  38. libigl-2.6.3.dev1/src/pseudonormal_test.cpp +56 -0
  39. libigl-2.6.3.dev1/src/random_dir.cpp +28 -0
  40. libigl-2.6.3.dev1/src/ray_sphere_intersect.cpp +41 -0
  41. libigl-2.6.3.dev1/src/ray_triangle_intersect.cpp +50 -0
  42. libigl-2.6.3.dev1/src/readCSV.cpp +29 -0
  43. libigl-2.6.3.dev1/src/readSTL.cpp +42 -0
  44. libigl-2.6.3.dev1/src/rgb_to_hsv.cpp +26 -0
  45. libigl-2.6.3.dev1/src/rigid_alignment.cpp +36 -0
  46. libigl-2.6.3.dev1/src/rotation_matrix_from_directions.cpp +31 -0
  47. libigl-2.6.3.dev1/src/sample_edges.cpp +34 -0
  48. libigl-2.6.3.dev1/src/segment_segment_intersect.cpp +49 -0
  49. libigl-2.6.3.dev1/src/sharp_edges.cpp +32 -0
  50. libigl-2.6.3.dev1/src/signed_angle.cpp +32 -0
  51. libigl-2.6.3.dev1/src/snap_points.cpp +34 -0
  52. libigl-2.6.3.dev1/src/solid_angle.cpp +35 -0
  53. libigl-2.6.3.dev1/src/super_fibonacci.cpp +28 -0
  54. libigl-2.6.3.dev1/src/tet_tet_adjacency.cpp +30 -0
  55. libigl-2.6.3.dev1/src/tri_tri_intersect.cpp +73 -0
  56. libigl-2.6.3.dev1/src/turning_number.cpp +20 -0
  57. libigl-2.6.3.dev1/src/uniformly_sample_two_manifold.cpp +38 -0
  58. libigl-2.6.3.dev1/src/vector_area_matrix.cpp +29 -0
  59. libigl-2.6.3.dev1/src/voronoi_mass.cpp +29 -0
  60. libigl-2.6.3.dev1/src/writeOFF.cpp +52 -0
  61. libigl-2.6.3.dev1/src/writeSTL.cpp +37 -0
  62. {libigl-2.6.2 → libigl-2.6.3.dev1}/tests/test_all.py +441 -0
  63. {libigl-2.6.2 → libigl-2.6.3.dev1}/.github/workflows/pip.yml +0 -0
  64. {libigl-2.6.2 → libigl-2.6.3.dev1}/.gitignore +0 -0
  65. {libigl-2.6.2 → libigl-2.6.3.dev1}/CMakeLists.txt +0 -0
  66. {libigl-2.6.2 → libigl-2.6.3.dev1}/LICENSE.GPL +0 -0
  67. {libigl-2.6.2 → libigl-2.6.3.dev1}/LICENSE.MPL2 +0 -0
  68. {libigl-2.6.2 → libigl-2.6.3.dev1}/README.md +0 -0
  69. {libigl-2.6.2 → libigl-2.6.3.dev1}/attic/copyleft/tetgen_tetrahedralize.cpp +0 -0
  70. {libigl-2.6.2 → libigl-2.6.3.dev1}/attic/copyleft/triangle_triangulate.cpp +0 -0
  71. {libigl-2.6.2 → libigl-2.6.3.dev1}/attic/skip/SolverStatus.cpp +0 -0
  72. {libigl-2.6.2 → libigl-2.6.3.dev1}/attic/skip/WindingNumberMethod.cpp +0 -0
  73. {libigl-2.6.2 → libigl-2.6.3.dev1}/attic/skip/angular_distance.cpp +0 -0
  74. {libigl-2.6.2 → libigl-2.6.3.dev1}/attic/skip/canonical_quaternions.cpp +0 -0
  75. {libigl-2.6.2 → libigl-2.6.3.dev1}/attic/skip/column_to_quats.cpp +0 -0
  76. {libigl-2.6.2 → libigl-2.6.3.dev1}/attic/skip/comiso_nrosy.cpp +0 -0
  77. {libigl-2.6.2 → libigl-2.6.3.dev1}/attic/skip/covariance_scatter_matrix.cpp +0 -0
  78. {libigl-2.6.2 → libigl-2.6.3.dev1}/attic/skip/file_contents_as_string.cpp +0 -0
  79. {libigl-2.6.2 → libigl-2.6.3.dev1}/attic/skip/fit_rotations.cpp +0 -0
  80. {libigl-2.6.2 → libigl-2.6.3.dev1}/attic/skip/frame_field_deformer.cpp +0 -0
  81. {libigl-2.6.2 → libigl-2.6.3.dev1}/attic/skip/frame_to_cross_field.cpp +0 -0
  82. {libigl-2.6.2 → libigl-2.6.3.dev1}/attic/skip/frustum.cpp +0 -0
  83. {libigl-2.6.2 → libigl-2.6.3.dev1}/attic/skip/group_sum_matrix.cpp +0 -0
  84. {libigl-2.6.2 → libigl-2.6.3.dev1}/attic/skip/harwell_boeing.cpp +0 -0
  85. {libigl-2.6.2 → libigl-2.6.3.dev1}/attic/skip/histc.cpp +0 -0
  86. {libigl-2.6.2 → libigl-2.6.3.dev1}/attic/skip/hsv_to_rgb.cpp +0 -0
  87. {libigl-2.6.2 → libigl-2.6.3.dev1}/attic/skip/infinite_cost_stopping_condition.cpp +0 -0
  88. {libigl-2.6.2 → libigl-2.6.3.dev1}/attic/skip/intersect.cpp +0 -0
  89. {libigl-2.6.2 → libigl-2.6.3.dev1}/attic/skip/invert_diag.cpp +0 -0
  90. {libigl-2.6.2 → libigl-2.6.3.dev1}/attic/skip/is_planar.cpp +0 -0
  91. {libigl-2.6.2 → libigl-2.6.3.dev1}/attic/skip/limit_faces.cpp +0 -0
  92. {libigl-2.6.2 → libigl-2.6.3.dev1}/attic/skip/line_field_missmatch.cpp +0 -0
  93. {libigl-2.6.2 → libigl-2.6.3.dev1}/attic/skip/line_search.cpp +0 -0
  94. {libigl-2.6.2 → libigl-2.6.3.dev1}/attic/skip/mat_to_quat.cpp +0 -0
  95. {libigl-2.6.2 → libigl-2.6.3.dev1}/attic/skip/material_colors.cpp +0 -0
  96. {libigl-2.6.2 → libigl-2.6.3.dev1}/attic/skip/max_faces_stopping_condition.cpp +0 -0
  97. {libigl-2.6.2 → libigl-2.6.3.dev1}/attic/skip/min_quad_dense.cpp +0 -0
  98. {libigl-2.6.2 → libigl-2.6.3.dev1}/attic/skip/normalize_quat.cpp +0 -0
  99. {libigl-2.6.2 → libigl-2.6.3.dev1}/attic/skip/on_boundary.cpp +0 -0
  100. {libigl-2.6.2 → libigl-2.6.3.dev1}/attic/skip/opengl2_draw_beach_ball.cpp +0 -0
  101. {libigl-2.6.2 → libigl-2.6.3.dev1}/attic/skip/opengl2_draw_floor.cpp +0 -0
  102. {libigl-2.6.2 → libigl-2.6.3.dev1}/attic/skip/opengl2_draw_mesh.cpp +0 -0
  103. {libigl-2.6.2 → libigl-2.6.3.dev1}/attic/skip/opengl2_draw_point.cpp +0 -0
  104. {libigl-2.6.2 → libigl-2.6.3.dev1}/attic/skip/opengl2_draw_rectangular_marquee.cpp +0 -0
  105. {libigl-2.6.2 → libigl-2.6.3.dev1}/attic/skip/opengl2_draw_skeleton_3d.cpp +0 -0
  106. {libigl-2.6.2 → libigl-2.6.3.dev1}/attic/skip/opengl2_draw_skeleton_vector_graphics.cpp +0 -0
  107. {libigl-2.6.2 → libigl-2.6.3.dev1}/attic/skip/opengl2_flare_textures.cpp +0 -0
  108. {libigl-2.6.2 → libigl-2.6.3.dev1}/attic/skip/opengl2_model_proj_viewport.cpp +0 -0
  109. {libigl-2.6.2 → libigl-2.6.3.dev1}/attic/skip/opengl2_print_gl_get.cpp +0 -0
  110. {libigl-2.6.2 → libigl-2.6.3.dev1}/attic/skip/opengl2_project.cpp +0 -0
  111. {libigl-2.6.2 → libigl-2.6.3.dev1}/attic/skip/opengl2_right_axis.cpp +0 -0
  112. {libigl-2.6.2 → libigl-2.6.3.dev1}/attic/skip/opengl2_shine_textures.cpp +0 -0
  113. {libigl-2.6.2 → libigl-2.6.3.dev1}/attic/skip/opengl2_sort_triangles.cpp +0 -0
  114. {libigl-2.6.2 → libigl-2.6.3.dev1}/attic/skip/opengl2_unproject.cpp +0 -0
  115. {libigl-2.6.2 → libigl-2.6.3.dev1}/attic/skip/opengl2_unproject_to_zero_plane.cpp +0 -0
  116. {libigl-2.6.2 → libigl-2.6.3.dev1}/attic/skip/opengl2_up_axis.cpp +0 -0
  117. {libigl-2.6.2 → libigl-2.6.3.dev1}/attic/skip/opengl2_view_axis.cpp +0 -0
  118. {libigl-2.6.2 → libigl-2.6.3.dev1}/attic/skip/opengl_create_shader_program.cpp +0 -0
  119. {libigl-2.6.2 → libigl-2.6.3.dev1}/attic/skip/opengl_destroy_shader_program.cpp +0 -0
  120. {libigl-2.6.2 → libigl-2.6.3.dev1}/attic/skip/opengl_gl_type_size.cpp +0 -0
  121. {libigl-2.6.2 → libigl-2.6.3.dev1}/attic/skip/opengl_glfw_background_window.cpp +0 -0
  122. {libigl-2.6.2 → libigl-2.6.3.dev1}/attic/skip/opengl_glfw_imgui_ImGuiHelpers.cpp +0 -0
  123. {libigl-2.6.2 → libigl-2.6.3.dev1}/attic/skip/opengl_init_render_to_texture.cpp +0 -0
  124. {libigl-2.6.2 → libigl-2.6.3.dev1}/attic/skip/opengl_load_shader.cpp +0 -0
  125. {libigl-2.6.2 → libigl-2.6.3.dev1}/attic/skip/opengl_print_program_info_log.cpp +0 -0
  126. {libigl-2.6.2 → libigl-2.6.3.dev1}/attic/skip/opengl_print_shader_info_log.cpp +0 -0
  127. {libigl-2.6.2 → libigl-2.6.3.dev1}/attic/skip/opengl_report_gl_error.cpp +0 -0
  128. {libigl-2.6.2 → libigl-2.6.3.dev1}/attic/skip/opengl_uniform_type_to_string.cpp +0 -0
  129. {libigl-2.6.2 → libigl-2.6.3.dev1}/attic/skip/ortho.cpp +0 -0
  130. {libigl-2.6.2 → libigl-2.6.3.dev1}/attic/skip/parallel_transport_angles.cpp +0 -0
  131. {libigl-2.6.2 → libigl-2.6.3.dev1}/attic/skip/polar_svd.cpp +0 -0
  132. {libigl-2.6.2 → libigl-2.6.3.dev1}/attic/skip/polar_svd3x3.cpp +0 -0
  133. {libigl-2.6.2 → libigl-2.6.3.dev1}/attic/skip/qslim_optimal_collapse_edge_callbacks.cpp +0 -0
  134. {libigl-2.6.2 → libigl-2.6.3.dev1}/attic/skip/quadric_binary_plus_operator.cpp +0 -0
  135. {libigl-2.6.2 → libigl-2.6.3.dev1}/attic/skip/quat_conjugate.cpp +0 -0
  136. {libigl-2.6.2 → libigl-2.6.3.dev1}/attic/skip/quat_mult.cpp +0 -0
  137. {libigl-2.6.2 → libigl-2.6.3.dev1}/attic/skip/quat_to_axis_angle.cpp +0 -0
  138. {libigl-2.6.2 → libigl-2.6.3.dev1}/attic/skip/quat_to_mat.cpp +0 -0
  139. {libigl-2.6.2 → libigl-2.6.3.dev1}/attic/skip/quats_to_column.cpp +0 -0
  140. {libigl-2.6.2 → libigl-2.6.3.dev1}/attic/skip/random_quaternion.cpp +0 -0
  141. {libigl-2.6.2 → libigl-2.6.3.dev1}/attic/skip/readBF.cpp +0 -0
  142. {libigl-2.6.2 → libigl-2.6.3.dev1}/attic/skip/readNODE.cpp +0 -0
  143. {libigl-2.6.2 → libigl-2.6.3.dev1}/attic/skip/readPLY.cpp +0 -0
  144. {libigl-2.6.2 → libigl-2.6.3.dev1}/attic/skip/readSTL.cpp +0 -0
  145. {libigl-2.6.2 → libigl-2.6.3.dev1}/attic/skip/rgb_to_hsv.cpp +0 -0
  146. {libigl-2.6.2 → libigl-2.6.3.dev1}/attic/skip/rotate_by_quat.cpp +0 -0
  147. {libigl-2.6.2 → libigl-2.6.3.dev1}/attic/skip/rotation_matrix_from_directions.cpp +0 -0
  148. {libigl-2.6.2 → libigl-2.6.3.dev1}/attic/skip/snap_to_canonical_view_quat.cpp +0 -0
  149. {libigl-2.6.2 → libigl-2.6.3.dev1}/attic/skip/snap_to_fixed_up.cpp +0 -0
  150. {libigl-2.6.2 → libigl-2.6.3.dev1}/attic/skip/sort_angles.cpp +0 -0
  151. {libigl-2.6.2 → libigl-2.6.3.dev1}/attic/skip/sort_triangles.cpp +0 -0
  152. {libigl-2.6.2 → libigl-2.6.3.dev1}/attic/skip/sort_vectors_ccw.cpp +0 -0
  153. {libigl-2.6.2 → libigl-2.6.3.dev1}/attic/skip/svd3x3.cpp +0 -0
  154. {libigl-2.6.2 → libigl-2.6.3.dev1}/attic/skip/svd3x3_avx.cpp +0 -0
  155. {libigl-2.6.2 → libigl-2.6.3.dev1}/attic/skip/svd3x3_sse.cpp +0 -0
  156. {libigl-2.6.2 → libigl-2.6.3.dev1}/attic/skip/trackball.cpp +0 -0
  157. {libigl-2.6.2 → libigl-2.6.3.dev1}/attic/skip/transpose_blocks.cpp +0 -0
  158. {libigl-2.6.2 → libigl-2.6.3.dev1}/attic/skip/unique_rows.cpp +0 -0
  159. {libigl-2.6.2 → libigl-2.6.3.dev1}/attic/skip/voxel_grid.cpp +0 -0
  160. {libigl-2.6.2 → libigl-2.6.3.dev1}/attic/skip/writePLY.cpp +0 -0
  161. {libigl-2.6.2 → libigl-2.6.3.dev1}/attic/skip/writeSTL.cpp +0 -0
  162. {libigl-2.6.2 → libigl-2.6.3.dev1}/attic/skip/writeWRL.cpp +0 -0
  163. {libigl-2.6.2 → libigl-2.6.3.dev1}/attic/todo-old/MeshBooleanType.cpp +0 -0
  164. {libigl-2.6.2 → libigl-2.6.3.dev1}/attic/todo-old/NormalType.cpp +0 -0
  165. {libigl-2.6.2 → libigl-2.6.3.dev1}/attic/todo-old/collapse_edge.cpp +0 -0
  166. {libigl-2.6.2 → libigl-2.6.3.dev1}/attic/todo-old/copyleft/copyleft_cgal_assign.cpp +0 -0
  167. {libigl-2.6.2 → libigl-2.6.3.dev1}/attic/todo-old/copyleft/copyleft_cgal_assign_scalar.cpp +0 -0
  168. {libigl-2.6.2 → libigl-2.6.3.dev1}/attic/todo-old/copyleft/copyleft_cgal_cell_adjacency.cpp +0 -0
  169. {libigl-2.6.2 → libigl-2.6.3.dev1}/attic/todo-old/copyleft/copyleft_cgal_closest_facet.cpp +0 -0
  170. {libigl-2.6.2 → libigl-2.6.3.dev1}/attic/todo-old/copyleft/copyleft_cgal_complex_to_mesh.cpp +0 -0
  171. {libigl-2.6.2 → libigl-2.6.3.dev1}/attic/todo-old/copyleft/copyleft_cgal_component_inside_component.cpp +0 -0
  172. {libigl-2.6.2 → libigl-2.6.3.dev1}/attic/todo-old/copyleft/copyleft_cgal_convex_hull.cpp +0 -0
  173. {libigl-2.6.2 → libigl-2.6.3.dev1}/attic/todo-old/copyleft/copyleft_cgal_delaunay_triangulation.cpp +0 -0
  174. {libigl-2.6.2 → libigl-2.6.3.dev1}/attic/todo-old/copyleft/copyleft_cgal_extract_cells.cpp +0 -0
  175. {libigl-2.6.2 → libigl-2.6.3.dev1}/attic/todo-old/copyleft/copyleft_cgal_extract_feature.cpp +0 -0
  176. {libigl-2.6.2 → libigl-2.6.3.dev1}/attic/todo-old/copyleft/copyleft_cgal_fast_winding_number.cpp +0 -0
  177. {libigl-2.6.2 → libigl-2.6.3.dev1}/attic/todo-old/copyleft/copyleft_cgal_half_space_box.cpp +0 -0
  178. {libigl-2.6.2 → libigl-2.6.3.dev1}/attic/todo-old/copyleft/copyleft_cgal_hausdorff.cpp +0 -0
  179. {libigl-2.6.2 → libigl-2.6.3.dev1}/attic/todo-old/copyleft/copyleft_cgal_incircle.cpp +0 -0
  180. {libigl-2.6.2 → libigl-2.6.3.dev1}/attic/todo-old/copyleft/copyleft_cgal_insert_into_cdt.cpp +0 -0
  181. {libigl-2.6.2 → libigl-2.6.3.dev1}/attic/todo-old/copyleft/copyleft_cgal_insphere.cpp +0 -0
  182. {libigl-2.6.2 → libigl-2.6.3.dev1}/attic/todo-old/copyleft/copyleft_cgal_intersect_other.cpp +0 -0
  183. {libigl-2.6.2 → libigl-2.6.3.dev1}/attic/todo-old/copyleft/copyleft_cgal_intersect_with_half_space.cpp +0 -0
  184. {libigl-2.6.2 → libigl-2.6.3.dev1}/attic/todo-old/copyleft/copyleft_cgal_lexicographic_triangulation.cpp +0 -0
  185. {libigl-2.6.2 → libigl-2.6.3.dev1}/attic/todo-old/copyleft/copyleft_cgal_mesh_boolean.cpp +0 -0
  186. {libigl-2.6.2 → libigl-2.6.3.dev1}/attic/todo-old/copyleft/copyleft_cgal_mesh_boolean_type_to_funcs.cpp +0 -0
  187. {libigl-2.6.2 → libigl-2.6.3.dev1}/attic/todo-old/copyleft/copyleft_cgal_mesh_to_cgal_triangle_list.cpp +0 -0
  188. {libigl-2.6.2 → libigl-2.6.3.dev1}/attic/todo-old/copyleft/copyleft_cgal_mesh_to_polyhedron.cpp +0 -0
  189. {libigl-2.6.2 → libigl-2.6.3.dev1}/attic/todo-old/copyleft/copyleft_cgal_minkowski_sum.cpp +0 -0
  190. {libigl-2.6.2 → libigl-2.6.3.dev1}/attic/todo-old/copyleft/copyleft_cgal_order_facets_around_edge.cpp +0 -0
  191. {libigl-2.6.2 → libigl-2.6.3.dev1}/attic/todo-old/copyleft/copyleft_cgal_order_facets_around_edges.cpp +0 -0
  192. {libigl-2.6.2 → libigl-2.6.3.dev1}/attic/todo-old/copyleft/copyleft_cgal_orient2D.cpp +0 -0
  193. {libigl-2.6.2 → libigl-2.6.3.dev1}/attic/todo-old/copyleft/copyleft_cgal_orient3D.cpp +0 -0
  194. {libigl-2.6.2 → libigl-2.6.3.dev1}/attic/todo-old/copyleft/copyleft_cgal_outer_element.cpp +0 -0
  195. {libigl-2.6.2 → libigl-2.6.3.dev1}/attic/todo-old/copyleft/copyleft_cgal_outer_facet.cpp +0 -0
  196. {libigl-2.6.2 → libigl-2.6.3.dev1}/attic/todo-old/copyleft/copyleft_cgal_outer_hull.cpp +0 -0
  197. {libigl-2.6.2 → libigl-2.6.3.dev1}/attic/todo-old/copyleft/copyleft_cgal_peel_outer_hull_layers.cpp +0 -0
  198. {libigl-2.6.2 → libigl-2.6.3.dev1}/attic/todo-old/copyleft/copyleft_cgal_peel_winding_number_layers.cpp +0 -0
  199. {libigl-2.6.2 → libigl-2.6.3.dev1}/attic/todo-old/copyleft/copyleft_cgal_piecewise_constant_winding_number.cpp +0 -0
  200. {libigl-2.6.2 → libigl-2.6.3.dev1}/attic/todo-old/copyleft/copyleft_cgal_point_areas.cpp +0 -0
  201. {libigl-2.6.2 → libigl-2.6.3.dev1}/attic/todo-old/copyleft/copyleft_cgal_point_mesh_squared_distance.cpp +0 -0
  202. {libigl-2.6.2 → libigl-2.6.3.dev1}/attic/todo-old/copyleft/copyleft_cgal_point_segment_squared_distance.cpp +0 -0
  203. {libigl-2.6.2 → libigl-2.6.3.dev1}/attic/todo-old/copyleft/copyleft_cgal_point_solid_signed_squared_distance.cpp +0 -0
  204. {libigl-2.6.2 → libigl-2.6.3.dev1}/attic/todo-old/copyleft/copyleft_cgal_point_triangle_squared_distance.cpp +0 -0
  205. {libigl-2.6.2 → libigl-2.6.3.dev1}/attic/todo-old/copyleft/copyleft_cgal_points_inside_component.cpp +0 -0
  206. {libigl-2.6.2 → libigl-2.6.3.dev1}/attic/todo-old/copyleft/copyleft_cgal_polyhedron_to_mesh.cpp +0 -0
  207. {libigl-2.6.2 → libigl-2.6.3.dev1}/attic/todo-old/copyleft/copyleft_cgal_projected_cdt.cpp +0 -0
  208. {libigl-2.6.2 → libigl-2.6.3.dev1}/attic/todo-old/copyleft/copyleft_cgal_projected_delaunay.cpp +0 -0
  209. {libigl-2.6.2 → libigl-2.6.3.dev1}/attic/todo-old/copyleft/copyleft_cgal_propagate_winding_numbers.cpp +0 -0
  210. {libigl-2.6.2 → libigl-2.6.3.dev1}/attic/todo-old/copyleft/copyleft_cgal_read_triangle_mesh.cpp +0 -0
  211. {libigl-2.6.2 → libigl-2.6.3.dev1}/attic/todo-old/copyleft/copyleft_cgal_relabel_small_immersed_cells.cpp +0 -0
  212. {libigl-2.6.2 → libigl-2.6.3.dev1}/attic/todo-old/copyleft/copyleft_cgal_remesh_intersections.cpp +0 -0
  213. {libigl-2.6.2 → libigl-2.6.3.dev1}/attic/todo-old/copyleft/copyleft_cgal_remesh_self_intersections.cpp +0 -0
  214. {libigl-2.6.2 → libigl-2.6.3.dev1}/attic/todo-old/copyleft/copyleft_cgal_resolve_intersections.cpp +0 -0
  215. {libigl-2.6.2 → libigl-2.6.3.dev1}/attic/todo-old/copyleft/copyleft_cgal_row_to_point.cpp +0 -0
  216. {libigl-2.6.2 → libigl-2.6.3.dev1}/attic/todo-old/copyleft/copyleft_cgal_segment_segment_squared_distance.cpp +0 -0
  217. {libigl-2.6.2 → libigl-2.6.3.dev1}/attic/todo-old/copyleft/copyleft_cgal_signed_distance_isosurface.cpp +0 -0
  218. {libigl-2.6.2 → libigl-2.6.3.dev1}/attic/todo-old/copyleft/copyleft_cgal_snap_rounding.cpp +0 -0
  219. {libigl-2.6.2 → libigl-2.6.3.dev1}/attic/todo-old/copyleft/copyleft_cgal_string_to_mesh_boolean_type.cpp +0 -0
  220. {libigl-2.6.2 → libigl-2.6.3.dev1}/attic/todo-old/copyleft/copyleft_cgal_subdivide_segments.cpp +0 -0
  221. {libigl-2.6.2 → libigl-2.6.3.dev1}/attic/todo-old/copyleft/copyleft_cgal_submesh_aabb_tree.cpp +0 -0
  222. {libigl-2.6.2 → libigl-2.6.3.dev1}/attic/todo-old/copyleft/copyleft_cgal_triangle_triangle_squared_distance.cpp +0 -0
  223. {libigl-2.6.2 → libigl-2.6.3.dev1}/attic/todo-old/copyleft/copyleft_cgal_trim_with_solid.cpp +0 -0
  224. {libigl-2.6.2 → libigl-2.6.3.dev1}/attic/todo-old/copyleft/copyleft_cgal_wire_mesh.cpp +0 -0
  225. {libigl-2.6.2 → libigl-2.6.3.dev1}/attic/todo-old/copyleft/copyleft_comiso_miq.cpp +0 -0
  226. {libigl-2.6.2 → libigl-2.6.3.dev1}/attic/todo-old/copyleft/copyleft_cork_mesh_boolean.cpp +0 -0
  227. {libigl-2.6.2 → libigl-2.6.3.dev1}/attic/todo-old/copyleft/copyleft_marching_cubes.cpp +0 -0
  228. {libigl-2.6.2 → libigl-2.6.3.dev1}/attic/todo-old/copyleft/copyleft_offset_surface.cpp +0 -0
  229. {libigl-2.6.2 → libigl-2.6.3.dev1}/attic/todo-old/copyleft/copyleft_opengl2_render_to_tga.cpp +0 -0
  230. {libigl-2.6.2 → libigl-2.6.3.dev1}/attic/todo-old/copyleft/copyleft_opengl2_texture_from_tga.cpp +0 -0
  231. {libigl-2.6.2 → libigl-2.6.3.dev1}/attic/todo-old/copyleft/copyleft_progressive_hulls.cpp +0 -0
  232. {libigl-2.6.2 → libigl-2.6.3.dev1}/attic/todo-old/copyleft/copyleft_progressive_hulls_cost_and_placement.cpp +0 -0
  233. {libigl-2.6.2 → libigl-2.6.3.dev1}/attic/todo-old/copyleft/copyleft_quadprog.cpp +0 -0
  234. {libigl-2.6.2 → libigl-2.6.3.dev1}/attic/todo-old/copyleft/copyleft_swept_volume.cpp +0 -0
  235. {libigl-2.6.2 → libigl-2.6.3.dev1}/attic/todo-old/copyleft/copyleft_tetgen_mesh_with_skeleton.cpp +0 -0
  236. {libigl-2.6.2 → libigl-2.6.3.dev1}/attic/todo-old/copyleft/copyleft_tetgen_read_into_tetgenio.cpp +0 -0
  237. {libigl-2.6.2 → libigl-2.6.3.dev1}/attic/todo-old/copyleft/copyleft_tetgen_tetrahedralize.cpp +0 -0
  238. {libigl-2.6.2 → libigl-2.6.3.dev1}/attic/todo-old/dijkstra.cpp +0 -0
  239. {libigl-2.6.2 → libigl-2.6.3.dev1}/attic/todo-old/embree_bone_heat.cpp +0 -0
  240. {libigl-2.6.2 → libigl-2.6.3.dev1}/attic/todo-old/embree_reorient_facets_raycast.cpp +0 -0
  241. {libigl-2.6.2 → libigl-2.6.3.dev1}/attic/todo-old/fast_winding_number.cpp +0 -0
  242. {libigl-2.6.2 → libigl-2.6.3.dev1}/attic/todo-old/flip_edge.cpp +0 -0
  243. {libigl-2.6.2 → libigl-2.6.3.dev1}/attic/todo-old/knn.cpp +0 -0
  244. {libigl-2.6.2 → libigl-2.6.3.dev1}/attic/todo-old/mosek_mosek_guarded.cpp +0 -0
  245. {libigl-2.6.2 → libigl-2.6.3.dev1}/attic/todo-old/mosek_mosek_linprog.cpp +0 -0
  246. {libigl-2.6.2 → libigl-2.6.3.dev1}/attic/todo-old/octree.cpp +0 -0
  247. {libigl-2.6.2 → libigl-2.6.3.dev1}/attic/todo-old/per_vertex_point_to_plane_quadrics.cpp +0 -0
  248. {libigl-2.6.2 → libigl-2.6.3.dev1}/attic/todo-old/png_readPNG.cpp +0 -0
  249. {libigl-2.6.2 → libigl-2.6.3.dev1}/attic/todo-old/png_render_to_png.cpp +0 -0
  250. {libigl-2.6.2 → libigl-2.6.3.dev1}/attic/todo-old/png_render_to_png_async.cpp +0 -0
  251. {libigl-2.6.2 → libigl-2.6.3.dev1}/attic/todo-old/png_texture_from_file.cpp +0 -0
  252. {libigl-2.6.2 → libigl-2.6.3.dev1}/attic/todo-old/png_texture_from_png.cpp +0 -0
  253. {libigl-2.6.2 → libigl-2.6.3.dev1}/attic/todo-old/png_writePNG.cpp +0 -0
  254. {libigl-2.6.2 → libigl-2.6.3.dev1}/attic/todo-old/pseudonormal_test.cpp +0 -0
  255. {libigl-2.6.2 → libigl-2.6.3.dev1}/attic/todo-old/readWRL.cpp +0 -0
  256. {libigl-2.6.2 → libigl-2.6.3.dev1}/attic/todo-old/remesh_along_isoline.cpp +0 -0
  257. {libigl-2.6.2 → libigl-2.6.3.dev1}/attic/todo-old/seam_edges.cpp +0 -0
  258. {libigl-2.6.2 → libigl-2.6.3.dev1}/attic/todo-old/shortest_edge_and_midpoint.cpp +0 -0
  259. {libigl-2.6.2 → libigl-2.6.3.dev1}/attic/todo-old/squared_edge_lengths.cpp +0 -0
  260. {libigl-2.6.2 → libigl-2.6.3.dev1}/attic/todo-old/straighten_seams.cpp +0 -0
  261. {libigl-2.6.2 → libigl-2.6.3.dev1}/attic/todo-old/swept_volume_signed_distance.cpp +0 -0
  262. {libigl-2.6.2 → libigl-2.6.3.dev1}/attic/todo-old/triangle_cdt.cpp +0 -0
  263. {libigl-2.6.2 → libigl-2.6.3.dev1}/attic/todo-old/unzip_corners.cpp +0 -0
  264. {libigl-2.6.2 → libigl-2.6.3.dev1}/attic/todo-old/writeBF.cpp +0 -0
  265. {libigl-2.6.2 → libigl-2.6.3.dev1}/attic/todo-old/writeDMAT.cpp +0 -0
  266. {libigl-2.6.2 → libigl-2.6.3.dev1}/attic/todo-old/writeMESH.cpp +0 -0
  267. {libigl-2.6.2 → libigl-2.6.3.dev1}/attic/todo-old/writeTGF.cpp +0 -0
  268. {libigl-2.6.2 → libigl-2.6.3.dev1}/attic/todo-old/xml_writeDAE.cpp +0 -0
  269. {libigl-2.6.2 → libigl-2.6.3.dev1}/attic/todo-old/xml_write_triangle_mesh.cpp +0 -0
  270. {libigl-2.6.2 → libigl-2.6.3.dev1}/classes/AABB.cpp +0 -0
  271. {libigl-2.6.2 → libigl-2.6.3.dev1}/classes/classes.cpp +0 -0
  272. {libigl-2.6.2 → libigl-2.6.3.dev1}/cmake/CXXFeatures.cmake +0 -0
  273. {libigl-2.6.2 → libigl-2.6.3.dev1}/cmake/FindLIBIGL.cmake +0 -0
  274. {libigl-2.6.2 → libigl-2.6.3.dev1}/cmake/UseColors.cmake +0 -0
  275. {libigl-2.6.2 → libigl-2.6.3.dev1}/cmake/Warnings.cmake +0 -0
  276. {libigl-2.6.2 → libigl-2.6.3.dev1}/include/default_types.h +0 -0
  277. {libigl-2.6.2 → libigl-2.6.3.dev1}/missing.sh +0 -0
  278. {libigl-2.6.2 → libigl-2.6.3.dev1}/mkdocs.yml +0 -0
  279. {libigl-2.6.2 → libigl-2.6.3.dev1}/postBuild +0 -0
  280. {libigl-2.6.2 → libigl-2.6.3.dev1}/priority.txt +0 -0
  281. {libigl-2.6.2 → libigl-2.6.3.dev1}/scripts/basic_function.mako +0 -0
  282. {libigl-2.6.2 → libigl-2.6.3.dev1}/scripts/blender_igl_export.py +0 -0
  283. {libigl-2.6.2 → libigl-2.6.3.dev1}/scripts/generate_bindings.py +0 -0
  284. {libigl-2.6.2 → libigl-2.6.3.dev1}/scripts/make_lean.py +0 -0
  285. {libigl-2.6.2 → libigl-2.6.3.dev1}/scripts/parser.py +0 -0
  286. {libigl-2.6.2 → libigl-2.6.3.dev1}/src/AABB.cpp +0 -0
  287. {libigl-2.6.2 → libigl-2.6.3.dev1}/src/FileEncoding.cpp +0 -0
  288. {libigl-2.6.2 → libigl-2.6.3.dev1}/src/MappingEnergyType.cpp +0 -0
  289. {libigl-2.6.2 → libigl-2.6.3.dev1}/src/MassMatrixType.cpp +0 -0
  290. {libigl-2.6.2 → libigl-2.6.3.dev1}/src/OrientedBoundingBoxMinimizeType.cpp +0 -0
  291. {libigl-2.6.2 → libigl-2.6.3.dev1}/src/adjacency_list.cpp +0 -0
  292. {libigl-2.6.2 → libigl-2.6.3.dev1}/src/adjacency_matrix.cpp +0 -0
  293. {libigl-2.6.2 → libigl-2.6.3.dev1}/src/all_pairs_distances.cpp +0 -0
  294. {libigl-2.6.2 → libigl-2.6.3.dev1}/src/arap.cpp +0 -0
  295. {libigl-2.6.2 → libigl-2.6.3.dev1}/src/average_from_edges_onto_vertices.cpp +0 -0
  296. {libigl-2.6.2 → libigl-2.6.3.dev1}/src/average_onto_faces.cpp +0 -0
  297. {libigl-2.6.2 → libigl-2.6.3.dev1}/src/average_onto_vertices.cpp +0 -0
  298. {libigl-2.6.2 → libigl-2.6.3.dev1}/src/avg_edge_length.cpp +0 -0
  299. {libigl-2.6.2 → libigl-2.6.3.dev1}/src/barycenter.cpp +0 -0
  300. {libigl-2.6.2 → libigl-2.6.3.dev1}/src/barycentric_coordinates.cpp +0 -0
  301. {libigl-2.6.2 → libigl-2.6.3.dev1}/src/bbw.cpp +0 -0
  302. {libigl-2.6.2 → libigl-2.6.3.dev1}/src/bfs_orient.cpp +0 -0
  303. {libigl-2.6.2 → libigl-2.6.3.dev1}/src/biharmonic_coordinates.cpp +0 -0
  304. {libigl-2.6.2 → libigl-2.6.3.dev1}/src/bijective_composite_harmonic_mapping.cpp +0 -0
  305. {libigl-2.6.2 → libigl-2.6.3.dev1}/src/blue_noise.cpp +0 -0
  306. {libigl-2.6.2 → libigl-2.6.3.dev1}/src/boundary_facets.cpp +0 -0
  307. {libigl-2.6.2 → libigl-2.6.3.dev1}/src/boundary_loop.cpp +0 -0
  308. {libigl-2.6.2 → libigl-2.6.3.dev1}/src/bounding_box.cpp +0 -0
  309. {libigl-2.6.2 → libigl-2.6.3.dev1}/src/bounding_box_diagonal.cpp +0 -0
  310. {libigl-2.6.2 → libigl-2.6.3.dev1}/src/circulation.cpp +0 -0
  311. {libigl-2.6.2 → libigl-2.6.3.dev1}/src/circumradius.cpp +0 -0
  312. {libigl-2.6.2 → libigl-2.6.3.dev1}/src/collapse_edge.cpp +0 -0
  313. {libigl-2.6.2 → libigl-2.6.3.dev1}/src/comb_cross_field.cpp +0 -0
  314. {libigl-2.6.2 → libigl-2.6.3.dev1}/src/comb_frame_field.cpp +0 -0
  315. {libigl-2.6.2 → libigl-2.6.3.dev1}/src/compute_frame_field_bisectors.cpp +0 -0
  316. {libigl-2.6.2 → libigl-2.6.3.dev1}/src/connected_components.cpp +0 -0
  317. {libigl-2.6.2 → libigl-2.6.3.dev1}/src/copyleft/cgal/convex_hull.cpp +0 -0
  318. {libigl-2.6.2 → libigl-2.6.3.dev1}/src/copyleft/cgal/fast_winding_number.cpp +0 -0
  319. {libigl-2.6.2 → libigl-2.6.3.dev1}/src/copyleft/cgal/intersect_other.cpp +0 -0
  320. {libigl-2.6.2 → libigl-2.6.3.dev1}/src/copyleft/cgal/intersect_with_half_space.cpp +0 -0
  321. {libigl-2.6.2 → libigl-2.6.3.dev1}/src/copyleft/cgal/mesh_boolean.cpp +0 -0
  322. {libigl-2.6.2 → libigl-2.6.3.dev1}/src/copyleft/cgal/module.cpp +0 -0
  323. {libigl-2.6.2 → libigl-2.6.3.dev1}/src/copyleft/cgal/oriented_bounding_box.cpp +0 -0
  324. {libigl-2.6.2 → libigl-2.6.3.dev1}/src/copyleft/cgal/point_areas.cpp +0 -0
  325. {libigl-2.6.2 → libigl-2.6.3.dev1}/src/copyleft/cgal/remesh_self_intersections.cpp +0 -0
  326. {libigl-2.6.2 → libigl-2.6.3.dev1}/src/copyleft/cgal/trim_with_solid.cpp +0 -0
  327. {libigl-2.6.2 → libigl-2.6.3.dev1}/src/copyleft/module.cpp +0 -0
  328. {libigl-2.6.2 → libigl-2.6.3.dev1}/src/copyleft/progressive_hulls.cpp +0 -0
  329. {libigl-2.6.2 → libigl-2.6.3.dev1}/src/copyleft/tetgen/module.cpp +0 -0
  330. {libigl-2.6.2 → libigl-2.6.3.dev1}/src/copyleft/tetgen/tetrahedralize.cpp +0 -0
  331. {libigl-2.6.2 → libigl-2.6.3.dev1}/src/cotmatrix.cpp +0 -0
  332. {libigl-2.6.2 → libigl-2.6.3.dev1}/src/cotmatrix_entries.cpp +0 -0
  333. {libigl-2.6.2 → libigl-2.6.3.dev1}/src/cotmatrix_intrinsic.cpp +0 -0
  334. {libigl-2.6.2 → libigl-2.6.3.dev1}/src/cross_field_mismatch.cpp +0 -0
  335. {libigl-2.6.2 → libigl-2.6.3.dev1}/src/crouzeix_raviart_cotmatrix.cpp +0 -0
  336. {libigl-2.6.2 → libigl-2.6.3.dev1}/src/crouzeix_raviart_massmatrix.cpp +0 -0
  337. {libigl-2.6.2 → libigl-2.6.3.dev1}/src/curved_hessian_energy.cpp +0 -0
  338. {libigl-2.6.2 → libigl-2.6.3.dev1}/src/cut_mesh.cpp +0 -0
  339. {libigl-2.6.2 → libigl-2.6.3.dev1}/src/cut_mesh_from_singularities.cpp +0 -0
  340. {libigl-2.6.2 → libigl-2.6.3.dev1}/src/cut_to_disk.cpp +0 -0
  341. {libigl-2.6.2 → libigl-2.6.3.dev1}/src/cylinder.cpp +0 -0
  342. {libigl-2.6.2 → libigl-2.6.3.dev1}/src/decimate.cpp +0 -0
  343. {libigl-2.6.2 → libigl-2.6.3.dev1}/src/dihedral_angles.cpp +0 -0
  344. {libigl-2.6.2 → libigl-2.6.3.dev1}/src/dihedral_angles_intrinsic.cpp +0 -0
  345. {libigl-2.6.2 → libigl-2.6.3.dev1}/src/doublearea.cpp +0 -0
  346. {libigl-2.6.2 → libigl-2.6.3.dev1}/src/dual_contouring.cpp +0 -0
  347. {libigl-2.6.2 → libigl-2.6.3.dev1}/src/ears.cpp +0 -0
  348. {libigl-2.6.2 → libigl-2.6.3.dev1}/src/edge_flaps.cpp +0 -0
  349. {libigl-2.6.2 → libigl-2.6.3.dev1}/src/edge_lengths.cpp +0 -0
  350. {libigl-2.6.2 → libigl-2.6.3.dev1}/src/edges.cpp +0 -0
  351. {libigl-2.6.2 → libigl-2.6.3.dev1}/src/embree/EmbreeIntersector.cpp +0 -0
  352. {libigl-2.6.2 → libigl-2.6.3.dev1}/src/embree/ambient_occlusion.cpp +0 -0
  353. {libigl-2.6.2 → libigl-2.6.3.dev1}/src/embree/module.cpp +0 -0
  354. {libigl-2.6.2 → libigl-2.6.3.dev1}/src/embree/reorient_facets_raycast.cpp +0 -0
  355. {libigl-2.6.2 → libigl-2.6.3.dev1}/src/embree/shape_diameter_function.cpp +0 -0
  356. {libigl-2.6.2 → libigl-2.6.3.dev1}/src/exact_geodesic.cpp +0 -0
  357. {libigl-2.6.2 → libigl-2.6.3.dev1}/src/face_areas.cpp +0 -0
  358. {libigl-2.6.2 → libigl-2.6.3.dev1}/src/facet_adjacency_matrix.cpp +0 -0
  359. {libigl-2.6.2 → libigl-2.6.3.dev1}/src/facet_components.cpp +0 -0
  360. {libigl-2.6.2 → libigl-2.6.3.dev1}/src/false_barycentric_subdivision.cpp +0 -0
  361. {libigl-2.6.2 → libigl-2.6.3.dev1}/src/fast_winding_number.cpp +0 -0
  362. {libigl-2.6.2 → libigl-2.6.3.dev1}/src/find_cross_field_singularities.cpp +0 -0
  363. {libigl-2.6.2 → libigl-2.6.3.dev1}/src/gaussian_curvature.cpp +0 -0
  364. {libigl-2.6.2 → libigl-2.6.3.dev1}/src/grad.cpp +0 -0
  365. {libigl-2.6.2 → libigl-2.6.3.dev1}/src/grid.cpp +0 -0
  366. {libigl-2.6.2 → libigl-2.6.3.dev1}/src/harmonic.cpp +0 -0
  367. {libigl-2.6.2 → libigl-2.6.3.dev1}/src/heat_geodesics.cpp +0 -0
  368. {libigl-2.6.2 → libigl-2.6.3.dev1}/src/hessian.cpp +0 -0
  369. {libigl-2.6.2 → libigl-2.6.3.dev1}/src/hessian_energy.cpp +0 -0
  370. {libigl-2.6.2 → libigl-2.6.3.dev1}/src/icosahedron.cpp +0 -0
  371. {libigl-2.6.2 → libigl-2.6.3.dev1}/src/in_element.cpp +0 -0
  372. {libigl-2.6.2 → libigl-2.6.3.dev1}/src/inradius.cpp +0 -0
  373. {libigl-2.6.2 → libigl-2.6.3.dev1}/src/internal_angles.cpp +0 -0
  374. {libigl-2.6.2 → libigl-2.6.3.dev1}/src/intrinsic_delaunay_cotmatrix.cpp +0 -0
  375. {libigl-2.6.2 → libigl-2.6.3.dev1}/src/intrinsic_delaunay_triangulation.cpp +0 -0
  376. {libigl-2.6.2 → libigl-2.6.3.dev1}/src/is_border_vertex.cpp +0 -0
  377. {libigl-2.6.2 → libigl-2.6.3.dev1}/src/is_edge_manifold.cpp +0 -0
  378. {libigl-2.6.2 → libigl-2.6.3.dev1}/src/is_intrinsic_delaunay.cpp +0 -0
  379. {libigl-2.6.2 → libigl-2.6.3.dev1}/src/is_vertex_manifold.cpp +0 -0
  380. {libigl-2.6.2 → libigl-2.6.3.dev1}/src/ismember_rows.cpp +0 -0
  381. {libigl-2.6.2 → libigl-2.6.3.dev1}/src/isolines.cpp +0 -0
  382. {libigl-2.6.2 → libigl-2.6.3.dev1}/src/isolines_intrinsic.cpp +0 -0
  383. {libigl-2.6.2 → libigl-2.6.3.dev1}/src/kelvinlets.cpp +0 -0
  384. {libigl-2.6.2 → libigl-2.6.3.dev1}/src/knn.cpp +0 -0
  385. {libigl-2.6.2 → libigl-2.6.3.dev1}/src/lipschitz_octree.cpp +0 -0
  386. {libigl-2.6.2 → libigl-2.6.3.dev1}/src/local_basis.cpp +0 -0
  387. {libigl-2.6.2 → libigl-2.6.3.dev1}/src/loop.cpp +0 -0
  388. {libigl-2.6.2 → libigl-2.6.3.dev1}/src/lscm.cpp +0 -0
  389. {libigl-2.6.2 → libigl-2.6.3.dev1}/src/map_vertices_to_circle.cpp +0 -0
  390. {libigl-2.6.2 → libigl-2.6.3.dev1}/src/marching_cubes.cpp +0 -0
  391. {libigl-2.6.2 → libigl-2.6.3.dev1}/src/massmatrix.cpp +0 -0
  392. {libigl-2.6.2 → libigl-2.6.3.dev1}/src/massmatrix_intrinsic.cpp +0 -0
  393. {libigl-2.6.2 → libigl-2.6.3.dev1}/src/matlab_format.cpp +0 -0
  394. {libigl-2.6.2 → libigl-2.6.3.dev1}/src/min_quad_with_fixed.cpp +0 -0
  395. {libigl-2.6.2 → libigl-2.6.3.dev1}/src/module.cpp +0 -0
  396. {libigl-2.6.2 → libigl-2.6.3.dev1}/src/moments.cpp +0 -0
  397. {libigl-2.6.2 → libigl-2.6.3.dev1}/src/noop.cpp +0 -0
  398. {libigl-2.6.2 → libigl-2.6.3.dev1}/src/octree.cpp +0 -0
  399. {libigl-2.6.2 → libigl-2.6.3.dev1}/src/offset_surface.cpp +0 -0
  400. {libigl-2.6.2 → libigl-2.6.3.dev1}/src/on_boundary.cpp +0 -0
  401. {libigl-2.6.2 → libigl-2.6.3.dev1}/src/orient_halfedges.cpp +0 -0
  402. {libigl-2.6.2 → libigl-2.6.3.dev1}/src/oriented_bounding_box.cpp +0 -0
  403. {libigl-2.6.2 → libigl-2.6.3.dev1}/src/oriented_facets.cpp +0 -0
  404. {libigl-2.6.2 → libigl-2.6.3.dev1}/src/per_face_normals.cpp +0 -0
  405. {libigl-2.6.2 → libigl-2.6.3.dev1}/src/per_vertex_normals.cpp +0 -0
  406. {libigl-2.6.2 → libigl-2.6.3.dev1}/src/point_mesh_squared_distance.cpp +0 -0
  407. {libigl-2.6.2 → libigl-2.6.3.dev1}/src/polar_svd.cpp +0 -0
  408. {libigl-2.6.2 → libigl-2.6.3.dev1}/src/polygon_corners.cpp +0 -0
  409. {libigl-2.6.2 → libigl-2.6.3.dev1}/src/polygons_to_triangles.cpp +0 -0
  410. {libigl-2.6.2 → libigl-2.6.3.dev1}/src/principal_curvature.cpp +0 -0
  411. {libigl-2.6.2 → libigl-2.6.3.dev1}/src/project.cpp +0 -0
  412. {libigl-2.6.2 → libigl-2.6.3.dev1}/src/project_to_line.cpp +0 -0
  413. {libigl-2.6.2 → libigl-2.6.3.dev1}/src/project_to_line_segment.cpp +0 -0
  414. {libigl-2.6.2 → libigl-2.6.3.dev1}/src/qslim.cpp +0 -0
  415. {libigl-2.6.2 → libigl-2.6.3.dev1}/src/quad_grid.cpp +0 -0
  416. {libigl-2.6.2 → libigl-2.6.3.dev1}/src/random_points_on_mesh.cpp +0 -0
  417. {libigl-2.6.2 → libigl-2.6.3.dev1}/src/ray_mesh_intersect.cpp +0 -0
  418. {libigl-2.6.2 → libigl-2.6.3.dev1}/src/readDMAT.cpp +0 -0
  419. {libigl-2.6.2 → libigl-2.6.3.dev1}/src/readMESH.cpp +0 -0
  420. {libigl-2.6.2 → libigl-2.6.3.dev1}/src/readMSH.cpp +0 -0
  421. {libigl-2.6.2 → libigl-2.6.3.dev1}/src/readOBJ.cpp +0 -0
  422. {libigl-2.6.2 → libigl-2.6.3.dev1}/src/readOFF.cpp +0 -0
  423. {libigl-2.6.2 → libigl-2.6.3.dev1}/src/read_triangle_mesh.cpp +0 -0
  424. {libigl-2.6.2 → libigl-2.6.3.dev1}/src/remove_duplicate_vertices.cpp +0 -0
  425. {libigl-2.6.2 → libigl-2.6.3.dev1}/src/remove_unreferenced.cpp +0 -0
  426. {libigl-2.6.2 → libigl-2.6.3.dev1}/src/rotate_vectors.cpp +0 -0
  427. {libigl-2.6.2 → libigl-2.6.3.dev1}/src/signed_distance.cpp +0 -0
  428. {libigl-2.6.2 → libigl-2.6.3.dev1}/src/slim.cpp +0 -0
  429. {libigl-2.6.2 → libigl-2.6.3.dev1}/src/sparse_map_noop.cpp +0 -0
  430. {libigl-2.6.2 → libigl-2.6.3.dev1}/src/sparse_map_shape.cpp +0 -0
  431. {libigl-2.6.2 → libigl-2.6.3.dev1}/src/sparse_noop.cpp +0 -0
  432. {libigl-2.6.2 → libigl-2.6.3.dev1}/src/sparse_shape.cpp +0 -0
  433. {libigl-2.6.2 → libigl-2.6.3.dev1}/src/split_nonmanifold.cpp +0 -0
  434. {libigl-2.6.2 → libigl-2.6.3.dev1}/src/squared_edge_lengths.cpp +0 -0
  435. {libigl-2.6.2 → libigl-2.6.3.dev1}/src/triangle/module.cpp +0 -0
  436. {libigl-2.6.2 → libigl-2.6.3.dev1}/src/triangle/scaf.cpp +0 -0
  437. {libigl-2.6.2 → libigl-2.6.3.dev1}/src/triangle/triangulate.cpp +0 -0
  438. {libigl-2.6.2 → libigl-2.6.3.dev1}/src/triangle_fan.cpp +0 -0
  439. {libigl-2.6.2 → libigl-2.6.3.dev1}/src/triangle_triangle_adjacency.cpp +0 -0
  440. {libigl-2.6.2 → libigl-2.6.3.dev1}/src/triangulated_grid.cpp +0 -0
  441. {libigl-2.6.2 → libigl-2.6.3.dev1}/src/unique_edge_map.cpp +0 -0
  442. {libigl-2.6.2 → libigl-2.6.3.dev1}/src/unique_simplices.cpp +0 -0
  443. {libigl-2.6.2 → libigl-2.6.3.dev1}/src/unique_sparse_voxel_corners.cpp +0 -0
  444. {libigl-2.6.2 → libigl-2.6.3.dev1}/src/unproject.cpp +0 -0
  445. {libigl-2.6.2 → libigl-2.6.3.dev1}/src/upsample.cpp +0 -0
  446. {libigl-2.6.2 → libigl-2.6.3.dev1}/src/vertex_components.cpp +0 -0
  447. {libigl-2.6.2 → libigl-2.6.3.dev1}/src/vertex_triangle_adjacency.cpp +0 -0
  448. {libigl-2.6.2 → libigl-2.6.3.dev1}/src/volume.cpp +0 -0
  449. {libigl-2.6.2 → libigl-2.6.3.dev1}/src/voxel_grid.cpp +0 -0
  450. {libigl-2.6.2 → libigl-2.6.3.dev1}/src/winding_number.cpp +0 -0
  451. {libigl-2.6.2 → libigl-2.6.3.dev1}/src/writeDMAT.cpp +0 -0
  452. {libigl-2.6.2 → libigl-2.6.3.dev1}/src/writeMESH.cpp +0 -0
  453. {libigl-2.6.2 → libigl-2.6.3.dev1}/src/writeMSH.cpp +0 -0
  454. {libigl-2.6.2 → libigl-2.6.3.dev1}/src/writeOBJ.cpp +0 -0
  455. {libigl-2.6.2 → libigl-2.6.3.dev1}/src/writePLY.cpp +0 -0
  456. {libigl-2.6.2 → libigl-2.6.3.dev1}/src/write_triangle_mesh.cpp +0 -0
  457. {libigl-2.6.2 → libigl-2.6.3.dev1}/tutorial/contributing.md +0 -0
  458. {libigl-2.6.2 → libigl-2.6.3.dev1}/tutorial/exporter.py +0 -0
  459. {libigl-2.6.2 → libigl-2.6.3.dev1}/tutorial/igl_docs.md +0 -0
  460. {libigl-2.6.2 → libigl-2.6.3.dev1}/tutorial/images/102_DrawMesh.png +0 -0
  461. {libigl-2.6.2 → libigl-2.6.3.dev1}/tutorial/images/104_Colors.png +0 -0
  462. {libigl-2.6.2 → libigl-2.6.3.dev1}/tutorial/images/105_Overlays.png +0 -0
  463. {libigl-2.6.2 → libigl-2.6.3.dev1}/tutorial/images/106_ViewerMenu.png +0 -0
  464. {libigl-2.6.2 → libigl-2.6.3.dev1}/tutorial/images/501_HarmonicParam.png +0 -0
  465. {libigl-2.6.2 → libigl-2.6.3.dev1}/tutorial/images/502_LSCMParam.png +0 -0
  466. {libigl-2.6.2 → libigl-2.6.3.dev1}/tutorial/images/503_ARAPParam.png +0 -0
  467. {libigl-2.6.2 → libigl-2.6.3.dev1}/tutorial/images/504_nrosy_field.png +0 -0
  468. {libigl-2.6.2 → libigl-2.6.3.dev1}/tutorial/images/504_vector_field.png +0 -0
  469. {libigl-2.6.2 → libigl-2.6.3.dev1}/tutorial/images/505_MIQ_1.png +0 -0
  470. {libigl-2.6.2 → libigl-2.6.3.dev1}/tutorial/images/505_MIQ_2.png +0 -0
  471. {libigl-2.6.2 → libigl-2.6.3.dev1}/tutorial/images/505_MIQ_3.png +0 -0
  472. {libigl-2.6.2 → libigl-2.6.3.dev1}/tutorial/images/505_MIQ_4.png +0 -0
  473. {libigl-2.6.2 → libigl-2.6.3.dev1}/tutorial/images/505_MIQ_5.png +0 -0
  474. {libigl-2.6.2 → libigl-2.6.3.dev1}/tutorial/images/505_MIQ_6.png +0 -0
  475. {libigl-2.6.2 → libigl-2.6.3.dev1}/tutorial/images/505_MIQ_7.png +0 -0
  476. {libigl-2.6.2 → libigl-2.6.3.dev1}/tutorial/images/505_MIQ_8.png +0 -0
  477. {libigl-2.6.2 → libigl-2.6.3.dev1}/tutorial/images/506_FrameField_1.png +0 -0
  478. {libigl-2.6.2 → libigl-2.6.3.dev1}/tutorial/images/506_FrameField_2.png +0 -0
  479. {libigl-2.6.2 → libigl-2.6.3.dev1}/tutorial/images/506_FrameField_3.png +0 -0
  480. {libigl-2.6.2 → libigl-2.6.3.dev1}/tutorial/images/506_FrameField_4.png +0 -0
  481. {libigl-2.6.2 → libigl-2.6.3.dev1}/tutorial/images/507_PolyVectorField.png +0 -0
  482. {libigl-2.6.2 → libigl-2.6.3.dev1}/tutorial/images/508_ConjugateField.png +0 -0
  483. {libigl-2.6.2 → libigl-2.6.3.dev1}/tutorial/images/509_Planarization.png +0 -0
  484. {libigl-2.6.2 → libigl-2.6.3.dev1}/tutorial/images/510_Integrable.png +0 -0
  485. {libigl-2.6.2 → libigl-2.6.3.dev1}/tutorial/images/511_PolyVectorFieldGeneral.png +0 -0
  486. {libigl-2.6.2 → libigl-2.6.3.dev1}/tutorial/images/602_Matlab_1.png +0 -0
  487. {libigl-2.6.2 → libigl-2.6.3.dev1}/tutorial/images/602_Matlab_2.png +0 -0
  488. {libigl-2.6.2 → libigl-2.6.3.dev1}/tutorial/images/604_Triangle.png +0 -0
  489. {libigl-2.6.2 → libigl-2.6.3.dev1}/tutorial/images/605_Tetgen.png +0 -0
  490. {libigl-2.6.2 → libigl-2.6.3.dev1}/tutorial/images/606_AmbientOcclusion.png +0 -0
  491. {libigl-2.6.2 → libigl-2.6.3.dev1}/tutorial/images/607_Picking.png +0 -0
  492. {libigl-2.6.2 → libigl-2.6.3.dev1}/tutorial/images/608_LIM.png +0 -0
  493. {libigl-2.6.2 → libigl-2.6.3.dev1}/tutorial/images/712_beetles.jpg +0 -0
  494. {libigl-2.6.2 → libigl-2.6.3.dev1}/tutorial/images/713_ShapeUp.png +0 -0
  495. {libigl-2.6.2 → libigl-2.6.3.dev1}/tutorial/images/VF.pdf +0 -0
  496. {libigl-2.6.2 → libigl-2.6.3.dev1}/tutorial/images/VF.png +0 -0
  497. {libigl-2.6.2 → libigl-2.6.3.dev1}/tutorial/images/arm-dqs.jpg +0 -0
  498. {libigl-2.6.2 → libigl-2.6.3.dev1}/tutorial/images/armadillo-fast.jpg +0 -0
  499. {libigl-2.6.2 → libigl-2.6.3.dev1}/tutorial/images/armadillo-marching-cubes.jpg +0 -0
  500. {libigl-2.6.2 → libigl-2.6.3.dev1}/tutorial/images/background.gif +0 -0
  501. {libigl-2.6.2 → libigl-2.6.3.dev1}/tutorial/images/beetle-eigen-decomposition.gif +0 -0
  502. {libigl-2.6.2 → libigl-2.6.3.dev1}/tutorial/images/big-sigcat-winding-number.gif +0 -0
  503. {libigl-2.6.2 → libigl-2.6.3.dev1}/tutorial/images/bump-k-harmonic.jpg +0 -0
  504. {libigl-2.6.2 → libigl-2.6.3.dev1}/tutorial/images/bumpy-gaussian-curvature.jpg +0 -0
  505. {libigl-2.6.2 → libigl-2.6.3.dev1}/tutorial/images/bunny-signed-distance.gif +0 -0
  506. {libigl-2.6.2 → libigl-2.6.3.dev1}/tutorial/images/bunny-swept-volume.gif +0 -0
  507. {libigl-2.6.2 → libigl-2.6.3.dev1}/tutorial/images/camelhead-laplace-equation.jpg +0 -0
  508. {libigl-2.6.2 → libigl-2.6.3.dev1}/tutorial/images/cheburashka-biharmonic-leq.jpg +0 -0
  509. {libigl-2.6.2 → libigl-2.6.3.dev1}/tutorial/images/cheburashka-gradient.jpg +0 -0
  510. {libigl-2.6.2 → libigl-2.6.3.dev1}/tutorial/images/cheburashka-knight-boolean.jpg +0 -0
  511. {libigl-2.6.2 → libigl-2.6.3.dev1}/tutorial/images/cheburashka-multiscale-biharmonic-kernels.jpg +0 -0
  512. {libigl-2.6.2 → libigl-2.6.3.dev1}/tutorial/images/cow-curvature-flow.jpg +0 -0
  513. {libigl-2.6.2 → libigl-2.6.3.dev1}/tutorial/images/cube-sphere-cylinders-csg-tree.jpg +0 -0
  514. {libigl-2.6.2 → libigl-2.6.3.dev1}/tutorial/images/cube-sphere-cylinders-csg.gif +0 -0
  515. {libigl-2.6.2 → libigl-2.6.3.dev1}/tutorial/images/decimated-knight-arap.jpg +0 -0
  516. {libigl-2.6.2 → libigl-2.6.3.dev1}/tutorial/images/decimated-knight-slice-color.jpg +0 -0
  517. {libigl-2.6.2 → libigl-2.6.3.dev1}/tutorial/images/decimated-knight-sort-color.jpg +0 -0
  518. {libigl-2.6.2 → libigl-2.6.3.dev1}/tutorial/images/decimated-knight-subdivision.gif +0 -0
  519. {libigl-2.6.2 → libigl-2.6.3.dev1}/tutorial/images/edge-collapse.jpg +0 -0
  520. {libigl-2.6.2 → libigl-2.6.3.dev1}/tutorial/images/edge-collapse.pdf +0 -0
  521. {libigl-2.6.2 → libigl-2.6.3.dev1}/tutorial/images/fandisk-normals.jpg +0 -0
  522. {libigl-2.6.2 → libigl-2.6.3.dev1}/tutorial/images/fertility-edge-collapse.gif +0 -0
  523. {libigl-2.6.2 → libigl-2.6.3.dev1}/tutorial/images/fertility-principal-curvature.jpg +0 -0
  524. {libigl-2.6.2 → libigl-2.6.3.dev1}/tutorial/images/geodesicdistance.jpg +0 -0
  525. {libigl-2.6.2 → libigl-2.6.3.dev1}/tutorial/images/hand-bbw.jpg +0 -0
  526. {libigl-2.6.2 → libigl-2.6.3.dev1}/tutorial/images/hat-function.jpg +0 -0
  527. {libigl-2.6.2 → libigl-2.6.3.dev1}/tutorial/images/heat-geodesic-beetle.gif +0 -0
  528. {libigl-2.6.2 → libigl-2.6.3.dev1}/tutorial/images/heat-geodesic-peaks.png +0 -0
  529. {libigl-2.6.2 → libigl-2.6.3.dev1}/tutorial/images/libigl-logo.jpg +0 -0
  530. {libigl-2.6.2 → libigl-2.6.3.dev1}/tutorial/images/max-biharmonic.jpg +0 -0
  531. {libigl-2.6.2 → libigl-2.6.3.dev1}/tutorial/images/multiple-meshes.png +0 -0
  532. {libigl-2.6.2 → libigl-2.6.3.dev1}/tutorial/images/octopus-biharmonic-coordinates-physics.gif +0 -0
  533. {libigl-2.6.2 → libigl-2.6.3.dev1}/tutorial/images/simplicial_complex_augmentation_framework.png +0 -0
  534. {libigl-2.6.2 → libigl-2.6.3.dev1}/tutorial/images/slim.png +0 -0
  535. {libigl-2.6.2 → libigl-2.6.3.dev1}/tutorial/images/streamlines.jpg +0 -0
  536. {libigl-2.6.2 → libigl-2.6.3.dev1}/tutorial/images/truck-facet-orientation.jpg +0 -0
  537. {libigl-2.6.2 → libigl-2.6.3.dev1}/tutorial/index.md +0 -0
  538. {libigl-2.6.2 → libigl-2.6.3.dev1}/tutorial/marching_cubes.py +0 -0
  539. {libigl-2.6.2 → libigl-2.6.3.dev1}/tutorial/plot_to_md.py +0 -0
  540. {libigl-2.6.2 → libigl-2.6.3.dev1}/tutorial/tut-chapter0.ipynb +0 -0
  541. {libigl-2.6.2 → libigl-2.6.3.dev1}/tutorial/tut-chapter1.ipynb +0 -0
  542. {libigl-2.6.2 → libigl-2.6.3.dev1}/tutorial/tut-chapter2.ipynb +0 -0
  543. {libigl-2.6.2 → libigl-2.6.3.dev1}/tutorial/tut-chapter3.ipynb +0 -0
  544. {libigl-2.6.2 → libigl-2.6.3.dev1}/tutorial/tut-chapter4.ipynb +0 -0
  545. {libigl-2.6.2 → libigl-2.6.3.dev1}/tutorial/tut-chapter5.ipynb +0 -0
  546. {libigl-2.6.2 → libigl-2.6.3.dev1}/tutorial/tut-chapter6.ipynb +0 -0
  547. {libigl-2.6.2 → libigl-2.6.3.dev1}/tutorial/tut-chapter7.ipynb +0 -0
  548. {libigl-2.6.2 → libigl-2.6.3.dev1}/tutorial/tutorials.ipynb +0 -0
@@ -51,7 +51,7 @@ jobs:
51
51
  - uses: actions/setup-python@v5
52
52
  with:
53
53
  python-version: '3.12'
54
- - run: pip install cibuildwheel==2.23.0
54
+ - run: pip install cibuildwheel==3.1.4
55
55
  - name: Build wheels
56
56
  run: python -m cibuildwheel --output-dir wheelhouse
57
57
  env:
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.1
2
2
  Name: libigl
3
- Version: 2.6.2
3
+ Version: 2.6.3.dev1
4
4
  Summary: libigl: A simple C++ geometry processing library
5
5
  Author-Email: Alec Jacobson <alecjacobson@gmail.com>
6
6
  Classifier: License :: OSI Approved :: Mozilla Public License 2.0 (MPL 2.0)
@@ -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`
@@ -13,7 +13,7 @@ build-backend = "scikit_build_core.build"
13
13
 
14
14
  [project]
15
15
  name = "libigl"
16
- version = "2.6.2"
16
+ version = "2.6.3.dev1"
17
17
  description = "libigl: A simple C++ geometry processing library"
18
18
  readme = "README.md"
19
19
  requires-python = ">=3.8"
@@ -0,0 +1,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,36 @@
1
+ #include "default_types.h"
2
+ #include <igl/barycentric_interpolation.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 barycentric_interpolation(
12
+ const nb::DRef<const Eigen::MatrixXN> &D,
13
+ const nb::DRef<const Eigen::MatrixXI> &F,
14
+ const nb::DRef<const Eigen::MatrixXN> &B,
15
+ const nb::DRef<const Eigen::MatrixXI> &I)
16
+ {
17
+ // I is indexed as a vector internally
18
+ const Eigen::VectorXI idx = I.reshaped();
19
+ Eigen::MatrixXN X;
20
+ igl::barycentric_interpolation(D, F, B, idx, X);
21
+ return X;
22
+ }
23
+ }
24
+
25
+ void bind_barycentric_interpolation(nb::module_ &m)
26
+ {
27
+ m.def("barycentric_interpolation", &pyigl::barycentric_interpolation,
28
+ "D"_a, "F"_a, "B"_a, "I"_a,
29
+ R"(Interpolate per-vertex data on a triangle mesh using barycentric coordinates.
30
+
31
+ @param[in] D #V by dim list of per-vertex data
32
+ @param[in] F #F by 3 list of triangle indices
33
+ @param[in] B #X by 3 list of barycentric coordinates
34
+ @param[in] I #X list of triangle indices into F
35
+ @return X #X by dim list of interpolated data)");
36
+ }
@@ -0,0 +1,48 @@
1
+ #include "default_types.h"
2
+ #include <igl/bezier.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
+ // Single parameter t
12
+ auto bezier_t(
13
+ const nb::DRef<const Eigen::MatrixXN> &V,
14
+ const Numeric t)
15
+ {
16
+ Eigen::MatrixXN P;
17
+ igl::bezier(V, t, P);
18
+ return P;
19
+ }
20
+ // Array of parameters T
21
+ auto bezier_T(
22
+ const nb::DRef<const Eigen::MatrixXN> &V,
23
+ const nb::DRef<const Eigen::MatrixXN> &T)
24
+ {
25
+ // Copy T to compact vector for single-index access
26
+ const Eigen::VectorXN t = T.reshaped();
27
+ Eigen::MatrixXN P;
28
+ igl::bezier(V, t, P);
29
+ return P;
30
+ }
31
+ }
32
+
33
+ void bind_bezier(nb::module_ &m)
34
+ {
35
+ m.def("bezier", &pyigl::bezier_t, "V"_a, "t"_a,
36
+ R"(Evaluate a polynomial Bezier curve at a single parameter value.
37
+
38
+ @param[in] V #V by dim list of Bezier control points
39
+ @param[in] t evaluation parameter in [0,1]
40
+ @return P 1 by dim output point)");
41
+
42
+ m.def("bezier", &pyigl::bezier_T, "V"_a, "T"_a,
43
+ R"(Evaluate a polynomial Bezier curve at many parameter values.
44
+
45
+ @param[in] V #V by dim list of Bezier control points
46
+ @param[in] T #T list of evaluation parameters in [0,1]
47
+ @return P #T by dim output points)");
48
+ }
@@ -0,0 +1,40 @@
1
+ #include "default_types.h"
2
+ #include <igl/centroid.h>
3
+ #include <nanobind/nanobind.h>
4
+ #include <nanobind/eigen/dense.h>
5
+ #include <nanobind/stl/tuple.h>
6
+
7
+ namespace nb = nanobind;
8
+ using namespace nb::literals;
9
+
10
+ namespace pyigl
11
+ {
12
+ auto centroid(
13
+ const nb::DRef<const Eigen::MatrixXN> &V,
14
+ const nb::DRef<const Eigen::MatrixXI> &F)
15
+ {
16
+ Eigen::VectorXN c;
17
+ Numeric vol;
18
+ igl::centroid(V,F,c,vol);
19
+ return std::make_tuple(c,vol);
20
+ }
21
+ }
22
+
23
+ void bind_centroid(nb::module_ &m)
24
+ {
25
+ m.def(
26
+ "centroid",
27
+ &pyigl::centroid,
28
+ "V"_a,
29
+ "F"_a,
30
+ R"(Computes the centroid and enclosed volume of a closed mesh using a surface
31
+ integral.
32
+
33
+ @param[in] V #V by dim list of rest domain positions
34
+ @param[in] F #F by 3 list of triangle indices into V
35
+ @return c dim vector of centroid coordinates
36
+ @return vol total volume of solid
37
+
38
+ \see moments
39
+ )");
40
+ }
@@ -0,0 +1,62 @@
1
+ #include "default_types.h"
2
+ #include <igl/colormap.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
+ // Map scalar array to RGB colors using a colormap
12
+ auto colormap(
13
+ const igl::ColorMapType cm,
14
+ const nb::DRef<const Eigen::VectorXN> &Z,
15
+ const bool normalize)
16
+ {
17
+ Eigen::MatrixXN C;
18
+ igl::colormap(cm, Z, normalize, C);
19
+ return C;
20
+ }
21
+ // Map scalar to single RGB triple
22
+ auto colormap_scalar(
23
+ const igl::ColorMapType cm,
24
+ const Numeric f)
25
+ {
26
+ Numeric r, g, b;
27
+ igl::colormap(cm, f, r, g, b);
28
+ Eigen::Vector3d rgb;
29
+ rgb << r, g, b;
30
+ return rgb;
31
+ }
32
+ }
33
+
34
+ void bind_colormap(nb::module_ &m)
35
+ {
36
+ nb::enum_<igl::ColorMapType>(m, "ColorMapType")
37
+ .value("INFERNO", igl::COLOR_MAP_TYPE_INFERNO)
38
+ .value("JET", igl::COLOR_MAP_TYPE_JET)
39
+ .value("MAGMA", igl::COLOR_MAP_TYPE_MAGMA)
40
+ .value("PARULA", igl::COLOR_MAP_TYPE_PARULA)
41
+ .value("PLASMA", igl::COLOR_MAP_TYPE_PLASMA)
42
+ .value("VIRIDIS", igl::COLOR_MAP_TYPE_VIRIDIS)
43
+ .value("TURBO", igl::COLOR_MAP_TYPE_TURBO)
44
+ .export_values();
45
+
46
+ m.def("colormap", &pyigl::colormap,
47
+ "cm"_a, "Z"_a, "normalize"_a = true,
48
+ R"(Map scalar values to RGB colors using a colormap.
49
+
50
+ @param[in] cm colormap type (igl.ColorMapType.VIRIDIS, .JET, etc.)
51
+ @param[in] Z #Z list of scalar values
52
+ @param[in] normalize if true, normalize Z to [0,1] range before mapping
53
+ @return C #Z by 3 list of RGB colors in [0,1])");
54
+
55
+ m.def("colormap", &pyigl::colormap_scalar,
56
+ "cm"_a, "f"_a,
57
+ R"(Map a single scalar in [0,1] to an RGB color.
58
+
59
+ @param[in] cm colormap type
60
+ @param[in] f scalar in [0,1]
61
+ @return 3-vector of RGB values in [0,1])");
62
+ }
@@ -0,0 +1,33 @@
1
+ #include "default_types.h"
2
+ #include <igl/combine.h>
3
+ #include <nanobind/nanobind.h>
4
+ #include <nanobind/eigen/dense.h>
5
+ #include <nanobind/stl/tuple.h>
6
+ #include <nanobind/stl/vector.h>
7
+
8
+ namespace nb = nanobind;
9
+ using namespace nb::literals;
10
+
11
+ namespace pyigl
12
+ {
13
+ auto combine(
14
+ const std::vector<Eigen::MatrixXN> &VV,
15
+ const std::vector<Eigen::MatrixXI> &FF)
16
+ {
17
+ Eigen::MatrixXN V;
18
+ Eigen::MatrixXI F;
19
+ igl::combine(VV, FF, V, F);
20
+ return std::make_tuple(V, F);
21
+ }
22
+ }
23
+
24
+ void bind_combine(nb::module_ &m)
25
+ {
26
+ m.def("combine", &pyigl::combine, "VV"_a, "FF"_a,
27
+ R"(Concatenate multiple meshes into a single mesh.
28
+
29
+ @param[in] VV list of vertex position matrices, each #Vi by dim
30
+ @param[in] FF list of face index matrices, each #Fi by simplex_size
31
+ @return V concatenated vertex positions
32
+ @return F concatenated face indices (reindexed into V))");
33
+ }
@@ -0,0 +1,84 @@
1
+ #include "default_types.h"
2
+ #include <igl/dijkstra.h>
3
+ #include <nanobind/nanobind.h>
4
+ #include <nanobind/eigen/dense.h>
5
+ #include <nanobind/stl/tuple.h>
6
+ #include <nanobind/stl/vector.h>
7
+ #include <nanobind/stl/set.h>
8
+
9
+ namespace nb = nanobind;
10
+ using namespace nb::literals;
11
+
12
+ namespace pyigl
13
+ {
14
+ // Dijkstra with uniform edge weights (Euclidean distance via vertex positions)
15
+ auto dijkstra(
16
+ const nb::DRef<const Eigen::MatrixXN> &V,
17
+ const std::vector<std::vector<Integer>> &VV,
18
+ const Integer source,
19
+ const std::set<Integer> &targets)
20
+ {
21
+ Eigen::VectorXN min_distance;
22
+ Eigen::VectorXI previous;
23
+ igl::dijkstra(V, VV, source, targets, min_distance, previous);
24
+ return std::make_tuple(min_distance, previous);
25
+ }
26
+ // Dijkstra with custom vertex weights
27
+ auto dijkstra_weighted(
28
+ const Integer source,
29
+ const std::set<Integer> &targets,
30
+ const std::vector<std::vector<Integer>> &VV,
31
+ const std::vector<double> &weights)
32
+ {
33
+ Eigen::VectorXN min_distance;
34
+ Eigen::VectorXI previous;
35
+ igl::dijkstra(source, targets, VV, weights, min_distance, previous);
36
+ return std::make_tuple(min_distance, previous);
37
+ }
38
+ // Backtrack path from vertex to source
39
+ auto dijkstra_backtrack(
40
+ const Integer vertex,
41
+ const nb::DRef<const Eigen::MatrixXI> &previous)
42
+ {
43
+ // previous[i] single-index access requires IsVectorAtCompileTime — copy to VectorXI
44
+ const Eigen::VectorXI prev = previous.reshaped();
45
+ std::vector<Integer> path;
46
+ igl::dijkstra(vertex, prev, path);
47
+ Eigen::VectorXI result(path.size());
48
+ for (size_t i = 0; i < path.size(); ++i) result(i) = path[i];
49
+ return result;
50
+ }
51
+ }
52
+
53
+ void bind_dijkstra(nb::module_ &m)
54
+ {
55
+ m.def("dijkstra", &pyigl::dijkstra,
56
+ "V"_a, "VV"_a, "source"_a, "targets"_a,
57
+ R"(Dijkstra shortest paths using Euclidean edge weights.
58
+
59
+ @param[in] V #V by 3 list of vertex positions
60
+ @param[in] VV #V list of adjacency lists (e.g. from adjacency_list)
61
+ @param[in] source source vertex index
62
+ @param[in] targets set of target vertex indices (stop early if reached)
63
+ @return min_distance #V list of minimum distances from source
64
+ @return previous #V list of previous vertex indices for path reconstruction)");
65
+
66
+ m.def("dijkstra", &pyigl::dijkstra_weighted,
67
+ "source"_a, "targets"_a, "VV"_a, "weights"_a,
68
+ R"(Dijkstra shortest paths with custom vertex weights.
69
+
70
+ @param[in] source source vertex index
71
+ @param[in] targets set of target vertex indices
72
+ @param[in] VV #V list of adjacency lists
73
+ @param[in] weights #V list of vertex weights
74
+ @return min_distance #V list of minimum distances from source
75
+ @return previous #V list of previous vertex indices)");
76
+
77
+ m.def("dijkstra_backtrack", &pyigl::dijkstra_backtrack,
78
+ "vertex"_a, "previous"_a,
79
+ R"(Backtrack path from a vertex to the source using Dijkstra's previous array.
80
+
81
+ @param[in] vertex destination vertex
82
+ @param[in] previous #V list of previous vertex indices (from dijkstra)
83
+ @return path list of vertex indices from vertex to source)");
84
+ }
@@ -0,0 +1,26 @@
1
+ #include "default_types.h"
2
+ #include <igl/directed_edge_parents.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 directed_edge_parents(const nb::DRef<const Eigen::MatrixXI> &E)
12
+ {
13
+ Eigen::VectorXI P;
14
+ igl::directed_edge_parents(E, P);
15
+ return P;
16
+ }
17
+ }
18
+
19
+ void bind_directed_edge_parents(nb::module_ &m)
20
+ {
21
+ m.def("directed_edge_parents", &pyigl::directed_edge_parents, "E"_a,
22
+ R"(Recover parent edges in a tree given directed edges.
23
+
24
+ @param[in] E #E by 2 list of directed edges
25
+ @return P #E list of parent indices into E (-1 means root))");
26
+ }
@@ -0,0 +1,32 @@
1
+ #include "default_types.h"
2
+ #include <igl/edge_topology.h>
3
+ #include <nanobind/nanobind.h>
4
+ #include <nanobind/eigen/dense.h>
5
+ #include <nanobind/stl/tuple.h>
6
+
7
+ namespace nb = nanobind;
8
+ using namespace nb::literals;
9
+
10
+ namespace pyigl
11
+ {
12
+ auto edge_topology(
13
+ const nb::DRef<const Eigen::MatrixXN> &V,
14
+ const nb::DRef<const Eigen::MatrixXI> &F)
15
+ {
16
+ Eigen::MatrixXI EV, FE, EF;
17
+ igl::edge_topology(V, F, EV, FE, EF);
18
+ return std::make_tuple(EV, FE, EF);
19
+ }
20
+ }
21
+
22
+ void bind_edge_topology(nb::module_ &m)
23
+ {
24
+ m.def("edge_topology", &pyigl::edge_topology, "V"_a, "F"_a,
25
+ R"(Initialize edges and their topological relations for an edge-manifold mesh.
26
+
27
+ @param[in] V #V by dim list of vertex positions (unused, kept for API compatibility)
28
+ @param[in] F #F by 3 list of triangle indices
29
+ @return EV #E by 2 list of edge vertex indices
30
+ @return FE #F by 3 list of face-edge relations (FE(f,c) is an edge incident on corner c of face f)
31
+ @return EF #E by 2 list of edge-face relations (EF(e,:) are the two adjacent faces))");
32
+ }
@@ -0,0 +1,36 @@
1
+ #include "default_types.h"
2
+ #include <igl/edges_to_path.h>
3
+ #include <nanobind/nanobind.h>
4
+ #include <nanobind/eigen/dense.h>
5
+ #include <nanobind/stl/tuple.h>
6
+
7
+ namespace nb = nanobind;
8
+ using namespace nb::literals;
9
+
10
+ namespace pyigl
11
+ {
12
+ auto edges_to_path(const nb::DRef<const Eigen::MatrixXI> &E)
13
+ {
14
+ // igl::edges_to_path internally uses Eigen::Map<DerivedE>(vE.data(), ...) where
15
+ // vE is Eigen::VectorXi (int32). Must use Eigen::MatrixXi (int32, ColMajor).
16
+ Eigen::MatrixXi e = E.cast<int>();
17
+ Eigen::VectorXi I, J, K;
18
+ igl::edges_to_path(e, I, J, K);
19
+ // Cast int32 outputs back to int64 (Integer)
20
+ return std::make_tuple(
21
+ Eigen::VectorXI(I.cast<Integer>()),
22
+ Eigen::VectorXI(J.cast<Integer>()),
23
+ Eigen::VectorXI(K.cast<Integer>()));
24
+ }
25
+ }
26
+
27
+ void bind_edges_to_path(nb::module_ &m)
28
+ {
29
+ m.def("edges_to_path", &pyigl::edges_to_path, "E"_a,
30
+ R"(Given undirected edges forming a single chain/loop, find the path visiting all nodes.
31
+
32
+ @param[in] E #E by 2 list of undirected edges
33
+ @return I #E+1 list of node indices tracing the chain (if loop: I[0]==I[-1])
34
+ @return J #E list of indices into E tracing I
35
+ @return K #E list of column indices in E (0 or 1) indicating edge direction)");
36
+ }
@@ -0,0 +1,20 @@
1
+ #include "default_types.h"
2
+ #include <igl/euler_characteristic.h>
3
+ #include <nanobind/nanobind.h>
4
+ #include <nanobind/eigen/dense.h>
5
+
6
+ namespace nb = nanobind;
7
+ using namespace nb::literals;
8
+
9
+ void bind_euler_characteristic(nb::module_ &m)
10
+ {
11
+ m.def("euler_characteristic",
12
+ [](const nb::DRef<const Eigen::MatrixXI> &F) -> int {
13
+ return igl::euler_characteristic(F);
14
+ },
15
+ "F"_a,
16
+ R"(Compute the Euler characteristic of a mesh: χ = |V| - |E| + |F|
17
+
18
+ @param[in] F #F by dim list of mesh faces
19
+ @return Euler characteristic (e.g. 2 for a closed genus-0 surface))");
20
+ }
@@ -0,0 +1,26 @@
1
+ #include "default_types.h"
2
+ #include <igl/exterior_edges.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 exterior_edges(const nb::DRef<const Eigen::MatrixXI> &F)
12
+ {
13
+ Eigen::MatrixXI E;
14
+ igl::exterior_edges(F, E);
15
+ return E;
16
+ }
17
+ }
18
+
19
+ void bind_exterior_edges(nb::module_ &m)
20
+ {
21
+ m.def("exterior_edges", &pyigl::exterior_edges, "F"_a,
22
+ R"(Determine boundary edges (edges with odd number of occurrences).
23
+
24
+ @param[in] F #F by simplex_size list of faces
25
+ @return E #E by simplex_size-1 list of exterior edges)");
26
+ }
@@ -0,0 +1,30 @@
1
+ #include "default_types.h"
2
+ #include <igl/extract_manifold_patches.h>
3
+ #include <nanobind/nanobind.h>
4
+ #include <nanobind/eigen/dense.h>
5
+ #include <nanobind/stl/tuple.h>
6
+
7
+ namespace nb = nanobind;
8
+ using namespace nb::literals;
9
+
10
+ namespace pyigl
11
+ {
12
+ auto extract_manifold_patches(const nb::DRef<const Eigen::MatrixXI> &F)
13
+ {
14
+ Eigen::VectorXI P;
15
+ int n = igl::extract_manifold_patches(F, P);
16
+ return std::make_tuple(n, Eigen::VectorXI(P));
17
+ }
18
+ }
19
+
20
+ void bind_extract_manifold_patches(nb::module_ &m)
21
+ {
22
+ m.def("extract_manifold_patches", &pyigl::extract_manifold_patches, "F"_a,
23
+ R"(Extract maximal manifold patches from a triangle mesh.
24
+
25
+ A patch is a maximal subset of faces connected via manifold edges.
26
+
27
+ @param[in] F #F by 3 list of triangle indices
28
+ @return n number of manifold patches
29
+ @return P #F list of patch indices for each face)");
30
+ }
@@ -0,0 +1,26 @@
1
+ #include "default_types.h"
2
+ #include <igl/face_occurrences.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 face_occurrences(const nb::DRef<const Eigen::MatrixXI> &F)
12
+ {
13
+ Eigen::VectorXI C;
14
+ igl::face_occurrences(F, C);
15
+ return C;
16
+ }
17
+ }
18
+
19
+ void bind_face_occurrences(nb::module_ &m)
20
+ {
21
+ m.def("face_occurrences", &pyigl::face_occurrences, "F"_a,
22
+ R"(Count the occurrences of each face (row) in a list of face indices.
23
+
24
+ @param[in] F #F by simplex_size list of faces
25
+ @return C #F list of occurrence counts)");
26
+ }
@@ -0,0 +1,30 @@
1
+ #include "default_types.h"
2
+ #include <igl/fit_plane.h>
3
+ #include <nanobind/nanobind.h>
4
+ #include <nanobind/eigen/dense.h>
5
+ #include <nanobind/stl/tuple.h>
6
+
7
+ namespace nb = nanobind;
8
+ using namespace nb::literals;
9
+
10
+ namespace pyigl
11
+ {
12
+ auto fit_plane(const nb::DRef<const Eigen::MatrixXN> &V)
13
+ {
14
+ Eigen::RowVector3d N, C;
15
+ igl::fit_plane(V, N, C);
16
+ return std::make_tuple(
17
+ Eigen::VectorXN(N.transpose()),
18
+ Eigen::VectorXN(C.transpose()));
19
+ }
20
+ }
21
+
22
+ void bind_fit_plane(nb::module_ &m)
23
+ {
24
+ m.def("fit_plane", &pyigl::fit_plane, "V"_a,
25
+ R"(Fit a plane to a point cloud.
26
+
27
+ @param[in] V #V by 3 matrix of 3D point cloud positions
28
+ @return N 3-vector normal of the fitted plane
29
+ @return C 3-vector of a point that lies on the fitted plane)");
30
+ }
@@ -0,0 +1,29 @@
1
+ #include "default_types.h"
2
+ #include <igl/flipped_triangles.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 flipped_triangles(
12
+ const nb::DRef<const Eigen::MatrixXN> &V,
13
+ const nb::DRef<const Eigen::MatrixXI> &F)
14
+ {
15
+ Eigen::VectorXI X;
16
+ igl::flipped_triangles(V, F, X);
17
+ return X;
18
+ }
19
+ }
20
+
21
+ void bind_flipped_triangles(nb::module_ &m)
22
+ {
23
+ m.def("flipped_triangles", &pyigl::flipped_triangles, "V"_a, "F"_a,
24
+ R"(Find indices of flipped triangles in a 2D UV mapping.
25
+
26
+ @param[in] V #V by 2 list of UV vertex positions
27
+ @param[in] F #F by 3 list of triangle indices
28
+ @return X list of indices into F of flipped triangles)");
29
+ }