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