libigl 2.6.3.dev1__tar.gz → 2.6.3.dev3__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 (582) hide show
  1. {libigl-2.6.3.dev1 → libigl-2.6.3.dev3}/.gitignore +2 -1
  2. {libigl-2.6.3.dev1 → libigl-2.6.3.dev3}/CMakeLists.txt +8 -0
  3. {libigl-2.6.3.dev1 → libigl-2.6.3.dev3}/PKG-INFO +19 -3
  4. {libigl-2.6.3.dev1 → libigl-2.6.3.dev3}/README.md +18 -2
  5. {libigl-2.6.3.dev1 → libigl-2.6.3.dev3}/pyproject.toml +1 -1
  6. libigl-2.6.3.dev3/src/copyleft/cgal/coplanar.cpp +24 -0
  7. libigl-2.6.3.dev3/src/copyleft/cgal/delaunay_triangulation.cpp +26 -0
  8. libigl-2.6.3.dev3/src/copyleft/cgal/extract_cells.cpp +35 -0
  9. libigl-2.6.3.dev3/src/copyleft/cgal/outer_hull.cpp +42 -0
  10. libigl-2.6.3.dev3/src/copyleft/cgal/peel_outer_hull_layers.cpp +36 -0
  11. libigl-2.6.3.dev3/src/copyleft/cgal/peel_winding_number_layers.cpp +34 -0
  12. libigl-2.6.3.dev3/src/copyleft/marching_cubes.cpp +68 -0
  13. libigl-2.6.3.dev3/src/copyleft/quadprog.cpp +49 -0
  14. libigl-2.6.3.dev3/src/copyleft/tetgen/cdt.cpp +57 -0
  15. libigl-2.6.3.dev3/src/copyleft/tetgen/mesh_with_skeleton.cpp +61 -0
  16. libigl-2.6.3.dev3/src/embree/bone_visible.cpp +40 -0
  17. libigl-2.6.3.dev3/src/embree/line_mesh_intersection.cpp +44 -0
  18. libigl-2.6.3.dev3/src/lexicographic_triangulation.cpp +47 -0
  19. libigl-2.6.3.dev3/src/predicates/Orientation.cpp +21 -0
  20. libigl-2.6.3.dev3/src/predicates/delaunay_triangulation.cpp +30 -0
  21. libigl-2.6.3.dev3/src/predicates/ear_clipping.cpp +56 -0
  22. libigl-2.6.3.dev3/src/predicates/find_intersections.cpp +49 -0
  23. libigl-2.6.3.dev3/src/predicates/find_self_intersections.cpp +43 -0
  24. libigl-2.6.3.dev3/src/predicates/incircle.cpp +37 -0
  25. libigl-2.6.3.dev3/src/predicates/insphere.cpp +39 -0
  26. libigl-2.6.3.dev3/src/predicates/lexicographic_triangulation.cpp +30 -0
  27. libigl-2.6.3.dev3/src/predicates/module.cpp +9 -0
  28. libigl-2.6.3.dev3/src/predicates/orient2d.cpp +35 -0
  29. libigl-2.6.3.dev3/src/predicates/orient3d.cpp +59 -0
  30. libigl-2.6.3.dev3/src/predicates/point_inside_convex_polygon.cpp +30 -0
  31. libigl-2.6.3.dev3/src/predicates/polygons_to_triangles.cpp +40 -0
  32. libigl-2.6.3.dev3/src/predicates/segment_segment_intersect.cpp +34 -0
  33. libigl-2.6.3.dev3/src/predicates/triangle_triangle_intersect.cpp +43 -0
  34. libigl-2.6.3.dev3/src/spectra/EigsType.cpp +12 -0
  35. libigl-2.6.3.dev3/src/spectra/eigs.cpp +78 -0
  36. libigl-2.6.3.dev3/src/spectra/lscm.cpp +40 -0
  37. libigl-2.6.3.dev3/src/spectra/module.cpp +11 -0
  38. libigl-2.6.3.dev3/src/triangle/cdt.cpp +47 -0
  39. libigl-2.6.3.dev3/src/triangle/refine.cpp +39 -0
  40. {libigl-2.6.3.dev1 → libigl-2.6.3.dev3}/tests/test_all.py +297 -0
  41. {libigl-2.6.3.dev1 → libigl-2.6.3.dev3}/.github/workflows/pip.yml +0 -0
  42. {libigl-2.6.3.dev1 → libigl-2.6.3.dev3}/.github/workflows/wheels.yml +0 -0
  43. {libigl-2.6.3.dev1 → libigl-2.6.3.dev3}/LICENSE.GPL +0 -0
  44. {libigl-2.6.3.dev1 → libigl-2.6.3.dev3}/LICENSE.MPL2 +0 -0
  45. {libigl-2.6.3.dev1 → libigl-2.6.3.dev3}/attic/copyleft/tetgen_tetrahedralize.cpp +0 -0
  46. {libigl-2.6.3.dev1 → libigl-2.6.3.dev3}/attic/copyleft/triangle_triangulate.cpp +0 -0
  47. {libigl-2.6.3.dev1 → libigl-2.6.3.dev3}/attic/skip/SolverStatus.cpp +0 -0
  48. {libigl-2.6.3.dev1 → libigl-2.6.3.dev3}/attic/skip/WindingNumberMethod.cpp +0 -0
  49. {libigl-2.6.3.dev1 → libigl-2.6.3.dev3}/attic/skip/angular_distance.cpp +0 -0
  50. {libigl-2.6.3.dev1 → libigl-2.6.3.dev3}/attic/skip/canonical_quaternions.cpp +0 -0
  51. {libigl-2.6.3.dev1 → libigl-2.6.3.dev3}/attic/skip/column_to_quats.cpp +0 -0
  52. {libigl-2.6.3.dev1 → libigl-2.6.3.dev3}/attic/skip/comiso_nrosy.cpp +0 -0
  53. {libigl-2.6.3.dev1 → libigl-2.6.3.dev3}/attic/skip/covariance_scatter_matrix.cpp +0 -0
  54. {libigl-2.6.3.dev1 → libigl-2.6.3.dev3}/attic/skip/file_contents_as_string.cpp +0 -0
  55. {libigl-2.6.3.dev1 → libigl-2.6.3.dev3}/attic/skip/fit_rotations.cpp +0 -0
  56. {libigl-2.6.3.dev1 → libigl-2.6.3.dev3}/attic/skip/frame_field_deformer.cpp +0 -0
  57. {libigl-2.6.3.dev1 → libigl-2.6.3.dev3}/attic/skip/frame_to_cross_field.cpp +0 -0
  58. {libigl-2.6.3.dev1 → libigl-2.6.3.dev3}/attic/skip/frustum.cpp +0 -0
  59. {libigl-2.6.3.dev1 → libigl-2.6.3.dev3}/attic/skip/group_sum_matrix.cpp +0 -0
  60. {libigl-2.6.3.dev1 → libigl-2.6.3.dev3}/attic/skip/harwell_boeing.cpp +0 -0
  61. {libigl-2.6.3.dev1 → libigl-2.6.3.dev3}/attic/skip/histc.cpp +0 -0
  62. {libigl-2.6.3.dev1 → libigl-2.6.3.dev3}/attic/skip/hsv_to_rgb.cpp +0 -0
  63. {libigl-2.6.3.dev1 → libigl-2.6.3.dev3}/attic/skip/infinite_cost_stopping_condition.cpp +0 -0
  64. {libigl-2.6.3.dev1 → libigl-2.6.3.dev3}/attic/skip/intersect.cpp +0 -0
  65. {libigl-2.6.3.dev1 → libigl-2.6.3.dev3}/attic/skip/invert_diag.cpp +0 -0
  66. {libigl-2.6.3.dev1 → libigl-2.6.3.dev3}/attic/skip/is_planar.cpp +0 -0
  67. {libigl-2.6.3.dev1 → libigl-2.6.3.dev3}/attic/skip/limit_faces.cpp +0 -0
  68. {libigl-2.6.3.dev1 → libigl-2.6.3.dev3}/attic/skip/line_field_missmatch.cpp +0 -0
  69. {libigl-2.6.3.dev1 → libigl-2.6.3.dev3}/attic/skip/line_search.cpp +0 -0
  70. {libigl-2.6.3.dev1 → libigl-2.6.3.dev3}/attic/skip/mat_to_quat.cpp +0 -0
  71. {libigl-2.6.3.dev1 → libigl-2.6.3.dev3}/attic/skip/material_colors.cpp +0 -0
  72. {libigl-2.6.3.dev1 → libigl-2.6.3.dev3}/attic/skip/max_faces_stopping_condition.cpp +0 -0
  73. {libigl-2.6.3.dev1 → libigl-2.6.3.dev3}/attic/skip/min_quad_dense.cpp +0 -0
  74. {libigl-2.6.3.dev1 → libigl-2.6.3.dev3}/attic/skip/normalize_quat.cpp +0 -0
  75. {libigl-2.6.3.dev1 → libigl-2.6.3.dev3}/attic/skip/on_boundary.cpp +0 -0
  76. {libigl-2.6.3.dev1 → libigl-2.6.3.dev3}/attic/skip/opengl2_draw_beach_ball.cpp +0 -0
  77. {libigl-2.6.3.dev1 → libigl-2.6.3.dev3}/attic/skip/opengl2_draw_floor.cpp +0 -0
  78. {libigl-2.6.3.dev1 → libigl-2.6.3.dev3}/attic/skip/opengl2_draw_mesh.cpp +0 -0
  79. {libigl-2.6.3.dev1 → libigl-2.6.3.dev3}/attic/skip/opengl2_draw_point.cpp +0 -0
  80. {libigl-2.6.3.dev1 → libigl-2.6.3.dev3}/attic/skip/opengl2_draw_rectangular_marquee.cpp +0 -0
  81. {libigl-2.6.3.dev1 → libigl-2.6.3.dev3}/attic/skip/opengl2_draw_skeleton_3d.cpp +0 -0
  82. {libigl-2.6.3.dev1 → libigl-2.6.3.dev3}/attic/skip/opengl2_draw_skeleton_vector_graphics.cpp +0 -0
  83. {libigl-2.6.3.dev1 → libigl-2.6.3.dev3}/attic/skip/opengl2_flare_textures.cpp +0 -0
  84. {libigl-2.6.3.dev1 → libigl-2.6.3.dev3}/attic/skip/opengl2_model_proj_viewport.cpp +0 -0
  85. {libigl-2.6.3.dev1 → libigl-2.6.3.dev3}/attic/skip/opengl2_print_gl_get.cpp +0 -0
  86. {libigl-2.6.3.dev1 → libigl-2.6.3.dev3}/attic/skip/opengl2_project.cpp +0 -0
  87. {libigl-2.6.3.dev1 → libigl-2.6.3.dev3}/attic/skip/opengl2_right_axis.cpp +0 -0
  88. {libigl-2.6.3.dev1 → libigl-2.6.3.dev3}/attic/skip/opengl2_shine_textures.cpp +0 -0
  89. {libigl-2.6.3.dev1 → libigl-2.6.3.dev3}/attic/skip/opengl2_sort_triangles.cpp +0 -0
  90. {libigl-2.6.3.dev1 → libigl-2.6.3.dev3}/attic/skip/opengl2_unproject.cpp +0 -0
  91. {libigl-2.6.3.dev1 → libigl-2.6.3.dev3}/attic/skip/opengl2_unproject_to_zero_plane.cpp +0 -0
  92. {libigl-2.6.3.dev1 → libigl-2.6.3.dev3}/attic/skip/opengl2_up_axis.cpp +0 -0
  93. {libigl-2.6.3.dev1 → libigl-2.6.3.dev3}/attic/skip/opengl2_view_axis.cpp +0 -0
  94. {libigl-2.6.3.dev1 → libigl-2.6.3.dev3}/attic/skip/opengl_create_shader_program.cpp +0 -0
  95. {libigl-2.6.3.dev1 → libigl-2.6.3.dev3}/attic/skip/opengl_destroy_shader_program.cpp +0 -0
  96. {libigl-2.6.3.dev1 → libigl-2.6.3.dev3}/attic/skip/opengl_gl_type_size.cpp +0 -0
  97. {libigl-2.6.3.dev1 → libigl-2.6.3.dev3}/attic/skip/opengl_glfw_background_window.cpp +0 -0
  98. {libigl-2.6.3.dev1 → libigl-2.6.3.dev3}/attic/skip/opengl_glfw_imgui_ImGuiHelpers.cpp +0 -0
  99. {libigl-2.6.3.dev1 → libigl-2.6.3.dev3}/attic/skip/opengl_init_render_to_texture.cpp +0 -0
  100. {libigl-2.6.3.dev1 → libigl-2.6.3.dev3}/attic/skip/opengl_load_shader.cpp +0 -0
  101. {libigl-2.6.3.dev1 → libigl-2.6.3.dev3}/attic/skip/opengl_print_program_info_log.cpp +0 -0
  102. {libigl-2.6.3.dev1 → libigl-2.6.3.dev3}/attic/skip/opengl_print_shader_info_log.cpp +0 -0
  103. {libigl-2.6.3.dev1 → libigl-2.6.3.dev3}/attic/skip/opengl_report_gl_error.cpp +0 -0
  104. {libigl-2.6.3.dev1 → libigl-2.6.3.dev3}/attic/skip/opengl_uniform_type_to_string.cpp +0 -0
  105. {libigl-2.6.3.dev1 → libigl-2.6.3.dev3}/attic/skip/ortho.cpp +0 -0
  106. {libigl-2.6.3.dev1 → libigl-2.6.3.dev3}/attic/skip/parallel_transport_angles.cpp +0 -0
  107. {libigl-2.6.3.dev1 → libigl-2.6.3.dev3}/attic/skip/polar_svd.cpp +0 -0
  108. {libigl-2.6.3.dev1 → libigl-2.6.3.dev3}/attic/skip/polar_svd3x3.cpp +0 -0
  109. {libigl-2.6.3.dev1 → libigl-2.6.3.dev3}/attic/skip/qslim_optimal_collapse_edge_callbacks.cpp +0 -0
  110. {libigl-2.6.3.dev1 → libigl-2.6.3.dev3}/attic/skip/quadric_binary_plus_operator.cpp +0 -0
  111. {libigl-2.6.3.dev1 → libigl-2.6.3.dev3}/attic/skip/quat_conjugate.cpp +0 -0
  112. {libigl-2.6.3.dev1 → libigl-2.6.3.dev3}/attic/skip/quat_mult.cpp +0 -0
  113. {libigl-2.6.3.dev1 → libigl-2.6.3.dev3}/attic/skip/quat_to_axis_angle.cpp +0 -0
  114. {libigl-2.6.3.dev1 → libigl-2.6.3.dev3}/attic/skip/quat_to_mat.cpp +0 -0
  115. {libigl-2.6.3.dev1 → libigl-2.6.3.dev3}/attic/skip/quats_to_column.cpp +0 -0
  116. {libigl-2.6.3.dev1 → libigl-2.6.3.dev3}/attic/skip/random_quaternion.cpp +0 -0
  117. {libigl-2.6.3.dev1 → libigl-2.6.3.dev3}/attic/skip/readBF.cpp +0 -0
  118. {libigl-2.6.3.dev1 → libigl-2.6.3.dev3}/attic/skip/readNODE.cpp +0 -0
  119. {libigl-2.6.3.dev1 → libigl-2.6.3.dev3}/attic/skip/readPLY.cpp +0 -0
  120. {libigl-2.6.3.dev1 → libigl-2.6.3.dev3}/attic/skip/readSTL.cpp +0 -0
  121. {libigl-2.6.3.dev1 → libigl-2.6.3.dev3}/attic/skip/rgb_to_hsv.cpp +0 -0
  122. {libigl-2.6.3.dev1 → libigl-2.6.3.dev3}/attic/skip/rotate_by_quat.cpp +0 -0
  123. {libigl-2.6.3.dev1 → libigl-2.6.3.dev3}/attic/skip/rotation_matrix_from_directions.cpp +0 -0
  124. {libigl-2.6.3.dev1 → libigl-2.6.3.dev3}/attic/skip/snap_to_canonical_view_quat.cpp +0 -0
  125. {libigl-2.6.3.dev1 → libigl-2.6.3.dev3}/attic/skip/snap_to_fixed_up.cpp +0 -0
  126. {libigl-2.6.3.dev1 → libigl-2.6.3.dev3}/attic/skip/sort_angles.cpp +0 -0
  127. {libigl-2.6.3.dev1 → libigl-2.6.3.dev3}/attic/skip/sort_triangles.cpp +0 -0
  128. {libigl-2.6.3.dev1 → libigl-2.6.3.dev3}/attic/skip/sort_vectors_ccw.cpp +0 -0
  129. {libigl-2.6.3.dev1 → libigl-2.6.3.dev3}/attic/skip/svd3x3.cpp +0 -0
  130. {libigl-2.6.3.dev1 → libigl-2.6.3.dev3}/attic/skip/svd3x3_avx.cpp +0 -0
  131. {libigl-2.6.3.dev1 → libigl-2.6.3.dev3}/attic/skip/svd3x3_sse.cpp +0 -0
  132. {libigl-2.6.3.dev1 → libigl-2.6.3.dev3}/attic/skip/trackball.cpp +0 -0
  133. {libigl-2.6.3.dev1 → libigl-2.6.3.dev3}/attic/skip/transpose_blocks.cpp +0 -0
  134. {libigl-2.6.3.dev1 → libigl-2.6.3.dev3}/attic/skip/unique_rows.cpp +0 -0
  135. {libigl-2.6.3.dev1 → libigl-2.6.3.dev3}/attic/skip/voxel_grid.cpp +0 -0
  136. {libigl-2.6.3.dev1 → libigl-2.6.3.dev3}/attic/skip/writePLY.cpp +0 -0
  137. {libigl-2.6.3.dev1 → libigl-2.6.3.dev3}/attic/skip/writeSTL.cpp +0 -0
  138. {libigl-2.6.3.dev1 → libigl-2.6.3.dev3}/attic/skip/writeWRL.cpp +0 -0
  139. {libigl-2.6.3.dev1 → libigl-2.6.3.dev3}/attic/todo-old/MeshBooleanType.cpp +0 -0
  140. {libigl-2.6.3.dev1 → libigl-2.6.3.dev3}/attic/todo-old/NormalType.cpp +0 -0
  141. {libigl-2.6.3.dev1 → libigl-2.6.3.dev3}/attic/todo-old/collapse_edge.cpp +0 -0
  142. {libigl-2.6.3.dev1 → libigl-2.6.3.dev3}/attic/todo-old/copyleft/copyleft_cgal_assign.cpp +0 -0
  143. {libigl-2.6.3.dev1 → libigl-2.6.3.dev3}/attic/todo-old/copyleft/copyleft_cgal_assign_scalar.cpp +0 -0
  144. {libigl-2.6.3.dev1 → libigl-2.6.3.dev3}/attic/todo-old/copyleft/copyleft_cgal_cell_adjacency.cpp +0 -0
  145. {libigl-2.6.3.dev1 → libigl-2.6.3.dev3}/attic/todo-old/copyleft/copyleft_cgal_closest_facet.cpp +0 -0
  146. {libigl-2.6.3.dev1 → libigl-2.6.3.dev3}/attic/todo-old/copyleft/copyleft_cgal_complex_to_mesh.cpp +0 -0
  147. {libigl-2.6.3.dev1 → libigl-2.6.3.dev3}/attic/todo-old/copyleft/copyleft_cgal_component_inside_component.cpp +0 -0
  148. {libigl-2.6.3.dev1 → libigl-2.6.3.dev3}/attic/todo-old/copyleft/copyleft_cgal_convex_hull.cpp +0 -0
  149. {libigl-2.6.3.dev1 → libigl-2.6.3.dev3}/attic/todo-old/copyleft/copyleft_cgal_delaunay_triangulation.cpp +0 -0
  150. {libigl-2.6.3.dev1 → libigl-2.6.3.dev3}/attic/todo-old/copyleft/copyleft_cgal_extract_cells.cpp +0 -0
  151. {libigl-2.6.3.dev1 → libigl-2.6.3.dev3}/attic/todo-old/copyleft/copyleft_cgal_extract_feature.cpp +0 -0
  152. {libigl-2.6.3.dev1 → libigl-2.6.3.dev3}/attic/todo-old/copyleft/copyleft_cgal_fast_winding_number.cpp +0 -0
  153. {libigl-2.6.3.dev1 → libigl-2.6.3.dev3}/attic/todo-old/copyleft/copyleft_cgal_half_space_box.cpp +0 -0
  154. {libigl-2.6.3.dev1 → libigl-2.6.3.dev3}/attic/todo-old/copyleft/copyleft_cgal_hausdorff.cpp +0 -0
  155. {libigl-2.6.3.dev1 → libigl-2.6.3.dev3}/attic/todo-old/copyleft/copyleft_cgal_incircle.cpp +0 -0
  156. {libigl-2.6.3.dev1 → libigl-2.6.3.dev3}/attic/todo-old/copyleft/copyleft_cgal_insert_into_cdt.cpp +0 -0
  157. {libigl-2.6.3.dev1 → libigl-2.6.3.dev3}/attic/todo-old/copyleft/copyleft_cgal_insphere.cpp +0 -0
  158. {libigl-2.6.3.dev1 → libigl-2.6.3.dev3}/attic/todo-old/copyleft/copyleft_cgal_intersect_other.cpp +0 -0
  159. {libigl-2.6.3.dev1 → libigl-2.6.3.dev3}/attic/todo-old/copyleft/copyleft_cgal_intersect_with_half_space.cpp +0 -0
  160. {libigl-2.6.3.dev1 → libigl-2.6.3.dev3}/attic/todo-old/copyleft/copyleft_cgal_lexicographic_triangulation.cpp +0 -0
  161. {libigl-2.6.3.dev1 → libigl-2.6.3.dev3}/attic/todo-old/copyleft/copyleft_cgal_mesh_boolean.cpp +0 -0
  162. {libigl-2.6.3.dev1 → libigl-2.6.3.dev3}/attic/todo-old/copyleft/copyleft_cgal_mesh_boolean_type_to_funcs.cpp +0 -0
  163. {libigl-2.6.3.dev1 → libigl-2.6.3.dev3}/attic/todo-old/copyleft/copyleft_cgal_mesh_to_cgal_triangle_list.cpp +0 -0
  164. {libigl-2.6.3.dev1 → libigl-2.6.3.dev3}/attic/todo-old/copyleft/copyleft_cgal_mesh_to_polyhedron.cpp +0 -0
  165. {libigl-2.6.3.dev1 → libigl-2.6.3.dev3}/attic/todo-old/copyleft/copyleft_cgal_minkowski_sum.cpp +0 -0
  166. {libigl-2.6.3.dev1 → libigl-2.6.3.dev3}/attic/todo-old/copyleft/copyleft_cgal_order_facets_around_edge.cpp +0 -0
  167. {libigl-2.6.3.dev1 → libigl-2.6.3.dev3}/attic/todo-old/copyleft/copyleft_cgal_order_facets_around_edges.cpp +0 -0
  168. {libigl-2.6.3.dev1 → libigl-2.6.3.dev3}/attic/todo-old/copyleft/copyleft_cgal_orient2D.cpp +0 -0
  169. {libigl-2.6.3.dev1 → libigl-2.6.3.dev3}/attic/todo-old/copyleft/copyleft_cgal_orient3D.cpp +0 -0
  170. {libigl-2.6.3.dev1 → libigl-2.6.3.dev3}/attic/todo-old/copyleft/copyleft_cgal_outer_element.cpp +0 -0
  171. {libigl-2.6.3.dev1 → libigl-2.6.3.dev3}/attic/todo-old/copyleft/copyleft_cgal_outer_facet.cpp +0 -0
  172. {libigl-2.6.3.dev1 → libigl-2.6.3.dev3}/attic/todo-old/copyleft/copyleft_cgal_outer_hull.cpp +0 -0
  173. {libigl-2.6.3.dev1 → libigl-2.6.3.dev3}/attic/todo-old/copyleft/copyleft_cgal_peel_outer_hull_layers.cpp +0 -0
  174. {libigl-2.6.3.dev1 → libigl-2.6.3.dev3}/attic/todo-old/copyleft/copyleft_cgal_peel_winding_number_layers.cpp +0 -0
  175. {libigl-2.6.3.dev1 → libigl-2.6.3.dev3}/attic/todo-old/copyleft/copyleft_cgal_piecewise_constant_winding_number.cpp +0 -0
  176. {libigl-2.6.3.dev1 → libigl-2.6.3.dev3}/attic/todo-old/copyleft/copyleft_cgal_point_areas.cpp +0 -0
  177. {libigl-2.6.3.dev1 → libigl-2.6.3.dev3}/attic/todo-old/copyleft/copyleft_cgal_point_mesh_squared_distance.cpp +0 -0
  178. {libigl-2.6.3.dev1 → libigl-2.6.3.dev3}/attic/todo-old/copyleft/copyleft_cgal_point_segment_squared_distance.cpp +0 -0
  179. {libigl-2.6.3.dev1 → libigl-2.6.3.dev3}/attic/todo-old/copyleft/copyleft_cgal_point_solid_signed_squared_distance.cpp +0 -0
  180. {libigl-2.6.3.dev1 → libigl-2.6.3.dev3}/attic/todo-old/copyleft/copyleft_cgal_point_triangle_squared_distance.cpp +0 -0
  181. {libigl-2.6.3.dev1 → libigl-2.6.3.dev3}/attic/todo-old/copyleft/copyleft_cgal_points_inside_component.cpp +0 -0
  182. {libigl-2.6.3.dev1 → libigl-2.6.3.dev3}/attic/todo-old/copyleft/copyleft_cgal_polyhedron_to_mesh.cpp +0 -0
  183. {libigl-2.6.3.dev1 → libigl-2.6.3.dev3}/attic/todo-old/copyleft/copyleft_cgal_projected_cdt.cpp +0 -0
  184. {libigl-2.6.3.dev1 → libigl-2.6.3.dev3}/attic/todo-old/copyleft/copyleft_cgal_projected_delaunay.cpp +0 -0
  185. {libigl-2.6.3.dev1 → libigl-2.6.3.dev3}/attic/todo-old/copyleft/copyleft_cgal_propagate_winding_numbers.cpp +0 -0
  186. {libigl-2.6.3.dev1 → libigl-2.6.3.dev3}/attic/todo-old/copyleft/copyleft_cgal_read_triangle_mesh.cpp +0 -0
  187. {libigl-2.6.3.dev1 → libigl-2.6.3.dev3}/attic/todo-old/copyleft/copyleft_cgal_relabel_small_immersed_cells.cpp +0 -0
  188. {libigl-2.6.3.dev1 → libigl-2.6.3.dev3}/attic/todo-old/copyleft/copyleft_cgal_remesh_intersections.cpp +0 -0
  189. {libigl-2.6.3.dev1 → libigl-2.6.3.dev3}/attic/todo-old/copyleft/copyleft_cgal_remesh_self_intersections.cpp +0 -0
  190. {libigl-2.6.3.dev1 → libigl-2.6.3.dev3}/attic/todo-old/copyleft/copyleft_cgal_resolve_intersections.cpp +0 -0
  191. {libigl-2.6.3.dev1 → libigl-2.6.3.dev3}/attic/todo-old/copyleft/copyleft_cgal_row_to_point.cpp +0 -0
  192. {libigl-2.6.3.dev1 → libigl-2.6.3.dev3}/attic/todo-old/copyleft/copyleft_cgal_segment_segment_squared_distance.cpp +0 -0
  193. {libigl-2.6.3.dev1 → libigl-2.6.3.dev3}/attic/todo-old/copyleft/copyleft_cgal_signed_distance_isosurface.cpp +0 -0
  194. {libigl-2.6.3.dev1 → libigl-2.6.3.dev3}/attic/todo-old/copyleft/copyleft_cgal_snap_rounding.cpp +0 -0
  195. {libigl-2.6.3.dev1 → libigl-2.6.3.dev3}/attic/todo-old/copyleft/copyleft_cgal_string_to_mesh_boolean_type.cpp +0 -0
  196. {libigl-2.6.3.dev1 → libigl-2.6.3.dev3}/attic/todo-old/copyleft/copyleft_cgal_subdivide_segments.cpp +0 -0
  197. {libigl-2.6.3.dev1 → libigl-2.6.3.dev3}/attic/todo-old/copyleft/copyleft_cgal_submesh_aabb_tree.cpp +0 -0
  198. {libigl-2.6.3.dev1 → libigl-2.6.3.dev3}/attic/todo-old/copyleft/copyleft_cgal_triangle_triangle_squared_distance.cpp +0 -0
  199. {libigl-2.6.3.dev1 → libigl-2.6.3.dev3}/attic/todo-old/copyleft/copyleft_cgal_trim_with_solid.cpp +0 -0
  200. {libigl-2.6.3.dev1 → libigl-2.6.3.dev3}/attic/todo-old/copyleft/copyleft_cgal_wire_mesh.cpp +0 -0
  201. {libigl-2.6.3.dev1 → libigl-2.6.3.dev3}/attic/todo-old/copyleft/copyleft_comiso_miq.cpp +0 -0
  202. {libigl-2.6.3.dev1 → libigl-2.6.3.dev3}/attic/todo-old/copyleft/copyleft_cork_mesh_boolean.cpp +0 -0
  203. {libigl-2.6.3.dev1 → libigl-2.6.3.dev3}/attic/todo-old/copyleft/copyleft_marching_cubes.cpp +0 -0
  204. {libigl-2.6.3.dev1 → libigl-2.6.3.dev3}/attic/todo-old/copyleft/copyleft_offset_surface.cpp +0 -0
  205. {libigl-2.6.3.dev1 → libigl-2.6.3.dev3}/attic/todo-old/copyleft/copyleft_opengl2_render_to_tga.cpp +0 -0
  206. {libigl-2.6.3.dev1 → libigl-2.6.3.dev3}/attic/todo-old/copyleft/copyleft_opengl2_texture_from_tga.cpp +0 -0
  207. {libigl-2.6.3.dev1 → libigl-2.6.3.dev3}/attic/todo-old/copyleft/copyleft_progressive_hulls.cpp +0 -0
  208. {libigl-2.6.3.dev1 → libigl-2.6.3.dev3}/attic/todo-old/copyleft/copyleft_progressive_hulls_cost_and_placement.cpp +0 -0
  209. {libigl-2.6.3.dev1 → libigl-2.6.3.dev3}/attic/todo-old/copyleft/copyleft_quadprog.cpp +0 -0
  210. {libigl-2.6.3.dev1 → libigl-2.6.3.dev3}/attic/todo-old/copyleft/copyleft_swept_volume.cpp +0 -0
  211. {libigl-2.6.3.dev1 → libigl-2.6.3.dev3}/attic/todo-old/copyleft/copyleft_tetgen_mesh_with_skeleton.cpp +0 -0
  212. {libigl-2.6.3.dev1 → libigl-2.6.3.dev3}/attic/todo-old/copyleft/copyleft_tetgen_read_into_tetgenio.cpp +0 -0
  213. {libigl-2.6.3.dev1 → libigl-2.6.3.dev3}/attic/todo-old/copyleft/copyleft_tetgen_tetrahedralize.cpp +0 -0
  214. {libigl-2.6.3.dev1 → libigl-2.6.3.dev3}/attic/todo-old/dijkstra.cpp +0 -0
  215. {libigl-2.6.3.dev1 → libigl-2.6.3.dev3}/attic/todo-old/embree_bone_heat.cpp +0 -0
  216. {libigl-2.6.3.dev1 → libigl-2.6.3.dev3}/attic/todo-old/embree_reorient_facets_raycast.cpp +0 -0
  217. {libigl-2.6.3.dev1 → libigl-2.6.3.dev3}/attic/todo-old/fast_winding_number.cpp +0 -0
  218. {libigl-2.6.3.dev1 → libigl-2.6.3.dev3}/attic/todo-old/flip_edge.cpp +0 -0
  219. {libigl-2.6.3.dev1 → libigl-2.6.3.dev3}/attic/todo-old/knn.cpp +0 -0
  220. {libigl-2.6.3.dev1 → libigl-2.6.3.dev3}/attic/todo-old/mosek_mosek_guarded.cpp +0 -0
  221. {libigl-2.6.3.dev1 → libigl-2.6.3.dev3}/attic/todo-old/mosek_mosek_linprog.cpp +0 -0
  222. {libigl-2.6.3.dev1 → libigl-2.6.3.dev3}/attic/todo-old/octree.cpp +0 -0
  223. {libigl-2.6.3.dev1 → libigl-2.6.3.dev3}/attic/todo-old/per_vertex_point_to_plane_quadrics.cpp +0 -0
  224. {libigl-2.6.3.dev1 → libigl-2.6.3.dev3}/attic/todo-old/png_readPNG.cpp +0 -0
  225. {libigl-2.6.3.dev1 → libigl-2.6.3.dev3}/attic/todo-old/png_render_to_png.cpp +0 -0
  226. {libigl-2.6.3.dev1 → libigl-2.6.3.dev3}/attic/todo-old/png_render_to_png_async.cpp +0 -0
  227. {libigl-2.6.3.dev1 → libigl-2.6.3.dev3}/attic/todo-old/png_texture_from_file.cpp +0 -0
  228. {libigl-2.6.3.dev1 → libigl-2.6.3.dev3}/attic/todo-old/png_texture_from_png.cpp +0 -0
  229. {libigl-2.6.3.dev1 → libigl-2.6.3.dev3}/attic/todo-old/png_writePNG.cpp +0 -0
  230. {libigl-2.6.3.dev1 → libigl-2.6.3.dev3}/attic/todo-old/pseudonormal_test.cpp +0 -0
  231. {libigl-2.6.3.dev1 → libigl-2.6.3.dev3}/attic/todo-old/readWRL.cpp +0 -0
  232. {libigl-2.6.3.dev1 → libigl-2.6.3.dev3}/attic/todo-old/remesh_along_isoline.cpp +0 -0
  233. {libigl-2.6.3.dev1 → libigl-2.6.3.dev3}/attic/todo-old/seam_edges.cpp +0 -0
  234. {libigl-2.6.3.dev1 → libigl-2.6.3.dev3}/attic/todo-old/shortest_edge_and_midpoint.cpp +0 -0
  235. {libigl-2.6.3.dev1 → libigl-2.6.3.dev3}/attic/todo-old/squared_edge_lengths.cpp +0 -0
  236. {libigl-2.6.3.dev1 → libigl-2.6.3.dev3}/attic/todo-old/straighten_seams.cpp +0 -0
  237. {libigl-2.6.3.dev1 → libigl-2.6.3.dev3}/attic/todo-old/swept_volume_signed_distance.cpp +0 -0
  238. {libigl-2.6.3.dev1 → libigl-2.6.3.dev3}/attic/todo-old/triangle_cdt.cpp +0 -0
  239. {libigl-2.6.3.dev1 → libigl-2.6.3.dev3}/attic/todo-old/unzip_corners.cpp +0 -0
  240. {libigl-2.6.3.dev1 → libigl-2.6.3.dev3}/attic/todo-old/writeBF.cpp +0 -0
  241. {libigl-2.6.3.dev1 → libigl-2.6.3.dev3}/attic/todo-old/writeDMAT.cpp +0 -0
  242. {libigl-2.6.3.dev1 → libigl-2.6.3.dev3}/attic/todo-old/writeMESH.cpp +0 -0
  243. {libigl-2.6.3.dev1 → libigl-2.6.3.dev3}/attic/todo-old/writeTGF.cpp +0 -0
  244. {libigl-2.6.3.dev1 → libigl-2.6.3.dev3}/attic/todo-old/xml_writeDAE.cpp +0 -0
  245. {libigl-2.6.3.dev1 → libigl-2.6.3.dev3}/attic/todo-old/xml_write_triangle_mesh.cpp +0 -0
  246. {libigl-2.6.3.dev1 → libigl-2.6.3.dev3}/classes/AABB.cpp +0 -0
  247. {libigl-2.6.3.dev1 → libigl-2.6.3.dev3}/classes/classes.cpp +0 -0
  248. {libigl-2.6.3.dev1 → libigl-2.6.3.dev3}/cmake/CXXFeatures.cmake +0 -0
  249. {libigl-2.6.3.dev1 → libigl-2.6.3.dev3}/cmake/FindLIBIGL.cmake +0 -0
  250. {libigl-2.6.3.dev1 → libigl-2.6.3.dev3}/cmake/UseColors.cmake +0 -0
  251. {libigl-2.6.3.dev1 → libigl-2.6.3.dev3}/cmake/Warnings.cmake +0 -0
  252. {libigl-2.6.3.dev1 → libigl-2.6.3.dev3}/include/default_types.h +0 -0
  253. {libigl-2.6.3.dev1 → libigl-2.6.3.dev3}/memory/MEMORY.md +0 -0
  254. {libigl-2.6.3.dev1 → libigl-2.6.3.dev3}/missing.sh +0 -0
  255. {libigl-2.6.3.dev1 → libigl-2.6.3.dev3}/mkdocs.yml +0 -0
  256. {libigl-2.6.3.dev1 → libigl-2.6.3.dev3}/postBuild +0 -0
  257. {libigl-2.6.3.dev1 → libigl-2.6.3.dev3}/priority.txt +0 -0
  258. {libigl-2.6.3.dev1 → libigl-2.6.3.dev3}/scripts/basic_function.mako +0 -0
  259. {libigl-2.6.3.dev1 → libigl-2.6.3.dev3}/scripts/blender_igl_export.py +0 -0
  260. {libigl-2.6.3.dev1 → libigl-2.6.3.dev3}/scripts/generate_bindings.py +0 -0
  261. {libigl-2.6.3.dev1 → libigl-2.6.3.dev3}/scripts/make_lean.py +0 -0
  262. {libigl-2.6.3.dev1 → libigl-2.6.3.dev3}/scripts/parser.py +0 -0
  263. {libigl-2.6.3.dev1 → libigl-2.6.3.dev3}/src/AABB.cpp +0 -0
  264. {libigl-2.6.3.dev1 → libigl-2.6.3.dev3}/src/FileEncoding.cpp +0 -0
  265. {libigl-2.6.3.dev1 → libigl-2.6.3.dev3}/src/MappingEnergyType.cpp +0 -0
  266. {libigl-2.6.3.dev1 → libigl-2.6.3.dev3}/src/MassMatrixType.cpp +0 -0
  267. {libigl-2.6.3.dev1 → libigl-2.6.3.dev3}/src/OrientedBoundingBoxMinimizeType.cpp +0 -0
  268. {libigl-2.6.3.dev1 → libigl-2.6.3.dev3}/src/accumarray.cpp +0 -0
  269. {libigl-2.6.3.dev1 → libigl-2.6.3.dev3}/src/adjacency_list.cpp +0 -0
  270. {libigl-2.6.3.dev1 → libigl-2.6.3.dev3}/src/adjacency_matrix.cpp +0 -0
  271. {libigl-2.6.3.dev1 → libigl-2.6.3.dev3}/src/all_pairs_distances.cpp +0 -0
  272. {libigl-2.6.3.dev1 → libigl-2.6.3.dev3}/src/arap.cpp +0 -0
  273. {libigl-2.6.3.dev1 → libigl-2.6.3.dev3}/src/average_from_edges_onto_vertices.cpp +0 -0
  274. {libigl-2.6.3.dev1 → libigl-2.6.3.dev3}/src/average_onto_faces.cpp +0 -0
  275. {libigl-2.6.3.dev1 → libigl-2.6.3.dev3}/src/average_onto_vertices.cpp +0 -0
  276. {libigl-2.6.3.dev1 → libigl-2.6.3.dev3}/src/avg_edge_length.cpp +0 -0
  277. {libigl-2.6.3.dev1 → libigl-2.6.3.dev3}/src/barycenter.cpp +0 -0
  278. {libigl-2.6.3.dev1 → libigl-2.6.3.dev3}/src/barycentric_coordinates.cpp +0 -0
  279. {libigl-2.6.3.dev1 → libigl-2.6.3.dev3}/src/barycentric_interpolation.cpp +0 -0
  280. {libigl-2.6.3.dev1 → libigl-2.6.3.dev3}/src/bbw.cpp +0 -0
  281. {libigl-2.6.3.dev1 → libigl-2.6.3.dev3}/src/bezier.cpp +0 -0
  282. {libigl-2.6.3.dev1 → libigl-2.6.3.dev3}/src/bfs_orient.cpp +0 -0
  283. {libigl-2.6.3.dev1 → libigl-2.6.3.dev3}/src/biharmonic_coordinates.cpp +0 -0
  284. {libigl-2.6.3.dev1 → libigl-2.6.3.dev3}/src/bijective_composite_harmonic_mapping.cpp +0 -0
  285. {libigl-2.6.3.dev1 → libigl-2.6.3.dev3}/src/blue_noise.cpp +0 -0
  286. {libigl-2.6.3.dev1 → libigl-2.6.3.dev3}/src/boundary_facets.cpp +0 -0
  287. {libigl-2.6.3.dev1 → libigl-2.6.3.dev3}/src/boundary_loop.cpp +0 -0
  288. {libigl-2.6.3.dev1 → libigl-2.6.3.dev3}/src/bounding_box.cpp +0 -0
  289. {libigl-2.6.3.dev1 → libigl-2.6.3.dev3}/src/bounding_box_diagonal.cpp +0 -0
  290. {libigl-2.6.3.dev1 → libigl-2.6.3.dev3}/src/centroid.cpp +0 -0
  291. {libigl-2.6.3.dev1 → libigl-2.6.3.dev3}/src/circulation.cpp +0 -0
  292. {libigl-2.6.3.dev1 → libigl-2.6.3.dev3}/src/circumradius.cpp +0 -0
  293. {libigl-2.6.3.dev1 → libigl-2.6.3.dev3}/src/collapse_edge.cpp +0 -0
  294. {libigl-2.6.3.dev1 → libigl-2.6.3.dev3}/src/colormap.cpp +0 -0
  295. {libigl-2.6.3.dev1 → libigl-2.6.3.dev3}/src/comb_cross_field.cpp +0 -0
  296. {libigl-2.6.3.dev1 → libigl-2.6.3.dev3}/src/comb_frame_field.cpp +0 -0
  297. {libigl-2.6.3.dev1 → libigl-2.6.3.dev3}/src/combine.cpp +0 -0
  298. {libigl-2.6.3.dev1 → libigl-2.6.3.dev3}/src/compute_frame_field_bisectors.cpp +0 -0
  299. {libigl-2.6.3.dev1 → libigl-2.6.3.dev3}/src/connected_components.cpp +0 -0
  300. {libigl-2.6.3.dev1 → libigl-2.6.3.dev3}/src/copyleft/cgal/convex_hull.cpp +0 -0
  301. {libigl-2.6.3.dev1 → libigl-2.6.3.dev3}/src/copyleft/cgal/fast_winding_number.cpp +0 -0
  302. {libigl-2.6.3.dev1 → libigl-2.6.3.dev3}/src/copyleft/cgal/intersect_other.cpp +0 -0
  303. {libigl-2.6.3.dev1 → libigl-2.6.3.dev3}/src/copyleft/cgal/intersect_with_half_space.cpp +0 -0
  304. {libigl-2.6.3.dev1 → libigl-2.6.3.dev3}/src/copyleft/cgal/mesh_boolean.cpp +0 -0
  305. {libigl-2.6.3.dev1 → libigl-2.6.3.dev3}/src/copyleft/cgal/module.cpp +0 -0
  306. {libigl-2.6.3.dev1 → libigl-2.6.3.dev3}/src/copyleft/cgal/oriented_bounding_box.cpp +0 -0
  307. {libigl-2.6.3.dev1 → libigl-2.6.3.dev3}/src/copyleft/cgal/point_areas.cpp +0 -0
  308. {libigl-2.6.3.dev1 → libigl-2.6.3.dev3}/src/copyleft/cgal/remesh_self_intersections.cpp +0 -0
  309. {libigl-2.6.3.dev1 → libigl-2.6.3.dev3}/src/copyleft/cgal/trim_with_solid.cpp +0 -0
  310. {libigl-2.6.3.dev1 → libigl-2.6.3.dev3}/src/copyleft/module.cpp +0 -0
  311. {libigl-2.6.3.dev1 → libigl-2.6.3.dev3}/src/copyleft/progressive_hulls.cpp +0 -0
  312. {libigl-2.6.3.dev1 → libigl-2.6.3.dev3}/src/copyleft/tetgen/module.cpp +0 -0
  313. {libigl-2.6.3.dev1 → libigl-2.6.3.dev3}/src/copyleft/tetgen/tetrahedralize.cpp +0 -0
  314. {libigl-2.6.3.dev1 → libigl-2.6.3.dev3}/src/cotmatrix.cpp +0 -0
  315. {libigl-2.6.3.dev1 → libigl-2.6.3.dev3}/src/cotmatrix_entries.cpp +0 -0
  316. {libigl-2.6.3.dev1 → libigl-2.6.3.dev3}/src/cotmatrix_intrinsic.cpp +0 -0
  317. {libigl-2.6.3.dev1 → libigl-2.6.3.dev3}/src/cross_field_mismatch.cpp +0 -0
  318. {libigl-2.6.3.dev1 → libigl-2.6.3.dev3}/src/crouzeix_raviart_cotmatrix.cpp +0 -0
  319. {libigl-2.6.3.dev1 → libigl-2.6.3.dev3}/src/crouzeix_raviart_massmatrix.cpp +0 -0
  320. {libigl-2.6.3.dev1 → libigl-2.6.3.dev3}/src/curved_hessian_energy.cpp +0 -0
  321. {libigl-2.6.3.dev1 → libigl-2.6.3.dev3}/src/cut_mesh.cpp +0 -0
  322. {libigl-2.6.3.dev1 → libigl-2.6.3.dev3}/src/cut_mesh_from_singularities.cpp +0 -0
  323. {libigl-2.6.3.dev1 → libigl-2.6.3.dev3}/src/cut_to_disk.cpp +0 -0
  324. {libigl-2.6.3.dev1 → libigl-2.6.3.dev3}/src/cylinder.cpp +0 -0
  325. {libigl-2.6.3.dev1 → libigl-2.6.3.dev3}/src/decimate.cpp +0 -0
  326. {libigl-2.6.3.dev1 → libigl-2.6.3.dev3}/src/dihedral_angles.cpp +0 -0
  327. {libigl-2.6.3.dev1 → libigl-2.6.3.dev3}/src/dihedral_angles_intrinsic.cpp +0 -0
  328. {libigl-2.6.3.dev1 → libigl-2.6.3.dev3}/src/dijkstra.cpp +0 -0
  329. {libigl-2.6.3.dev1 → libigl-2.6.3.dev3}/src/directed_edge_parents.cpp +0 -0
  330. {libigl-2.6.3.dev1 → libigl-2.6.3.dev3}/src/doublearea.cpp +0 -0
  331. {libigl-2.6.3.dev1 → libigl-2.6.3.dev3}/src/dual_contouring.cpp +0 -0
  332. {libigl-2.6.3.dev1 → libigl-2.6.3.dev3}/src/ears.cpp +0 -0
  333. {libigl-2.6.3.dev1 → libigl-2.6.3.dev3}/src/edge_flaps.cpp +0 -0
  334. {libigl-2.6.3.dev1 → libigl-2.6.3.dev3}/src/edge_lengths.cpp +0 -0
  335. {libigl-2.6.3.dev1 → libigl-2.6.3.dev3}/src/edge_topology.cpp +0 -0
  336. {libigl-2.6.3.dev1 → libigl-2.6.3.dev3}/src/edges.cpp +0 -0
  337. {libigl-2.6.3.dev1 → libigl-2.6.3.dev3}/src/edges_to_path.cpp +0 -0
  338. {libigl-2.6.3.dev1 → libigl-2.6.3.dev3}/src/embree/EmbreeIntersector.cpp +0 -0
  339. {libigl-2.6.3.dev1 → libigl-2.6.3.dev3}/src/embree/ambient_occlusion.cpp +0 -0
  340. {libigl-2.6.3.dev1 → libigl-2.6.3.dev3}/src/embree/module.cpp +0 -0
  341. {libigl-2.6.3.dev1 → libigl-2.6.3.dev3}/src/embree/reorient_facets_raycast.cpp +0 -0
  342. {libigl-2.6.3.dev1 → libigl-2.6.3.dev3}/src/embree/shape_diameter_function.cpp +0 -0
  343. {libigl-2.6.3.dev1 → libigl-2.6.3.dev3}/src/euler_characteristic.cpp +0 -0
  344. {libigl-2.6.3.dev1 → libigl-2.6.3.dev3}/src/exact_geodesic.cpp +0 -0
  345. {libigl-2.6.3.dev1 → libigl-2.6.3.dev3}/src/exterior_edges.cpp +0 -0
  346. {libigl-2.6.3.dev1 → libigl-2.6.3.dev3}/src/extract_manifold_patches.cpp +0 -0
  347. {libigl-2.6.3.dev1 → libigl-2.6.3.dev3}/src/face_areas.cpp +0 -0
  348. {libigl-2.6.3.dev1 → libigl-2.6.3.dev3}/src/face_occurrences.cpp +0 -0
  349. {libigl-2.6.3.dev1 → libigl-2.6.3.dev3}/src/facet_adjacency_matrix.cpp +0 -0
  350. {libigl-2.6.3.dev1 → libigl-2.6.3.dev3}/src/facet_components.cpp +0 -0
  351. {libigl-2.6.3.dev1 → libigl-2.6.3.dev3}/src/false_barycentric_subdivision.cpp +0 -0
  352. {libigl-2.6.3.dev1 → libigl-2.6.3.dev3}/src/fast_winding_number.cpp +0 -0
  353. {libigl-2.6.3.dev1 → libigl-2.6.3.dev3}/src/find_cross_field_singularities.cpp +0 -0
  354. {libigl-2.6.3.dev1 → libigl-2.6.3.dev3}/src/fit_plane.cpp +0 -0
  355. {libigl-2.6.3.dev1 → libigl-2.6.3.dev3}/src/flipped_triangles.cpp +0 -0
  356. {libigl-2.6.3.dev1 → libigl-2.6.3.dev3}/src/flood_fill.cpp +0 -0
  357. {libigl-2.6.3.dev1 → libigl-2.6.3.dev3}/src/gaussian_curvature.cpp +0 -0
  358. {libigl-2.6.3.dev1 → libigl-2.6.3.dev3}/src/grad.cpp +0 -0
  359. {libigl-2.6.3.dev1 → libigl-2.6.3.dev3}/src/grid.cpp +0 -0
  360. {libigl-2.6.3.dev1 → libigl-2.6.3.dev3}/src/harmonic.cpp +0 -0
  361. {libigl-2.6.3.dev1 → libigl-2.6.3.dev3}/src/hausdorff.cpp +0 -0
  362. {libigl-2.6.3.dev1 → libigl-2.6.3.dev3}/src/heat_geodesics.cpp +0 -0
  363. {libigl-2.6.3.dev1 → libigl-2.6.3.dev3}/src/hessian.cpp +0 -0
  364. {libigl-2.6.3.dev1 → libigl-2.6.3.dev3}/src/hessian_energy.cpp +0 -0
  365. {libigl-2.6.3.dev1 → libigl-2.6.3.dev3}/src/hsv_to_rgb.cpp +0 -0
  366. {libigl-2.6.3.dev1 → libigl-2.6.3.dev3}/src/icosahedron.cpp +0 -0
  367. {libigl-2.6.3.dev1 → libigl-2.6.3.dev3}/src/in_element.cpp +0 -0
  368. {libigl-2.6.3.dev1 → libigl-2.6.3.dev3}/src/inradius.cpp +0 -0
  369. {libigl-2.6.3.dev1 → libigl-2.6.3.dev3}/src/internal_angles.cpp +0 -0
  370. {libigl-2.6.3.dev1 → libigl-2.6.3.dev3}/src/intrinsic_delaunay_cotmatrix.cpp +0 -0
  371. {libigl-2.6.3.dev1 → libigl-2.6.3.dev3}/src/intrinsic_delaunay_triangulation.cpp +0 -0
  372. {libigl-2.6.3.dev1 → libigl-2.6.3.dev3}/src/is_border_vertex.cpp +0 -0
  373. {libigl-2.6.3.dev1 → libigl-2.6.3.dev3}/src/is_boundary_edge.cpp +0 -0
  374. {libigl-2.6.3.dev1 → libigl-2.6.3.dev3}/src/is_delaunay.cpp +0 -0
  375. {libigl-2.6.3.dev1 → libigl-2.6.3.dev3}/src/is_edge_manifold.cpp +0 -0
  376. {libigl-2.6.3.dev1 → libigl-2.6.3.dev3}/src/is_intrinsic_delaunay.cpp +0 -0
  377. {libigl-2.6.3.dev1 → libigl-2.6.3.dev3}/src/is_irregular_vertex.cpp +0 -0
  378. {libigl-2.6.3.dev1 → libigl-2.6.3.dev3}/src/is_vertex_manifold.cpp +0 -0
  379. {libigl-2.6.3.dev1 → libigl-2.6.3.dev3}/src/ismember_rows.cpp +0 -0
  380. {libigl-2.6.3.dev1 → libigl-2.6.3.dev3}/src/isolines.cpp +0 -0
  381. {libigl-2.6.3.dev1 → libigl-2.6.3.dev3}/src/isolines_intrinsic.cpp +0 -0
  382. {libigl-2.6.3.dev1 → libigl-2.6.3.dev3}/src/iterative_closest_point.cpp +0 -0
  383. {libigl-2.6.3.dev1 → libigl-2.6.3.dev3}/src/kelvinlets.cpp +0 -0
  384. {libigl-2.6.3.dev1 → libigl-2.6.3.dev3}/src/knn.cpp +0 -0
  385. {libigl-2.6.3.dev1 → libigl-2.6.3.dev3}/src/lbs_matrix.cpp +0 -0
  386. {libigl-2.6.3.dev1 → libigl-2.6.3.dev3}/src/lipschitz_octree.cpp +0 -0
  387. {libigl-2.6.3.dev1 → libigl-2.6.3.dev3}/src/local_basis.cpp +0 -0
  388. {libigl-2.6.3.dev1 → libigl-2.6.3.dev3}/src/look_at.cpp +0 -0
  389. {libigl-2.6.3.dev1 → libigl-2.6.3.dev3}/src/loop.cpp +0 -0
  390. {libigl-2.6.3.dev1 → libigl-2.6.3.dev3}/src/lscm.cpp +0 -0
  391. {libigl-2.6.3.dev1 → libigl-2.6.3.dev3}/src/map_vertices_to_circle.cpp +0 -0
  392. {libigl-2.6.3.dev1 → libigl-2.6.3.dev3}/src/marching_cubes.cpp +0 -0
  393. {libigl-2.6.3.dev1 → libigl-2.6.3.dev3}/src/massmatrix.cpp +0 -0
  394. {libigl-2.6.3.dev1 → libigl-2.6.3.dev3}/src/massmatrix_intrinsic.cpp +0 -0
  395. {libigl-2.6.3.dev1 → libigl-2.6.3.dev3}/src/matlab_format.cpp +0 -0
  396. {libigl-2.6.3.dev1 → libigl-2.6.3.dev3}/src/min_quad_with_fixed.cpp +0 -0
  397. {libigl-2.6.3.dev1 → libigl-2.6.3.dev3}/src/module.cpp +0 -0
  398. {libigl-2.6.3.dev1 → libigl-2.6.3.dev3}/src/moments.cpp +0 -0
  399. {libigl-2.6.3.dev1 → libigl-2.6.3.dev3}/src/mvc.cpp +0 -0
  400. {libigl-2.6.3.dev1 → libigl-2.6.3.dev3}/src/noop.cpp +0 -0
  401. {libigl-2.6.3.dev1 → libigl-2.6.3.dev3}/src/octree.cpp +0 -0
  402. {libigl-2.6.3.dev1 → libigl-2.6.3.dev3}/src/offset_surface.cpp +0 -0
  403. {libigl-2.6.3.dev1 → libigl-2.6.3.dev3}/src/on_boundary.cpp +0 -0
  404. {libigl-2.6.3.dev1 → libigl-2.6.3.dev3}/src/orient_halfedges.cpp +0 -0
  405. {libigl-2.6.3.dev1 → libigl-2.6.3.dev3}/src/orient_outward.cpp +0 -0
  406. {libigl-2.6.3.dev1 → libigl-2.6.3.dev3}/src/orientable_patches.cpp +0 -0
  407. {libigl-2.6.3.dev1 → libigl-2.6.3.dev3}/src/oriented_bounding_box.cpp +0 -0
  408. {libigl-2.6.3.dev1 → libigl-2.6.3.dev3}/src/oriented_facets.cpp +0 -0
  409. {libigl-2.6.3.dev1 → libigl-2.6.3.dev3}/src/per_corner_normals.cpp +0 -0
  410. {libigl-2.6.3.dev1 → libigl-2.6.3.dev3}/src/per_edge_normals.cpp +0 -0
  411. {libigl-2.6.3.dev1 → libigl-2.6.3.dev3}/src/per_face_normals.cpp +0 -0
  412. {libigl-2.6.3.dev1 → libigl-2.6.3.dev3}/src/per_vertex_attribute_smoothing.cpp +0 -0
  413. {libigl-2.6.3.dev1 → libigl-2.6.3.dev3}/src/per_vertex_normals.cpp +0 -0
  414. {libigl-2.6.3.dev1 → libigl-2.6.3.dev3}/src/point_mesh_squared_distance.cpp +0 -0
  415. {libigl-2.6.3.dev1 → libigl-2.6.3.dev3}/src/polar_dec.cpp +0 -0
  416. {libigl-2.6.3.dev1 → libigl-2.6.3.dev3}/src/polar_svd.cpp +0 -0
  417. {libigl-2.6.3.dev1 → libigl-2.6.3.dev3}/src/polygon_corners.cpp +0 -0
  418. {libigl-2.6.3.dev1 → libigl-2.6.3.dev3}/src/polygons_to_triangles.cpp +0 -0
  419. {libigl-2.6.3.dev1 → libigl-2.6.3.dev3}/src/principal_curvature.cpp +0 -0
  420. {libigl-2.6.3.dev1 → libigl-2.6.3.dev3}/src/procrustes.cpp +0 -0
  421. {libigl-2.6.3.dev1 → libigl-2.6.3.dev3}/src/project.cpp +0 -0
  422. {libigl-2.6.3.dev1 → libigl-2.6.3.dev3}/src/project_to_line.cpp +0 -0
  423. {libigl-2.6.3.dev1 → libigl-2.6.3.dev3}/src/project_to_line_segment.cpp +0 -0
  424. {libigl-2.6.3.dev1 → libigl-2.6.3.dev3}/src/pseudonormal_test.cpp +0 -0
  425. {libigl-2.6.3.dev1 → libigl-2.6.3.dev3}/src/qslim.cpp +0 -0
  426. {libigl-2.6.3.dev1 → libigl-2.6.3.dev3}/src/quad_grid.cpp +0 -0
  427. {libigl-2.6.3.dev1 → libigl-2.6.3.dev3}/src/random_dir.cpp +0 -0
  428. {libigl-2.6.3.dev1 → libigl-2.6.3.dev3}/src/random_points_on_mesh.cpp +0 -0
  429. {libigl-2.6.3.dev1 → libigl-2.6.3.dev3}/src/ray_mesh_intersect.cpp +0 -0
  430. {libigl-2.6.3.dev1 → libigl-2.6.3.dev3}/src/ray_sphere_intersect.cpp +0 -0
  431. {libigl-2.6.3.dev1 → libigl-2.6.3.dev3}/src/ray_triangle_intersect.cpp +0 -0
  432. {libigl-2.6.3.dev1 → libigl-2.6.3.dev3}/src/readCSV.cpp +0 -0
  433. {libigl-2.6.3.dev1 → libigl-2.6.3.dev3}/src/readDMAT.cpp +0 -0
  434. {libigl-2.6.3.dev1 → libigl-2.6.3.dev3}/src/readMESH.cpp +0 -0
  435. {libigl-2.6.3.dev1 → libigl-2.6.3.dev3}/src/readMSH.cpp +0 -0
  436. {libigl-2.6.3.dev1 → libigl-2.6.3.dev3}/src/readOBJ.cpp +0 -0
  437. {libigl-2.6.3.dev1 → libigl-2.6.3.dev3}/src/readOFF.cpp +0 -0
  438. {libigl-2.6.3.dev1 → libigl-2.6.3.dev3}/src/readSTL.cpp +0 -0
  439. {libigl-2.6.3.dev1 → libigl-2.6.3.dev3}/src/read_triangle_mesh.cpp +0 -0
  440. {libigl-2.6.3.dev1 → libigl-2.6.3.dev3}/src/remove_duplicate_vertices.cpp +0 -0
  441. {libigl-2.6.3.dev1 → libigl-2.6.3.dev3}/src/remove_unreferenced.cpp +0 -0
  442. {libigl-2.6.3.dev1 → libigl-2.6.3.dev3}/src/rgb_to_hsv.cpp +0 -0
  443. {libigl-2.6.3.dev1 → libigl-2.6.3.dev3}/src/rigid_alignment.cpp +0 -0
  444. {libigl-2.6.3.dev1 → libigl-2.6.3.dev3}/src/rotate_vectors.cpp +0 -0
  445. {libigl-2.6.3.dev1 → libigl-2.6.3.dev3}/src/rotation_matrix_from_directions.cpp +0 -0
  446. {libigl-2.6.3.dev1 → libigl-2.6.3.dev3}/src/sample_edges.cpp +0 -0
  447. {libigl-2.6.3.dev1 → libigl-2.6.3.dev3}/src/segment_segment_intersect.cpp +0 -0
  448. {libigl-2.6.3.dev1 → libigl-2.6.3.dev3}/src/sharp_edges.cpp +0 -0
  449. {libigl-2.6.3.dev1 → libigl-2.6.3.dev3}/src/signed_angle.cpp +0 -0
  450. {libigl-2.6.3.dev1 → libigl-2.6.3.dev3}/src/signed_distance.cpp +0 -0
  451. {libigl-2.6.3.dev1 → libigl-2.6.3.dev3}/src/slim.cpp +0 -0
  452. {libigl-2.6.3.dev1 → libigl-2.6.3.dev3}/src/snap_points.cpp +0 -0
  453. {libigl-2.6.3.dev1 → libigl-2.6.3.dev3}/src/solid_angle.cpp +0 -0
  454. {libigl-2.6.3.dev1 → libigl-2.6.3.dev3}/src/sparse_map_noop.cpp +0 -0
  455. {libigl-2.6.3.dev1 → libigl-2.6.3.dev3}/src/sparse_map_shape.cpp +0 -0
  456. {libigl-2.6.3.dev1 → libigl-2.6.3.dev3}/src/sparse_noop.cpp +0 -0
  457. {libigl-2.6.3.dev1 → libigl-2.6.3.dev3}/src/sparse_shape.cpp +0 -0
  458. {libigl-2.6.3.dev1 → libigl-2.6.3.dev3}/src/split_nonmanifold.cpp +0 -0
  459. {libigl-2.6.3.dev1 → libigl-2.6.3.dev3}/src/squared_edge_lengths.cpp +0 -0
  460. {libigl-2.6.3.dev1 → libigl-2.6.3.dev3}/src/super_fibonacci.cpp +0 -0
  461. {libigl-2.6.3.dev1 → libigl-2.6.3.dev3}/src/tet_tet_adjacency.cpp +0 -0
  462. {libigl-2.6.3.dev1 → libigl-2.6.3.dev3}/src/tri_tri_intersect.cpp +0 -0
  463. {libigl-2.6.3.dev1 → libigl-2.6.3.dev3}/src/triangle/module.cpp +0 -0
  464. {libigl-2.6.3.dev1 → libigl-2.6.3.dev3}/src/triangle/scaf.cpp +0 -0
  465. {libigl-2.6.3.dev1 → libigl-2.6.3.dev3}/src/triangle/triangulate.cpp +0 -0
  466. {libigl-2.6.3.dev1 → libigl-2.6.3.dev3}/src/triangle_fan.cpp +0 -0
  467. {libigl-2.6.3.dev1 → libigl-2.6.3.dev3}/src/triangle_triangle_adjacency.cpp +0 -0
  468. {libigl-2.6.3.dev1 → libigl-2.6.3.dev3}/src/triangulated_grid.cpp +0 -0
  469. {libigl-2.6.3.dev1 → libigl-2.6.3.dev3}/src/turning_number.cpp +0 -0
  470. {libigl-2.6.3.dev1 → libigl-2.6.3.dev3}/src/uniformly_sample_two_manifold.cpp +0 -0
  471. {libigl-2.6.3.dev1 → libigl-2.6.3.dev3}/src/unique_edge_map.cpp +0 -0
  472. {libigl-2.6.3.dev1 → libigl-2.6.3.dev3}/src/unique_simplices.cpp +0 -0
  473. {libigl-2.6.3.dev1 → libigl-2.6.3.dev3}/src/unique_sparse_voxel_corners.cpp +0 -0
  474. {libigl-2.6.3.dev1 → libigl-2.6.3.dev3}/src/unproject.cpp +0 -0
  475. {libigl-2.6.3.dev1 → libigl-2.6.3.dev3}/src/upsample.cpp +0 -0
  476. {libigl-2.6.3.dev1 → libigl-2.6.3.dev3}/src/vector_area_matrix.cpp +0 -0
  477. {libigl-2.6.3.dev1 → libigl-2.6.3.dev3}/src/vertex_components.cpp +0 -0
  478. {libigl-2.6.3.dev1 → libigl-2.6.3.dev3}/src/vertex_triangle_adjacency.cpp +0 -0
  479. {libigl-2.6.3.dev1 → libigl-2.6.3.dev3}/src/volume.cpp +0 -0
  480. {libigl-2.6.3.dev1 → libigl-2.6.3.dev3}/src/voronoi_mass.cpp +0 -0
  481. {libigl-2.6.3.dev1 → libigl-2.6.3.dev3}/src/voxel_grid.cpp +0 -0
  482. {libigl-2.6.3.dev1 → libigl-2.6.3.dev3}/src/winding_number.cpp +0 -0
  483. {libigl-2.6.3.dev1 → libigl-2.6.3.dev3}/src/writeDMAT.cpp +0 -0
  484. {libigl-2.6.3.dev1 → libigl-2.6.3.dev3}/src/writeMESH.cpp +0 -0
  485. {libigl-2.6.3.dev1 → libigl-2.6.3.dev3}/src/writeMSH.cpp +0 -0
  486. {libigl-2.6.3.dev1 → libigl-2.6.3.dev3}/src/writeOBJ.cpp +0 -0
  487. {libigl-2.6.3.dev1 → libigl-2.6.3.dev3}/src/writeOFF.cpp +0 -0
  488. {libigl-2.6.3.dev1 → libigl-2.6.3.dev3}/src/writePLY.cpp +0 -0
  489. {libigl-2.6.3.dev1 → libigl-2.6.3.dev3}/src/writeSTL.cpp +0 -0
  490. {libigl-2.6.3.dev1 → libigl-2.6.3.dev3}/src/write_triangle_mesh.cpp +0 -0
  491. {libigl-2.6.3.dev1 → libigl-2.6.3.dev3}/tutorial/contributing.md +0 -0
  492. {libigl-2.6.3.dev1 → libigl-2.6.3.dev3}/tutorial/exporter.py +0 -0
  493. {libigl-2.6.3.dev1 → libigl-2.6.3.dev3}/tutorial/igl_docs.md +0 -0
  494. {libigl-2.6.3.dev1 → libigl-2.6.3.dev3}/tutorial/images/102_DrawMesh.png +0 -0
  495. {libigl-2.6.3.dev1 → libigl-2.6.3.dev3}/tutorial/images/104_Colors.png +0 -0
  496. {libigl-2.6.3.dev1 → libigl-2.6.3.dev3}/tutorial/images/105_Overlays.png +0 -0
  497. {libigl-2.6.3.dev1 → libigl-2.6.3.dev3}/tutorial/images/106_ViewerMenu.png +0 -0
  498. {libigl-2.6.3.dev1 → libigl-2.6.3.dev3}/tutorial/images/501_HarmonicParam.png +0 -0
  499. {libigl-2.6.3.dev1 → libigl-2.6.3.dev3}/tutorial/images/502_LSCMParam.png +0 -0
  500. {libigl-2.6.3.dev1 → libigl-2.6.3.dev3}/tutorial/images/503_ARAPParam.png +0 -0
  501. {libigl-2.6.3.dev1 → libigl-2.6.3.dev3}/tutorial/images/504_nrosy_field.png +0 -0
  502. {libigl-2.6.3.dev1 → libigl-2.6.3.dev3}/tutorial/images/504_vector_field.png +0 -0
  503. {libigl-2.6.3.dev1 → libigl-2.6.3.dev3}/tutorial/images/505_MIQ_1.png +0 -0
  504. {libigl-2.6.3.dev1 → libigl-2.6.3.dev3}/tutorial/images/505_MIQ_2.png +0 -0
  505. {libigl-2.6.3.dev1 → libigl-2.6.3.dev3}/tutorial/images/505_MIQ_3.png +0 -0
  506. {libigl-2.6.3.dev1 → libigl-2.6.3.dev3}/tutorial/images/505_MIQ_4.png +0 -0
  507. {libigl-2.6.3.dev1 → libigl-2.6.3.dev3}/tutorial/images/505_MIQ_5.png +0 -0
  508. {libigl-2.6.3.dev1 → libigl-2.6.3.dev3}/tutorial/images/505_MIQ_6.png +0 -0
  509. {libigl-2.6.3.dev1 → libigl-2.6.3.dev3}/tutorial/images/505_MIQ_7.png +0 -0
  510. {libigl-2.6.3.dev1 → libigl-2.6.3.dev3}/tutorial/images/505_MIQ_8.png +0 -0
  511. {libigl-2.6.3.dev1 → libigl-2.6.3.dev3}/tutorial/images/506_FrameField_1.png +0 -0
  512. {libigl-2.6.3.dev1 → libigl-2.6.3.dev3}/tutorial/images/506_FrameField_2.png +0 -0
  513. {libigl-2.6.3.dev1 → libigl-2.6.3.dev3}/tutorial/images/506_FrameField_3.png +0 -0
  514. {libigl-2.6.3.dev1 → libigl-2.6.3.dev3}/tutorial/images/506_FrameField_4.png +0 -0
  515. {libigl-2.6.3.dev1 → libigl-2.6.3.dev3}/tutorial/images/507_PolyVectorField.png +0 -0
  516. {libigl-2.6.3.dev1 → libigl-2.6.3.dev3}/tutorial/images/508_ConjugateField.png +0 -0
  517. {libigl-2.6.3.dev1 → libigl-2.6.3.dev3}/tutorial/images/509_Planarization.png +0 -0
  518. {libigl-2.6.3.dev1 → libigl-2.6.3.dev3}/tutorial/images/510_Integrable.png +0 -0
  519. {libigl-2.6.3.dev1 → libigl-2.6.3.dev3}/tutorial/images/511_PolyVectorFieldGeneral.png +0 -0
  520. {libigl-2.6.3.dev1 → libigl-2.6.3.dev3}/tutorial/images/602_Matlab_1.png +0 -0
  521. {libigl-2.6.3.dev1 → libigl-2.6.3.dev3}/tutorial/images/602_Matlab_2.png +0 -0
  522. {libigl-2.6.3.dev1 → libigl-2.6.3.dev3}/tutorial/images/604_Triangle.png +0 -0
  523. {libigl-2.6.3.dev1 → libigl-2.6.3.dev3}/tutorial/images/605_Tetgen.png +0 -0
  524. {libigl-2.6.3.dev1 → libigl-2.6.3.dev3}/tutorial/images/606_AmbientOcclusion.png +0 -0
  525. {libigl-2.6.3.dev1 → libigl-2.6.3.dev3}/tutorial/images/607_Picking.png +0 -0
  526. {libigl-2.6.3.dev1 → libigl-2.6.3.dev3}/tutorial/images/608_LIM.png +0 -0
  527. {libigl-2.6.3.dev1 → libigl-2.6.3.dev3}/tutorial/images/712_beetles.jpg +0 -0
  528. {libigl-2.6.3.dev1 → libigl-2.6.3.dev3}/tutorial/images/713_ShapeUp.png +0 -0
  529. {libigl-2.6.3.dev1 → libigl-2.6.3.dev3}/tutorial/images/VF.pdf +0 -0
  530. {libigl-2.6.3.dev1 → libigl-2.6.3.dev3}/tutorial/images/VF.png +0 -0
  531. {libigl-2.6.3.dev1 → libigl-2.6.3.dev3}/tutorial/images/arm-dqs.jpg +0 -0
  532. {libigl-2.6.3.dev1 → libigl-2.6.3.dev3}/tutorial/images/armadillo-fast.jpg +0 -0
  533. {libigl-2.6.3.dev1 → libigl-2.6.3.dev3}/tutorial/images/armadillo-marching-cubes.jpg +0 -0
  534. {libigl-2.6.3.dev1 → libigl-2.6.3.dev3}/tutorial/images/background.gif +0 -0
  535. {libigl-2.6.3.dev1 → libigl-2.6.3.dev3}/tutorial/images/beetle-eigen-decomposition.gif +0 -0
  536. {libigl-2.6.3.dev1 → libigl-2.6.3.dev3}/tutorial/images/big-sigcat-winding-number.gif +0 -0
  537. {libigl-2.6.3.dev1 → libigl-2.6.3.dev3}/tutorial/images/bump-k-harmonic.jpg +0 -0
  538. {libigl-2.6.3.dev1 → libigl-2.6.3.dev3}/tutorial/images/bumpy-gaussian-curvature.jpg +0 -0
  539. {libigl-2.6.3.dev1 → libigl-2.6.3.dev3}/tutorial/images/bunny-signed-distance.gif +0 -0
  540. {libigl-2.6.3.dev1 → libigl-2.6.3.dev3}/tutorial/images/bunny-swept-volume.gif +0 -0
  541. {libigl-2.6.3.dev1 → libigl-2.6.3.dev3}/tutorial/images/camelhead-laplace-equation.jpg +0 -0
  542. {libigl-2.6.3.dev1 → libigl-2.6.3.dev3}/tutorial/images/cheburashka-biharmonic-leq.jpg +0 -0
  543. {libigl-2.6.3.dev1 → libigl-2.6.3.dev3}/tutorial/images/cheburashka-gradient.jpg +0 -0
  544. {libigl-2.6.3.dev1 → libigl-2.6.3.dev3}/tutorial/images/cheburashka-knight-boolean.jpg +0 -0
  545. {libigl-2.6.3.dev1 → libigl-2.6.3.dev3}/tutorial/images/cheburashka-multiscale-biharmonic-kernels.jpg +0 -0
  546. {libigl-2.6.3.dev1 → libigl-2.6.3.dev3}/tutorial/images/cow-curvature-flow.jpg +0 -0
  547. {libigl-2.6.3.dev1 → libigl-2.6.3.dev3}/tutorial/images/cube-sphere-cylinders-csg-tree.jpg +0 -0
  548. {libigl-2.6.3.dev1 → libigl-2.6.3.dev3}/tutorial/images/cube-sphere-cylinders-csg.gif +0 -0
  549. {libigl-2.6.3.dev1 → libigl-2.6.3.dev3}/tutorial/images/decimated-knight-arap.jpg +0 -0
  550. {libigl-2.6.3.dev1 → libigl-2.6.3.dev3}/tutorial/images/decimated-knight-slice-color.jpg +0 -0
  551. {libigl-2.6.3.dev1 → libigl-2.6.3.dev3}/tutorial/images/decimated-knight-sort-color.jpg +0 -0
  552. {libigl-2.6.3.dev1 → libigl-2.6.3.dev3}/tutorial/images/decimated-knight-subdivision.gif +0 -0
  553. {libigl-2.6.3.dev1 → libigl-2.6.3.dev3}/tutorial/images/edge-collapse.jpg +0 -0
  554. {libigl-2.6.3.dev1 → libigl-2.6.3.dev3}/tutorial/images/edge-collapse.pdf +0 -0
  555. {libigl-2.6.3.dev1 → libigl-2.6.3.dev3}/tutorial/images/fandisk-normals.jpg +0 -0
  556. {libigl-2.6.3.dev1 → libigl-2.6.3.dev3}/tutorial/images/fertility-edge-collapse.gif +0 -0
  557. {libigl-2.6.3.dev1 → libigl-2.6.3.dev3}/tutorial/images/fertility-principal-curvature.jpg +0 -0
  558. {libigl-2.6.3.dev1 → libigl-2.6.3.dev3}/tutorial/images/geodesicdistance.jpg +0 -0
  559. {libigl-2.6.3.dev1 → libigl-2.6.3.dev3}/tutorial/images/hand-bbw.jpg +0 -0
  560. {libigl-2.6.3.dev1 → libigl-2.6.3.dev3}/tutorial/images/hat-function.jpg +0 -0
  561. {libigl-2.6.3.dev1 → libigl-2.6.3.dev3}/tutorial/images/heat-geodesic-beetle.gif +0 -0
  562. {libigl-2.6.3.dev1 → libigl-2.6.3.dev3}/tutorial/images/heat-geodesic-peaks.png +0 -0
  563. {libigl-2.6.3.dev1 → libigl-2.6.3.dev3}/tutorial/images/libigl-logo.jpg +0 -0
  564. {libigl-2.6.3.dev1 → libigl-2.6.3.dev3}/tutorial/images/max-biharmonic.jpg +0 -0
  565. {libigl-2.6.3.dev1 → libigl-2.6.3.dev3}/tutorial/images/multiple-meshes.png +0 -0
  566. {libigl-2.6.3.dev1 → libigl-2.6.3.dev3}/tutorial/images/octopus-biharmonic-coordinates-physics.gif +0 -0
  567. {libigl-2.6.3.dev1 → libigl-2.6.3.dev3}/tutorial/images/simplicial_complex_augmentation_framework.png +0 -0
  568. {libigl-2.6.3.dev1 → libigl-2.6.3.dev3}/tutorial/images/slim.png +0 -0
  569. {libigl-2.6.3.dev1 → libigl-2.6.3.dev3}/tutorial/images/streamlines.jpg +0 -0
  570. {libigl-2.6.3.dev1 → libigl-2.6.3.dev3}/tutorial/images/truck-facet-orientation.jpg +0 -0
  571. {libigl-2.6.3.dev1 → libigl-2.6.3.dev3}/tutorial/index.md +0 -0
  572. {libigl-2.6.3.dev1 → libigl-2.6.3.dev3}/tutorial/marching_cubes.py +0 -0
  573. {libigl-2.6.3.dev1 → libigl-2.6.3.dev3}/tutorial/plot_to_md.py +0 -0
  574. {libigl-2.6.3.dev1 → libigl-2.6.3.dev3}/tutorial/tut-chapter0.ipynb +0 -0
  575. {libigl-2.6.3.dev1 → libigl-2.6.3.dev3}/tutorial/tut-chapter1.ipynb +0 -0
  576. {libigl-2.6.3.dev1 → libigl-2.6.3.dev3}/tutorial/tut-chapter2.ipynb +0 -0
  577. {libigl-2.6.3.dev1 → libigl-2.6.3.dev3}/tutorial/tut-chapter3.ipynb +0 -0
  578. {libigl-2.6.3.dev1 → libigl-2.6.3.dev3}/tutorial/tut-chapter4.ipynb +0 -0
  579. {libigl-2.6.3.dev1 → libigl-2.6.3.dev3}/tutorial/tut-chapter5.ipynb +0 -0
  580. {libigl-2.6.3.dev1 → libigl-2.6.3.dev3}/tutorial/tut-chapter6.ipynb +0 -0
  581. {libigl-2.6.3.dev1 → libigl-2.6.3.dev3}/tutorial/tut-chapter7.ipynb +0 -0
  582. {libigl-2.6.3.dev1 → libigl-2.6.3.dev3}/tutorial/tutorials.ipynb +0 -0
