libigl 2.6.3.dev2__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.dev2 → libigl-2.6.3.dev3}/.gitignore +2 -1
  2. {libigl-2.6.3.dev2 → libigl-2.6.3.dev3}/CMakeLists.txt +8 -0
  3. {libigl-2.6.3.dev2 → libigl-2.6.3.dev3}/PKG-INFO +16 -2
  4. {libigl-2.6.3.dev2 → libigl-2.6.3.dev3}/README.md +15 -1
  5. {libigl-2.6.3.dev2 → libigl-2.6.3.dev3}/pyproject.toml +1 -1
  6. libigl-2.6.3.dev3/src/lexicographic_triangulation.cpp +47 -0
  7. libigl-2.6.3.dev3/src/predicates/Orientation.cpp +21 -0
  8. libigl-2.6.3.dev3/src/predicates/delaunay_triangulation.cpp +30 -0
  9. libigl-2.6.3.dev3/src/predicates/ear_clipping.cpp +56 -0
  10. libigl-2.6.3.dev3/src/predicates/find_intersections.cpp +49 -0
  11. libigl-2.6.3.dev3/src/predicates/find_self_intersections.cpp +43 -0
  12. libigl-2.6.3.dev3/src/predicates/incircle.cpp +37 -0
  13. libigl-2.6.3.dev3/src/predicates/insphere.cpp +39 -0
  14. libigl-2.6.3.dev3/src/predicates/lexicographic_triangulation.cpp +30 -0
  15. libigl-2.6.3.dev3/src/predicates/module.cpp +9 -0
  16. libigl-2.6.3.dev3/src/predicates/orient2d.cpp +35 -0
  17. libigl-2.6.3.dev3/src/predicates/orient3d.cpp +59 -0
  18. libigl-2.6.3.dev3/src/predicates/point_inside_convex_polygon.cpp +30 -0
  19. libigl-2.6.3.dev3/src/predicates/polygons_to_triangles.cpp +40 -0
  20. libigl-2.6.3.dev3/src/predicates/segment_segment_intersect.cpp +34 -0
  21. libigl-2.6.3.dev3/src/predicates/triangle_triangle_intersect.cpp +43 -0
  22. libigl-2.6.3.dev3/src/spectra/EigsType.cpp +12 -0
  23. libigl-2.6.3.dev3/src/spectra/eigs.cpp +78 -0
  24. libigl-2.6.3.dev3/src/spectra/lscm.cpp +40 -0
  25. libigl-2.6.3.dev3/src/spectra/module.cpp +11 -0
  26. {libigl-2.6.3.dev2 → libigl-2.6.3.dev3}/tests/test_all.py +172 -0
  27. {libigl-2.6.3.dev2 → libigl-2.6.3.dev3}/.github/workflows/pip.yml +0 -0
  28. {libigl-2.6.3.dev2 → libigl-2.6.3.dev3}/.github/workflows/wheels.yml +0 -0
  29. {libigl-2.6.3.dev2 → libigl-2.6.3.dev3}/LICENSE.GPL +0 -0
  30. {libigl-2.6.3.dev2 → libigl-2.6.3.dev3}/LICENSE.MPL2 +0 -0
  31. {libigl-2.6.3.dev2 → libigl-2.6.3.dev3}/attic/copyleft/tetgen_tetrahedralize.cpp +0 -0
  32. {libigl-2.6.3.dev2 → libigl-2.6.3.dev3}/attic/copyleft/triangle_triangulate.cpp +0 -0
  33. {libigl-2.6.3.dev2 → libigl-2.6.3.dev3}/attic/skip/SolverStatus.cpp +0 -0
  34. {libigl-2.6.3.dev2 → libigl-2.6.3.dev3}/attic/skip/WindingNumberMethod.cpp +0 -0
  35. {libigl-2.6.3.dev2 → libigl-2.6.3.dev3}/attic/skip/angular_distance.cpp +0 -0
  36. {libigl-2.6.3.dev2 → libigl-2.6.3.dev3}/attic/skip/canonical_quaternions.cpp +0 -0
  37. {libigl-2.6.3.dev2 → libigl-2.6.3.dev3}/attic/skip/column_to_quats.cpp +0 -0
  38. {libigl-2.6.3.dev2 → libigl-2.6.3.dev3}/attic/skip/comiso_nrosy.cpp +0 -0
  39. {libigl-2.6.3.dev2 → libigl-2.6.3.dev3}/attic/skip/covariance_scatter_matrix.cpp +0 -0
  40. {libigl-2.6.3.dev2 → libigl-2.6.3.dev3}/attic/skip/file_contents_as_string.cpp +0 -0
  41. {libigl-2.6.3.dev2 → libigl-2.6.3.dev3}/attic/skip/fit_rotations.cpp +0 -0
  42. {libigl-2.6.3.dev2 → libigl-2.6.3.dev3}/attic/skip/frame_field_deformer.cpp +0 -0
  43. {libigl-2.6.3.dev2 → libigl-2.6.3.dev3}/attic/skip/frame_to_cross_field.cpp +0 -0
  44. {libigl-2.6.3.dev2 → libigl-2.6.3.dev3}/attic/skip/frustum.cpp +0 -0
  45. {libigl-2.6.3.dev2 → libigl-2.6.3.dev3}/attic/skip/group_sum_matrix.cpp +0 -0
  46. {libigl-2.6.3.dev2 → libigl-2.6.3.dev3}/attic/skip/harwell_boeing.cpp +0 -0
  47. {libigl-2.6.3.dev2 → libigl-2.6.3.dev3}/attic/skip/histc.cpp +0 -0
  48. {libigl-2.6.3.dev2 → libigl-2.6.3.dev3}/attic/skip/hsv_to_rgb.cpp +0 -0
  49. {libigl-2.6.3.dev2 → libigl-2.6.3.dev3}/attic/skip/infinite_cost_stopping_condition.cpp +0 -0
  50. {libigl-2.6.3.dev2 → libigl-2.6.3.dev3}/attic/skip/intersect.cpp +0 -0
  51. {libigl-2.6.3.dev2 → libigl-2.6.3.dev3}/attic/skip/invert_diag.cpp +0 -0
  52. {libigl-2.6.3.dev2 → libigl-2.6.3.dev3}/attic/skip/is_planar.cpp +0 -0
  53. {libigl-2.6.3.dev2 → libigl-2.6.3.dev3}/attic/skip/limit_faces.cpp +0 -0
  54. {libigl-2.6.3.dev2 → libigl-2.6.3.dev3}/attic/skip/line_field_missmatch.cpp +0 -0
  55. {libigl-2.6.3.dev2 → libigl-2.6.3.dev3}/attic/skip/line_search.cpp +0 -0
  56. {libigl-2.6.3.dev2 → libigl-2.6.3.dev3}/attic/skip/mat_to_quat.cpp +0 -0
  57. {libigl-2.6.3.dev2 → libigl-2.6.3.dev3}/attic/skip/material_colors.cpp +0 -0
  58. {libigl-2.6.3.dev2 → libigl-2.6.3.dev3}/attic/skip/max_faces_stopping_condition.cpp +0 -0
  59. {libigl-2.6.3.dev2 → libigl-2.6.3.dev3}/attic/skip/min_quad_dense.cpp +0 -0
  60. {libigl-2.6.3.dev2 → libigl-2.6.3.dev3}/attic/skip/normalize_quat.cpp +0 -0
  61. {libigl-2.6.3.dev2 → libigl-2.6.3.dev3}/attic/skip/on_boundary.cpp +0 -0
  62. {libigl-2.6.3.dev2 → libigl-2.6.3.dev3}/attic/skip/opengl2_draw_beach_ball.cpp +0 -0
  63. {libigl-2.6.3.dev2 → libigl-2.6.3.dev3}/attic/skip/opengl2_draw_floor.cpp +0 -0
  64. {libigl-2.6.3.dev2 → libigl-2.6.3.dev3}/attic/skip/opengl2_draw_mesh.cpp +0 -0
  65. {libigl-2.6.3.dev2 → libigl-2.6.3.dev3}/attic/skip/opengl2_draw_point.cpp +0 -0
  66. {libigl-2.6.3.dev2 → libigl-2.6.3.dev3}/attic/skip/opengl2_draw_rectangular_marquee.cpp +0 -0
  67. {libigl-2.6.3.dev2 → libigl-2.6.3.dev3}/attic/skip/opengl2_draw_skeleton_3d.cpp +0 -0
  68. {libigl-2.6.3.dev2 → libigl-2.6.3.dev3}/attic/skip/opengl2_draw_skeleton_vector_graphics.cpp +0 -0
  69. {libigl-2.6.3.dev2 → libigl-2.6.3.dev3}/attic/skip/opengl2_flare_textures.cpp +0 -0
  70. {libigl-2.6.3.dev2 → libigl-2.6.3.dev3}/attic/skip/opengl2_model_proj_viewport.cpp +0 -0
  71. {libigl-2.6.3.dev2 → libigl-2.6.3.dev3}/attic/skip/opengl2_print_gl_get.cpp +0 -0
  72. {libigl-2.6.3.dev2 → libigl-2.6.3.dev3}/attic/skip/opengl2_project.cpp +0 -0
  73. {libigl-2.6.3.dev2 → libigl-2.6.3.dev3}/attic/skip/opengl2_right_axis.cpp +0 -0
  74. {libigl-2.6.3.dev2 → libigl-2.6.3.dev3}/attic/skip/opengl2_shine_textures.cpp +0 -0
  75. {libigl-2.6.3.dev2 → libigl-2.6.3.dev3}/attic/skip/opengl2_sort_triangles.cpp +0 -0
  76. {libigl-2.6.3.dev2 → libigl-2.6.3.dev3}/attic/skip/opengl2_unproject.cpp +0 -0
  77. {libigl-2.6.3.dev2 → libigl-2.6.3.dev3}/attic/skip/opengl2_unproject_to_zero_plane.cpp +0 -0
  78. {libigl-2.6.3.dev2 → libigl-2.6.3.dev3}/attic/skip/opengl2_up_axis.cpp +0 -0
  79. {libigl-2.6.3.dev2 → libigl-2.6.3.dev3}/attic/skip/opengl2_view_axis.cpp +0 -0
  80. {libigl-2.6.3.dev2 → libigl-2.6.3.dev3}/attic/skip/opengl_create_shader_program.cpp +0 -0
  81. {libigl-2.6.3.dev2 → libigl-2.6.3.dev3}/attic/skip/opengl_destroy_shader_program.cpp +0 -0
  82. {libigl-2.6.3.dev2 → libigl-2.6.3.dev3}/attic/skip/opengl_gl_type_size.cpp +0 -0
  83. {libigl-2.6.3.dev2 → libigl-2.6.3.dev3}/attic/skip/opengl_glfw_background_window.cpp +0 -0
  84. {libigl-2.6.3.dev2 → libigl-2.6.3.dev3}/attic/skip/opengl_glfw_imgui_ImGuiHelpers.cpp +0 -0
  85. {libigl-2.6.3.dev2 → libigl-2.6.3.dev3}/attic/skip/opengl_init_render_to_texture.cpp +0 -0
  86. {libigl-2.6.3.dev2 → libigl-2.6.3.dev3}/attic/skip/opengl_load_shader.cpp +0 -0
  87. {libigl-2.6.3.dev2 → libigl-2.6.3.dev3}/attic/skip/opengl_print_program_info_log.cpp +0 -0
  88. {libigl-2.6.3.dev2 → libigl-2.6.3.dev3}/attic/skip/opengl_print_shader_info_log.cpp +0 -0
  89. {libigl-2.6.3.dev2 → libigl-2.6.3.dev3}/attic/skip/opengl_report_gl_error.cpp +0 -0
  90. {libigl-2.6.3.dev2 → libigl-2.6.3.dev3}/attic/skip/opengl_uniform_type_to_string.cpp +0 -0
  91. {libigl-2.6.3.dev2 → libigl-2.6.3.dev3}/attic/skip/ortho.cpp +0 -0
  92. {libigl-2.6.3.dev2 → libigl-2.6.3.dev3}/attic/skip/parallel_transport_angles.cpp +0 -0
  93. {libigl-2.6.3.dev2 → libigl-2.6.3.dev3}/attic/skip/polar_svd.cpp +0 -0
  94. {libigl-2.6.3.dev2 → libigl-2.6.3.dev3}/attic/skip/polar_svd3x3.cpp +0 -0
  95. {libigl-2.6.3.dev2 → libigl-2.6.3.dev3}/attic/skip/qslim_optimal_collapse_edge_callbacks.cpp +0 -0
  96. {libigl-2.6.3.dev2 → libigl-2.6.3.dev3}/attic/skip/quadric_binary_plus_operator.cpp +0 -0
  97. {libigl-2.6.3.dev2 → libigl-2.6.3.dev3}/attic/skip/quat_conjugate.cpp +0 -0
  98. {libigl-2.6.3.dev2 → libigl-2.6.3.dev3}/attic/skip/quat_mult.cpp +0 -0
  99. {libigl-2.6.3.dev2 → libigl-2.6.3.dev3}/attic/skip/quat_to_axis_angle.cpp +0 -0
  100. {libigl-2.6.3.dev2 → libigl-2.6.3.dev3}/attic/skip/quat_to_mat.cpp +0 -0
  101. {libigl-2.6.3.dev2 → libigl-2.6.3.dev3}/attic/skip/quats_to_column.cpp +0 -0
  102. {libigl-2.6.3.dev2 → libigl-2.6.3.dev3}/attic/skip/random_quaternion.cpp +0 -0
  103. {libigl-2.6.3.dev2 → libigl-2.6.3.dev3}/attic/skip/readBF.cpp +0 -0
  104. {libigl-2.6.3.dev2 → libigl-2.6.3.dev3}/attic/skip/readNODE.cpp +0 -0
  105. {libigl-2.6.3.dev2 → libigl-2.6.3.dev3}/attic/skip/readPLY.cpp +0 -0
  106. {libigl-2.6.3.dev2 → libigl-2.6.3.dev3}/attic/skip/readSTL.cpp +0 -0
  107. {libigl-2.6.3.dev2 → libigl-2.6.3.dev3}/attic/skip/rgb_to_hsv.cpp +0 -0
  108. {libigl-2.6.3.dev2 → libigl-2.6.3.dev3}/attic/skip/rotate_by_quat.cpp +0 -0
  109. {libigl-2.6.3.dev2 → libigl-2.6.3.dev3}/attic/skip/rotation_matrix_from_directions.cpp +0 -0
  110. {libigl-2.6.3.dev2 → libigl-2.6.3.dev3}/attic/skip/snap_to_canonical_view_quat.cpp +0 -0
  111. {libigl-2.6.3.dev2 → libigl-2.6.3.dev3}/attic/skip/snap_to_fixed_up.cpp +0 -0
  112. {libigl-2.6.3.dev2 → libigl-2.6.3.dev3}/attic/skip/sort_angles.cpp +0 -0
  113. {libigl-2.6.3.dev2 → libigl-2.6.3.dev3}/attic/skip/sort_triangles.cpp +0 -0
  114. {libigl-2.6.3.dev2 → libigl-2.6.3.dev3}/attic/skip/sort_vectors_ccw.cpp +0 -0
  115. {libigl-2.6.3.dev2 → libigl-2.6.3.dev3}/attic/skip/svd3x3.cpp +0 -0
  116. {libigl-2.6.3.dev2 → libigl-2.6.3.dev3}/attic/skip/svd3x3_avx.cpp +0 -0
  117. {libigl-2.6.3.dev2 → libigl-2.6.3.dev3}/attic/skip/svd3x3_sse.cpp +0 -0
  118. {libigl-2.6.3.dev2 → libigl-2.6.3.dev3}/attic/skip/trackball.cpp +0 -0
  119. {libigl-2.6.3.dev2 → libigl-2.6.3.dev3}/attic/skip/transpose_blocks.cpp +0 -0
  120. {libigl-2.6.3.dev2 → libigl-2.6.3.dev3}/attic/skip/unique_rows.cpp +0 -0
  121. {libigl-2.6.3.dev2 → libigl-2.6.3.dev3}/attic/skip/voxel_grid.cpp +0 -0
  122. {libigl-2.6.3.dev2 → libigl-2.6.3.dev3}/attic/skip/writePLY.cpp +0 -0
  123. {libigl-2.6.3.dev2 → libigl-2.6.3.dev3}/attic/skip/writeSTL.cpp +0 -0
  124. {libigl-2.6.3.dev2 → libigl-2.6.3.dev3}/attic/skip/writeWRL.cpp +0 -0
  125. {libigl-2.6.3.dev2 → libigl-2.6.3.dev3}/attic/todo-old/MeshBooleanType.cpp +0 -0
  126. {libigl-2.6.3.dev2 → libigl-2.6.3.dev3}/attic/todo-old/NormalType.cpp +0 -0
  127. {libigl-2.6.3.dev2 → libigl-2.6.3.dev3}/attic/todo-old/collapse_edge.cpp +0 -0
  128. {libigl-2.6.3.dev2 → libigl-2.6.3.dev3}/attic/todo-old/copyleft/copyleft_cgal_assign.cpp +0 -0
  129. {libigl-2.6.3.dev2 → libigl-2.6.3.dev3}/attic/todo-old/copyleft/copyleft_cgal_assign_scalar.cpp +0 -0
  130. {libigl-2.6.3.dev2 → libigl-2.6.3.dev3}/attic/todo-old/copyleft/copyleft_cgal_cell_adjacency.cpp +0 -0
  131. {libigl-2.6.3.dev2 → libigl-2.6.3.dev3}/attic/todo-old/copyleft/copyleft_cgal_closest_facet.cpp +0 -0
  132. {libigl-2.6.3.dev2 → libigl-2.6.3.dev3}/attic/todo-old/copyleft/copyleft_cgal_complex_to_mesh.cpp +0 -0
  133. {libigl-2.6.3.dev2 → libigl-2.6.3.dev3}/attic/todo-old/copyleft/copyleft_cgal_component_inside_component.cpp +0 -0
  134. {libigl-2.6.3.dev2 → libigl-2.6.3.dev3}/attic/todo-old/copyleft/copyleft_cgal_convex_hull.cpp +0 -0
  135. {libigl-2.6.3.dev2 → libigl-2.6.3.dev3}/attic/todo-old/copyleft/copyleft_cgal_delaunay_triangulation.cpp +0 -0
  136. {libigl-2.6.3.dev2 → libigl-2.6.3.dev3}/attic/todo-old/copyleft/copyleft_cgal_extract_cells.cpp +0 -0
  137. {libigl-2.6.3.dev2 → libigl-2.6.3.dev3}/attic/todo-old/copyleft/copyleft_cgal_extract_feature.cpp +0 -0
  138. {libigl-2.6.3.dev2 → libigl-2.6.3.dev3}/attic/todo-old/copyleft/copyleft_cgal_fast_winding_number.cpp +0 -0
  139. {libigl-2.6.3.dev2 → libigl-2.6.3.dev3}/attic/todo-old/copyleft/copyleft_cgal_half_space_box.cpp +0 -0
  140. {libigl-2.6.3.dev2 → libigl-2.6.3.dev3}/attic/todo-old/copyleft/copyleft_cgal_hausdorff.cpp +0 -0
  141. {libigl-2.6.3.dev2 → libigl-2.6.3.dev3}/attic/todo-old/copyleft/copyleft_cgal_incircle.cpp +0 -0
  142. {libigl-2.6.3.dev2 → libigl-2.6.3.dev3}/attic/todo-old/copyleft/copyleft_cgal_insert_into_cdt.cpp +0 -0
  143. {libigl-2.6.3.dev2 → libigl-2.6.3.dev3}/attic/todo-old/copyleft/copyleft_cgal_insphere.cpp +0 -0
  144. {libigl-2.6.3.dev2 → libigl-2.6.3.dev3}/attic/todo-old/copyleft/copyleft_cgal_intersect_other.cpp +0 -0
  145. {libigl-2.6.3.dev2 → libigl-2.6.3.dev3}/attic/todo-old/copyleft/copyleft_cgal_intersect_with_half_space.cpp +0 -0
  146. {libigl-2.6.3.dev2 → libigl-2.6.3.dev3}/attic/todo-old/copyleft/copyleft_cgal_lexicographic_triangulation.cpp +0 -0
  147. {libigl-2.6.3.dev2 → libigl-2.6.3.dev3}/attic/todo-old/copyleft/copyleft_cgal_mesh_boolean.cpp +0 -0
  148. {libigl-2.6.3.dev2 → libigl-2.6.3.dev3}/attic/todo-old/copyleft/copyleft_cgal_mesh_boolean_type_to_funcs.cpp +0 -0
  149. {libigl-2.6.3.dev2 → libigl-2.6.3.dev3}/attic/todo-old/copyleft/copyleft_cgal_mesh_to_cgal_triangle_list.cpp +0 -0
  150. {libigl-2.6.3.dev2 → libigl-2.6.3.dev3}/attic/todo-old/copyleft/copyleft_cgal_mesh_to_polyhedron.cpp +0 -0
  151. {libigl-2.6.3.dev2 → libigl-2.6.3.dev3}/attic/todo-old/copyleft/copyleft_cgal_minkowski_sum.cpp +0 -0
  152. {libigl-2.6.3.dev2 → libigl-2.6.3.dev3}/attic/todo-old/copyleft/copyleft_cgal_order_facets_around_edge.cpp +0 -0
  153. {libigl-2.6.3.dev2 → libigl-2.6.3.dev3}/attic/todo-old/copyleft/copyleft_cgal_order_facets_around_edges.cpp +0 -0
  154. {libigl-2.6.3.dev2 → libigl-2.6.3.dev3}/attic/todo-old/copyleft/copyleft_cgal_orient2D.cpp +0 -0
  155. {libigl-2.6.3.dev2 → libigl-2.6.3.dev3}/attic/todo-old/copyleft/copyleft_cgal_orient3D.cpp +0 -0
  156. {libigl-2.6.3.dev2 → libigl-2.6.3.dev3}/attic/todo-old/copyleft/copyleft_cgal_outer_element.cpp +0 -0
  157. {libigl-2.6.3.dev2 → libigl-2.6.3.dev3}/attic/todo-old/copyleft/copyleft_cgal_outer_facet.cpp +0 -0
  158. {libigl-2.6.3.dev2 → libigl-2.6.3.dev3}/attic/todo-old/copyleft/copyleft_cgal_outer_hull.cpp +0 -0
  159. {libigl-2.6.3.dev2 → libigl-2.6.3.dev3}/attic/todo-old/copyleft/copyleft_cgal_peel_outer_hull_layers.cpp +0 -0
  160. {libigl-2.6.3.dev2 → libigl-2.6.3.dev3}/attic/todo-old/copyleft/copyleft_cgal_peel_winding_number_layers.cpp +0 -0
  161. {libigl-2.6.3.dev2 → libigl-2.6.3.dev3}/attic/todo-old/copyleft/copyleft_cgal_piecewise_constant_winding_number.cpp +0 -0
  162. {libigl-2.6.3.dev2 → libigl-2.6.3.dev3}/attic/todo-old/copyleft/copyleft_cgal_point_areas.cpp +0 -0
  163. {libigl-2.6.3.dev2 → libigl-2.6.3.dev3}/attic/todo-old/copyleft/copyleft_cgal_point_mesh_squared_distance.cpp +0 -0
  164. {libigl-2.6.3.dev2 → libigl-2.6.3.dev3}/attic/todo-old/copyleft/copyleft_cgal_point_segment_squared_distance.cpp +0 -0
  165. {libigl-2.6.3.dev2 → libigl-2.6.3.dev3}/attic/todo-old/copyleft/copyleft_cgal_point_solid_signed_squared_distance.cpp +0 -0
  166. {libigl-2.6.3.dev2 → libigl-2.6.3.dev3}/attic/todo-old/copyleft/copyleft_cgal_point_triangle_squared_distance.cpp +0 -0
  167. {libigl-2.6.3.dev2 → libigl-2.6.3.dev3}/attic/todo-old/copyleft/copyleft_cgal_points_inside_component.cpp +0 -0
  168. {libigl-2.6.3.dev2 → libigl-2.6.3.dev3}/attic/todo-old/copyleft/copyleft_cgal_polyhedron_to_mesh.cpp +0 -0
  169. {libigl-2.6.3.dev2 → libigl-2.6.3.dev3}/attic/todo-old/copyleft/copyleft_cgal_projected_cdt.cpp +0 -0
  170. {libigl-2.6.3.dev2 → libigl-2.6.3.dev3}/attic/todo-old/copyleft/copyleft_cgal_projected_delaunay.cpp +0 -0
  171. {libigl-2.6.3.dev2 → libigl-2.6.3.dev3}/attic/todo-old/copyleft/copyleft_cgal_propagate_winding_numbers.cpp +0 -0
  172. {libigl-2.6.3.dev2 → libigl-2.6.3.dev3}/attic/todo-old/copyleft/copyleft_cgal_read_triangle_mesh.cpp +0 -0
  173. {libigl-2.6.3.dev2 → libigl-2.6.3.dev3}/attic/todo-old/copyleft/copyleft_cgal_relabel_small_immersed_cells.cpp +0 -0
  174. {libigl-2.6.3.dev2 → libigl-2.6.3.dev3}/attic/todo-old/copyleft/copyleft_cgal_remesh_intersections.cpp +0 -0
  175. {libigl-2.6.3.dev2 → libigl-2.6.3.dev3}/attic/todo-old/copyleft/copyleft_cgal_remesh_self_intersections.cpp +0 -0
  176. {libigl-2.6.3.dev2 → libigl-2.6.3.dev3}/attic/todo-old/copyleft/copyleft_cgal_resolve_intersections.cpp +0 -0
  177. {libigl-2.6.3.dev2 → libigl-2.6.3.dev3}/attic/todo-old/copyleft/copyleft_cgal_row_to_point.cpp +0 -0
  178. {libigl-2.6.3.dev2 → libigl-2.6.3.dev3}/attic/todo-old/copyleft/copyleft_cgal_segment_segment_squared_distance.cpp +0 -0
  179. {libigl-2.6.3.dev2 → libigl-2.6.3.dev3}/attic/todo-old/copyleft/copyleft_cgal_signed_distance_isosurface.cpp +0 -0
  180. {libigl-2.6.3.dev2 → libigl-2.6.3.dev3}/attic/todo-old/copyleft/copyleft_cgal_snap_rounding.cpp +0 -0
  181. {libigl-2.6.3.dev2 → libigl-2.6.3.dev3}/attic/todo-old/copyleft/copyleft_cgal_string_to_mesh_boolean_type.cpp +0 -0
  182. {libigl-2.6.3.dev2 → libigl-2.6.3.dev3}/attic/todo-old/copyleft/copyleft_cgal_subdivide_segments.cpp +0 -0
  183. {libigl-2.6.3.dev2 → libigl-2.6.3.dev3}/attic/todo-old/copyleft/copyleft_cgal_submesh_aabb_tree.cpp +0 -0
  184. {libigl-2.6.3.dev2 → libigl-2.6.3.dev3}/attic/todo-old/copyleft/copyleft_cgal_triangle_triangle_squared_distance.cpp +0 -0
  185. {libigl-2.6.3.dev2 → libigl-2.6.3.dev3}/attic/todo-old/copyleft/copyleft_cgal_trim_with_solid.cpp +0 -0
  186. {libigl-2.6.3.dev2 → libigl-2.6.3.dev3}/attic/todo-old/copyleft/copyleft_cgal_wire_mesh.cpp +0 -0
  187. {libigl-2.6.3.dev2 → libigl-2.6.3.dev3}/attic/todo-old/copyleft/copyleft_comiso_miq.cpp +0 -0
  188. {libigl-2.6.3.dev2 → libigl-2.6.3.dev3}/attic/todo-old/copyleft/copyleft_cork_mesh_boolean.cpp +0 -0
  189. {libigl-2.6.3.dev2 → libigl-2.6.3.dev3}/attic/todo-old/copyleft/copyleft_marching_cubes.cpp +0 -0
  190. {libigl-2.6.3.dev2 → libigl-2.6.3.dev3}/attic/todo-old/copyleft/copyleft_offset_surface.cpp +0 -0
  191. {libigl-2.6.3.dev2 → libigl-2.6.3.dev3}/attic/todo-old/copyleft/copyleft_opengl2_render_to_tga.cpp +0 -0
  192. {libigl-2.6.3.dev2 → libigl-2.6.3.dev3}/attic/todo-old/copyleft/copyleft_opengl2_texture_from_tga.cpp +0 -0
  193. {libigl-2.6.3.dev2 → libigl-2.6.3.dev3}/attic/todo-old/copyleft/copyleft_progressive_hulls.cpp +0 -0
  194. {libigl-2.6.3.dev2 → libigl-2.6.3.dev3}/attic/todo-old/copyleft/copyleft_progressive_hulls_cost_and_placement.cpp +0 -0
  195. {libigl-2.6.3.dev2 → libigl-2.6.3.dev3}/attic/todo-old/copyleft/copyleft_quadprog.cpp +0 -0
  196. {libigl-2.6.3.dev2 → libigl-2.6.3.dev3}/attic/todo-old/copyleft/copyleft_swept_volume.cpp +0 -0
  197. {libigl-2.6.3.dev2 → libigl-2.6.3.dev3}/attic/todo-old/copyleft/copyleft_tetgen_mesh_with_skeleton.cpp +0 -0
  198. {libigl-2.6.3.dev2 → libigl-2.6.3.dev3}/attic/todo-old/copyleft/copyleft_tetgen_read_into_tetgenio.cpp +0 -0
  199. {libigl-2.6.3.dev2 → libigl-2.6.3.dev3}/attic/todo-old/copyleft/copyleft_tetgen_tetrahedralize.cpp +0 -0
  200. {libigl-2.6.3.dev2 → libigl-2.6.3.dev3}/attic/todo-old/dijkstra.cpp +0 -0
  201. {libigl-2.6.3.dev2 → libigl-2.6.3.dev3}/attic/todo-old/embree_bone_heat.cpp +0 -0
  202. {libigl-2.6.3.dev2 → libigl-2.6.3.dev3}/attic/todo-old/embree_reorient_facets_raycast.cpp +0 -0
  203. {libigl-2.6.3.dev2 → libigl-2.6.3.dev3}/attic/todo-old/fast_winding_number.cpp +0 -0
  204. {libigl-2.6.3.dev2 → libigl-2.6.3.dev3}/attic/todo-old/flip_edge.cpp +0 -0
  205. {libigl-2.6.3.dev2 → libigl-2.6.3.dev3}/attic/todo-old/knn.cpp +0 -0
  206. {libigl-2.6.3.dev2 → libigl-2.6.3.dev3}/attic/todo-old/mosek_mosek_guarded.cpp +0 -0
  207. {libigl-2.6.3.dev2 → libigl-2.6.3.dev3}/attic/todo-old/mosek_mosek_linprog.cpp +0 -0
  208. {libigl-2.6.3.dev2 → libigl-2.6.3.dev3}/attic/todo-old/octree.cpp +0 -0
  209. {libigl-2.6.3.dev2 → libigl-2.6.3.dev3}/attic/todo-old/per_vertex_point_to_plane_quadrics.cpp +0 -0
  210. {libigl-2.6.3.dev2 → libigl-2.6.3.dev3}/attic/todo-old/png_readPNG.cpp +0 -0
  211. {libigl-2.6.3.dev2 → libigl-2.6.3.dev3}/attic/todo-old/png_render_to_png.cpp +0 -0
  212. {libigl-2.6.3.dev2 → libigl-2.6.3.dev3}/attic/todo-old/png_render_to_png_async.cpp +0 -0
  213. {libigl-2.6.3.dev2 → libigl-2.6.3.dev3}/attic/todo-old/png_texture_from_file.cpp +0 -0
  214. {libigl-2.6.3.dev2 → libigl-2.6.3.dev3}/attic/todo-old/png_texture_from_png.cpp +0 -0
  215. {libigl-2.6.3.dev2 → libigl-2.6.3.dev3}/attic/todo-old/png_writePNG.cpp +0 -0
  216. {libigl-2.6.3.dev2 → libigl-2.6.3.dev3}/attic/todo-old/pseudonormal_test.cpp +0 -0
  217. {libigl-2.6.3.dev2 → libigl-2.6.3.dev3}/attic/todo-old/readWRL.cpp +0 -0
  218. {libigl-2.6.3.dev2 → libigl-2.6.3.dev3}/attic/todo-old/remesh_along_isoline.cpp +0 -0
  219. {libigl-2.6.3.dev2 → libigl-2.6.3.dev3}/attic/todo-old/seam_edges.cpp +0 -0
  220. {libigl-2.6.3.dev2 → libigl-2.6.3.dev3}/attic/todo-old/shortest_edge_and_midpoint.cpp +0 -0
  221. {libigl-2.6.3.dev2 → libigl-2.6.3.dev3}/attic/todo-old/squared_edge_lengths.cpp +0 -0
  222. {libigl-2.6.3.dev2 → libigl-2.6.3.dev3}/attic/todo-old/straighten_seams.cpp +0 -0
  223. {libigl-2.6.3.dev2 → libigl-2.6.3.dev3}/attic/todo-old/swept_volume_signed_distance.cpp +0 -0
  224. {libigl-2.6.3.dev2 → libigl-2.6.3.dev3}/attic/todo-old/triangle_cdt.cpp +0 -0
  225. {libigl-2.6.3.dev2 → libigl-2.6.3.dev3}/attic/todo-old/unzip_corners.cpp +0 -0
  226. {libigl-2.6.3.dev2 → libigl-2.6.3.dev3}/attic/todo-old/writeBF.cpp +0 -0
  227. {libigl-2.6.3.dev2 → libigl-2.6.3.dev3}/attic/todo-old/writeDMAT.cpp +0 -0
  228. {libigl-2.6.3.dev2 → libigl-2.6.3.dev3}/attic/todo-old/writeMESH.cpp +0 -0
  229. {libigl-2.6.3.dev2 → libigl-2.6.3.dev3}/attic/todo-old/writeTGF.cpp +0 -0
  230. {libigl-2.6.3.dev2 → libigl-2.6.3.dev3}/attic/todo-old/xml_writeDAE.cpp +0 -0
  231. {libigl-2.6.3.dev2 → libigl-2.6.3.dev3}/attic/todo-old/xml_write_triangle_mesh.cpp +0 -0
  232. {libigl-2.6.3.dev2 → libigl-2.6.3.dev3}/classes/AABB.cpp +0 -0
  233. {libigl-2.6.3.dev2 → libigl-2.6.3.dev3}/classes/classes.cpp +0 -0
  234. {libigl-2.6.3.dev2 → libigl-2.6.3.dev3}/cmake/CXXFeatures.cmake +0 -0
  235. {libigl-2.6.3.dev2 → libigl-2.6.3.dev3}/cmake/FindLIBIGL.cmake +0 -0
  236. {libigl-2.6.3.dev2 → libigl-2.6.3.dev3}/cmake/UseColors.cmake +0 -0
  237. {libigl-2.6.3.dev2 → libigl-2.6.3.dev3}/cmake/Warnings.cmake +0 -0
  238. {libigl-2.6.3.dev2 → libigl-2.6.3.dev3}/include/default_types.h +0 -0
  239. {libigl-2.6.3.dev2 → libigl-2.6.3.dev3}/memory/MEMORY.md +0 -0
  240. {libigl-2.6.3.dev2 → libigl-2.6.3.dev3}/missing.sh +0 -0
  241. {libigl-2.6.3.dev2 → libigl-2.6.3.dev3}/mkdocs.yml +0 -0
  242. {libigl-2.6.3.dev2 → libigl-2.6.3.dev3}/postBuild +0 -0
  243. {libigl-2.6.3.dev2 → libigl-2.6.3.dev3}/priority.txt +0 -0
  244. {libigl-2.6.3.dev2 → libigl-2.6.3.dev3}/scripts/basic_function.mako +0 -0
  245. {libigl-2.6.3.dev2 → libigl-2.6.3.dev3}/scripts/blender_igl_export.py +0 -0
  246. {libigl-2.6.3.dev2 → libigl-2.6.3.dev3}/scripts/generate_bindings.py +0 -0
  247. {libigl-2.6.3.dev2 → libigl-2.6.3.dev3}/scripts/make_lean.py +0 -0
  248. {libigl-2.6.3.dev2 → libigl-2.6.3.dev3}/scripts/parser.py +0 -0
  249. {libigl-2.6.3.dev2 → libigl-2.6.3.dev3}/src/AABB.cpp +0 -0
  250. {libigl-2.6.3.dev2 → libigl-2.6.3.dev3}/src/FileEncoding.cpp +0 -0
  251. {libigl-2.6.3.dev2 → libigl-2.6.3.dev3}/src/MappingEnergyType.cpp +0 -0
  252. {libigl-2.6.3.dev2 → libigl-2.6.3.dev3}/src/MassMatrixType.cpp +0 -0
  253. {libigl-2.6.3.dev2 → libigl-2.6.3.dev3}/src/OrientedBoundingBoxMinimizeType.cpp +0 -0
  254. {libigl-2.6.3.dev2 → libigl-2.6.3.dev3}/src/accumarray.cpp +0 -0
  255. {libigl-2.6.3.dev2 → libigl-2.6.3.dev3}/src/adjacency_list.cpp +0 -0
  256. {libigl-2.6.3.dev2 → libigl-2.6.3.dev3}/src/adjacency_matrix.cpp +0 -0
  257. {libigl-2.6.3.dev2 → libigl-2.6.3.dev3}/src/all_pairs_distances.cpp +0 -0
  258. {libigl-2.6.3.dev2 → libigl-2.6.3.dev3}/src/arap.cpp +0 -0
  259. {libigl-2.6.3.dev2 → libigl-2.6.3.dev3}/src/average_from_edges_onto_vertices.cpp +0 -0
  260. {libigl-2.6.3.dev2 → libigl-2.6.3.dev3}/src/average_onto_faces.cpp +0 -0
  261. {libigl-2.6.3.dev2 → libigl-2.6.3.dev3}/src/average_onto_vertices.cpp +0 -0
  262. {libigl-2.6.3.dev2 → libigl-2.6.3.dev3}/src/avg_edge_length.cpp +0 -0
  263. {libigl-2.6.3.dev2 → libigl-2.6.3.dev3}/src/barycenter.cpp +0 -0
  264. {libigl-2.6.3.dev2 → libigl-2.6.3.dev3}/src/barycentric_coordinates.cpp +0 -0
  265. {libigl-2.6.3.dev2 → libigl-2.6.3.dev3}/src/barycentric_interpolation.cpp +0 -0
  266. {libigl-2.6.3.dev2 → libigl-2.6.3.dev3}/src/bbw.cpp +0 -0
  267. {libigl-2.6.3.dev2 → libigl-2.6.3.dev3}/src/bezier.cpp +0 -0
  268. {libigl-2.6.3.dev2 → libigl-2.6.3.dev3}/src/bfs_orient.cpp +0 -0
  269. {libigl-2.6.3.dev2 → libigl-2.6.3.dev3}/src/biharmonic_coordinates.cpp +0 -0
  270. {libigl-2.6.3.dev2 → libigl-2.6.3.dev3}/src/bijective_composite_harmonic_mapping.cpp +0 -0
  271. {libigl-2.6.3.dev2 → libigl-2.6.3.dev3}/src/blue_noise.cpp +0 -0
  272. {libigl-2.6.3.dev2 → libigl-2.6.3.dev3}/src/boundary_facets.cpp +0 -0
  273. {libigl-2.6.3.dev2 → libigl-2.6.3.dev3}/src/boundary_loop.cpp +0 -0
  274. {libigl-2.6.3.dev2 → libigl-2.6.3.dev3}/src/bounding_box.cpp +0 -0
  275. {libigl-2.6.3.dev2 → libigl-2.6.3.dev3}/src/bounding_box_diagonal.cpp +0 -0
  276. {libigl-2.6.3.dev2 → libigl-2.6.3.dev3}/src/centroid.cpp +0 -0
  277. {libigl-2.6.3.dev2 → libigl-2.6.3.dev3}/src/circulation.cpp +0 -0
  278. {libigl-2.6.3.dev2 → libigl-2.6.3.dev3}/src/circumradius.cpp +0 -0
  279. {libigl-2.6.3.dev2 → libigl-2.6.3.dev3}/src/collapse_edge.cpp +0 -0
  280. {libigl-2.6.3.dev2 → libigl-2.6.3.dev3}/src/colormap.cpp +0 -0
  281. {libigl-2.6.3.dev2 → libigl-2.6.3.dev3}/src/comb_cross_field.cpp +0 -0
  282. {libigl-2.6.3.dev2 → libigl-2.6.3.dev3}/src/comb_frame_field.cpp +0 -0
  283. {libigl-2.6.3.dev2 → libigl-2.6.3.dev3}/src/combine.cpp +0 -0
  284. {libigl-2.6.3.dev2 → libigl-2.6.3.dev3}/src/compute_frame_field_bisectors.cpp +0 -0
  285. {libigl-2.6.3.dev2 → libigl-2.6.3.dev3}/src/connected_components.cpp +0 -0
  286. {libigl-2.6.3.dev2 → libigl-2.6.3.dev3}/src/copyleft/cgal/convex_hull.cpp +0 -0
  287. {libigl-2.6.3.dev2 → libigl-2.6.3.dev3}/src/copyleft/cgal/coplanar.cpp +0 -0
  288. {libigl-2.6.3.dev2 → libigl-2.6.3.dev3}/src/copyleft/cgal/delaunay_triangulation.cpp +0 -0
  289. {libigl-2.6.3.dev2 → libigl-2.6.3.dev3}/src/copyleft/cgal/extract_cells.cpp +0 -0
  290. {libigl-2.6.3.dev2 → libigl-2.6.3.dev3}/src/copyleft/cgal/fast_winding_number.cpp +0 -0
  291. {libigl-2.6.3.dev2 → libigl-2.6.3.dev3}/src/copyleft/cgal/intersect_other.cpp +0 -0
  292. {libigl-2.6.3.dev2 → libigl-2.6.3.dev3}/src/copyleft/cgal/intersect_with_half_space.cpp +0 -0
  293. {libigl-2.6.3.dev2 → libigl-2.6.3.dev3}/src/copyleft/cgal/mesh_boolean.cpp +0 -0
  294. {libigl-2.6.3.dev2 → libigl-2.6.3.dev3}/src/copyleft/cgal/module.cpp +0 -0
  295. {libigl-2.6.3.dev2 → libigl-2.6.3.dev3}/src/copyleft/cgal/oriented_bounding_box.cpp +0 -0
  296. {libigl-2.6.3.dev2 → libigl-2.6.3.dev3}/src/copyleft/cgal/outer_hull.cpp +0 -0
  297. {libigl-2.6.3.dev2 → libigl-2.6.3.dev3}/src/copyleft/cgal/peel_outer_hull_layers.cpp +0 -0
  298. {libigl-2.6.3.dev2 → libigl-2.6.3.dev3}/src/copyleft/cgal/peel_winding_number_layers.cpp +0 -0
  299. {libigl-2.6.3.dev2 → libigl-2.6.3.dev3}/src/copyleft/cgal/point_areas.cpp +0 -0
  300. {libigl-2.6.3.dev2 → libigl-2.6.3.dev3}/src/copyleft/cgal/remesh_self_intersections.cpp +0 -0
  301. {libigl-2.6.3.dev2 → libigl-2.6.3.dev3}/src/copyleft/cgal/trim_with_solid.cpp +0 -0
  302. {libigl-2.6.3.dev2 → libigl-2.6.3.dev3}/src/copyleft/marching_cubes.cpp +0 -0
  303. {libigl-2.6.3.dev2 → libigl-2.6.3.dev3}/src/copyleft/module.cpp +0 -0
  304. {libigl-2.6.3.dev2 → libigl-2.6.3.dev3}/src/copyleft/progressive_hulls.cpp +0 -0
  305. {libigl-2.6.3.dev2 → libigl-2.6.3.dev3}/src/copyleft/quadprog.cpp +0 -0
  306. {libigl-2.6.3.dev2 → libigl-2.6.3.dev3}/src/copyleft/tetgen/cdt.cpp +0 -0
  307. {libigl-2.6.3.dev2 → libigl-2.6.3.dev3}/src/copyleft/tetgen/mesh_with_skeleton.cpp +0 -0
  308. {libigl-2.6.3.dev2 → libigl-2.6.3.dev3}/src/copyleft/tetgen/module.cpp +0 -0
  309. {libigl-2.6.3.dev2 → libigl-2.6.3.dev3}/src/copyleft/tetgen/tetrahedralize.cpp +0 -0
  310. {libigl-2.6.3.dev2 → libigl-2.6.3.dev3}/src/cotmatrix.cpp +0 -0
  311. {libigl-2.6.3.dev2 → libigl-2.6.3.dev3}/src/cotmatrix_entries.cpp +0 -0
  312. {libigl-2.6.3.dev2 → libigl-2.6.3.dev3}/src/cotmatrix_intrinsic.cpp +0 -0
  313. {libigl-2.6.3.dev2 → libigl-2.6.3.dev3}/src/cross_field_mismatch.cpp +0 -0
  314. {libigl-2.6.3.dev2 → libigl-2.6.3.dev3}/src/crouzeix_raviart_cotmatrix.cpp +0 -0
  315. {libigl-2.6.3.dev2 → libigl-2.6.3.dev3}/src/crouzeix_raviart_massmatrix.cpp +0 -0
  316. {libigl-2.6.3.dev2 → libigl-2.6.3.dev3}/src/curved_hessian_energy.cpp +0 -0
  317. {libigl-2.6.3.dev2 → libigl-2.6.3.dev3}/src/cut_mesh.cpp +0 -0
  318. {libigl-2.6.3.dev2 → libigl-2.6.3.dev3}/src/cut_mesh_from_singularities.cpp +0 -0
  319. {libigl-2.6.3.dev2 → libigl-2.6.3.dev3}/src/cut_to_disk.cpp +0 -0
  320. {libigl-2.6.3.dev2 → libigl-2.6.3.dev3}/src/cylinder.cpp +0 -0
  321. {libigl-2.6.3.dev2 → libigl-2.6.3.dev3}/src/decimate.cpp +0 -0
  322. {libigl-2.6.3.dev2 → libigl-2.6.3.dev3}/src/dihedral_angles.cpp +0 -0
  323. {libigl-2.6.3.dev2 → libigl-2.6.3.dev3}/src/dihedral_angles_intrinsic.cpp +0 -0
  324. {libigl-2.6.3.dev2 → libigl-2.6.3.dev3}/src/dijkstra.cpp +0 -0
  325. {libigl-2.6.3.dev2 → libigl-2.6.3.dev3}/src/directed_edge_parents.cpp +0 -0
  326. {libigl-2.6.3.dev2 → libigl-2.6.3.dev3}/src/doublearea.cpp +0 -0
  327. {libigl-2.6.3.dev2 → libigl-2.6.3.dev3}/src/dual_contouring.cpp +0 -0
  328. {libigl-2.6.3.dev2 → libigl-2.6.3.dev3}/src/ears.cpp +0 -0
  329. {libigl-2.6.3.dev2 → libigl-2.6.3.dev3}/src/edge_flaps.cpp +0 -0
  330. {libigl-2.6.3.dev2 → libigl-2.6.3.dev3}/src/edge_lengths.cpp +0 -0
  331. {libigl-2.6.3.dev2 → libigl-2.6.3.dev3}/src/edge_topology.cpp +0 -0
  332. {libigl-2.6.3.dev2 → libigl-2.6.3.dev3}/src/edges.cpp +0 -0
  333. {libigl-2.6.3.dev2 → libigl-2.6.3.dev3}/src/edges_to_path.cpp +0 -0
  334. {libigl-2.6.3.dev2 → libigl-2.6.3.dev3}/src/embree/EmbreeIntersector.cpp +0 -0
  335. {libigl-2.6.3.dev2 → libigl-2.6.3.dev3}/src/embree/ambient_occlusion.cpp +0 -0
  336. {libigl-2.6.3.dev2 → libigl-2.6.3.dev3}/src/embree/bone_visible.cpp +0 -0
  337. {libigl-2.6.3.dev2 → libigl-2.6.3.dev3}/src/embree/line_mesh_intersection.cpp +0 -0
  338. {libigl-2.6.3.dev2 → libigl-2.6.3.dev3}/src/embree/module.cpp +0 -0
  339. {libigl-2.6.3.dev2 → libigl-2.6.3.dev3}/src/embree/reorient_facets_raycast.cpp +0 -0
  340. {libigl-2.6.3.dev2 → libigl-2.6.3.dev3}/src/embree/shape_diameter_function.cpp +0 -0
  341. {libigl-2.6.3.dev2 → libigl-2.6.3.dev3}/src/euler_characteristic.cpp +0 -0
  342. {libigl-2.6.3.dev2 → libigl-2.6.3.dev3}/src/exact_geodesic.cpp +0 -0
  343. {libigl-2.6.3.dev2 → libigl-2.6.3.dev3}/src/exterior_edges.cpp +0 -0
  344. {libigl-2.6.3.dev2 → libigl-2.6.3.dev3}/src/extract_manifold_patches.cpp +0 -0
  345. {libigl-2.6.3.dev2 → libigl-2.6.3.dev3}/src/face_areas.cpp +0 -0
  346. {libigl-2.6.3.dev2 → libigl-2.6.3.dev3}/src/face_occurrences.cpp +0 -0
  347. {libigl-2.6.3.dev2 → libigl-2.6.3.dev3}/src/facet_adjacency_matrix.cpp +0 -0
  348. {libigl-2.6.3.dev2 → libigl-2.6.3.dev3}/src/facet_components.cpp +0 -0
  349. {libigl-2.6.3.dev2 → libigl-2.6.3.dev3}/src/false_barycentric_subdivision.cpp +0 -0
  350. {libigl-2.6.3.dev2 → libigl-2.6.3.dev3}/src/fast_winding_number.cpp +0 -0
  351. {libigl-2.6.3.dev2 → libigl-2.6.3.dev3}/src/find_cross_field_singularities.cpp +0 -0
  352. {libigl-2.6.3.dev2 → libigl-2.6.3.dev3}/src/fit_plane.cpp +0 -0
  353. {libigl-2.6.3.dev2 → libigl-2.6.3.dev3}/src/flipped_triangles.cpp +0 -0
  354. {libigl-2.6.3.dev2 → libigl-2.6.3.dev3}/src/flood_fill.cpp +0 -0
  355. {libigl-2.6.3.dev2 → libigl-2.6.3.dev3}/src/gaussian_curvature.cpp +0 -0
  356. {libigl-2.6.3.dev2 → libigl-2.6.3.dev3}/src/grad.cpp +0 -0
  357. {libigl-2.6.3.dev2 → libigl-2.6.3.dev3}/src/grid.cpp +0 -0
  358. {libigl-2.6.3.dev2 → libigl-2.6.3.dev3}/src/harmonic.cpp +0 -0
  359. {libigl-2.6.3.dev2 → libigl-2.6.3.dev3}/src/hausdorff.cpp +0 -0
  360. {libigl-2.6.3.dev2 → libigl-2.6.3.dev3}/src/heat_geodesics.cpp +0 -0
  361. {libigl-2.6.3.dev2 → libigl-2.6.3.dev3}/src/hessian.cpp +0 -0
  362. {libigl-2.6.3.dev2 → libigl-2.6.3.dev3}/src/hessian_energy.cpp +0 -0
  363. {libigl-2.6.3.dev2 → libigl-2.6.3.dev3}/src/hsv_to_rgb.cpp +0 -0
  364. {libigl-2.6.3.dev2 → libigl-2.6.3.dev3}/src/icosahedron.cpp +0 -0
  365. {libigl-2.6.3.dev2 → libigl-2.6.3.dev3}/src/in_element.cpp +0 -0
  366. {libigl-2.6.3.dev2 → libigl-2.6.3.dev3}/src/inradius.cpp +0 -0
  367. {libigl-2.6.3.dev2 → libigl-2.6.3.dev3}/src/internal_angles.cpp +0 -0
  368. {libigl-2.6.3.dev2 → libigl-2.6.3.dev3}/src/intrinsic_delaunay_cotmatrix.cpp +0 -0
  369. {libigl-2.6.3.dev2 → libigl-2.6.3.dev3}/src/intrinsic_delaunay_triangulation.cpp +0 -0
  370. {libigl-2.6.3.dev2 → libigl-2.6.3.dev3}/src/is_border_vertex.cpp +0 -0
  371. {libigl-2.6.3.dev2 → libigl-2.6.3.dev3}/src/is_boundary_edge.cpp +0 -0
  372. {libigl-2.6.3.dev2 → libigl-2.6.3.dev3}/src/is_delaunay.cpp +0 -0
  373. {libigl-2.6.3.dev2 → libigl-2.6.3.dev3}/src/is_edge_manifold.cpp +0 -0
  374. {libigl-2.6.3.dev2 → libigl-2.6.3.dev3}/src/is_intrinsic_delaunay.cpp +0 -0
  375. {libigl-2.6.3.dev2 → libigl-2.6.3.dev3}/src/is_irregular_vertex.cpp +0 -0
  376. {libigl-2.6.3.dev2 → libigl-2.6.3.dev3}/src/is_vertex_manifold.cpp +0 -0
  377. {libigl-2.6.3.dev2 → libigl-2.6.3.dev3}/src/ismember_rows.cpp +0 -0
  378. {libigl-2.6.3.dev2 → libigl-2.6.3.dev3}/src/isolines.cpp +0 -0
  379. {libigl-2.6.3.dev2 → libigl-2.6.3.dev3}/src/isolines_intrinsic.cpp +0 -0
  380. {libigl-2.6.3.dev2 → libigl-2.6.3.dev3}/src/iterative_closest_point.cpp +0 -0
  381. {libigl-2.6.3.dev2 → libigl-2.6.3.dev3}/src/kelvinlets.cpp +0 -0
  382. {libigl-2.6.3.dev2 → libigl-2.6.3.dev3}/src/knn.cpp +0 -0
  383. {libigl-2.6.3.dev2 → libigl-2.6.3.dev3}/src/lbs_matrix.cpp +0 -0
  384. {libigl-2.6.3.dev2 → libigl-2.6.3.dev3}/src/lipschitz_octree.cpp +0 -0
  385. {libigl-2.6.3.dev2 → libigl-2.6.3.dev3}/src/local_basis.cpp +0 -0
  386. {libigl-2.6.3.dev2 → libigl-2.6.3.dev3}/src/look_at.cpp +0 -0
  387. {libigl-2.6.3.dev2 → libigl-2.6.3.dev3}/src/loop.cpp +0 -0
  388. {libigl-2.6.3.dev2 → libigl-2.6.3.dev3}/src/lscm.cpp +0 -0
  389. {libigl-2.6.3.dev2 → libigl-2.6.3.dev3}/src/map_vertices_to_circle.cpp +0 -0
  390. {libigl-2.6.3.dev2 → libigl-2.6.3.dev3}/src/marching_cubes.cpp +0 -0
  391. {libigl-2.6.3.dev2 → libigl-2.6.3.dev3}/src/massmatrix.cpp +0 -0
  392. {libigl-2.6.3.dev2 → libigl-2.6.3.dev3}/src/massmatrix_intrinsic.cpp +0 -0
  393. {libigl-2.6.3.dev2 → libigl-2.6.3.dev3}/src/matlab_format.cpp +0 -0
  394. {libigl-2.6.3.dev2 → libigl-2.6.3.dev3}/src/min_quad_with_fixed.cpp +0 -0
  395. {libigl-2.6.3.dev2 → libigl-2.6.3.dev3}/src/module.cpp +0 -0
  396. {libigl-2.6.3.dev2 → libigl-2.6.3.dev3}/src/moments.cpp +0 -0
  397. {libigl-2.6.3.dev2 → libigl-2.6.3.dev3}/src/mvc.cpp +0 -0
  398. {libigl-2.6.3.dev2 → libigl-2.6.3.dev3}/src/noop.cpp +0 -0
  399. {libigl-2.6.3.dev2 → libigl-2.6.3.dev3}/src/octree.cpp +0 -0
  400. {libigl-2.6.3.dev2 → libigl-2.6.3.dev3}/src/offset_surface.cpp +0 -0
  401. {libigl-2.6.3.dev2 → libigl-2.6.3.dev3}/src/on_boundary.cpp +0 -0
  402. {libigl-2.6.3.dev2 → libigl-2.6.3.dev3}/src/orient_halfedges.cpp +0 -0
  403. {libigl-2.6.3.dev2 → libigl-2.6.3.dev3}/src/orient_outward.cpp +0 -0
  404. {libigl-2.6.3.dev2 → libigl-2.6.3.dev3}/src/orientable_patches.cpp +0 -0
  405. {libigl-2.6.3.dev2 → libigl-2.6.3.dev3}/src/oriented_bounding_box.cpp +0 -0
  406. {libigl-2.6.3.dev2 → libigl-2.6.3.dev3}/src/oriented_facets.cpp +0 -0
  407. {libigl-2.6.3.dev2 → libigl-2.6.3.dev3}/src/per_corner_normals.cpp +0 -0
  408. {libigl-2.6.3.dev2 → libigl-2.6.3.dev3}/src/per_edge_normals.cpp +0 -0
  409. {libigl-2.6.3.dev2 → libigl-2.6.3.dev3}/src/per_face_normals.cpp +0 -0
  410. {libigl-2.6.3.dev2 → libigl-2.6.3.dev3}/src/per_vertex_attribute_smoothing.cpp +0 -0
  411. {libigl-2.6.3.dev2 → libigl-2.6.3.dev3}/src/per_vertex_normals.cpp +0 -0
  412. {libigl-2.6.3.dev2 → libigl-2.6.3.dev3}/src/point_mesh_squared_distance.cpp +0 -0
  413. {libigl-2.6.3.dev2 → libigl-2.6.3.dev3}/src/polar_dec.cpp +0 -0
  414. {libigl-2.6.3.dev2 → libigl-2.6.3.dev3}/src/polar_svd.cpp +0 -0
  415. {libigl-2.6.3.dev2 → libigl-2.6.3.dev3}/src/polygon_corners.cpp +0 -0
  416. {libigl-2.6.3.dev2 → libigl-2.6.3.dev3}/src/polygons_to_triangles.cpp +0 -0
  417. {libigl-2.6.3.dev2 → libigl-2.6.3.dev3}/src/principal_curvature.cpp +0 -0
  418. {libigl-2.6.3.dev2 → libigl-2.6.3.dev3}/src/procrustes.cpp +0 -0
  419. {libigl-2.6.3.dev2 → libigl-2.6.3.dev3}/src/project.cpp +0 -0
  420. {libigl-2.6.3.dev2 → libigl-2.6.3.dev3}/src/project_to_line.cpp +0 -0
  421. {libigl-2.6.3.dev2 → libigl-2.6.3.dev3}/src/project_to_line_segment.cpp +0 -0
  422. {libigl-2.6.3.dev2 → libigl-2.6.3.dev3}/src/pseudonormal_test.cpp +0 -0
  423. {libigl-2.6.3.dev2 → libigl-2.6.3.dev3}/src/qslim.cpp +0 -0
  424. {libigl-2.6.3.dev2 → libigl-2.6.3.dev3}/src/quad_grid.cpp +0 -0
  425. {libigl-2.6.3.dev2 → libigl-2.6.3.dev3}/src/random_dir.cpp +0 -0
  426. {libigl-2.6.3.dev2 → libigl-2.6.3.dev3}/src/random_points_on_mesh.cpp +0 -0
  427. {libigl-2.6.3.dev2 → libigl-2.6.3.dev3}/src/ray_mesh_intersect.cpp +0 -0
  428. {libigl-2.6.3.dev2 → libigl-2.6.3.dev3}/src/ray_sphere_intersect.cpp +0 -0
  429. {libigl-2.6.3.dev2 → libigl-2.6.3.dev3}/src/ray_triangle_intersect.cpp +0 -0
  430. {libigl-2.6.3.dev2 → libigl-2.6.3.dev3}/src/readCSV.cpp +0 -0
  431. {libigl-2.6.3.dev2 → libigl-2.6.3.dev3}/src/readDMAT.cpp +0 -0
  432. {libigl-2.6.3.dev2 → libigl-2.6.3.dev3}/src/readMESH.cpp +0 -0
  433. {libigl-2.6.3.dev2 → libigl-2.6.3.dev3}/src/readMSH.cpp +0 -0
  434. {libigl-2.6.3.dev2 → libigl-2.6.3.dev3}/src/readOBJ.cpp +0 -0
  435. {libigl-2.6.3.dev2 → libigl-2.6.3.dev3}/src/readOFF.cpp +0 -0
  436. {libigl-2.6.3.dev2 → libigl-2.6.3.dev3}/src/readSTL.cpp +0 -0
  437. {libigl-2.6.3.dev2 → libigl-2.6.3.dev3}/src/read_triangle_mesh.cpp +0 -0
  438. {libigl-2.6.3.dev2 → libigl-2.6.3.dev3}/src/remove_duplicate_vertices.cpp +0 -0
  439. {libigl-2.6.3.dev2 → libigl-2.6.3.dev3}/src/remove_unreferenced.cpp +0 -0
  440. {libigl-2.6.3.dev2 → libigl-2.6.3.dev3}/src/rgb_to_hsv.cpp +0 -0
  441. {libigl-2.6.3.dev2 → libigl-2.6.3.dev3}/src/rigid_alignment.cpp +0 -0
  442. {libigl-2.6.3.dev2 → libigl-2.6.3.dev3}/src/rotate_vectors.cpp +0 -0
  443. {libigl-2.6.3.dev2 → libigl-2.6.3.dev3}/src/rotation_matrix_from_directions.cpp +0 -0
  444. {libigl-2.6.3.dev2 → libigl-2.6.3.dev3}/src/sample_edges.cpp +0 -0
  445. {libigl-2.6.3.dev2 → libigl-2.6.3.dev3}/src/segment_segment_intersect.cpp +0 -0
  446. {libigl-2.6.3.dev2 → libigl-2.6.3.dev3}/src/sharp_edges.cpp +0 -0
  447. {libigl-2.6.3.dev2 → libigl-2.6.3.dev3}/src/signed_angle.cpp +0 -0
  448. {libigl-2.6.3.dev2 → libigl-2.6.3.dev3}/src/signed_distance.cpp +0 -0
  449. {libigl-2.6.3.dev2 → libigl-2.6.3.dev3}/src/slim.cpp +0 -0
  450. {libigl-2.6.3.dev2 → libigl-2.6.3.dev3}/src/snap_points.cpp +0 -0
  451. {libigl-2.6.3.dev2 → libigl-2.6.3.dev3}/src/solid_angle.cpp +0 -0
  452. {libigl-2.6.3.dev2 → libigl-2.6.3.dev3}/src/sparse_map_noop.cpp +0 -0
  453. {libigl-2.6.3.dev2 → libigl-2.6.3.dev3}/src/sparse_map_shape.cpp +0 -0
  454. {libigl-2.6.3.dev2 → libigl-2.6.3.dev3}/src/sparse_noop.cpp +0 -0
  455. {libigl-2.6.3.dev2 → libigl-2.6.3.dev3}/src/sparse_shape.cpp +0 -0
  456. {libigl-2.6.3.dev2 → libigl-2.6.3.dev3}/src/split_nonmanifold.cpp +0 -0
  457. {libigl-2.6.3.dev2 → libigl-2.6.3.dev3}/src/squared_edge_lengths.cpp +0 -0
  458. {libigl-2.6.3.dev2 → libigl-2.6.3.dev3}/src/super_fibonacci.cpp +0 -0
  459. {libigl-2.6.3.dev2 → libigl-2.6.3.dev3}/src/tet_tet_adjacency.cpp +0 -0
  460. {libigl-2.6.3.dev2 → libigl-2.6.3.dev3}/src/tri_tri_intersect.cpp +0 -0
  461. {libigl-2.6.3.dev2 → libigl-2.6.3.dev3}/src/triangle/cdt.cpp +0 -0
  462. {libigl-2.6.3.dev2 → libigl-2.6.3.dev3}/src/triangle/module.cpp +0 -0
  463. {libigl-2.6.3.dev2 → libigl-2.6.3.dev3}/src/triangle/refine.cpp +0 -0
  464. {libigl-2.6.3.dev2 → libigl-2.6.3.dev3}/src/triangle/scaf.cpp +0 -0
  465. {libigl-2.6.3.dev2 → libigl-2.6.3.dev3}/src/triangle/triangulate.cpp +0 -0
  466. {libigl-2.6.3.dev2 → libigl-2.6.3.dev3}/src/triangle_fan.cpp +0 -0
  467. {libigl-2.6.3.dev2 → libigl-2.6.3.dev3}/src/triangle_triangle_adjacency.cpp +0 -0
  468. {libigl-2.6.3.dev2 → libigl-2.6.3.dev3}/src/triangulated_grid.cpp +0 -0
  469. {libigl-2.6.3.dev2 → libigl-2.6.3.dev3}/src/turning_number.cpp +0 -0
  470. {libigl-2.6.3.dev2 → libigl-2.6.3.dev3}/src/uniformly_sample_two_manifold.cpp +0 -0
  471. {libigl-2.6.3.dev2 → libigl-2.6.3.dev3}/src/unique_edge_map.cpp +0 -0
  472. {libigl-2.6.3.dev2 → libigl-2.6.3.dev3}/src/unique_simplices.cpp +0 -0
  473. {libigl-2.6.3.dev2 → libigl-2.6.3.dev3}/src/unique_sparse_voxel_corners.cpp +0 -0
  474. {libigl-2.6.3.dev2 → libigl-2.6.3.dev3}/src/unproject.cpp +0 -0
  475. {libigl-2.6.3.dev2 → libigl-2.6.3.dev3}/src/upsample.cpp +0 -0
  476. {libigl-2.6.3.dev2 → libigl-2.6.3.dev3}/src/vector_area_matrix.cpp +0 -0
  477. {libigl-2.6.3.dev2 → libigl-2.6.3.dev3}/src/vertex_components.cpp +0 -0
  478. {libigl-2.6.3.dev2 → libigl-2.6.3.dev3}/src/vertex_triangle_adjacency.cpp +0 -0
  479. {libigl-2.6.3.dev2 → libigl-2.6.3.dev3}/src/volume.cpp +0 -0
  480. {libigl-2.6.3.dev2 → libigl-2.6.3.dev3}/src/voronoi_mass.cpp +0 -0
  481. {libigl-2.6.3.dev2 → libigl-2.6.3.dev3}/src/voxel_grid.cpp +0 -0
  482. {libigl-2.6.3.dev2 → libigl-2.6.3.dev3}/src/winding_number.cpp +0 -0
  483. {libigl-2.6.3.dev2 → libigl-2.6.3.dev3}/src/writeDMAT.cpp +0 -0
  484. {libigl-2.6.3.dev2 → libigl-2.6.3.dev3}/src/writeMESH.cpp +0 -0
  485. {libigl-2.6.3.dev2 → libigl-2.6.3.dev3}/src/writeMSH.cpp +0 -0
  486. {libigl-2.6.3.dev2 → libigl-2.6.3.dev3}/src/writeOBJ.cpp +0 -0
  487. {libigl-2.6.3.dev2 → libigl-2.6.3.dev3}/src/writeOFF.cpp +0 -0
  488. {libigl-2.6.3.dev2 → libigl-2.6.3.dev3}/src/writePLY.cpp +0 -0
  489. {libigl-2.6.3.dev2 → libigl-2.6.3.dev3}/src/writeSTL.cpp +0 -0
  490. {libigl-2.6.3.dev2 → libigl-2.6.3.dev3}/src/write_triangle_mesh.cpp +0 -0
  491. {libigl-2.6.3.dev2 → libigl-2.6.3.dev3}/tutorial/contributing.md +0 -0
  492. {libigl-2.6.3.dev2 → libigl-2.6.3.dev3}/tutorial/exporter.py +0 -0
  493. {libigl-2.6.3.dev2 → libigl-2.6.3.dev3}/tutorial/igl_docs.md +0 -0
  494. {libigl-2.6.3.dev2 → libigl-2.6.3.dev3}/tutorial/images/102_DrawMesh.png +0 -0
  495. {libigl-2.6.3.dev2 → libigl-2.6.3.dev3}/tutorial/images/104_Colors.png +0 -0
  496. {libigl-2.6.3.dev2 → libigl-2.6.3.dev3}/tutorial/images/105_Overlays.png +0 -0
  497. {libigl-2.6.3.dev2 → libigl-2.6.3.dev3}/tutorial/images/106_ViewerMenu.png +0 -0
  498. {libigl-2.6.3.dev2 → libigl-2.6.3.dev3}/tutorial/images/501_HarmonicParam.png +0 -0
  499. {libigl-2.6.3.dev2 → libigl-2.6.3.dev3}/tutorial/images/502_LSCMParam.png +0 -0
  500. {libigl-2.6.3.dev2 → libigl-2.6.3.dev3}/tutorial/images/503_ARAPParam.png +0 -0
  501. {libigl-2.6.3.dev2 → libigl-2.6.3.dev3}/tutorial/images/504_nrosy_field.png +0 -0
  502. {libigl-2.6.3.dev2 → libigl-2.6.3.dev3}/tutorial/images/504_vector_field.png +0 -0
  503. {libigl-2.6.3.dev2 → libigl-2.6.3.dev3}/tutorial/images/505_MIQ_1.png +0 -0
  504. {libigl-2.6.3.dev2 → libigl-2.6.3.dev3}/tutorial/images/505_MIQ_2.png +0 -0
  505. {libigl-2.6.3.dev2 → libigl-2.6.3.dev3}/tutorial/images/505_MIQ_3.png +0 -0
  506. {libigl-2.6.3.dev2 → libigl-2.6.3.dev3}/tutorial/images/505_MIQ_4.png +0 -0
  507. {libigl-2.6.3.dev2 → libigl-2.6.3.dev3}/tutorial/images/505_MIQ_5.png +0 -0
  508. {libigl-2.6.3.dev2 → libigl-2.6.3.dev3}/tutorial/images/505_MIQ_6.png +0 -0
  509. {libigl-2.6.3.dev2 → libigl-2.6.3.dev3}/tutorial/images/505_MIQ_7.png +0 -0
  510. {libigl-2.6.3.dev2 → libigl-2.6.3.dev3}/tutorial/images/505_MIQ_8.png +0 -0
  511. {libigl-2.6.3.dev2 → libigl-2.6.3.dev3}/tutorial/images/506_FrameField_1.png +0 -0
  512. {libigl-2.6.3.dev2 → libigl-2.6.3.dev3}/tutorial/images/506_FrameField_2.png +0 -0
  513. {libigl-2.6.3.dev2 → libigl-2.6.3.dev3}/tutorial/images/506_FrameField_3.png +0 -0
  514. {libigl-2.6.3.dev2 → libigl-2.6.3.dev3}/tutorial/images/506_FrameField_4.png +0 -0
  515. {libigl-2.6.3.dev2 → libigl-2.6.3.dev3}/tutorial/images/507_PolyVectorField.png +0 -0
  516. {libigl-2.6.3.dev2 → libigl-2.6.3.dev3}/tutorial/images/508_ConjugateField.png +0 -0
  517. {libigl-2.6.3.dev2 → libigl-2.6.3.dev3}/tutorial/images/509_Planarization.png +0 -0
  518. {libigl-2.6.3.dev2 → libigl-2.6.3.dev3}/tutorial/images/510_Integrable.png +0 -0
  519. {libigl-2.6.3.dev2 → libigl-2.6.3.dev3}/tutorial/images/511_PolyVectorFieldGeneral.png +0 -0
  520. {libigl-2.6.3.dev2 → libigl-2.6.3.dev3}/tutorial/images/602_Matlab_1.png +0 -0
  521. {libigl-2.6.3.dev2 → libigl-2.6.3.dev3}/tutorial/images/602_Matlab_2.png +0 -0
  522. {libigl-2.6.3.dev2 → libigl-2.6.3.dev3}/tutorial/images/604_Triangle.png +0 -0
  523. {libigl-2.6.3.dev2 → libigl-2.6.3.dev3}/tutorial/images/605_Tetgen.png +0 -0
  524. {libigl-2.6.3.dev2 → libigl-2.6.3.dev3}/tutorial/images/606_AmbientOcclusion.png +0 -0
  525. {libigl-2.6.3.dev2 → libigl-2.6.3.dev3}/tutorial/images/607_Picking.png +0 -0
  526. {libigl-2.6.3.dev2 → libigl-2.6.3.dev3}/tutorial/images/608_LIM.png +0 -0
  527. {libigl-2.6.3.dev2 → libigl-2.6.3.dev3}/tutorial/images/712_beetles.jpg +0 -0
  528. {libigl-2.6.3.dev2 → libigl-2.6.3.dev3}/tutorial/images/713_ShapeUp.png +0 -0
  529. {libigl-2.6.3.dev2 → libigl-2.6.3.dev3}/tutorial/images/VF.pdf +0 -0
  530. {libigl-2.6.3.dev2 → libigl-2.6.3.dev3}/tutorial/images/VF.png +0 -0
  531. {libigl-2.6.3.dev2 → libigl-2.6.3.dev3}/tutorial/images/arm-dqs.jpg +0 -0
  532. {libigl-2.6.3.dev2 → libigl-2.6.3.dev3}/tutorial/images/armadillo-fast.jpg +0 -0
  533. {libigl-2.6.3.dev2 → libigl-2.6.3.dev3}/tutorial/images/armadillo-marching-cubes.jpg +0 -0
  534. {libigl-2.6.3.dev2 → libigl-2.6.3.dev3}/tutorial/images/background.gif +0 -0
  535. {libigl-2.6.3.dev2 → libigl-2.6.3.dev3}/tutorial/images/beetle-eigen-decomposition.gif +0 -0
  536. {libigl-2.6.3.dev2 → libigl-2.6.3.dev3}/tutorial/images/big-sigcat-winding-number.gif +0 -0
  537. {libigl-2.6.3.dev2 → libigl-2.6.3.dev3}/tutorial/images/bump-k-harmonic.jpg +0 -0
  538. {libigl-2.6.3.dev2 → libigl-2.6.3.dev3}/tutorial/images/bumpy-gaussian-curvature.jpg +0 -0
  539. {libigl-2.6.3.dev2 → libigl-2.6.3.dev3}/tutorial/images/bunny-signed-distance.gif +0 -0
  540. {libigl-2.6.3.dev2 → libigl-2.6.3.dev3}/tutorial/images/bunny-swept-volume.gif +0 -0
  541. {libigl-2.6.3.dev2 → libigl-2.6.3.dev3}/tutorial/images/camelhead-laplace-equation.jpg +0 -0
  542. {libigl-2.6.3.dev2 → libigl-2.6.3.dev3}/tutorial/images/cheburashka-biharmonic-leq.jpg +0 -0
  543. {libigl-2.6.3.dev2 → libigl-2.6.3.dev3}/tutorial/images/cheburashka-gradient.jpg +0 -0
  544. {libigl-2.6.3.dev2 → libigl-2.6.3.dev3}/tutorial/images/cheburashka-knight-boolean.jpg +0 -0
  545. {libigl-2.6.3.dev2 → libigl-2.6.3.dev3}/tutorial/images/cheburashka-multiscale-biharmonic-kernels.jpg +0 -0
  546. {libigl-2.6.3.dev2 → libigl-2.6.3.dev3}/tutorial/images/cow-curvature-flow.jpg +0 -0
  547. {libigl-2.6.3.dev2 → libigl-2.6.3.dev3}/tutorial/images/cube-sphere-cylinders-csg-tree.jpg +0 -0
  548. {libigl-2.6.3.dev2 → libigl-2.6.3.dev3}/tutorial/images/cube-sphere-cylinders-csg.gif +0 -0
  549. {libigl-2.6.3.dev2 → libigl-2.6.3.dev3}/tutorial/images/decimated-knight-arap.jpg +0 -0
  550. {libigl-2.6.3.dev2 → libigl-2.6.3.dev3}/tutorial/images/decimated-knight-slice-color.jpg +0 -0
  551. {libigl-2.6.3.dev2 → libigl-2.6.3.dev3}/tutorial/images/decimated-knight-sort-color.jpg +0 -0
  552. {libigl-2.6.3.dev2 → libigl-2.6.3.dev3}/tutorial/images/decimated-knight-subdivision.gif +0 -0
  553. {libigl-2.6.3.dev2 → libigl-2.6.3.dev3}/tutorial/images/edge-collapse.jpg +0 -0
  554. {libigl-2.6.3.dev2 → libigl-2.6.3.dev3}/tutorial/images/edge-collapse.pdf +0 -0
  555. {libigl-2.6.3.dev2 → libigl-2.6.3.dev3}/tutorial/images/fandisk-normals.jpg +0 -0
  556. {libigl-2.6.3.dev2 → libigl-2.6.3.dev3}/tutorial/images/fertility-edge-collapse.gif +0 -0
  557. {libigl-2.6.3.dev2 → libigl-2.6.3.dev3}/tutorial/images/fertility-principal-curvature.jpg +0 -0
  558. {libigl-2.6.3.dev2 → libigl-2.6.3.dev3}/tutorial/images/geodesicdistance.jpg +0 -0
  559. {libigl-2.6.3.dev2 → libigl-2.6.3.dev3}/tutorial/images/hand-bbw.jpg +0 -0
  560. {libigl-2.6.3.dev2 → libigl-2.6.3.dev3}/tutorial/images/hat-function.jpg +0 -0
  561. {libigl-2.6.3.dev2 → libigl-2.6.3.dev3}/tutorial/images/heat-geodesic-beetle.gif +0 -0
  562. {libigl-2.6.3.dev2 → libigl-2.6.3.dev3}/tutorial/images/heat-geodesic-peaks.png +0 -0
  563. {libigl-2.6.3.dev2 → libigl-2.6.3.dev3}/tutorial/images/libigl-logo.jpg +0 -0
  564. {libigl-2.6.3.dev2 → libigl-2.6.3.dev3}/tutorial/images/max-biharmonic.jpg +0 -0
  565. {libigl-2.6.3.dev2 → libigl-2.6.3.dev3}/tutorial/images/multiple-meshes.png +0 -0
  566. {libigl-2.6.3.dev2 → libigl-2.6.3.dev3}/tutorial/images/octopus-biharmonic-coordinates-physics.gif +0 -0
  567. {libigl-2.6.3.dev2 → libigl-2.6.3.dev3}/tutorial/images/simplicial_complex_augmentation_framework.png +0 -0
  568. {libigl-2.6.3.dev2 → libigl-2.6.3.dev3}/tutorial/images/slim.png +0 -0
  569. {libigl-2.6.3.dev2 → libigl-2.6.3.dev3}/tutorial/images/streamlines.jpg +0 -0
  570. {libigl-2.6.3.dev2 → libigl-2.6.3.dev3}/tutorial/images/truck-facet-orientation.jpg +0 -0
  571. {libigl-2.6.3.dev2 → libigl-2.6.3.dev3}/tutorial/index.md +0 -0
  572. {libigl-2.6.3.dev2 → libigl-2.6.3.dev3}/tutorial/marching_cubes.py +0 -0
  573. {libigl-2.6.3.dev2 → libigl-2.6.3.dev3}/tutorial/plot_to_md.py +0 -0
  574. {libigl-2.6.3.dev2 → libigl-2.6.3.dev3}/tutorial/tut-chapter0.ipynb +0 -0
  575. {libigl-2.6.3.dev2 → libigl-2.6.3.dev3}/tutorial/tut-chapter1.ipynb +0 -0
  576. {libigl-2.6.3.dev2 → libigl-2.6.3.dev3}/tutorial/tut-chapter2.ipynb +0 -0
  577. {libigl-2.6.3.dev2 → libigl-2.6.3.dev3}/tutorial/tut-chapter3.ipynb +0 -0
  578. {libigl-2.6.3.dev2 → libigl-2.6.3.dev3}/tutorial/tut-chapter4.ipynb +0 -0
  579. {libigl-2.6.3.dev2 → libigl-2.6.3.dev3}/tutorial/tut-chapter5.ipynb +0 -0
  580. {libigl-2.6.3.dev2 → libigl-2.6.3.dev3}/tutorial/tut-chapter6.ipynb +0 -0
  581. {libigl-2.6.3.dev2 → libigl-2.6.3.dev3}/tutorial/tut-chapter7.ipynb +0 -0
  582. {libigl-2.6.3.dev2 → 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.dev2
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:
@@ -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:
@@ -13,7 +13,7 @@ build-backend = "scikit_build_core.build"
13
13
 
14
14
  [project]
15
15
  name = "libigl"
16
- version = "2.6.3.dev2"
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,47 @@
1
+ #include "default_types.h"
2
+ #include <igl/lexicographic_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 lexicographic_triangulation(
12
+ const Eigen::MatrixXN &P)
13
+ {
14
+ auto orient2D = [](const Numeric* pa, const Numeric* pb, const Numeric* pc) -> int
15
+ {
16
+ const Numeric cross =
17
+ (pb[0] - pa[0]) * (pc[1] - pa[1]) -
18
+ (pb[1] - pa[1]) * (pc[0] - pa[0]);
19
+ return (cross > 0) ? 1 : (cross < 0) ? -1 : 0;
20
+ };
21
+ Eigen::MatrixXi F;
22
+ try
23
+ {
24
+ igl::lexicographic_triangulation(P, orient2D, F);
25
+ }
26
+ catch(const char* e)
27
+ {
28
+ throw std::runtime_error(e);
29
+ }
30
+ return F;
31
+ }
32
+ }
33
+
34
+ void bind_lexicographic_triangulation(nb::module_ &m)
35
+ {
36
+ m.def(
37
+ "lexicographic_triangulation",
38
+ &pyigl::lexicographic_triangulation,
39
+ "P"_a,
40
+ R"(Compute a lexicographic triangulation of a 2D point set.
41
+
42
+ Uses a floating-point cross-product orientation predicate; may be inaccurate
43
+ for nearly-collinear inputs.
44
+
45
+ @param[in] P #P by 2 list of 2D vertex positions
46
+ @param[out] F #F by 3 list of face indices into P)");
47
+ }
@@ -0,0 +1,21 @@
1
+ #include "default_types.h"
2
+ #include <igl/predicates/Orientation.h>
3
+ #include <nanobind/nanobind.h>
4
+
5
+ namespace nb = nanobind;
6
+ using namespace nb::literals;
7
+
8
+ void bind_Orientation(nb::module_ &m)
9
+ {
10
+ nb::enum_<igl::predicates::Orientation>(m, "Orientation")
11
+ .value("POSITIVE", igl::predicates::Orientation::POSITIVE)
12
+ .value("INSIDE", igl::predicates::Orientation::INSIDE)
13
+ .value("NEGATIVE", igl::predicates::Orientation::NEGATIVE)
14
+ .value("OUTSIDE", igl::predicates::Orientation::OUTSIDE)
15
+ .value("COLLINEAR", igl::predicates::Orientation::COLLINEAR)
16
+ .value("COPLANAR", igl::predicates::Orientation::COPLANAR)
17
+ .value("COCIRCULAR", igl::predicates::Orientation::COCIRCULAR)
18
+ .value("COSPHERICAL", igl::predicates::Orientation::COSPHERICAL)
19
+ .value("DEGENERATE", igl::predicates::Orientation::DEGENERATE)
20
+ .export_values();
21
+ }
@@ -0,0 +1,30 @@
1
+ #include "default_types.h"
2
+ #include <igl/predicates/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
+ Eigen::MatrixXi delaunay_triangulation(
12
+ const Eigen::MatrixXN &V)
13
+ {
14
+ Eigen::MatrixXi F;
15
+ igl::predicates::delaunay_triangulation(V, F);
16
+ return F;
17
+ }
18
+ }
19
+
20
+ void bind_delaunay_triangulation(nb::module_ &m)
21
+ {
22
+ m.def(
23
+ "delaunay_triangulation",
24
+ &pyigl::delaunay_triangulation,
25
+ "V"_a,
26
+ R"(Compute a Delaunay triangulation of a 2D point set using exact predicates.
27
+
28
+ @param[in] V #V by 2 list of 2D vertex positions
29
+ @return F #F by 3 list of triangle indices into V.)");
30
+ }
@@ -0,0 +1,56 @@
1
+ #include "default_types.h"
2
+ #include <igl/predicates/ear_clipping.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
+ std::tuple<bool, Eigen::MatrixXi> ear_clipping(
13
+ const Eigen::MatrixXN &P)
14
+ {
15
+ Eigen::MatrixXi eF;
16
+ bool ok = igl::predicates::ear_clipping(P, eF);
17
+ return {ok, eF};
18
+ }
19
+
20
+ std::tuple<Eigen::MatrixXi, Eigen::MatrixXI> ear_clipping_with_reserved(
21
+ const Eigen::MatrixXN &P,
22
+ const Eigen::MatrixXI &RT)
23
+ {
24
+ Eigen::MatrixXi eF;
25
+ Eigen::VectorXi I;
26
+ Eigen::VectorXi RT_int = RT.cast<int>();
27
+ igl::predicates::ear_clipping(P, RT_int, eF, I);
28
+ Eigen::MatrixXI I_out = I.cast<Integer>();
29
+ return {eF, I_out};
30
+ }
31
+ }
32
+
33
+ void bind_ear_clipping(nb::module_ &m)
34
+ {
35
+ m.def(
36
+ "ear_clipping",
37
+ &pyigl::ear_clipping,
38
+ "P"_a,
39
+ R"(Ear-clipping triangulation of a 2D polygon.
40
+
41
+ Reverses P if necessary so output orientation matches input.
42
+
43
+ @param[in] P #P by 2 list of 2D polygon vertices (CCW for proper mesh)
44
+ @return (ok, eF) where ok is true if mesh is proper (input is a simple polygon)
45
+ and eF is #eF by 3 list of triangle indices into P.)");
46
+ m.def(
47
+ "ear_clipping",
48
+ &pyigl::ear_clipping_with_reserved,
49
+ "P"_a, "RT"_a,
50
+ R"(Ear-clipping triangulation with reserved (non-clippable) vertices.
51
+
52
+ @param[in] P #P by 2 list of 2D polygon vertices
53
+ @param[in] RT #P list, vertices marked 1 are preserved (not clipped)
54
+ @return (eF, I) where eF is the clipped ears (original indices into P) and
55
+ I maps indices of the remaining polygon to original P indices.)");
56
+ }
@@ -0,0 +1,49 @@
1
+ #include "default_types.h"
2
+ #include <igl/predicates/find_intersections.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
+ std::tuple<bool, Eigen::MatrixXI, Eigen::MatrixXI> find_intersections(
13
+ const Eigen::MatrixXN &V1,
14
+ const Eigen::MatrixXI &F1,
15
+ const Eigen::MatrixXN &V2,
16
+ const Eigen::MatrixXI &F2,
17
+ const bool first_only)
18
+ {
19
+ Eigen::MatrixXi IF;
20
+ Eigen::Matrix<bool, Eigen::Dynamic, 1> CP_bool;
21
+ Eigen::MatrixXi F1_int = F1.cast<int>();
22
+ Eigen::MatrixXi F2_int = F2.cast<int>();
23
+ bool found = igl::predicates::find_intersections(
24
+ V1, F1_int, V2, F2_int, first_only, IF, CP_bool);
25
+ Eigen::MatrixXI IF_out = IF.cast<Integer>();
26
+ Eigen::MatrixXI CP_out = CP_bool.cast<Integer>();
27
+ return {found, IF_out, CP_out};
28
+ }
29
+ }
30
+
31
+ void bind_find_intersections(nb::module_ &m)
32
+ {
33
+ m.def(
34
+ "find_intersections",
35
+ &pyigl::find_intersections,
36
+ "V1"_a, "F1"_a, "V2"_a, "F2"_a, "first_only"_a = false,
37
+ R"(Find intersecting triangle pairs between two meshes.
38
+
39
+ Uses AABB tree and exact predicates.
40
+
41
+ @param[in] V1 #V1 by 3 vertex positions of first mesh
42
+ @param[in] F1 #F1 by 3 triangle indices of first mesh
43
+ @param[in] V2 #V2 by 3 vertex positions of second mesh
44
+ @param[in] F2 #F2 by 3 triangle indices of second mesh
45
+ @param[in] first_only stop after finding the first intersection
46
+ @return (found, IF, CP) where found is true if any intersections exist,
47
+ IF is #IF by 2 list of intersecting face index pairs (into F1, F2),
48
+ CP is #IF list of whether each intersection is coplanar.)");
49
+ }
@@ -0,0 +1,43 @@
1
+ #include "default_types.h"
2
+ #include <igl/predicates/find_self_intersections.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
+ std::tuple<bool, Eigen::MatrixXI, Eigen::MatrixXI> find_self_intersections(
13
+ const Eigen::MatrixXN &V,
14
+ const Eigen::MatrixXI &F,
15
+ const bool first_only)
16
+ {
17
+ Eigen::MatrixXi IF;
18
+ Eigen::Matrix<bool, Eigen::Dynamic, 1> CP_bool;
19
+ Eigen::MatrixXi F_int = F.cast<int>();
20
+ bool found = igl::predicates::find_self_intersections(V, F_int, first_only, IF, CP_bool);
21
+ Eigen::MatrixXI IF_out = IF.cast<Integer>();
22
+ Eigen::MatrixXI CP_out = CP_bool.cast<Integer>();
23
+ return {found, IF_out, CP_out};
24
+ }
25
+ }
26
+
27
+ void bind_find_self_intersections(nb::module_ &m)
28
+ {
29
+ m.def(
30
+ "find_self_intersections",
31
+ &pyigl::find_self_intersections,
32
+ "V"_a, "F"_a, "first_only"_a = false,
33
+ R"(Find self-intersecting triangle pairs within a mesh.
34
+
35
+ Uses AABB tree and exact predicates.
36
+
37
+ @param[in] V #V by 3 vertex positions
38
+ @param[in] F #F by 3 triangle indices
39
+ @param[in] first_only stop after finding the first intersection
40
+ @return (found, IF, CP) where found is true if any self-intersections exist,
41
+ IF is #IF by 2 list of intersecting face index pairs,
42
+ CP is #IF list of whether each intersection is coplanar.)");
43
+ }
@@ -0,0 +1,37 @@
1
+ #include "default_types.h"
2
+ #include <igl/predicates/incircle.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
+ igl::predicates::Orientation incircle(
12
+ const Eigen::Vector2d &pa,
13
+ const Eigen::Vector2d &pb,
14
+ const Eigen::Vector2d &pc,
15
+ const Eigen::Vector2d &pd)
16
+ {
17
+ return igl::predicates::incircle(pa, pb, pc, pd);
18
+ }
19
+ }
20
+
21
+ void bind_incircle(nb::module_ &m)
22
+ {
23
+ m.def(
24
+ "incircle",
25
+ &pyigl::incircle,
26
+ "pa"_a, "pb"_a, "pc"_a, "pd"_a,
27
+ R"(Decide whether a 2D point is inside/outside/on a circle.
28
+
29
+ Uses exact arithmetic (Shewchuk predicates).
30
+
31
+ @param[in] pa 2D point on circle
32
+ @param[in] pb 2D point on circle
33
+ @param[in] pc 2D point on circle
34
+ @param[in] pd 2D query point
35
+ @return INSIDE if pd is inside the circle defined by pa,pb,pc,
36
+ OUTSIDE if outside, COCIRCULAR if exactly on the circle.)");
37
+ }
@@ -0,0 +1,39 @@
1
+ #include "default_types.h"
2
+ #include <igl/predicates/insphere.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
+ igl::predicates::Orientation insphere(
12
+ const Eigen::Vector3d &pa,
13
+ const Eigen::Vector3d &pb,
14
+ const Eigen::Vector3d &pc,
15
+ const Eigen::Vector3d &pd,
16
+ const Eigen::Vector3d &pe)
17
+ {
18
+ return igl::predicates::insphere(pa, pb, pc, pd, pe);
19
+ }
20
+ }
21
+
22
+ void bind_insphere(nb::module_ &m)
23
+ {
24
+ m.def(
25
+ "insphere",
26
+ &pyigl::insphere,
27
+ "pa"_a, "pb"_a, "pc"_a, "pd"_a, "pe"_a,
28
+ R"(Decide whether a 3D point is inside/outside/on a sphere.
29
+
30
+ Uses exact arithmetic (Shewchuk predicates).
31
+
32
+ @param[in] pa 3D point on sphere
33
+ @param[in] pb 3D point on sphere
34
+ @param[in] pc 3D point on sphere
35
+ @param[in] pd 3D point on sphere
36
+ @param[in] pe 3D query point
37
+ @return INSIDE if pe is inside the sphere defined by pa,pb,pc,pd,
38
+ OUTSIDE if outside, COSPHERICAL if exactly on the sphere.)");
39
+ }
@@ -0,0 +1,30 @@
1
+ #include "default_types.h"
2
+ #include <igl/predicates/lexicographic_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
+ Eigen::MatrixXi lexicographic_triangulation(
12
+ const Eigen::MatrixXN &V)
13
+ {
14
+ Eigen::MatrixXi F;
15
+ igl::predicates::lexicographic_triangulation(V, F);
16
+ return F;
17
+ }
18
+ }
19
+
20
+ void bind_lexicographic_triangulation(nb::module_ &m)
21
+ {
22
+ m.def(
23
+ "lexicographic_triangulation",
24
+ &pyigl::lexicographic_triangulation,
25
+ "V"_a,
26
+ R"(Compute a lexicographic triangulation of a 2D point set using exact predicates.
27
+
28
+ @param[in] V #V by 2 list of 2D vertex positions
29
+ @return F #F by 3 list of triangle indices into V.)");
30
+ }
@@ -0,0 +1,9 @@
1
+ #include <nanobind/nanobind.h>
2
+ #include <igl/predicates/exactinit.h>
3
+ namespace nb = nanobind;
4
+ #include "predicates/BINDING_DECLARATIONS.in"
5
+ NB_MODULE(pyigl_predicates, m) {
6
+ m.doc() = "libigl predicates module python bindings";
7
+ igl::predicates::exactinit();
8
+ #include "predicates/BINDING_INVOCATIONS.in"
9
+ }
@@ -0,0 +1,35 @@
1
+ #include "default_types.h"
2
+ #include <igl/predicates/orient2d.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
+ igl::predicates::Orientation orient2d(
12
+ const Eigen::Vector2d &pa,
13
+ const Eigen::Vector2d &pb,
14
+ const Eigen::Vector2d &pc)
15
+ {
16
+ return igl::predicates::orient2d(pa, pb, pc);
17
+ }
18
+ }
19
+
20
+ void bind_orient2d(nb::module_ &m)
21
+ {
22
+ m.def(
23
+ "orient2d",
24
+ &pyigl::orient2d,
25
+ "pa"_a, "pb"_a, "pc"_a,
26
+ R"(Compute the orientation of the triangle formed by pa, pb, pc.
27
+
28
+ Uses exact arithmetic (Shewchuk predicates).
29
+
30
+ @param[in] pa 2D point
31
+ @param[in] pb 2D point
32
+ @param[in] pc 2D point
33
+ @return POSITIVE if pa,pb,pc are counterclockwise, NEGATIVE if clockwise,
34
+ COLLINEAR if collinear.)");
35
+ }
@@ -0,0 +1,59 @@
1
+ #include "default_types.h"
2
+ #include <igl/predicates/orient3d.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
+ igl::predicates::Orientation orient3d_scalar(
12
+ const Eigen::Vector3d &pa,
13
+ const Eigen::Vector3d &pb,
14
+ const Eigen::Vector3d &pc,
15
+ const Eigen::Vector3d &pd)
16
+ {
17
+ return igl::predicates::orient3d(pa, pb, pc, pd);
18
+ }
19
+
20
+ Eigen::VectorXi orient3d_vectorized(
21
+ const Eigen::MatrixXN &A,
22
+ const Eigen::MatrixXN &B,
23
+ const Eigen::MatrixXN &C,
24
+ const Eigen::MatrixXN &D)
25
+ {
26
+ Eigen::VectorXi R;
27
+ igl::predicates::orient3d(A, B, C, D, R);
28
+ return R;
29
+ }
30
+ }
31
+
32
+ void bind_orient3d(nb::module_ &m)
33
+ {
34
+ m.def(
35
+ "orient3d",
36
+ &pyigl::orient3d_scalar,
37
+ "pa"_a, "pb"_a, "pc"_a, "pd"_a,
38
+ R"(Compute the orientation of the tetrahedron formed by pa, pb, pc, pd.
39
+
40
+ Uses exact arithmetic (Shewchuk predicates).
41
+
42
+ @param[in] pa 3D point
43
+ @param[in] pb 3D point
44
+ @param[in] pc 3D point
45
+ @param[in] pd 3D query point
46
+ @return POSITIVE if pd is below the plane oriented by pa,pb,pc,
47
+ NEGATIVE if above, COPLANAR if on the plane.)");
48
+ m.def(
49
+ "orient3d",
50
+ &pyigl::orient3d_vectorized,
51
+ "A"_a, "B"_a, "C"_a, "D"_a,
52
+ R"(Vectorized orient3d: compute orientation for each row-tuple (A[i], B[i], C[i], D[i]).
53
+
54
+ @param[in] A #P by 3 matrix of 3D points
55
+ @param[in] B #P by 3 matrix of 3D points
56
+ @param[in] C #P by 3 matrix of 3D points
57
+ @param[in] D #P by 3 matrix of 3D points
58
+ @return #P vector of orientation values (+1, -1, or 0))");
59
+ }
@@ -0,0 +1,30 @@
1
+ #include "default_types.h"
2
+ #include <igl/predicates/point_inside_convex_polygon.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 point_inside_convex_polygon(
12
+ const Eigen::MatrixX2d &P,
13
+ const Eigen::RowVector2d &q)
14
+ {
15
+ return igl::predicates::point_inside_convex_polygon(P, q);
16
+ }
17
+ }
18
+
19
+ void bind_point_inside_convex_polygon(nb::module_ &m)
20
+ {
21
+ m.def(
22
+ "point_inside_convex_polygon",
23
+ &pyigl::point_inside_convex_polygon,
24
+ "P"_a, "q"_a,
25
+ R"(Check whether a 2D point lies inside a 2D convex polygon.
26
+
27
+ @param[in] P #P by 2 list of polygon vertices (n >= 3)
28
+ @param[in] q 2D query point
29
+ @return true if q is inside P.)");
30
+ }
@@ -0,0 +1,40 @@
1
+ #include "default_types.h"
2
+ #include <igl/predicates/polygons_to_triangles.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
+ std::tuple<Eigen::MatrixXi, Eigen::VectorXI> polygons_to_triangles(
13
+ const Eigen::MatrixXN &V,
14
+ const Eigen::VectorXI &I,
15
+ const Eigen::VectorXI &C)
16
+ {
17
+ Eigen::VectorXi I_int = I.cast<int>();
18
+ Eigen::VectorXi C_int = C.cast<int>();
19
+ Eigen::MatrixXi F;
20
+ Eigen::VectorXi J;
21
+ igl::predicates::polygons_to_triangles(V, I_int, C_int, F, J);
22
+ Eigen::VectorXI J_out = J.cast<Integer>();
23
+ return {F, J_out};
24
+ }
25
+ }
26
+
27
+ void bind_polygons_to_triangles(nb::module_ &m)
28
+ {
29
+ m.def(
30
+ "polygons_to_triangles",
31
+ &pyigl::polygons_to_triangles,
32
+ "V"_a, "I"_a, "C"_a,
33
+ R"(Triangulate each polygon of a polygon mesh with a fan.
34
+
35
+ @param[in] V #V by dim vertex positions (used for orientation in 3D)
36
+ @param[in] I #I list of polygon corner indices into rows of V
37
+ @param[in] C #polygons+1 cumulative polygon sizes (C[i+1]-C[i] = size of polygon i)
38
+ @return (F, J) where F is #F by 3 list of triangle indices and J is #F list of
39
+ source polygon indices.)");
40
+ }