@@ -18,7 +18,7 @@ __pycache__
18
18
  igl.egg-info
19
19
  libigl.egg-info
20
20
  *.code-workspace
21
- out.obj
21
+ out.*
22
22
  test.off
23
23
  .vscode
24
24
 
@@ -41,3 +41,4 @@ junit
41
41
  dist/
42
42
  igl/*
43
43
  CLAUDE.md
44
+ wheelhouse/
@@ -42,6 +42,8 @@ option(LIBIGL_COPYLEFT_CGAL "Build target igl_copyleft::cgal" ON)
42
42
  option(LIBIGL_EMBREE "Build target igl::embree" ON)
43
43
  option(LIBIGL_COPYLEFT_TETGEN "Build target igl_copyleft::tetgen" ON)
44
44
  option(LIBIGL_RESTRICTED_TRIANGLE "Build target igl_restricted::triangle" ON)
45
+ option(LIBIGL_SPECTRA "Build igl::spectra bindings" ON)
46
+ option(LIBIGL_PREDICATES "Build igl::predicates bindings" ON)
45
47
  FetchContent_Declare(
46
48
  libigl
47
49
  GIT_REPOSITORY https://github.com/libigl/libigl.git
@@ -182,6 +184,12 @@ endif()
182
184
  if(LIBIGL_RESTRICTED_TRIANGLE)
183
185
  pyigl_include("restricted" "triangle")
184
186
  endif()
187
+ if(LIBIGL_SPECTRA)
188
+ pyigl_include("" "spectra")
189
+ endif()
190
+ if(LIBIGL_PREDICATES)
191
+ pyigl_include("" "predicates")
192
+ endif()
185
193
 
186
194
 
187
195
 
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.1
2
2
  Name: libigl
3
- Version: 2.6.3.dev1
3
+ Version: 2.6.3.dev3
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
 
@@ -13,7 +13,7 @@ build-backend = "scikit_build_core.build"
13
13
 
14
14
  [project]
15
15
  name = "libigl"
16
- version = "2.6.3.dev1"
16
+ version = "2.6.3.dev3"
17
17
  description = "libigl: A simple C++ geometry processing library"
18
18
  readme = "README.md"
19
19
  requires-python = ">=3.8"
@@ -0,0 +1,24 @@
1
+ #include "default_types.h"
2
+ #include <igl/copyleft/cgal/coplanar.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
+ bool coplanar(const nb::DRef<const Eigen::MatrixXN> &V)
12
+ {
13
+ return igl::copyleft::cgal::coplanar(V);
14
+ }
15
+ }
16
+
17
+ void bind_coplanar(nb::module_ &m)
18
+ {
19
+ m.def("coplanar", &pyigl::coplanar, "V"_a,
20
+ R"(Test whether all points lie on the same plane.
21
+
22
+ @param[in] V #V by 3 list of 3D vertex positions
23
+ @return true if all points are coplanar)");
24
+ }
@@ -0,0 +1,26 @@
1
+ #include "default_types.h"
2
+ #include <igl/copyleft/cgal/delaunay_triangulation.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 delaunay_triangulation(const nb::DRef<const Eigen::MatrixXN> &V)
12
+ {
13
+ Eigen::MatrixXi F; // int32 required by libigl internals
14
+ igl::copyleft::cgal::delaunay_triangulation(V, F);
15
+ return Eigen::MatrixXI(F.cast<Integer>());
16
+ }
17
+ }
18
+
19
+ void bind_delaunay_triangulation(nb::module_ &m)
20
+ {
21
+ m.def("delaunay_triangulation", &pyigl::delaunay_triangulation, "V"_a,
22
+ R"(Compute the Delaunay triangulation of a 2D point set using CGAL.
23
+
24
+ @param[in] V #V by 2 list of 2D vertex positions
25
+ @return F #F by 3 triangle indices into V)");
26
+ }
@@ -0,0 +1,35 @@
1
+ #include "default_types.h"
2
+ #include <igl/copyleft/cgal/extract_cells.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_cells(
13
+ const nb::DRef<const Eigen::MatrixXN> &V,
14
+ const nb::DRef<const Eigen::MatrixXI> &F)
15
+ {
16
+ // int32 required by libigl internals (static_assert checks index type)
17
+ Eigen::MatrixXi Fi = F.cast<int>();
18
+ Eigen::MatrixXi cells;
19
+ size_t n = igl::copyleft::cgal::extract_cells(V, Fi, cells);
20
+ return std::make_tuple((Integer)n, Eigen::MatrixXI(cells.cast<Integer>()));
21
+ }
22
+ }
23
+
24
+ void bind_extract_cells(nb::module_ &m)
25
+ {
26
+ m.def("extract_cells", &pyigl::extract_cells, "V"_a, "F"_a,
27
+ R"(Extract connected 3D cells partitioned by a triangle mesh.
28
+
29
+ @param[in] V #V by 3 array of vertices
30
+ @param[in] F #F by 3 array of triangle indices
31
+ @return tuple (num_cells, cells):
32
+ - num_cells number of cells (cell 0 is the infinite outer cell)
33
+ - cells #F by 2 array of cell indices; cells[i,0] is the cell on the
34
+ positive side of face i, cells[i,1] is on the negative side)");
35
+ }
@@ -0,0 +1,42 @@
1
+ #include "default_types.h"
2
+ #include <igl/copyleft/cgal/outer_hull.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 outer_hull(
13
+ const nb::DRef<const Eigen::MatrixXN> &V,
14
+ const nb::DRef<const Eigen::MatrixXI> &F)
15
+ {
16
+ // int32 required by libigl internals
17
+ Eigen::MatrixXi Fi = F.cast<int>();
18
+ Eigen::MatrixXN HV;
19
+ Eigen::MatrixXi HF;
20
+ Eigen::VectorXi J;
21
+ Eigen::Matrix<bool, Eigen::Dynamic, 1> flip;
22
+ igl::copyleft::cgal::outer_hull(V, Fi, HV, HF, J, flip);
23
+ return std::make_tuple(HV,
24
+ Eigen::MatrixXI(HF.cast<Integer>()),
25
+ Eigen::VectorXI(J.cast<Integer>()),
26
+ Eigen::VectorXB(flip));
27
+ }
28
+ }
29
+
30
+ void bind_outer_hull(nb::module_ &m)
31
+ {
32
+ m.def("outer_hull", &pyigl::outer_hull, "V"_a, "F"_a,
33
+ R"(Compute the outer hull of a piecewise-constant winding number mesh.
34
+
35
+ @param[in] V #V by 3 list of vertex positions
36
+ @param[in] F #F by 3 list of triangle indices into V
37
+ @return tuple (HV, HF, J, flip):
38
+ - HV #HV by 3 output vertex positions
39
+ - HF #HF by 3 output triangle indices into HV
40
+ - J #HF list of indices into F (birth faces)
41
+ - flip #HF list of bools, true if facet was flipped)");
42
+ }
@@ -0,0 +1,36 @@
1
+ #include "default_types.h"
2
+ #include <igl/copyleft/cgal/peel_outer_hull_layers.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 peel_outer_hull_layers(
13
+ const nb::DRef<const Eigen::MatrixXN> &V,
14
+ const nb::DRef<const Eigen::MatrixXI> &F)
15
+ {
16
+ // int32 required by libigl internals
17
+ Eigen::MatrixXi Fi = F.cast<int>();
18
+ Eigen::VectorXi I;
19
+ Eigen::Matrix<bool, Eigen::Dynamic, 1> flip;
20
+ int n = igl::copyleft::cgal::peel_outer_hull_layers(V, Fi, I, flip);
21
+ return std::make_tuple(Eigen::VectorXI(I.cast<Integer>()), Eigen::VectorXB(flip), n);
22
+ }
23
+ }
24
+
25
+ void bind_peel_outer_hull_layers(nb::module_ &m)
26
+ {
27
+ m.def("peel_outer_hull_layers", &pyigl::peel_outer_hull_layers, "V"_a, "F"_a,
28
+ R"(Successively peel outer hull layers from a mesh, useful for boolean operations.
29
+
30
+ @param[in] V #V by 3 list of vertex positions
31
+ @param[in] F #F by 3 list of triangle indices into V
32
+ @return tuple (I, flip, num_peels):
33
+ - I #F list of which peel layer each facet belongs to
34
+ - flip #F list of bools, true if facet orientation was flipped during peeling
35
+ - num_peels number of peel layers)");
36
+ }
@@ -0,0 +1,34 @@
1
+ #include "default_types.h"
2
+ #include <igl/copyleft/cgal/peel_winding_number_layers.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 peel_winding_number_layers(
13
+ const nb::DRef<const Eigen::MatrixXN> &V,
14
+ const nb::DRef<const Eigen::MatrixXI> &F)
15
+ {
16
+ // int32 required by libigl internals
17
+ Eigen::MatrixXi Fi = F.cast<int>();
18
+ Eigen::VectorXi W;
19
+ size_t n = igl::copyleft::cgal::peel_winding_number_layers(V, Fi, W);
20
+ return std::make_tuple(Eigen::VectorXI(W.cast<Integer>()), (Integer)n);
21
+ }
22
+ }
23
+
24
+ void bind_peel_winding_number_layers(nb::module_ &m)
25
+ {
26
+ m.def("peel_winding_number_layers", &pyigl::peel_winding_number_layers, "V"_a, "F"_a,
27
+ R"(Peel winding number layers from a mesh.
28
+
29
+ @param[in] V #V by 3 list of vertex positions
30
+ @param[in] F #F by 3 list of triangle indices into V
31
+ @return tuple (W, num_layers):
32
+ - W #V list of integer winding numbers per vertex
33
+ - num_layers number of winding number layers)");
34
+ }
@@ -0,0 +1,68 @@
1
+ #include "default_types.h"
2
+ #include <igl/copyleft/marching_cubes.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 marching_cubes(
13
+ const nb::DRef<const Eigen::VectorXN> &values,
14
+ const nb::DRef<const Eigen::MatrixXN> &points,
15
+ const Integer x_res,
16
+ const Integer y_res,
17
+ const Integer z_res,
18
+ const Numeric isovalue)
19
+ {
20
+ Eigen::MatrixXN vertices;
21
+ Eigen::MatrixXI faces;
22
+ igl::copyleft::marching_cubes(
23
+ values, points,
24
+ (unsigned)x_res, (unsigned)y_res, (unsigned)z_res,
25
+ isovalue, vertices, faces);
26
+ return std::make_tuple(vertices, faces);
27
+ }
28
+ auto marching_cubes_indexed(
29
+ const nb::DRef<const Eigen::VectorXN> &values,
30
+ const nb::DRef<const Eigen::MatrixXN> &points,
31
+ const nb::DRef<const Eigen::MatrixXI> &indices,
32
+ const Numeric isovalue)
33
+ {
34
+ Eigen::MatrixXN vertices;
35
+ Eigen::MatrixXI faces;
36
+ igl::copyleft::marching_cubes(values, points, indices, isovalue, vertices, faces);
37
+ return std::make_tuple(vertices, faces);
38
+ }
39
+ }
40
+
41
+ void bind_marching_cubes(nb::module_ &m)
42
+ {
43
+ m.def("marching_cubes", &pyigl::marching_cubes,
44
+ "values"_a, "points"_a, "x_res"_a, "y_res"_a, "z_res"_a, "isovalue"_a = 0.0,
45
+ R"(Perform marching cubes to extract an isosurface from a scalar field on a regular grid.
46
+
47
+ @param[in] values #points vector of scalar values (<0 inside, >0 outside)
48
+ @param[in] points #points by 3 grid point positions (x-fastest order:
49
+ index = x + y*x_res + z*x_res*y_res)
50
+ @param[in] x_res grid resolution in x
51
+ @param[in] y_res grid resolution in y
52
+ @param[in] z_res grid resolution in z
53
+ @param[in] isovalue isovalue to reconstruct (default: 0.0)
54
+ @return tuple (vertices, faces):
55
+ - vertices #V by 3 mesh vertex positions
56
+ - faces #F by 3 mesh triangle indices)");
57
+ m.def("marching_cubes", &pyigl::marching_cubes_indexed,
58
+ "values"_a, "points"_a, "indices"_a, "isovalue"_a = 0.0,
59
+ R"(Perform marching cubes on a sparse grid defined by explicit cube corner indices.
60
+
61
+ @param[in] values #points vector of scalar values
62
+ @param[in] points #points by 3 grid point positions
63
+ @param[in] indices #cubes by 8 array of corner indices into points/values
64
+ @param[in] isovalue isovalue to reconstruct (default: 0.0)
65
+ @return tuple (vertices, faces):
66
+ - vertices #V by 3 mesh vertex positions
67
+ - faces #F by 3 mesh triangle indices)");
68
+ }
@@ -0,0 +1,49 @@
1
+ #include "default_types.h"
2
+ #include <igl/copyleft/quadprog.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 quadprog(
12
+ const nb::DRef<const Eigen::MatrixXN> &G,
13
+ const nb::DRef<const Eigen::VectorXN> &g0,
14
+ const nb::DRef<const Eigen::MatrixXN> &CE,
15
+ const nb::DRef<const Eigen::VectorXN> &ce0,
16
+ const nb::DRef<const Eigen::MatrixXN> &CI,
17
+ const nb::DRef<const Eigen::VectorXN> &ci0)
18
+ {
19
+ // quadprog uses non-template MatrixXd (col-major); copy from row-major inputs
20
+ Eigen::MatrixXd G_d = G, CE_d = CE, CI_d = CI;
21
+ Eigen::VectorXd g0_d = g0, ce0_d = ce0, ci0_d = ci0;
22
+ Eigen::VectorXd x;
23
+ if(!igl::copyleft::quadprog(G_d, g0_d, CE_d, ce0_d, CI_d, ci0_d, x))
24
+ throw std::runtime_error("quadprog: solver failed");
25
+ return Eigen::VectorXN(x);
26
+ }
27
+ }
28
+
29
+ void bind_quadprog(nb::module_ &m)
30
+ {
31
+ m.def("quadprog", &pyigl::quadprog,
32
+ "G"_a, "g0"_a,
33
+ "CE"_a = Eigen::MatrixXN(), "ce0"_a = Eigen::VectorXN(),
34
+ "CI"_a = Eigen::MatrixXN(), "ci0"_a = Eigen::VectorXN(),
35
+ R"(Solve a dense convex quadratic program.
36
+
37
+ Minimizes: 0.5 x' G x + g0' x
38
+ Subject to: CE' x + ce0 = 0
39
+ CI' x + ci0 >= 0
40
+
41
+ @param[in] G #x by #x positive semi-definite quadratic cost matrix
42
+ @param[in] g0 #x linear cost vector
43
+ @param[in] CE #x by #ce equality constraint matrix (optional)
44
+ @param[in] ce0 #ce equality constraint rhs (optional)
45
+ @param[in] CI #x by #ci inequality constraint matrix (optional)
46
+ @param[in] ci0 #ci inequality constraint rhs (optional)
47
+ @return x #x solution vector
48
+ @raises RuntimeError if the solver fails)");
49
+ }
@@ -0,0 +1,57 @@
1
+ #include "default_types.h"
2
+ #include <igl/copyleft/tetgen/cdt.h>
3
+ #include <nanobind/nanobind.h>
4
+ #include <nanobind/eigen/dense.h>
5
+ #include <nanobind/stl/string.h>
6
+ #include <nanobind/stl/tuple.h>
7
+
8
+ namespace nb = nanobind;
9
+ using namespace nb::literals;
10
+
11
+ namespace pyigl
12
+ {
13
+ auto cdt(
14
+ const nb::DRef<const Eigen::MatrixXN> &V,
15
+ const nb::DRef<const Eigen::MatrixXI> &F,
16
+ const igl::copyleft::tetgen::CDTParam &param)
17
+ {
18
+ // int32 required by libigl tetgen internals
19
+ Eigen::MatrixXi Fi = F.cast<int>();
20
+ Eigen::MatrixXN TV;
21
+ Eigen::MatrixXi TT, TF;
22
+ // Note: libigl cdt() returns tetrahedralize()'s int (0=success) cast to
23
+ // bool, so false means success. Check output TT instead.
24
+ igl::copyleft::tetgen::cdt(V, Fi, param, TV, TT, TF);
25
+ if(TT.rows() == 0)
26
+ throw std::runtime_error("cdt: tetrahedralization failed");
27
+ return std::make_tuple(TV, Eigen::MatrixXI(TT.cast<Integer>()),
28
+ Eigen::MatrixXI(TF.cast<Integer>()));
29
+ }
30
+ }
31
+
32
+ void bind_cdt(nb::module_ &m)
33
+ {
34
+ nb::class_<igl::copyleft::tetgen::CDTParam>(m, "CDTParam")
35
+ .def(nb::init<>())
36
+ .def_rw("use_bounding_box", &igl::copyleft::tetgen::CDTParam::use_bounding_box)
37
+ .def_rw("bounding_box_scale", &igl::copyleft::tetgen::CDTParam::bounding_box_scale)
38
+ .def_rw("flags", &igl::copyleft::tetgen::CDTParam::flags);
39
+
40
+ m.def("cdt", &pyigl::cdt,
41
+ "V"_a, "F"_a, "param"_a = igl::copyleft::tetgen::CDTParam{},
42
+ R"(Create a constrained Delaunay tetrahedralization of the convex hull of a mesh.
43
+
44
+ The input mesh must be non-self-intersecting.
45
+
46
+ @param[in] V #V by 3 list of input mesh vertices
47
+ @param[in] F #F by 3 list of input mesh facets
48
+ @param[in] param CDTParam struct with fields:
49
+ use_bounding_box force meshing of the bounding box (default: false)
50
+ bounding_box_scale scale factor for bounding box (default: 1.01)
51
+ flags tetgen flags, do not include "c" (default: "Y")
52
+ @return tuple (TV, TT, TF):
53
+ - TV #TV by 3 output vertex positions (input vertices come first)
54
+ - TT #TT by 4 tetrahedra indices into TV
55
+ - TF #TF by 3 surface triangle indices (facets from F, possibly subdivided)
56
+ @raises RuntimeError on failure)");
57
+ }
@@ -0,0 +1,61 @@
1
+ #include "default_types.h"
2
+ #include <igl/copyleft/tetgen/mesh_with_skeleton.h>
3
+ #include <nanobind/nanobind.h>
4
+ #include <nanobind/eigen/dense.h>
5
+ #include <nanobind/stl/string.h>
6
+ #include <nanobind/stl/tuple.h>
7
+
8
+ namespace nb = nanobind;
9
+ using namespace nb::literals;
10
+
11
+ namespace pyigl
12
+ {
13
+ auto mesh_with_skeleton(
14
+ const nb::DRef<const Eigen::MatrixXN> &V,
15
+ const nb::DRef<const Eigen::MatrixXI> &F,
16
+ const nb::DRef<const Eigen::MatrixXN> &C,
17
+ const nb::DRef<const Eigen::VectorXI> &P,
18
+ const nb::DRef<const Eigen::MatrixXI> &BE,
19
+ const nb::DRef<const Eigen::MatrixXI> &CE,
20
+ const int samples_per_bone,
21
+ const std::string &tetgen_flags)
22
+ {
23
+ // Non-template API uses MatrixXd/MatrixXi (col-major, int32)
24
+ Eigen::MatrixXd Vd = V, Cd = C;
25
+ Eigen::MatrixXi Fd = F.cast<int>(), BEd = BE.cast<int>(), CEd = CE.cast<int>();
26
+ Eigen::VectorXi Pd = P.cast<int>();
27
+ Eigen::MatrixXd VV;
28
+ Eigen::MatrixXi TT, FF;
29
+ if(!igl::copyleft::tetgen::mesh_with_skeleton(Vd, Fd, Cd, Pd, BEd, CEd,
30
+ samples_per_bone, tetgen_flags, VV, TT, FF))
31
+ throw std::runtime_error("mesh_with_skeleton: tetrahedralization failed");
32
+ return std::make_tuple(Eigen::MatrixXN(VV), Eigen::MatrixXI(TT.cast<Integer>()),
33
+ Eigen::MatrixXI(FF.cast<Integer>()));
34
+ }
35
+ }
36
+
37
+ void bind_mesh_with_skeleton(nb::module_ &m)
38
+ {
39
+ m.def("mesh_with_skeleton", &pyigl::mesh_with_skeleton,
40
+ "V"_a, "F"_a, "C"_a,
41
+ "P"_a = Eigen::VectorXI(),
42
+ "BE"_a = Eigen::MatrixXI(),
43
+ "CE"_a = Eigen::MatrixXI(),
44
+ "samples_per_bone"_a = 10,
45
+ "tetgen_flags"_a = "",
46
+ R"(Mesh the interior of a surface with a graded tetrahedral mesh conforming to a skeleton.
47
+
48
+ @param[in] V #V by 3 list of surface mesh vertex positions
49
+ @param[in] F #F by 3 list of triangle indices
50
+ @param[in] C #C by 3 list of skeleton joint positions
51
+ @param[in] P #P list of point handle indices into C (optional)
52
+ @param[in] BE #BE by 2 list of bone edge indices into C (optional)
53
+ @param[in] CE #CE by 2 list of cage edge indices into P (optional)
54
+ @param[in] samples_per_bone number of samples added per bone (default: 10)
55
+ @param[in] tetgen_flags tetgen option string (default: "" → "pq2Y")
56
+ @return tuple (VV, TT, FF):
57
+ - VV #VV by 3 tet-mesh vertex positions
58
+ - TT #TT by 4 tetrahedra indices
59
+ - FF #FF by 3 surface triangle indices
60
+ @raises RuntimeError on failure)");
61
+ }
@@ -0,0 +1,40 @@
1
+ #include "default_types.h"
2
+ #include <igl/embree/bone_visible.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 bone_visible(
12
+ const nb::DRef<const Eigen::MatrixXN> &V,
13
+ const nb::DRef<const Eigen::MatrixXI> &F,
14
+ const nb::DRef<const Eigen::VectorXN> &s,
15
+ const nb::DRef<const Eigen::VectorXN> &d)
16
+ {
17
+ // int32 required; s/d must be column vectors (VectorXd), not row vectors
18
+ Eigen::MatrixXi Fi = F.cast<int>();
19
+ Eigen::Matrix<bool, Eigen::Dynamic, 1> flag;
20
+ // Pass s and d as VectorXN (column vectors) — DerivedSD must be col vector
21
+ igl::embree::bone_visible(V, Fi, s, d, flag);
22
+ return Eigen::VectorXB(flag);
23
+ }
24
+ }
25
+
26
+ void bind_bone_visible(nb::module_ &m)
27
+ {
28
+ m.def("bone_visible", &pyigl::bone_visible,
29
+ "V"_a, "F"_a, "s"_a, "d"_a,
30
+ R"(Test which mesh vertices are visible to a bone segment.
31
+
32
+ A vertex v is "visible" if the line segment from its projection onto the
33
+ bone to v does not intersect the mesh (see Baran & Popovic 2007).
34
+
35
+ @param[in] V #V by 3 list of mesh vertex positions
36
+ @param[in] F #F by 3 list of triangle indices
37
+ @param[in] s 3-vector: bone start position
38
+ @param[in] d 3-vector: bone end position
39
+ @return flag #V bool vector, true if vertex is visible to the bone)");
40
+ }
@@ -0,0 +1,44 @@
1
+ #include "default_types.h"
2
+ #include <igl/embree/line_mesh_intersection.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 line_mesh_intersection(
12
+ const nb::DRef<const Eigen::MatrixXN> &V_source,
13
+ const nb::DRef<const Eigen::MatrixXN> &N_source,
14
+ const nb::DRef<const Eigen::MatrixXN> &V_target,
15
+ const nb::DRef<const Eigen::MatrixXI> &F_target)
16
+ {
17
+ // Explicit template instantiation: copies to col-major double/int
18
+ Eigen::MatrixXd vs = V_source, ns = N_source, vt = V_target;
19
+ Eigen::MatrixXi ft = F_target.cast<int>();
20
+ Eigen::MatrixXd result =
21
+ igl::embree::line_mesh_intersection<Eigen::MatrixXd, Eigen::MatrixXi>(
22
+ vs, ns, vt, ft);
23
+ return Eigen::MatrixXN(result);
24
+ }
25
+ }
26
+
27
+ void bind_line_mesh_intersection(nb::module_ &m)
28
+ {
29
+ m.def("line_mesh_intersection", &pyigl::line_mesh_intersection,
30
+ "V_source"_a, "N_source"_a, "V_target"_a, "F_target"_a,
31
+ R"(Project a point cloud onto a target mesh by ray casting along normals.
32
+
33
+ For each source point, a ray is cast along its normal (and the opposite
34
+ direction). The nearest intersection with the target mesh is returned as
35
+ barycentric coordinates.
36
+
37
+ @param[in] V_source #V by 3 source point positions
38
+ @param[in] N_source #V by 3 source point normals
39
+ @param[in] V_target #V2 by 3 target mesh vertex positions
40
+ @param[in] F_target #F2 by 3 target mesh triangle indices
41
+ @return #V by 3 matrix of barycentric hits: each row is (face_id, b1, b2)
42
+ where face_id is the index of the hit face and b1, b2 are barycentric
43
+ coordinates w.r.t. the first two edges)");
44
+ }