From d7e282957519e87ea0f3dec846c9b9914649dc8f Mon Sep 17 00:00:00 2001 From: KarlLeell Date: Wed, 24 Jul 2019 20:14:08 -0400 Subject: [PATCH 1/7] add dense_longlong to all integer parameters --- src/adjacency_list.cpp | 2 +- src/adjacency_matrix.cpp | 2 +- src/ambient_occlusion.cpp | 2 +- src/arap_linear_block.cpp | 8 ++++---- src/average_onto_vertices.cpp | 2 +- src/avg_edge_length.cpp | 2 +- src/barycenter.cpp | 2 +- src/bfs_orient.cpp | 2 +- src/bone_parents.cpp | 2 +- src/boundary_facets.cpp | 2 +- src/boundary_loop.cpp | 2 +- src/circumradius.cpp | 2 +- src/collapse_small_triangles.cpp | 2 +- src/connect_boundary_to_infinity.cpp | 6 +++--- src/cotmatrix.cpp | 2 +- src/cotmatrix_entries.cpp | 2 +- src/crouzeix_raviart_cotmatrix.cpp | 4 ++-- src/crouzeix_raviart_massmatrix.cpp | 4 ++-- src/decimate.cpp | 2 +- src/desktop.ini | 5 +++++ src/dihedral_angles.cpp | 2 +- src/directed_edge_parents.cpp | 2 +- src/doublearea.cpp | 2 +- src/ears.cpp | 2 +- src/edge_topology.cpp | 2 +- src/edges.cpp | 2 +- src/euler_characteristic.cpp | 4 ++-- src/face_components.cpp | 2 +- src/gaussian_curvature.cpp | 2 +- src/grad.cpp | 2 +- src/harmonic.cpp | 6 +++--- src/internal_angles.cpp | 2 +- src/is_edge_manifold.cpp | 2 +- src/isolines.cpp | 2 +- src/map_vertices_to_circle.cpp | 2 +- src/massmatrix.cpp | 2 +- src/orientable_patches.cpp | 2 +- src/oriented_facets.cpp | 2 +- src/per_edge_normals.cpp | 2 +- src/per_face_normals.cpp | 2 +- src/per_vertex_attribute_smoothing.cpp | 2 +- src/per_vertex_normals.cpp | 2 +- src/piecewise_constant_winding_number.cpp | 2 +- src/principal_curvature.cpp | 2 +- src/qslim.cpp | 2 +- src/quad_planarity.cpp | 2 +- src/random_points_on_mesh.cpp | 2 +- src/remove_duplicate_vertices.cpp | 2 +- src/remove_duplicates.cpp | 2 +- src/remove_unreferenced.cpp | 2 +- src/resolve_duplicated_faces.cpp | 2 +- src/shape_diameter_function.cpp | 2 +- src/triangle_triangle_adjacency.cpp | 2 +- src/triangle_triangulate.cpp | 2 +- src/uniformly_sample_two_manifold.cpp | 2 +- src/unproject_in_mesh.cpp | 2 +- src/unproject_onto_mesh.cpp | 2 +- src/upsample.cpp | 2 +- src/vector_area_matrix.cpp | 2 +- src/vertex_components.cpp | 2 +- src/vertex_triangle_adjacency.cpp | 2 +- src/winding_number.cpp | 4 ++-- src/writeOBJ.cpp | 2 +- src/writeOFF.cpp | 4 ++-- src/write_triangle_mesh.cpp | 2 +- 65 files changed, 81 insertions(+), 76 deletions(-) create mode 100644 src/desktop.ini diff --git a/src/adjacency_list.cpp b/src/adjacency_list.cpp index 523a0739..3de77b10 100644 --- a/src/adjacency_list.cpp +++ b/src/adjacency_list.cpp @@ -30,7 +30,7 @@ Examples npe_function(adjacency_list) npe_doc(ds_adjacency_list) -npe_arg(f, dense_int, dense_long) +npe_arg(f, dense_int, dense_long, dense_longlong) npe_begin_code() std::vector> a; diff --git a/src/adjacency_matrix.cpp b/src/adjacency_matrix.cpp index f150d559..8e1cd551 100644 --- a/src/adjacency_matrix.cpp +++ b/src/adjacency_matrix.cpp @@ -39,7 +39,7 @@ Examples npe_function(adjacency_matrix) npe_doc(ds_adjacency_matrix) -npe_arg(f, dense_int, dense_long) +npe_arg(f, dense_int, dense_long, dense_longlong) npe_begin_code() EigenSparseLike a; diff --git a/src/ambient_occlusion.cpp b/src/ambient_occlusion.cpp index 74c7aaad..b96b992b 100644 --- a/src/ambient_occlusion.cpp +++ b/src/ambient_occlusion.cpp @@ -34,7 +34,7 @@ npe_function(ambient_occlusion) npe_doc(ds_ambient_occlusion) npe_arg(v, dense_float, dense_double) -npe_arg(f, dense_int, dense_long) +npe_arg(f, dense_int, dense_long, dense_longlong) npe_arg(p, dense_float, dense_double) npe_arg(n, npe_matches(p)) npe_arg(num_samples, int) diff --git a/src/arap_linear_block.cpp b/src/arap_linear_block.cpp index bfebfe6e..c63a00de 100644 --- a/src/arap_linear_block.cpp +++ b/src/arap_linear_block.cpp @@ -49,7 +49,7 @@ Examples npe_function(arap_linear_block) npe_doc(ds_arap_linear_block) npe_arg(v, dense_float, dense_double) -npe_arg(f, dense_int, dense_long) +npe_arg(f, dense_int, dense_long, dense_longlong) npe_arg(d, int) npe_arg(energy, int) npe_begin_code() @@ -82,7 +82,7 @@ npe_end_code() npe_function(arap_linear_block_spokes) npe_doc(ds_arap_linear_block) npe_arg(v, dense_float, dense_double) -npe_arg(f, dense_int, dense_long) +npe_arg(f, dense_int, dense_long, dense_longlong) npe_arg(d, int) npe_begin_code() @@ -100,7 +100,7 @@ npe_end_code() npe_function(arap_linear_block_spokes_and_rims) npe_doc(ds_arap_linear_block) npe_arg(v, dense_float, dense_double) -npe_arg(f, dense_int, dense_long) +npe_arg(f, dense_int, dense_long, dense_longlong) npe_arg(d, int) npe_begin_code() @@ -119,7 +119,7 @@ npe_end_code() npe_function(arap_linear_block_elements) npe_doc(ds_arap_linear_block) npe_arg(v, dense_float, dense_double) -npe_arg(f, dense_int, dense_long) +npe_arg(f, dense_int, dense_long, dense_longlong) npe_arg(d, int) npe_begin_code() diff --git a/src/average_onto_vertices.cpp b/src/average_onto_vertices.cpp index 9dca071a..cf689416 100644 --- a/src/average_onto_vertices.cpp +++ b/src/average_onto_vertices.cpp @@ -31,7 +31,7 @@ Examples npe_function(average_onto_vertices) npe_doc(ds_average_onto_vertices) npe_arg(v, dense_float, dense_double) -npe_arg(f, dense_int, dense_long) +npe_arg(f, dense_int, dense_long, dense_longlong) npe_arg(s, dense_float, dense_double) // TODO: Maybe do a matches here npe_begin_code() diff --git a/src/avg_edge_length.cpp b/src/avg_edge_length.cpp index c893c0e4..054de22f 100644 --- a/src/avg_edge_length.cpp +++ b/src/avg_edge_length.cpp @@ -31,7 +31,7 @@ Examples npe_function(avg_edge_length) npe_doc(ds_avg_edge_length) npe_arg(v, dense_double, dense_float) -npe_arg(f, dense_int, dense_long) +npe_arg(f, dense_int, dense_long, dense_longlong) npe_begin_code() return igl::avg_edge_length(v, f); diff --git a/src/barycenter.cpp b/src/barycenter.cpp index 12c6262d..8ea1f653 100644 --- a/src/barycenter.cpp +++ b/src/barycenter.cpp @@ -32,7 +32,7 @@ npe_function(barycenter) npe_doc(ds_barycenter) npe_arg(v, dense_float, dense_double) -npe_arg(f, dense_int, dense_long) +npe_arg(f, dense_int, dense_long, dense_longlong) npe_begin_code() npe_Matrix_v bc; diff --git a/src/bfs_orient.cpp b/src/bfs_orient.cpp index e9f7a80a..77d5ffd5 100644 --- a/src/bfs_orient.cpp +++ b/src/bfs_orient.cpp @@ -31,7 +31,7 @@ Examples npe_function(bfs_orient) npe_doc(ds_bfs_orient) -npe_arg(f, dense_int, dense_long) +npe_arg(f, dense_int, dense_long, dense_longlong) npe_begin_code() npe_Matrix_f ff, c; diff --git a/src/bone_parents.cpp b/src/bone_parents.cpp index d390a116..27eae056 100644 --- a/src/bone_parents.cpp +++ b/src/bone_parents.cpp @@ -28,7 +28,7 @@ Examples npe_function(bone_parents) npe_doc(ds_bone_parents) -npe_arg(be, dense_int, dense_long) +npe_arg(be, dense_int, dense_long, dense_longlong) npe_begin_code() diff --git a/src/boundary_facets.cpp b/src/boundary_facets.cpp index a198ce04..08599e21 100644 --- a/src/boundary_facets.cpp +++ b/src/boundary_facets.cpp @@ -30,7 +30,7 @@ Examples npe_function(boundary_facets) npe_doc(ds_boundary_facets) -npe_arg(t, dense_int, dense_long) +npe_arg(t, dense_int, dense_long, dense_longlong) npe_begin_code() EigenDense f; diff --git a/src/boundary_loop.cpp b/src/boundary_loop.cpp index c4780cbe..782fe024 100644 --- a/src/boundary_loop.cpp +++ b/src/boundary_loop.cpp @@ -30,7 +30,7 @@ Examples npe_function(boundary_loop) npe_doc(ds_boundary_loop) -npe_arg(f, dense_int, dense_long) +npe_arg(f, dense_int, dense_long, dense_longlong) npe_begin_code() EigenDenseLike l; diff --git a/src/circumradius.cpp b/src/circumradius.cpp index ea1e8998..f4544c28 100644 --- a/src/circumradius.cpp +++ b/src/circumradius.cpp @@ -34,7 +34,7 @@ npe_function(circumradius) npe_doc(ds_circumradius) npe_arg(v, dense_float, dense_double) -npe_arg(f, dense_int, dense_long) +npe_arg(f, dense_int, dense_long, dense_longlong) npe_begin_code() diff --git a/src/collapse_small_triangles.cpp b/src/collapse_small_triangles.cpp index 265a9ae4..ee92283b 100644 --- a/src/collapse_small_triangles.cpp +++ b/src/collapse_small_triangles.cpp @@ -48,7 +48,7 @@ npe_function(collapse_small_triangles) npe_doc(ds_collapse_small_triangles) npe_arg(v, dense_float, dense_double) -npe_arg(f, dense_int, dense_long) +npe_arg(f, dense_int, dense_long, dense_longlong) npe_arg(eps, double) diff --git a/src/connect_boundary_to_infinity.cpp b/src/connect_boundary_to_infinity.cpp index 3203378b..039dfc6d 100644 --- a/src/connect_boundary_to_infinity.cpp +++ b/src/connect_boundary_to_infinity.cpp @@ -34,7 +34,7 @@ Examples npe_function(connect_boundary_to_infinity) npe_doc(ds_connect_boundary_to_infinity) -npe_arg(f, dense_int, dense_long) +npe_arg(f, dense_int, dense_long, dense_longlong) npe_begin_code() @@ -74,7 +74,7 @@ npe_function(connect_boundary_to_infinity_face) npe_doc(ds_connect_boundary_to_infinity_face) npe_arg(v, dense_float, dense_double) -npe_arg(f, dense_int, dense_long) +npe_arg(f, dense_int, dense_long, dense_longlong) npe_begin_code() @@ -118,7 +118,7 @@ Examples npe_function(connect_boundary_to_infinity_index) npe_doc(ds_connect_boundary_to_infinity_index) -npe_arg(f, dense_int, dense_long) +npe_arg(f, dense_int, dense_long, dense_longlong) npe_arg(inf_index, int) diff --git a/src/cotmatrix.cpp b/src/cotmatrix.cpp index 8ef75758..8cb0b68f 100644 --- a/src/cotmatrix.cpp +++ b/src/cotmatrix.cpp @@ -36,7 +36,7 @@ Examples npe_function(cotmatrix) npe_doc(ds_cotmatrix) npe_arg(v, dense_double, dense_float) -npe_arg(f, dense_int, dense_long) +npe_arg(f, dense_int, dense_long, dense_longlong) npe_begin_code() EigenSparseLike l; diff --git a/src/cotmatrix_entries.cpp b/src/cotmatrix_entries.cpp index 9a05b888..642bd332 100644 --- a/src/cotmatrix_entries.cpp +++ b/src/cotmatrix_entries.cpp @@ -39,7 +39,7 @@ npe_function(cotmatrix_entries) npe_doc(ds_cotmatrix_entries) npe_arg(v, dense_float, dense_double) -npe_arg(f, dense_int, dense_long) +npe_arg(f, dense_int, dense_long, dense_longlong) npe_begin_code() diff --git a/src/crouzeix_raviart_cotmatrix.cpp b/src/crouzeix_raviart_cotmatrix.cpp index 022395c7..2bf22fd7 100644 --- a/src/crouzeix_raviart_cotmatrix.cpp +++ b/src/crouzeix_raviart_cotmatrix.cpp @@ -43,7 +43,7 @@ npe_function(crouzeix_raviart_cotmatrix) npe_doc(ds_crouzeix_raviart_cotmatrix) npe_arg(v, dense_float, dense_double) -npe_arg(f, dense_int, dense_long) +npe_arg(f, dense_int, dense_long, dense_longlong) npe_begin_code() @@ -87,7 +87,7 @@ npe_function(crouzeix_raviart_cotmatrix_known_e) npe_doc(ds_crouzeix_raviart_cotmatrix_known_e) npe_arg(v, dense_float, dense_double) -npe_arg(f, dense_int, dense_long) +npe_arg(f, dense_int, dense_long, dense_longlong) npe_arg(e, npe_matches(f)) npe_arg(emap, npe_matches(f)) diff --git a/src/crouzeix_raviart_massmatrix.cpp b/src/crouzeix_raviart_massmatrix.cpp index f84c72b5..352f0c0e 100644 --- a/src/crouzeix_raviart_massmatrix.cpp +++ b/src/crouzeix_raviart_massmatrix.cpp @@ -46,7 +46,7 @@ npe_function(crouzeix_raviart_massmatrix) npe_doc(ds_crouzeix_raviart_massmatrix) npe_arg(v, dense_float, dense_double) -npe_arg(f, dense_int, dense_long) +npe_arg(f, dense_int, dense_long, dense_longlong) npe_begin_code() @@ -90,7 +90,7 @@ npe_function(crouzeix_raviart_massmatrix_known_e) npe_doc(ds_crouzeix_raviart_massmatrix_known_e) npe_arg(v, dense_float, dense_double) -npe_arg(f, dense_int, dense_long) +npe_arg(f, dense_int, dense_long, dense_longlong) npe_arg(e, npe_matches(f)) npe_arg(emap, npe_matches(f)) diff --git a/src/decimate.cpp b/src/decimate.cpp index b33c67e7..767515de 100644 --- a/src/decimate.cpp +++ b/src/decimate.cpp @@ -47,7 +47,7 @@ npe_function(decimate) npe_doc(ds_decimate) npe_arg(v, dense_float, dense_double) -npe_arg(f, dense_int, dense_long) +npe_arg(f, dense_int, dense_long, dense_longlong) npe_arg(max_m, size_t) diff --git a/src/desktop.ini b/src/desktop.ini new file mode 100644 index 00000000..8ab98459 --- /dev/null +++ b/src/desktop.ini @@ -0,0 +1,5 @@ +[LocalizedFileNames] +cotmatrix_entries.cpp=@cotmatrix_entries,0 +crouzeix_raviart_cotmatrix.cpp=@crouzeix_raviart_cotmatrix,0 +crouzeix_raviart_massmatrix.cpp=@crouzeix_raviart_massmatrix,0 +delaunay_triangulation.cpp=@delaunay_triangulation,0 diff --git a/src/dihedral_angles.cpp b/src/dihedral_angles.cpp index 80c96ca0..b8c00a21 100644 --- a/src/dihedral_angles.cpp +++ b/src/dihedral_angles.cpp @@ -32,7 +32,7 @@ Examples npe_function(dihedral_angles) npe_doc(ds_dihedral_angles) npe_arg(v, dense_float, dense_double) -npe_arg(t, dense_int, dense_long) +npe_arg(t, dense_int, dense_long, dense_longlong) npe_begin_code() diff --git a/src/directed_edge_parents.cpp b/src/directed_edge_parents.cpp index 1f6746e6..0d9cbc78 100644 --- a/src/directed_edge_parents.cpp +++ b/src/directed_edge_parents.cpp @@ -30,7 +30,7 @@ p = directed_edge_parents(e) npe_function(directed_edge_parents) npe_doc(ds_directed_edge_parents) -npe_arg(e, dense_int, dense_long) +npe_arg(e, dense_int, dense_long, dense_longlong) npe_begin_code() npe_Matrix_e p; diff --git a/src/doublearea.cpp b/src/doublearea.cpp index 8073f813..016973a2 100644 --- a/src/doublearea.cpp +++ b/src/doublearea.cpp @@ -32,7 +32,7 @@ npe_function(doublearea) npe_doc(ds_doublearea) npe_arg(v, dense_float, dense_double) -npe_arg(f, dense_int, dense_long) +npe_arg(f, dense_int, dense_long, dense_longlong) npe_begin_code() diff --git a/src/ears.cpp b/src/ears.cpp index 4c5b495c..1cc85252 100644 --- a/src/ears.cpp +++ b/src/ears.cpp @@ -31,7 +31,7 @@ Examples npe_function(ears) npe_doc(ds_ears) -npe_arg(f, dense_int, dense_long) +npe_arg(f, dense_int, dense_long, dense_longlong) npe_begin_code() diff --git a/src/edge_topology.cpp b/src/edge_topology.cpp index 78301b48..63ff8f9f 100644 --- a/src/edge_topology.cpp +++ b/src/edge_topology.cpp @@ -34,7 +34,7 @@ Examples npe_function(edge_topology) npe_doc(ds_edge_topology) npe_arg(v, dense_double, dense_float) -npe_arg(f, dense_int, dense_long) +npe_arg(f, dense_int, dense_long, dense_longlong) npe_begin_code() npe_Matrix_f ev, fe, ef; diff --git a/src/edges.cpp b/src/edges.cpp index be7f1b06..ee30dab1 100644 --- a/src/edges.cpp +++ b/src/edges.cpp @@ -30,7 +30,7 @@ Examples npe_function(edges) npe_doc(ds_edges) -npe_arg(f, dense_int, dense_long) +npe_arg(f, dense_int, dense_long, dense_longlong) npe_begin_code() npe_Matrix_f e; diff --git a/src/euler_characteristic.cpp b/src/euler_characteristic.cpp index 0dc7ff14..9622b9ac 100644 --- a/src/euler_characteristic.cpp +++ b/src/euler_characteristic.cpp @@ -32,7 +32,7 @@ Examples npe_function(euler_characteristic) npe_doc(ds_euler_characteristic) -npe_arg(f, dense_int, dense_long) +npe_arg(f, dense_int, dense_long, dense_longlong) npe_begin_code() @@ -70,7 +70,7 @@ npe_function(euler_characteristic_complete) npe_doc(ds_euler_characteristic_complete) npe_arg(v, dense_float, dense_double) -npe_arg(f, dense_int, dense_long) +npe_arg(f, dense_int, dense_long, dense_longlong) npe_begin_code() diff --git a/src/face_components.cpp b/src/face_components.cpp index bded1741..60feaf13 100644 --- a/src/face_components.cpp +++ b/src/face_components.cpp @@ -29,7 +29,7 @@ Examples npe_function(face_components) npe_doc(ds_face_components) -npe_arg(f, dense_int, dense_long) +npe_arg(f, dense_int, dense_long, dense_longlong) npe_begin_code() npe_Matrix_f c; igl::facet_components(f, c); diff --git a/src/gaussian_curvature.cpp b/src/gaussian_curvature.cpp index c6c5576e..118e1530 100644 --- a/src/gaussian_curvature.cpp +++ b/src/gaussian_curvature.cpp @@ -33,7 +33,7 @@ Examples npe_function(gaussian_curvature) npe_doc(ds_gaussian_curvature) npe_arg(v, dense_float, dense_double) -npe_arg(f, dense_int, dense_long) +npe_arg(f, dense_int, dense_long, dense_longlong) npe_begin_code() npe_Matrix_v k; diff --git a/src/grad.cpp b/src/grad.cpp index ffe21b3c..c64c914c 100644 --- a/src/grad.cpp +++ b/src/grad.cpp @@ -38,7 +38,7 @@ Examples npe_function(grad) npe_doc(ds_grad) npe_arg(v, dense_double, dense_float) -npe_arg(f, dense_int, dense_long) +npe_arg(f, dense_int, dense_long, dense_longlong) npe_default_arg(uniform, bool, false) npe_begin_code() diff --git a/src/harmonic.cpp b/src/harmonic.cpp index a5391cea..cf9b79c5 100644 --- a/src/harmonic.cpp +++ b/src/harmonic.cpp @@ -34,7 +34,7 @@ Examples npe_function(harmonic_weights) npe_doc(ds_harmonic_w) npe_arg(v, dense_float, dense_double) -npe_arg(f, dense_int, dense_long) +npe_arg(f, dense_int, dense_long, dense_longlong) npe_arg(b, dense_int) npe_arg(bc, npe_matches(v)) npe_arg(k, int) @@ -79,7 +79,7 @@ Examples npe_function(harmonic_uniform_laplacian) npe_doc(ds_harmonic_ul) -npe_arg(f, dense_int, dense_long) +npe_arg(f, dense_int, dense_long, dense_longlong) npe_arg(b, dense_int) npe_arg(bc, dense_float, dense_double) npe_arg(k, int) @@ -219,7 +219,7 @@ npe_function(_integrated) npe_doc(ds_harmonic_int) npe_arg(v, dense_float, dense_double) -npe_arg(f, dense_int, dense_long) +npe_arg(f, dense_int, dense_long, dense_longlong) npe_arg(k, int) diff --git a/src/internal_angles.cpp b/src/internal_angles.cpp index b5ee71ba..31fafc3a 100644 --- a/src/internal_angles.cpp +++ b/src/internal_angles.cpp @@ -30,7 +30,7 @@ Examples npe_function(internal_angles) npe_doc(ds_internal_angles) npe_arg(v, dense_float, dense_double) -npe_arg(f, dense_int, dense_long) +npe_arg(f, dense_int, dense_long, dense_longlong) npe_begin_code() diff --git a/src/is_edge_manifold.cpp b/src/is_edge_manifold.cpp index 580e839e..26dff75e 100644 --- a/src/is_edge_manifold.cpp +++ b/src/is_edge_manifold.cpp @@ -13,7 +13,7 @@ See is_edge_manifold for the documentation. npe_function(is_edge_manifold) npe_doc(ds_is_edge_manifold) -npe_arg(f, dense_int, dense_long) +npe_arg(f, dense_int, dense_long, dense_longlong) npe_begin_code() diff --git a/src/isolines.cpp b/src/isolines.cpp index e81c8da0..13590a38 100644 --- a/src/isolines.cpp +++ b/src/isolines.cpp @@ -37,7 +37,7 @@ npe_function(isolines) npe_doc(ds_isolines) npe_arg(v, dense_float, dense_double) -npe_arg(f, dense_int, dense_long) +npe_arg(f, dense_int, dense_long, dense_longlong) npe_arg(z, dense_float, dense_double) npe_arg(n, int) diff --git a/src/map_vertices_to_circle.cpp b/src/map_vertices_to_circle.cpp index d1a94c38..9f0cc4a2 100644 --- a/src/map_vertices_to_circle.cpp +++ b/src/map_vertices_to_circle.cpp @@ -32,7 +32,7 @@ Examples npe_function(map_vertices_to_circle) npe_doc(ds_map_vertices_to_circle) npe_arg(v, dense_float, dense_double) -npe_arg(bnd, dense_int, dense_long) +npe_arg(bnd, dense_int, dense_long, dense_longlong) npe_begin_code() diff --git a/src/massmatrix.cpp b/src/massmatrix.cpp index a3a7652f..817c68cb 100644 --- a/src/massmatrix.cpp +++ b/src/massmatrix.cpp @@ -34,7 +34,7 @@ Examples npe_function(massmatrix) npe_doc(ds_massmatrix) npe_arg(v, dense_float, dense_double) -npe_arg(f, dense_int, dense_long) +npe_arg(f, dense_int, dense_long, dense_longlong) npe_default_arg(type, int, 1) npe_begin_code() diff --git a/src/orientable_patches.cpp b/src/orientable_patches.cpp index 0b236858..7dfe3765 100644 --- a/src/orientable_patches.cpp +++ b/src/orientable_patches.cpp @@ -30,7 +30,7 @@ Examples npe_function(orientable_patches) npe_doc(ds_orientable_patches) -npe_arg(f, dense_int, dense_long) +npe_arg(f, dense_int, dense_long, dense_longlong) npe_begin_code() npe_Matrix_f c; diff --git a/src/oriented_facets.cpp b/src/oriented_facets.cpp index 6adcd4f7..01c80a89 100644 --- a/src/oriented_facets.cpp +++ b/src/oriented_facets.cpp @@ -35,7 +35,7 @@ Examples npe_function(oriented_facets) npe_doc(ds_oriented_facets) -npe_arg(f, dense_int, dense_long) +npe_arg(f, dense_int, dense_long, dense_longlong) npe_begin_code() npe_Matrix_f e; diff --git a/src/per_edge_normals.cpp b/src/per_edge_normals.cpp index 00fc30cf..195237f5 100644 --- a/src/per_edge_normals.cpp +++ b/src/per_edge_normals.cpp @@ -41,7 +41,7 @@ npe_function(per_edge_normals) npe_doc(ds_per_edge_normals) npe_arg(v, dense_float, dense_double) -npe_arg(f, dense_int, dense_long) +npe_arg(f, dense_int, dense_long, dense_longlong) npe_default_arg(weight, int , 0) npe_arg(fn, npe_matches(v)) diff --git a/src/per_face_normals.cpp b/src/per_face_normals.cpp index c1734a99..e5369681 100644 --- a/src/per_face_normals.cpp +++ b/src/per_face_normals.cpp @@ -37,7 +37,7 @@ npe_function(per_face_normals) npe_doc(ds_per_face_normals) npe_arg(v, dense_float, dense_double) -npe_arg(f, dense_int, dense_long) +npe_arg(f, dense_int, dense_long, dense_longlong) npe_arg(z, npe_matches(v)) diff --git a/src/per_vertex_attribute_smoothing.cpp b/src/per_vertex_attribute_smoothing.cpp index 6970357a..471a7751 100644 --- a/src/per_vertex_attribute_smoothing.cpp +++ b/src/per_vertex_attribute_smoothing.cpp @@ -34,7 +34,7 @@ npe_function(per_vertex_attribute_smoothing) npe_doc(ds_per_vertex_attribute_smoothing) npe_arg(ain, dense_float, dense_double) -npe_arg(f, dense_int, dense_long) +npe_arg(f, dense_int, dense_long, dense_longlong) npe_begin_code() diff --git a/src/per_vertex_normals.cpp b/src/per_vertex_normals.cpp index 1afffb72..5831b8f5 100644 --- a/src/per_vertex_normals.cpp +++ b/src/per_vertex_normals.cpp @@ -36,7 +36,7 @@ Examples npe_function(per_vertex_normals) npe_doc(ds_per_vertex_normals) npe_arg(v, dense_float, dense_double) -npe_arg(f, dense_int, dense_long) +npe_arg(f, dense_int, dense_long, dense_longlong) npe_default_arg(weighting, int, 0) npe_begin_code() diff --git a/src/piecewise_constant_winding_number.cpp b/src/piecewise_constant_winding_number.cpp index c31d56f3..4911b65a 100644 --- a/src/piecewise_constant_winding_number.cpp +++ b/src/piecewise_constant_winding_number.cpp @@ -53,7 +53,7 @@ Examples npe_function(piecewise_constant_winding_number) npe_doc(ds_piecewise_constant_winding_number) -npe_arg(f, dense_int, dense_long) +npe_arg(f, dense_int, dense_long, dense_longlong) npe_begin_code() diff --git a/src/principal_curvature.cpp b/src/principal_curvature.cpp index 598ca37b..c41df154 100644 --- a/src/principal_curvature.cpp +++ b/src/principal_curvature.cpp @@ -39,7 +39,7 @@ Examples npe_function(principal_curvature) npe_doc(ds_principal_curvature) npe_arg(v, dense_double, dense_float) -npe_arg(f, dense_int, dense_long) +npe_arg(f, dense_int, dense_long, dense_longlong) npe_default_arg(radius, int, 5) npe_default_arg(use_k_ring, bool, true) npe_begin_code() diff --git a/src/qslim.cpp b/src/qslim.cpp index 015eb297..59477091 100644 --- a/src/qslim.cpp +++ b/src/qslim.cpp @@ -50,7 +50,7 @@ npe_function(qslim) npe_doc(ds_qslim) npe_arg(v, dense_float, dense_double) -npe_arg(f, dense_int, dense_long) +npe_arg(f, dense_int, dense_long, dense_longlong) npe_arg(max_m, size_t) diff --git a/src/quad_planarity.cpp b/src/quad_planarity.cpp index e55b2262..0cb98888 100644 --- a/src/quad_planarity.cpp +++ b/src/quad_planarity.cpp @@ -32,7 +32,7 @@ Examples npe_function(quad_planarity) npe_doc(ds_quad_planarity) npe_arg(v, dense_float, dense_double) -npe_arg(f, dense_int, dense_long) +npe_arg(f, dense_int, dense_long, dense_longlong) npe_begin_code() npe_Matrix_v p; diff --git a/src/random_points_on_mesh.cpp b/src/random_points_on_mesh.cpp index 1a9bba65..ab10f851 100644 --- a/src/random_points_on_mesh.cpp +++ b/src/random_points_on_mesh.cpp @@ -35,7 +35,7 @@ npe_doc(ds_random_points_on_mesh) npe_arg(n, int) npe_arg(v, dense_float, dense_double) -npe_arg(f, dense_int, dense_long) +npe_arg(f, dense_int, dense_long, dense_longlong) npe_begin_code() diff --git a/src/remove_duplicate_vertices.cpp b/src/remove_duplicate_vertices.cpp index 9dcc00c3..fb064176 100644 --- a/src/remove_duplicate_vertices.cpp +++ b/src/remove_duplicate_vertices.cpp @@ -49,7 +49,7 @@ npe_function(remove_duplicate_vertices) npe_doc(ds_remove_duplicate_vertices) npe_arg(v, dense_float, dense_double) -npe_arg(f, dense_int, dense_long) +npe_arg(f, dense_int, dense_long, dense_longlong) npe_arg(epsilon, double) diff --git a/src/remove_duplicates.cpp b/src/remove_duplicates.cpp index fbeeea78..9ec981cc 100644 --- a/src/remove_duplicates.cpp +++ b/src/remove_duplicates.cpp @@ -41,7 +41,7 @@ npe_function(remove_duplicates) npe_doc(ds_remove_duplicates) npe_arg(v, dense_float, dense_double) -npe_arg(f, dense_int, dense_long) +npe_arg(f, dense_int, dense_long, dense_longlong) npe_arg(epsilon, double) diff --git a/src/remove_unreferenced.cpp b/src/remove_unreferenced.cpp index 1e219898..61652092 100644 --- a/src/remove_unreferenced.cpp +++ b/src/remove_unreferenced.cpp @@ -41,7 +41,7 @@ npe_function(remove_unreferenced) npe_doc(ds_remove_unreferenced) npe_arg(v, dense_float, dense_double) -npe_arg(f, dense_int, dense_long) +npe_arg(f, dense_int, dense_long, dense_longlong) npe_begin_code() diff --git a/src/resolve_duplicated_faces.cpp b/src/resolve_duplicated_faces.cpp index f684158d..ac43ac01 100644 --- a/src/resolve_duplicated_faces.cpp +++ b/src/resolve_duplicated_faces.cpp @@ -43,7 +43,7 @@ Examples npe_function(resolve_duplicated_faces) npe_doc(ds_resolve_duplicated_faces) -npe_arg(f1, dense_int, dense_long) +npe_arg(f1, dense_int, dense_long, dense_longlong) npe_begin_code() diff --git a/src/shape_diameter_function.cpp b/src/shape_diameter_function.cpp index e08a50d2..7f277900 100644 --- a/src/shape_diameter_function.cpp +++ b/src/shape_diameter_function.cpp @@ -44,7 +44,7 @@ npe_function(shape_diameter_function) npe_doc(ds_shape_diameter_function) npe_arg(v, dense_float, dense_double) -npe_arg(f, dense_int, dense_long) +npe_arg(f, dense_int, dense_long, dense_longlong) npe_arg(p, npe_matches(v)) npe_arg(n, npe_matches(v)) npe_arg(num_samples, int) diff --git a/src/triangle_triangle_adjacency.cpp b/src/triangle_triangle_adjacency.cpp index 956a78f5..836dd3a7 100644 --- a/src/triangle_triangle_adjacency.cpp +++ b/src/triangle_triangle_adjacency.cpp @@ -39,7 +39,7 @@ Examples npe_function(triangle_triangle_adjacency) npe_doc(ds_triangle_triangle_adjacency) -npe_arg(f, dense_int, dense_long) +npe_arg(f, dense_int, dense_long, dense_longlong) npe_begin_code() diff --git a/src/triangle_triangulate.cpp b/src/triangle_triangulate.cpp index 6ec9b288..685f0845 100644 --- a/src/triangle_triangulate.cpp +++ b/src/triangle_triangulate.cpp @@ -34,7 +34,7 @@ Examples npe_function(triangulate) npe_doc(ds_triangulate) npe_arg(v, dense_float, dense_double) -npe_arg(e, dense_int, dense_long) +npe_arg(e, dense_int, dense_long, dense_longlong) npe_arg(h, dense_float, dense_double) // TODO: npe_matches bug // TODO: Optionally support extra parameters npe_default_arg(flags, std::string, "a0.005qQ") diff --git a/src/uniformly_sample_two_manifold.cpp b/src/uniformly_sample_two_manifold.cpp index 8f012f86..814cf06b 100644 --- a/src/uniformly_sample_two_manifold.cpp +++ b/src/uniformly_sample_two_manifold.cpp @@ -49,7 +49,7 @@ npe_function(uniformly_sample_two_manifold_internal) npe_doc(ds_uniformly_sample_two_manifold_internal) npe_arg(w, dense_float, dense_double) -npe_arg(f, dense_int, dense_long) +npe_arg(f, dense_int, dense_long, dense_longlong) npe_arg(k, int) npe_arg(push, double) diff --git a/src/unproject_in_mesh.cpp b/src/unproject_in_mesh.cpp index 1a3e2acf..d8af622e 100644 --- a/src/unproject_in_mesh.cpp +++ b/src/unproject_in_mesh.cpp @@ -54,7 +54,7 @@ npe_arg(model, Eigen::Matrix4f &) npe_arg(proj, Eigen::Matrix4f &) npe_arg(viewport, Eigen::Vector4f &) npe_arg(v, dense_float, dense_double) -npe_arg(f, dense_int, dense_long) +npe_arg(f, dense_int, dense_long, dense_longlong) npe_begin_code() diff --git a/src/unproject_onto_mesh.cpp b/src/unproject_onto_mesh.cpp index 8acee91c..f9d7176d 100644 --- a/src/unproject_onto_mesh.cpp +++ b/src/unproject_onto_mesh.cpp @@ -55,7 +55,7 @@ npe_arg(model, npe_matches(pos)) npe_arg(proj, npe_matches(pos)) npe_arg(viewport, npe_matches(pos)) npe_arg(v, npe_matches(pos)) -npe_arg(f, dense_int, dense_long) +npe_arg(f, dense_int, dense_long, dense_longlong) npe_begin_code() diff --git a/src/upsample.cpp b/src/upsample.cpp index 6ddd5044..ef7fac9d 100644 --- a/src/upsample.cpp +++ b/src/upsample.cpp @@ -36,7 +36,7 @@ npe_function(upsample) npe_doc(ds_upsample) npe_arg(v, dense_float, dense_double) -npe_arg(f, dense_int, dense_long) +npe_arg(f, dense_int, dense_long, dense_longlong) npe_default_arg(number_of_subdivs, int, 1) diff --git a/src/vector_area_matrix.cpp b/src/vector_area_matrix.cpp index 0e03a7f9..d1cab181 100644 --- a/src/vector_area_matrix.cpp +++ b/src/vector_area_matrix.cpp @@ -28,7 +28,7 @@ Examples npe_function(vector_area_matrix) npe_doc(ds_vector_area_matrix) -npe_arg(f, dense_int, dense_long) +npe_arg(f, dense_int, dense_long, dense_longlong) npe_begin_code() EigenSparseLike a; diff --git a/src/vertex_components.cpp b/src/vertex_components.cpp index 8b44d41f..1271231e 100644 --- a/src/vertex_components.cpp +++ b/src/vertex_components.cpp @@ -29,7 +29,7 @@ Examples npe_function(vertex_components) npe_doc(ds_vertex_components) -npe_arg(f, dense_int, dense_long) +npe_arg(f, dense_int, dense_long, dense_longlong) npe_begin_code() npe_Matrix_f c; igl::vertex_components(f, c); diff --git a/src/vertex_triangle_adjacency.cpp b/src/vertex_triangle_adjacency.cpp index adb63eeb..00ce4f80 100644 --- a/src/vertex_triangle_adjacency.cpp +++ b/src/vertex_triangle_adjacency.cpp @@ -39,7 +39,7 @@ Examples npe_function(vertex_triangle_adjacency) npe_doc(ds_vertex_triangle_adjacency) -npe_arg(f, dense_int, dense_long) +npe_arg(f, dense_int, dense_long, dense_longlong) npe_arg(n, int) diff --git a/src/winding_number.cpp b/src/winding_number.cpp index d5454d9f..272eaf0d 100644 --- a/src/winding_number.cpp +++ b/src/winding_number.cpp @@ -35,7 +35,7 @@ npe_function(winding_number) npe_doc(ds_winding_number) npe_arg(v, dense_float, dense_double) -npe_arg(f, dense_int, dense_long) +npe_arg(f, dense_int, dense_long, dense_longlong) npe_arg(o, dense_float, dense_double) @@ -84,7 +84,7 @@ npe_function(winding_number_for_point) npe_doc(ds_winding_number1) npe_arg(v, dense_float, dense_double) -npe_arg(f, dense_int, dense_long) +npe_arg(f, dense_int, dense_long, dense_longlong) npe_arg(p, dense_float, dense_double) diff --git a/src/writeOBJ.cpp b/src/writeOBJ.cpp index e32e1b69..3f5e49b5 100644 --- a/src/writeOBJ.cpp +++ b/src/writeOBJ.cpp @@ -34,7 +34,7 @@ npe_function(write_obj) npe_doc(ds_write_obj) npe_arg(filename, std::string) npe_arg(v, dense_double, dense_float) -npe_arg(f, dense_int, dense_long) +npe_arg(f, dense_int, dense_long, dense_longlong) //npe_default_arg(cn, npe_matches(v), pybind11::array()) TODO: NPE Support none arrays as option //npe_default_arg(fn, npe_matches(f), pybind11::array()) //npe_default_arg(tc, npe_matches(v), pybind11::array()) diff --git a/src/writeOFF.cpp b/src/writeOFF.cpp index 60ab43ea..f71e6b45 100644 --- a/src/writeOFF.cpp +++ b/src/writeOFF.cpp @@ -41,7 +41,7 @@ npe_doc(ds_write_off) npe_arg(str, std::string) npe_arg(v, dense_float, dense_double) -npe_arg(f, dense_int, dense_long) +npe_arg(f, dense_int, dense_long, dense_longlong) npe_arg(c, npe_matches(v)) @@ -61,7 +61,7 @@ npe_end_code() // npe_arg(str, std::string) // npe_arg(v, dense_float, dense_double) -// npe_arg(f, dense_int, dense_long) +// npe_arg(f, dense_int, dense_long, dense_longlong) // npe_begin_code() diff --git a/src/write_triangle_mesh.cpp b/src/write_triangle_mesh.cpp index 404be5f1..c1ed5bdd 100644 --- a/src/write_triangle_mesh.cpp +++ b/src/write_triangle_mesh.cpp @@ -37,7 +37,7 @@ npe_doc(ds_write_triangle_mesh) npe_arg(str, std::string) npe_arg(v, dense_float, dense_double) -npe_arg(f, dense_int, dense_long) +npe_arg(f, dense_int, dense_long, dense_longlong) npe_default_arg(force_ascii, bool, bool(true)) From 75273899a4b4eeb77f68173b210190c6da490419 Mon Sep 17 00:00:00 2001 From: KarlLeell Date: Fri, 2 Aug 2019 15:50:47 -0400 Subject: [PATCH 2/7] adding shape checks --- src/adjacency_list.cpp | 1 + src/adjacency_matrix.cpp | 1 + src/ambient_occlusion.cpp | 5 +++++ src/arap_linear_block.cpp | 1 + src/arap_rhs.cpp | 2 ++ src/average_onto_vertices.cpp | 4 +++- src/avg_edge_length.cpp | 2 ++ src/barycenter.cpp | 1 + src/barycentric_coordinates.cpp | 9 +++++++++ src/bfs_orient.cpp | 1 + src/bone_parents.cpp | 2 ++ src/boundary_facets.cpp | 2 ++ src/boundary_loop.cpp | 1 + src/bounding_box.cpp | 4 +++- src/bounding_box_diagonal.cpp | 3 +++ src/circumradius.cpp | 2 ++ src/collapse_small_triangles.cpp | 3 ++- src/connect_boundary_to_infinity.cpp | 4 ++++ src/cotmatrix.cpp | 1 + src/cotmatrix_entries.cpp | 2 ++ src/crouzeix_raviart_cotmatrix.cpp | 4 ++++ src/crouzeix_raviart_massmatrix.cpp | 4 ++++ src/cylinder.cpp | 1 + src/decimate.cpp | 2 ++ src/dihedral_angles.cpp | 3 ++- src/directed_edge_parents.cpp | 2 ++ src/doublearea.cpp | 2 ++ 27 files changed, 65 insertions(+), 4 deletions(-) diff --git a/src/adjacency_list.cpp b/src/adjacency_list.cpp index 3de77b10..a8488081 100644 --- a/src/adjacency_list.cpp +++ b/src/adjacency_list.cpp @@ -33,6 +33,7 @@ npe_doc(ds_adjacency_list) npe_arg(f, dense_int, dense_long, dense_longlong) npe_begin_code() + //assert_valid_tet_or_tri_mesh_faces(f, "f") std::vector> a; igl::adjacency_list(f, a); return pybind11::detail::type_caster::cast(a, pybind11::return_value_policy::move, pybind11::none()); diff --git a/src/adjacency_matrix.cpp b/src/adjacency_matrix.cpp index 8e1cd551..39458d3d 100644 --- a/src/adjacency_matrix.cpp +++ b/src/adjacency_matrix.cpp @@ -42,6 +42,7 @@ npe_doc(ds_adjacency_matrix) npe_arg(f, dense_int, dense_long, dense_longlong) npe_begin_code() + //assert_valid_tet_or_tri_mesh_faces(f, "f") EigenSparseLike a; igl::adjacency_matrix(f, a); return npe::move(a); diff --git a/src/ambient_occlusion.cpp b/src/ambient_occlusion.cpp index b96b992b..cdbe2fb4 100644 --- a/src/ambient_occlusion.cpp +++ b/src/ambient_occlusion.cpp @@ -1,5 +1,6 @@ // TODO: __missing miss the rest two functions with AABB and shoot_ray. __example +#include #include #include #include @@ -42,6 +43,10 @@ npe_arg(num_samples, int) npe_begin_code() + assert_valid_3d_tri_mesh(v, f); + assert_rows_match(p, n, "p", "n"); + assert_cols_equals(p, 3, "p"); + assert_cols_equals(n, 3, "n"); npe_Matrix_p s; igl::ambient_occlusion(v, f, p, n, num_samples, s); return npe::move(s); diff --git a/src/arap_linear_block.cpp b/src/arap_linear_block.cpp index c63a00de..fb4f9d5c 100644 --- a/src/arap_linear_block.cpp +++ b/src/arap_linear_block.cpp @@ -54,6 +54,7 @@ npe_arg(d, int) npe_arg(energy, int) npe_begin_code() + assert_valid_tet_or_tri_mesh(v, f); static_assert(int(igl::ARAPEnergyType::ARAP_ENERGY_TYPE_SPOKES) == 0, "ARAPEnergyType enum changed!"); static_assert(int(igl::ARAPEnergyType::ARAP_ENERGY_TYPE_SPOKES_AND_RIMS) == 1, "ARAPEnergyType enum changed!"); static_assert(int(igl::ARAPEnergyType::ARAP_ENERGY_TYPE_ELEMENTS) == 2, "ARAPEnergyType enum changed!"); diff --git a/src/arap_rhs.cpp b/src/arap_rhs.cpp index 7b7af414..5b323646 100644 --- a/src/arap_rhs.cpp +++ b/src/arap_rhs.cpp @@ -40,6 +40,8 @@ npe_arg(f, dense_int) npe_arg(d, int) npe_arg(energy, int) npe_begin_code() + + assert_valid_3d_tri_mesh(v, f); static_assert(int(igl::ARAPEnergyType::ARAP_ENERGY_TYPE_SPOKES) == 0, "ARAPEnergyType enum changed!"); static_assert(int(igl::ARAPEnergyType::ARAP_ENERGY_TYPE_SPOKES_AND_RIMS) == 1, "ARAPEnergyType enum changed!"); diff --git a/src/average_onto_vertices.cpp b/src/average_onto_vertices.cpp index cf689416..37585efa 100644 --- a/src/average_onto_vertices.cpp +++ b/src/average_onto_vertices.cpp @@ -14,7 +14,7 @@ s : #f by dim scalar field defined on simplices Returns ------- -#v by dim scalar field defined on vertices +sv: #v by dim scalar field defined on vertices See also -------- @@ -35,6 +35,8 @@ npe_arg(f, dense_int, dense_long, dense_longlong) npe_arg(s, dense_float, dense_double) // TODO: Maybe do a matches here npe_begin_code() + assert_valid_tet_or_tri_mesh(v, f); + assert_rows_match(f, s, "f", "s"); npe_Matrix_s sv; igl::average_onto_vertices(v, f, s, sv); return npe::move(sv); diff --git a/src/avg_edge_length.cpp b/src/avg_edge_length.cpp index 054de22f..fcd7d24a 100644 --- a/src/avg_edge_length.cpp +++ b/src/avg_edge_length.cpp @@ -33,6 +33,8 @@ npe_doc(ds_avg_edge_length) npe_arg(v, dense_double, dense_float) npe_arg(f, dense_int, dense_long, dense_longlong) npe_begin_code() + + assert_valid_tet_or_tri_mesh(v, f); return igl::avg_edge_length(v, f); diff --git a/src/barycenter.cpp b/src/barycenter.cpp index 8ea1f653..b1afcffe 100644 --- a/src/barycenter.cpp +++ b/src/barycenter.cpp @@ -35,6 +35,7 @@ npe_arg(v, dense_float, dense_double) npe_arg(f, dense_int, dense_long, dense_longlong) npe_begin_code() + assert_valid_tet_or_tri_mesh(v, f); npe_Matrix_v bc; igl::barycenter(v, f, bc); return npe::move(bc); diff --git a/src/barycentric_coordinates.cpp b/src/barycentric_coordinates.cpp index a78743a8..3409c3a1 100644 --- a/src/barycentric_coordinates.cpp +++ b/src/barycentric_coordinates.cpp @@ -41,6 +41,15 @@ npe_arg(c, npe_matches(p)) npe_arg(d, npe_matches(p)) npe_begin_code() + assert_rows_match(p, a, "p", "a"); + assert_rows_match(p, b, "p", "b"); + assert_rows_match(p, c, "p", "c"); + assert_rows_match(p, d, "p", "d"); + assert_cols_equals(p, 3, "p"); + assert_cols_equals(a, 3, "a"); + assert_cols_equals(b, 3, "b"); + assert_cols_equals(c, 3, "c"); + assert_cols_equals(d, 3, "d"); npe_Matrix_p l; igl::barycentric_coordinates(p, a, b, c, d, l); return npe::move(l); diff --git a/src/bfs_orient.cpp b/src/bfs_orient.cpp index 77d5ffd5..bb88f325 100644 --- a/src/bfs_orient.cpp +++ b/src/bfs_orient.cpp @@ -34,6 +34,7 @@ npe_doc(ds_bfs_orient) npe_arg(f, dense_int, dense_long, dense_longlong) npe_begin_code() + //assert_valid_tet_or_tri_mesh_faces(f, "f"); npe_Matrix_f ff, c; igl::bfs_orient(f, ff, c); return std::make_tuple(npe::move(ff), npe::move(c)); diff --git a/src/bone_parents.cpp b/src/bone_parents.cpp index 27eae056..afebf0a4 100644 --- a/src/bone_parents.cpp +++ b/src/bone_parents.cpp @@ -1,3 +1,4 @@ +#include #include #include #include @@ -32,6 +33,7 @@ npe_arg(be, dense_int, dense_long, dense_longlong) npe_begin_code() + assert_cols_equals(be, 2, "be"); npe_Matrix_be p; igl::bone_parents(be, p); return npe::move(p); diff --git a/src/boundary_facets.cpp b/src/boundary_facets.cpp index 08599e21..f6e2bc41 100644 --- a/src/boundary_facets.cpp +++ b/src/boundary_facets.cpp @@ -33,6 +33,8 @@ npe_doc(ds_boundary_facets) npe_arg(t, dense_int, dense_long, dense_longlong) npe_begin_code() + // TODO: need an option for multiple shapes + assert_cols_equals(t, 3, "t"); EigenDense f; igl::boundary_facets(t, f); return npe::move(f); diff --git a/src/boundary_loop.cpp b/src/boundary_loop.cpp index 782fe024..ad92f096 100644 --- a/src/boundary_loop.cpp +++ b/src/boundary_loop.cpp @@ -33,6 +33,7 @@ npe_doc(ds_boundary_loop) npe_arg(f, dense_int, dense_long, dense_longlong) npe_begin_code() + //assert_valid_tet_or_tri_mesh_faces(f, "f"); EigenDenseLike l; igl::boundary_loop(f, l); return npe::move(l); diff --git a/src/bounding_box.cpp b/src/bounding_box.cpp index b38b43e7..713dc6bf 100644 --- a/src/bounding_box.cpp +++ b/src/bounding_box.cpp @@ -1,3 +1,4 @@ +#include #include #include #include @@ -35,6 +36,7 @@ npe_arg(v, dense_float, dense_double) npe_begin_code() + assert_nonzero_rows(v, "v"); npe_Matrix_v bv; Eigen::Matrix bf; igl::bounding_box(v, bv, bf); @@ -47,7 +49,6 @@ npe_end_code() -#include const char* ds_bounding_box_pad = R"igl_Qu8mg5v7( See bounding_box for the documentation. @@ -62,6 +63,7 @@ npe_arg(pad, double) npe_begin_code() + assert_nonzero_rows(v, "v"); npe_Matrix_v bv; Eigen::Matrix bf; igl::bounding_box(v, pad, bv, bf); diff --git a/src/bounding_box_diagonal.cpp b/src/bounding_box_diagonal.cpp index f04889ba..09fde4e9 100644 --- a/src/bounding_box_diagonal.cpp +++ b/src/bounding_box_diagonal.cpp @@ -1,5 +1,6 @@ // TODO: __example +#include #include #include @@ -41,6 +42,8 @@ npe_arg(v, dense_float, dense_double) npe_begin_code() + assert_nonzero_rows(v, "v"); + assert_cols_equals(v, 3, "v"); // TODO: remove __copy Eigen::MatrixXd v_copy = v.template cast(); return igl::bounding_box_diagonal(v_copy); diff --git a/src/circumradius.cpp b/src/circumradius.cpp index f4544c28..1b055dc7 100644 --- a/src/circumradius.cpp +++ b/src/circumradius.cpp @@ -1,3 +1,4 @@ +#include #include #include #include @@ -39,6 +40,7 @@ npe_arg(f, dense_int, dense_long, dense_longlong) npe_begin_code() + assert_valid_tet_or_tri_mesh(v, f); EigenDense r; igl::circumradius(v, f, r); return npe::move(r); diff --git a/src/collapse_small_triangles.cpp b/src/collapse_small_triangles.cpp index ee92283b..f5eba639 100644 --- a/src/collapse_small_triangles.cpp +++ b/src/collapse_small_triangles.cpp @@ -1,5 +1,6 @@ // TODO: __example +#include #include #include @@ -7,7 +8,6 @@ - #include const char* ds_collapse_small_triangles = R"igl_Qu8mg5v7( @@ -54,6 +54,7 @@ npe_arg(eps, double) npe_begin_code() + assert_valid_3d_tri_mesh(v, f); // TODO: remove __copy Eigen::MatrixXd v_copy = v.template cast(); Eigen::MatrixXi f_copy = f.template cast(); diff --git a/src/connect_boundary_to_infinity.cpp b/src/connect_boundary_to_infinity.cpp index 039dfc6d..39a12abf 100644 --- a/src/connect_boundary_to_infinity.cpp +++ b/src/connect_boundary_to_infinity.cpp @@ -1,5 +1,6 @@ // TODO: __example +#include #include #include #include @@ -39,6 +40,7 @@ npe_arg(f, dense_int, dense_long, dense_longlong) npe_begin_code() + //assert_valid_3d_tri_mesh_faces(f, "f"); npe_Matrix_f fo; igl::connect_boundary_to_infinity(f, fo); return npe::move(fo); @@ -79,6 +81,7 @@ npe_arg(f, dense_int, dense_long, dense_longlong) npe_begin_code() + //assert_valid_3d_tri_mesh_faces(f, "f"); npe_Matrix_v vo; npe_Matrix_f fo; igl::connect_boundary_to_infinity(v, f, vo, fo); @@ -124,6 +127,7 @@ npe_arg(inf_index, int) npe_begin_code() + //assert_valid_3d_tri_mesh_faces(f, "f"); npe_Matrix_f fo; igl::connect_boundary_to_infinity(f, inf_index, fo); return npe::move(fo); diff --git a/src/cotmatrix.cpp b/src/cotmatrix.cpp index 8cb0b68f..62d97db9 100644 --- a/src/cotmatrix.cpp +++ b/src/cotmatrix.cpp @@ -39,6 +39,7 @@ npe_arg(v, dense_double, dense_float) npe_arg(f, dense_int, dense_long, dense_longlong) npe_begin_code() + assert_valid_tet_or_tri_mesh(v, f); EigenSparseLike l; igl::cotmatrix(v, f, l); return npe::move(l); diff --git a/src/cotmatrix_entries.cpp b/src/cotmatrix_entries.cpp index 642bd332..71c2f330 100644 --- a/src/cotmatrix_entries.cpp +++ b/src/cotmatrix_entries.cpp @@ -1,3 +1,4 @@ +#include #include #include #include @@ -44,6 +45,7 @@ npe_arg(f, dense_int, dense_long, dense_longlong) npe_begin_code() + assert_valid_tet_or_tri_mesh(v, f); npe_Matrix_v c; igl::cotmatrix_entries(v, f, c); return npe::move(c); diff --git a/src/crouzeix_raviart_cotmatrix.cpp b/src/crouzeix_raviart_cotmatrix.cpp index 2bf22fd7..2d26979b 100644 --- a/src/crouzeix_raviart_cotmatrix.cpp +++ b/src/crouzeix_raviart_cotmatrix.cpp @@ -1,3 +1,4 @@ +#include #include #include @@ -48,6 +49,7 @@ npe_arg(f, dense_int, dense_long, dense_longlong) npe_begin_code() + assert_valid_tet_or_tri_mesh(v, f); EigenSparseLike l; npe_Matrix_f e; npe_Matrix_f emap; @@ -94,6 +96,8 @@ npe_arg(emap, npe_matches(f)) npe_begin_code() + assert_valid_tet_or_tri_mesh(v, f); + assert_shapes_match(f, emap, "f", "emap"); EigenSparseLike l; igl::crouzeix_raviart_cotmatrix(v, f, e, emap, l); return npe::move(l); diff --git a/src/crouzeix_raviart_massmatrix.cpp b/src/crouzeix_raviart_massmatrix.cpp index 352f0c0e..07bc5356 100644 --- a/src/crouzeix_raviart_massmatrix.cpp +++ b/src/crouzeix_raviart_massmatrix.cpp @@ -1,5 +1,6 @@ // static assertion fail: YOU_MIXED_DIFFERENT_NUMERIC_TYPES__YOU_NEED_TO_USE_THE_CAST_METHOD_OF_MATRIXBASE_TO_CAST_NUMERIC_TYPES_EXPLICITLY +#include #include #include @@ -51,6 +52,7 @@ npe_arg(f, dense_int, dense_long, dense_longlong) npe_begin_code() + assert_valid_tet_or_tri_mesh(v, f); EigenSparseLike m; npe_Matrix_f e; npe_Matrix_f emap; @@ -97,6 +99,8 @@ npe_arg(emap, npe_matches(f)) npe_begin_code() + assert_valid_tet_or_tri_mesh(v, f); + assert_shapes_match(f, emap, "f", "emap"); EigenSparseLike m; igl::crouzeix_raviart_massmatrix(v, f, e, emap, m); return npe::move(m); diff --git a/src/cylinder.cpp b/src/cylinder.cpp index 90d04939..3cd1f6a6 100644 --- a/src/cylinder.cpp +++ b/src/cylinder.cpp @@ -1,5 +1,6 @@ // TODO: __example +#include #include #include #include diff --git a/src/decimate.cpp b/src/decimate.cpp index 767515de..277ddd75 100644 --- a/src/decimate.cpp +++ b/src/decimate.cpp @@ -1,5 +1,6 @@ // TODO: __miss 4 functions +#include #include #include @@ -53,6 +54,7 @@ npe_arg(max_m, size_t) npe_begin_code() + assert_valid_3d_tri_mesh(v, f); // TODO: remove __copy Eigen::MatrixXd v_copy = v.template cast(); Eigen::MatrixXi f_copy = f.template cast(); diff --git a/src/dihedral_angles.cpp b/src/dihedral_angles.cpp index b8c00a21..b555faca 100644 --- a/src/dihedral_angles.cpp +++ b/src/dihedral_angles.cpp @@ -1,3 +1,4 @@ +#include #include #include #include @@ -35,7 +36,7 @@ npe_arg(v, dense_float, dense_double) npe_arg(t, dense_int, dense_long, dense_longlong) npe_begin_code() - + assert_valid_tet_mesh(v, t); npe_Matrix_v theta; npe_Matrix_v cos_theta; igl::dihedral_angles(v, t, theta, cos_theta); diff --git a/src/directed_edge_parents.cpp b/src/directed_edge_parents.cpp index 0d9cbc78..84372847 100644 --- a/src/directed_edge_parents.cpp +++ b/src/directed_edge_parents.cpp @@ -33,6 +33,8 @@ npe_doc(ds_directed_edge_parents) npe_arg(e, dense_int, dense_long, dense_longlong) npe_begin_code() + assert_nonzero_rows(e, "e"); + assert_cols_equals(e, 2, "e"); npe_Matrix_e p; igl::directed_edge_parents(e, p); return npe::move(p); diff --git a/src/doublearea.cpp b/src/doublearea.cpp index 016973a2..922e014e 100644 --- a/src/doublearea.cpp +++ b/src/doublearea.cpp @@ -1,3 +1,4 @@ +#include #include #include #include @@ -36,6 +37,7 @@ npe_arg(f, dense_int, dense_long, dense_longlong) npe_begin_code() + assert_valid_tet_or_tri_mesh(v, f); EigenDenseLike d_area; igl::doublearea(v, f, d_area); return npe::move(d_area); From f37a3169d4e01c2f13b5e181a8e2e12352c4a9b5 Mon Sep 17 00:00:00 2001 From: KarlLeell Date: Mon, 5 Aug 2019 14:16:56 -0400 Subject: [PATCH 3/7] add shape checks to all src files --- src/ears.cpp | 2 ++ src/edge_topology.cpp | 1 + src/edges.cpp | 1 + src/euler_characteristic.cpp | 3 +++ src/exact_geodesic.cpp | 6 ++++++ src/face_components.cpp | 1 + src/fit_plane.cpp | 3 +++ src/gaussian_curvature.cpp | 1 + src/grad.cpp | 1 + src/harmonic.cpp | 13 ++++++++++++- src/internal_angles.cpp | 2 ++ src/is_edge_manifold.cpp | 2 ++ src/is_irregular_vertex.cpp | 2 ++ src/isolines.cpp | 4 ++++ src/map_vertices_to_circle.cpp | 2 ++ src/massmatrix.cpp | 1 + src/min_quad_dense.cpp | 6 +++++- src/orientable_patches.cpp | 1 + src/oriented_facets.cpp | 1 + src/per_edge_normals.cpp | 2 ++ src/per_face_normals.cpp | 2 ++ src/per_vertex_attribute_smoothing.cpp | 2 ++ src/per_vertex_normals.cpp | 1 + src/piecewise_constant_winding_number.cpp | 2 ++ src/principal_curvature.cpp | 1 + src/procrustes.cpp | 3 +++ src/qslim.cpp | 2 ++ src/quad_planarity.cpp | 2 ++ src/random_points_on_mesh.cpp | 4 +++- src/remove_duplicate_vertices.cpp | 2 ++ src/remove_duplicates.cpp | 2 ++ src/remove_unreferenced.cpp | 2 ++ src/resolve_duplicated_faces.cpp | 2 ++ src/shape_diameter_function.cpp | 4 ++++ src/sort_angles.cpp | 3 +++ src/tet_tet_adjacency.cpp | 2 ++ src/tetgen_tetrahedralize.cpp | 2 ++ src/triangle_triangle_adjacency.cpp | 2 ++ src/uniformly_sample_two_manifold.cpp | 2 ++ src/unproject.cpp | 6 ++++++ src/unproject_in_mesh.cpp | 9 ++++++++- src/unproject_onto_mesh.cpp | 9 ++++++++- src/unproject_ray.cpp | 8 +++++++- src/upsample.cpp | 2 ++ src/vector_area_matrix.cpp | 2 ++ src/vertex_components.cpp | 1 + src/vertex_triangle_adjacency.cpp | 2 ++ src/winding_number.cpp | 5 +++++ src/writeOBJ.cpp | 1 + src/writeOFF.cpp | 2 ++ src/write_triangle_mesh.cpp | 2 ++ 51 files changed, 140 insertions(+), 6 deletions(-) diff --git a/src/ears.cpp b/src/ears.cpp index 1cc85252..f99b2a49 100644 --- a/src/ears.cpp +++ b/src/ears.cpp @@ -1,3 +1,4 @@ +#include #include #include #include @@ -36,6 +37,7 @@ npe_arg(f, dense_int, dense_long, dense_longlong) npe_begin_code() + //assert_valid_3d_tri_mesh_faces(f, "f"); EigenDenseLike ear; EigenDenseLike ear_opp; igl::ears(f, ear, ear_opp); diff --git a/src/edge_topology.cpp b/src/edge_topology.cpp index 63ff8f9f..23d8a203 100644 --- a/src/edge_topology.cpp +++ b/src/edge_topology.cpp @@ -37,6 +37,7 @@ npe_arg(v, dense_double, dense_float) npe_arg(f, dense_int, dense_long, dense_longlong) npe_begin_code() + assert_valid_tet_or_tri_mesh(v, f); npe_Matrix_f ev, fe, ef; igl::edge_topology(v, f, ev, fe, ef); diff --git a/src/edges.cpp b/src/edges.cpp index ee30dab1..a37be7ff 100644 --- a/src/edges.cpp +++ b/src/edges.cpp @@ -33,6 +33,7 @@ npe_doc(ds_edges) npe_arg(f, dense_int, dense_long, dense_longlong) npe_begin_code() + //assert_valid_tet_or_tri_mesh_faces(f, "f"); npe_Matrix_f e; igl::edges(f, e); return npe::move(e); diff --git a/src/euler_characteristic.cpp b/src/euler_characteristic.cpp index 9622b9ac..3dc8fb48 100644 --- a/src/euler_characteristic.cpp +++ b/src/euler_characteristic.cpp @@ -1,5 +1,6 @@ // TODO: __example +#include #include #include #include @@ -37,6 +38,7 @@ npe_arg(f, dense_int, dense_long, dense_longlong) npe_begin_code() + //assert_valid_tet_or_tri_mesh_faces(f, "f"); return igl::euler_characteristic(f); npe_end_code() @@ -75,6 +77,7 @@ npe_arg(f, dense_int, dense_long, dense_longlong) npe_begin_code() + assert_valid_tet_or_tri_mesh(v, f); return igl::euler_characteristic(v, f); npe_end_code() diff --git a/src/exact_geodesic.cpp b/src/exact_geodesic.cpp index 1484cc9f..215b53e3 100644 --- a/src/exact_geodesic.cpp +++ b/src/exact_geodesic.cpp @@ -1,3 +1,4 @@ +#include #include #include #include @@ -42,6 +43,11 @@ npe_default_arg(fs, npe_matches(f), pybind11::array()) npe_default_arg(ft, npe_matches(f), pybind11::array()) npe_begin_code() + assert_valid_3d_tri_mesh(v, f); + //assert_cols_equals(vs, 1, "vs"); + //assert_cols_equals(fs, 1, "fs"); + //assert_cols_equals(vt, 1, "vt"); + //assert_cols_equals(ft, 1, "ft"); EigenDenseLike d; igl::exact_geodesic(v, f, vs, fs, vt, ft, d); return npe::move(d); diff --git a/src/face_components.cpp b/src/face_components.cpp index 60feaf13..6754c03e 100644 --- a/src/face_components.cpp +++ b/src/face_components.cpp @@ -31,6 +31,7 @@ npe_function(face_components) npe_doc(ds_face_components) npe_arg(f, dense_int, dense_long, dense_longlong) npe_begin_code() + //assert_valid_3d_tri_mesh_faces(f, "f"); npe_Matrix_f c; igl::facet_components(f, c); return npe::move(c); diff --git a/src/fit_plane.cpp b/src/fit_plane.cpp index eb908068..645fe7ac 100644 --- a/src/fit_plane.cpp +++ b/src/fit_plane.cpp @@ -1,5 +1,6 @@ // TODO: __example +#include #include #include @@ -44,6 +45,8 @@ npe_arg(v, dense_float, dense_double) npe_begin_code() + assert_nonzero_rows(v, "v"); + assert_cols_equals(v, 3, "v"); // TODO: remove __copy Eigen::MatrixXd v_copy = v.template cast(); Eigen::RowVector3d n; diff --git a/src/gaussian_curvature.cpp b/src/gaussian_curvature.cpp index 118e1530..c0d3bf1e 100644 --- a/src/gaussian_curvature.cpp +++ b/src/gaussian_curvature.cpp @@ -36,6 +36,7 @@ npe_arg(v, dense_float, dense_double) npe_arg(f, dense_int, dense_long, dense_longlong) npe_begin_code() + assert_valid_3d_tri_mesh(v, f); npe_Matrix_v k; igl::gaussian_curvature(v, f, k); return npe::move(k); diff --git a/src/grad.cpp b/src/grad.cpp index c64c914c..370df3ca 100644 --- a/src/grad.cpp +++ b/src/grad.cpp @@ -43,6 +43,7 @@ npe_default_arg(uniform, bool, false) npe_begin_code() + assert_valid_3d_tri_mesh(v, f); EigenSparseLike g; igl::grad(v, f, g, uniform); return npe::move(g); diff --git a/src/harmonic.cpp b/src/harmonic.cpp index cf9b79c5..af1d3bd1 100644 --- a/src/harmonic.cpp +++ b/src/harmonic.cpp @@ -1,8 +1,9 @@ +#include #include #include #include -//TODO: is is only dense_int because min_quad_with_fixed_data hardcodes int, fixme +//TODO: is is only dense_int because min_quad_with_fixed_data hardcodes int, FIXME const char* ds_harmonic_w = R"igl_Qu8mg5v7( Compute k-harmonic weight functions "coordinates". @@ -41,6 +42,8 @@ npe_arg(k, int) npe_begin_code() + assert_valid_tet_or_tri_mesh(v, f); + assert_nonzero_rows(bc, "bc"); EigenDenseLike w; igl::harmonic(v, f, b, bc, k, w); return npe::move(w); @@ -87,6 +90,8 @@ npe_arg(k, int) npe_begin_code() + //assert_valid_tet_or_tri_mesh_faces(f, "f"); + assert_nonzero_rows(bc, "bc"); EigenDenseLike w; igl::harmonic(f, b, bc, k, w); return npe::move(w); @@ -140,6 +145,9 @@ npe_arg(k, int) npe_begin_code() + assert_shapes_match(l, m, "l", "m"); + assert_nonzero_rows(l, "l"); + assert_nonzero_rows(bc, "bc"); EigenDenseLike w; igl::harmonic(l, m, b, bc, k, w); return npe::move(w); @@ -182,6 +190,8 @@ npe_arg(k, int) npe_begin_code() + assert_shapes_match(l, m, "l", "m"); + assert_nonzero_rows(l, "l"); EigenSparseLike q; igl::harmonic(l, m, k, q); return npe::move(q); @@ -225,6 +235,7 @@ npe_arg(k, int) npe_begin_code() + assert_valid_tet_or_tri_mesh(v, f); EigenSparseLike q; igl::harmonic(v, f, k, q); return npe::move(q); diff --git a/src/internal_angles.cpp b/src/internal_angles.cpp index 31fafc3a..ab111b31 100644 --- a/src/internal_angles.cpp +++ b/src/internal_angles.cpp @@ -1,3 +1,4 @@ +#include #include #include #include @@ -34,6 +35,7 @@ npe_arg(f, dense_int, dense_long, dense_longlong) npe_begin_code() + assert_valid_tet_or_tri_mesh(v, f); EigenDenseLike k; igl::internal_angles(v, f, k); return npe::move(k); diff --git a/src/is_edge_manifold.cpp b/src/is_edge_manifold.cpp index 26dff75e..b0eed9e3 100644 --- a/src/is_edge_manifold.cpp +++ b/src/is_edge_manifold.cpp @@ -1,5 +1,6 @@ // TODO: __example, decide if to remove the first function +#include #include #include #include @@ -18,6 +19,7 @@ npe_arg(f, dense_int, dense_long, dense_longlong) npe_begin_code() + //assert_valid_tet_or_tri_mesh_faces(f, "f"); return igl::is_edge_manifold(f); npe_end_code() diff --git a/src/is_irregular_vertex.cpp b/src/is_irregular_vertex.cpp index e6464773..89e53910 100644 --- a/src/is_irregular_vertex.cpp +++ b/src/is_irregular_vertex.cpp @@ -1,3 +1,4 @@ +#include #include #include #include @@ -35,6 +36,7 @@ npe_arg(v, dense_float, dense_double) npe_arg(f, dense_int, dense_long) npe_begin_code() + assert_valid_tet_or_tri_mesh(v, f); const std::vector res = igl::is_irregular_vertex(v, f); return res; diff --git a/src/isolines.cpp b/src/isolines.cpp index 13590a38..82b55ada 100644 --- a/src/isolines.cpp +++ b/src/isolines.cpp @@ -1,5 +1,6 @@ //TODO: __example +#include #include #include #include @@ -44,6 +45,9 @@ npe_arg(n, int) npe_begin_code() + assert_valid_3d_tri_mesh(v, f); + assert_rows_match(v, z, "v", "z"); + assert_cols_equals(z, 1, "z"); npe_Matrix_v iso_v; npe_Matrix_f iso_e; igl::isolines(v, f, z, n, iso_v, iso_e); diff --git a/src/map_vertices_to_circle.cpp b/src/map_vertices_to_circle.cpp index 9f0cc4a2..b6b5b2ff 100644 --- a/src/map_vertices_to_circle.cpp +++ b/src/map_vertices_to_circle.cpp @@ -36,6 +36,8 @@ npe_arg(bnd, dense_int, dense_long, dense_longlong) npe_begin_code() + assert_nonzero_rows(v, "v"); + assert_nonzero_rows(bnd, "bnd"); // TODO: remove __copy Eigen::MatrixXd v_copy = v.template cast(); Eigen::VectorXi bnd_copy = bnd.template cast(); diff --git a/src/massmatrix.cpp b/src/massmatrix.cpp index 817c68cb..5bf939ef 100644 --- a/src/massmatrix.cpp +++ b/src/massmatrix.cpp @@ -38,6 +38,7 @@ npe_arg(f, dense_int, dense_long, dense_longlong) npe_default_arg(type, int, 1) npe_begin_code() + assert_valid_tet_or_tri_mesh(v, f); static_assert(int(igl::MASSMATRIX_TYPE_BARYCENTRIC) == 0, "ARAPEnergyType enum changed!"); static_assert(int(igl::MASSMATRIX_TYPE_VORONOI) == 1, "ARAPEnergyType enum changed!"); static_assert(int(igl::MASSMATRIX_TYPE_FULL) == 2, "ARAPEnergyType enum changed!"); diff --git a/src/min_quad_dense.cpp b/src/min_quad_dense.cpp index c1232da3..d0a592bf 100644 --- a/src/min_quad_dense.cpp +++ b/src/min_quad_dense.cpp @@ -1,5 +1,6 @@ -//TODO: __example +//TODO: __example remove __copy +#include #include #include @@ -53,6 +54,9 @@ npe_arg(use_lu_decomposition, bool) npe_begin_code() + assert_nonzero_rows(a, "a"); + assert_nonzero_rows(aeq, "aeq"); + assert_cols_match(a, aeq, "a", "aeq"); Eigen::Matrix a_copy = a.template cast(); Eigen::Matrix aeq_copy = aeq.template cast(); Eigen::Matrix s; diff --git a/src/orientable_patches.cpp b/src/orientable_patches.cpp index 7dfe3765..dcb49edc 100644 --- a/src/orientable_patches.cpp +++ b/src/orientable_patches.cpp @@ -33,6 +33,7 @@ npe_doc(ds_orientable_patches) npe_arg(f, dense_int, dense_long, dense_longlong) npe_begin_code() + //assert_valid_tet_or_tri_mesh_faces(f, "f"); npe_Matrix_f c; EigenSparseLike A; igl::orientable_patches(f, c, A); diff --git a/src/oriented_facets.cpp b/src/oriented_facets.cpp index 01c80a89..4d04e534 100644 --- a/src/oriented_facets.cpp +++ b/src/oriented_facets.cpp @@ -38,6 +38,7 @@ npe_doc(ds_oriented_facets) npe_arg(f, dense_int, dense_long, dense_longlong) npe_begin_code() + //assert_valid_tet_or_tri_mesh_faces(f, "f"); npe_Matrix_f e; igl::oriented_facets(f, e); return npe::move(e); diff --git a/src/per_edge_normals.cpp b/src/per_edge_normals.cpp index 195237f5..f14270b0 100644 --- a/src/per_edge_normals.cpp +++ b/src/per_edge_normals.cpp @@ -1,5 +1,6 @@ //TODO: __miss __example +#include #include #include #include @@ -48,6 +49,7 @@ npe_arg(fn, npe_matches(v)) npe_begin_code() + assert_valid_3d_tri_mesh(v, f); npe_Matrix_v n; npe_Matrix_f e; npe_Matrix_f emap; diff --git a/src/per_face_normals.cpp b/src/per_face_normals.cpp index e5369681..30e3a430 100644 --- a/src/per_face_normals.cpp +++ b/src/per_face_normals.cpp @@ -1,5 +1,6 @@ // TODO: __miss +#include #include #include #include @@ -43,6 +44,7 @@ npe_arg(z, npe_matches(v)) npe_begin_code() + assert_valid_3d_tri_mesh(v, f); npe_Matrix_v n; igl::per_face_normals(v, f, z, n); return npe::move(n); diff --git a/src/per_vertex_attribute_smoothing.cpp b/src/per_vertex_attribute_smoothing.cpp index 471a7751..25413ae1 100644 --- a/src/per_vertex_attribute_smoothing.cpp +++ b/src/per_vertex_attribute_smoothing.cpp @@ -1,5 +1,6 @@ // TODO: __example +#include #include #include #include @@ -39,6 +40,7 @@ npe_arg(f, dense_int, dense_long, dense_longlong) npe_begin_code() + assert_valid_3d_tri_mesh(ain, f); // remove __copy Eigen::MatrixXd ain_copy = ain.template cast(); Eigen::MatrixXd aout; diff --git a/src/per_vertex_normals.cpp b/src/per_vertex_normals.cpp index 5831b8f5..4c2dc19a 100644 --- a/src/per_vertex_normals.cpp +++ b/src/per_vertex_normals.cpp @@ -41,6 +41,7 @@ npe_default_arg(weighting, int, 0) npe_begin_code() + assert_valid_3d_tri_mesh(v, f); static_assert(int(igl::PER_VERTEX_NORMALS_WEIGHTING_TYPE_UNIFORM) == 0, "PerVertexNormalWeightingType enum changed!"); static_assert(int(igl::PER_VERTEX_NORMALS_WEIGHTING_TYPE_AREA) == 1, "PerVertexNormalWeightingType enum changed!"); static_assert(int(igl::PER_VERTEX_NORMALS_WEIGHTING_TYPE_ANGLE) == 2, "PerVertexNormalWeightingType enum changed!"); diff --git a/src/piecewise_constant_winding_number.cpp b/src/piecewise_constant_winding_number.cpp index 4911b65a..3f91886c 100644 --- a/src/piecewise_constant_winding_number.cpp +++ b/src/piecewise_constant_winding_number.cpp @@ -1,5 +1,6 @@ // TODO: __miss __example +#include #include #include #include @@ -58,6 +59,7 @@ npe_arg(f, dense_int, dense_long, dense_longlong) npe_begin_code() + //assert_valid_3d_tri_mesh_faces(f, "f"); return igl::piecewise_constant_winding_number(f); npe_end_code() diff --git a/src/principal_curvature.cpp b/src/principal_curvature.cpp index c41df154..492da11a 100644 --- a/src/principal_curvature.cpp +++ b/src/principal_curvature.cpp @@ -44,6 +44,7 @@ npe_default_arg(radius, int, 5) npe_default_arg(use_k_ring, bool, true) npe_begin_code() + assert_valid_3d_tri_mesh(v, f); npe_Matrix_v pd1; npe_Matrix_v pd2; npe_Matrix_v pv1; diff --git a/src/procrustes.cpp b/src/procrustes.cpp index 0fe78595..dc4f8e83 100644 --- a/src/procrustes.cpp +++ b/src/procrustes.cpp @@ -1,5 +1,6 @@ // TODO: __miss +#include #include #include #include @@ -58,6 +59,8 @@ npe_arg(include_reflections, bool) npe_begin_code() + assert_cols_match(x, y, "x", "y"); + assert_nonzero_rows(x, "x"); double scale; npe_Matrix_x r; npe_Matrix_x t; diff --git a/src/qslim.cpp b/src/qslim.cpp index 59477091..3d0fe004 100644 --- a/src/qslim.cpp +++ b/src/qslim.cpp @@ -1,5 +1,6 @@ // TODO: __example +#include #include #include @@ -56,6 +57,7 @@ npe_arg(max_m, size_t) npe_begin_code() + assert_valid_3d_tri_mesh(v, f); // TODO: remove __copy Eigen::MatrixXd v_copy = v.template cast(); Eigen::MatrixXi f_copy = f.template cast(); diff --git a/src/quad_planarity.cpp b/src/quad_planarity.cpp index 0cb98888..4e00a5d5 100644 --- a/src/quad_planarity.cpp +++ b/src/quad_planarity.cpp @@ -1,5 +1,6 @@ // TODO: missing __example +#include #include #include #include @@ -35,6 +36,7 @@ npe_arg(v, dense_float, dense_double) npe_arg(f, dense_int, dense_long, dense_longlong) npe_begin_code() + assert_valid_tet_mesh(v, f); npe_Matrix_v p; igl::quad_planarity(v, f, p); return npe::move(p); diff --git a/src/random_points_on_mesh.cpp b/src/random_points_on_mesh.cpp index ab10f851..0a4275fa 100644 --- a/src/random_points_on_mesh.cpp +++ b/src/random_points_on_mesh.cpp @@ -1,4 +1,5 @@ //TODO: __example +#include #include #include #include @@ -40,9 +41,10 @@ npe_arg(f, dense_int, dense_long, dense_longlong) npe_begin_code() + assert_valid_3d_tri_mesh(v, f); npe_Matrix_v b; npe_Matrix_f fi; igl::random_points_on_mesh(n, v, f, b, fi); return std::make_tuple(npe::move(b), npe::move(fi)); -npe_end_code() \ No newline at end of file +npe_end_code() diff --git a/src/remove_duplicate_vertices.cpp b/src/remove_duplicate_vertices.cpp index fb064176..3deda56f 100644 --- a/src/remove_duplicate_vertices.cpp +++ b/src/remove_duplicate_vertices.cpp @@ -1,3 +1,4 @@ +#include #include #include @@ -58,6 +59,7 @@ npe_begin_code() // TODO: remove __copy // I believe we can prevent this. The libigl function uses "DerivedV rv" // which calls Eigen::Map(Eigen::Matrix<>)::Map() and DNE + assert_nonzero_rows(v, "v"); Eigen::MatrixXd v_copy = v.template cast(); Eigen::MatrixXd sv; npe_Matrix_f svi; diff --git a/src/remove_duplicates.cpp b/src/remove_duplicates.cpp index e8b9f9c1..013e47df 100644 --- a/src/remove_duplicates.cpp +++ b/src/remove_duplicates.cpp @@ -1,5 +1,6 @@ // TODO: __example +#include #include #include @@ -47,6 +48,7 @@ npe_arg(epsilon, double) npe_begin_code() + assert_valid_tet_or_tri_mesh(v, f); // remove __copy Eigen::MatrixXd v_copy = v.template cast(); Eigen::MatrixXi f_copy = f.template cast(); diff --git a/src/remove_unreferenced.cpp b/src/remove_unreferenced.cpp index 61652092..ffa4e46f 100644 --- a/src/remove_unreferenced.cpp +++ b/src/remove_unreferenced.cpp @@ -1,5 +1,6 @@ // TODO: __example +#include #include #include #include @@ -46,6 +47,7 @@ npe_arg(f, dense_int, dense_long, dense_longlong) npe_begin_code() + assert_valid_tet_or_tri_mesh(v, f); npe_Matrix_v nv; npe_Matrix_f nf; npe_Matrix_f i; diff --git a/src/resolve_duplicated_faces.cpp b/src/resolve_duplicated_faces.cpp index ac43ac01..0db49545 100644 --- a/src/resolve_duplicated_faces.cpp +++ b/src/resolve_duplicated_faces.cpp @@ -1,3 +1,4 @@ +#include #include #include #include @@ -48,6 +49,7 @@ npe_arg(f1, dense_int, dense_long, dense_longlong) npe_begin_code() + //assert_valid_3d_tri_mesh_faces(f, "f"); // TODO: remove __copy // same problem that DerivedF1 causes problem, can be prevented Eigen::MatrixXi f1_copy = f1.template cast(); diff --git a/src/shape_diameter_function.cpp b/src/shape_diameter_function.cpp index 7f277900..92d5e006 100644 --- a/src/shape_diameter_function.cpp +++ b/src/shape_diameter_function.cpp @@ -1,6 +1,7 @@ // TODO: __example __miss +#include #include #include #include @@ -51,6 +52,9 @@ npe_arg(num_samples, int) npe_begin_code() + assert_valid_3d_tri_mesh(v, f); + assert_nonzero_rows(p, "p"); + assert_shapes_match(p, n, "p", "n"); npe_Matrix_v s; igl::shape_diameter_function(v, f, p, n, num_samples, s); return npe::move(s); diff --git a/src/sort_angles.cpp b/src/sort_angles.cpp index 10db9cc6..27421399 100644 --- a/src/sort_angles.cpp +++ b/src/sort_angles.cpp @@ -1,5 +1,6 @@ // TODO: __example +#include #include #include #include @@ -39,6 +40,8 @@ npe_arg(m, dense_float, dense_double) npe_begin_code() + assert_nonzero_rows(m, "m"); + //TODO: need to check column >= 2 // In the libigl code r is column major, and using row major fails assertion // EIGEN_STATIC_ASSERT((EIGEN_IMPLIES(MaxRowsAtCompileTime==1 && // MaxColsAtCompileTime!=1, (Options&RowMajor)==RowMajor) diff --git a/src/tet_tet_adjacency.cpp b/src/tet_tet_adjacency.cpp index 9135148f..ca1f8377 100644 --- a/src/tet_tet_adjacency.cpp +++ b/src/tet_tet_adjacency.cpp @@ -33,6 +33,8 @@ npe_doc(ds_tet_tet_adjacency) npe_arg(t, dense_int, dense_long) npe_begin_code() + assert_nonzero_rows(t, "t"); + assert_cols_equals(t, 4, "t"); npe_Matrix_t tt, tti; igl::tet_tet_adjacency(t, tt, tti); return std::make_tuple(npe::move(tt), npe::move(tti)); diff --git a/src/tetgen_tetrahedralize.cpp b/src/tetgen_tetrahedralize.cpp index fa0d5826..7746f457 100644 --- a/src/tetgen_tetrahedralize.cpp +++ b/src/tetgen_tetrahedralize.cpp @@ -1,3 +1,4 @@ +#include #include #include #include @@ -46,6 +47,7 @@ npe_arg(f, dense_int) npe_default_arg(switches, std::string, std::string("pYQ")) npe_begin_code() + assert_valid_tet_or_tri_mesh(v, f); EigenDenseLike tv; EigenDenseLike tt; EigenDenseLike tf; diff --git a/src/triangle_triangle_adjacency.cpp b/src/triangle_triangle_adjacency.cpp index 836dd3a7..8faef44e 100644 --- a/src/triangle_triangle_adjacency.cpp +++ b/src/triangle_triangle_adjacency.cpp @@ -1,5 +1,6 @@ // TODO: __miss __example +#include #include #include #include @@ -44,6 +45,7 @@ npe_arg(f, dense_int, dense_long, dense_longlong) npe_begin_code() + //assert_valid_tet_or_tri_mesh_faces(f, "f"); npe_Matrix_f tt; npe_Matrix_f t_ti; igl::triangle_triangle_adjacency(f, tt, t_ti); diff --git a/src/uniformly_sample_two_manifold.cpp b/src/uniformly_sample_two_manifold.cpp index 814cf06b..419042b2 100644 --- a/src/uniformly_sample_two_manifold.cpp +++ b/src/uniformly_sample_two_manifold.cpp @@ -1,5 +1,6 @@ // TODO: __example +#include #include #include @@ -56,6 +57,7 @@ npe_arg(push, double) npe_begin_code() + assert_valid_3d_tri_mesh(w, f); // TODO: remove __copy Eigen::MatrixXd w_copy = w.template cast(); Eigen::MatrixXi f_copy = f.template cast(); diff --git a/src/unproject.cpp b/src/unproject.cpp index 95739bc4..e2f864c8 100644 --- a/src/unproject.cpp +++ b/src/unproject.cpp @@ -1,4 +1,5 @@ //TODO: __example +#include #include #include #include @@ -41,6 +42,11 @@ npe_arg(viewport, dense_float, dense_double) npe_begin_code() + assert_cols_equals(win, 3, "win"); + assert_rows_equals(model, 4, "model"); + assert_cols_equals(model, 4, "model"); + assert_shapes_match(model, proj, "model", "proj"); + assert_cols_equals(viewport, 4, "viewport"); npe_Matrix_win scene; igl::unproject(win, model, proj, viewport, scene); return npe::move(scene); diff --git a/src/unproject_in_mesh.cpp b/src/unproject_in_mesh.cpp index d8af622e..16c3f089 100644 --- a/src/unproject_in_mesh.cpp +++ b/src/unproject_in_mesh.cpp @@ -1,3 +1,4 @@ +#include #include #include @@ -59,7 +60,13 @@ npe_arg(f, dense_int, dense_long, dense_longlong) npe_begin_code() - + assert_valid_3d_tri_mesh(v, f); + assert_cols_equals(pos, 2, "pos"); + assert_rows_equals(model, 4, "model"); + assert_cols_equals(model, 4, "model"); + assert_shapes_match(model, proj, "model", "proj"); + assert_cols_equals(viewport, 4, "viewport"); + // TODO: remove __copy Eigen::Vector2f pos_copy = pos.template cast(); Eigen::Matrix4f model_copy = model.template cast(); diff --git a/src/unproject_onto_mesh.cpp b/src/unproject_onto_mesh.cpp index f9d7176d..0b53c94e 100644 --- a/src/unproject_onto_mesh.cpp +++ b/src/unproject_onto_mesh.cpp @@ -1,6 +1,6 @@ //TODO: __miss __example -//TODO: mixed use of numeric types +#include #include #include @@ -60,6 +60,13 @@ npe_arg(f, dense_int, dense_long, dense_longlong) npe_begin_code() + assert_valid_3d_tri_mesh(v, f); + assert_cols_equals(pos, 2, "pos"); + assert_rows_equals(model, 4, "model"); + assert_cols_equals(model, 4, "model"); + assert_shapes_match(model, proj, "model", "proj"); + assert_cols_equals(viewport, 4, "viewport"); + // TODO: remove __copy Eigen::Vector2f pos_copy = pos.template cast(); Eigen::Matrix4f model_copy = model.template cast(); diff --git a/src/unproject_ray.cpp b/src/unproject_ray.cpp index cbcc9acd..bc91c2ea 100644 --- a/src/unproject_ray.cpp +++ b/src/unproject_ray.cpp @@ -1,5 +1,5 @@ -// error: static assertion failed: THIS_COEFFICIENT_ACCESSOR_TAKING_ONE_ACCESS_IS_ONLY_FOR_EXPRESSIONS_ALLOWING_LINEAR_ACCESS +#include #include #include #include @@ -46,6 +46,12 @@ npe_arg(viewport, npe_matches(pos)) npe_begin_code() + assert_cols_equals(pos, 2, "pos"); + assert_rows_equals(model, 4, "model"); + assert_cols_equals(model, 4, "model"); + assert_shapes_match(model, proj, "model", "proj"); + assert_cols_equals(viewport, 4, "viewport"); + Eigen::Matrix s; Eigen::Matrix dir; igl::unproject_ray(pos, model, proj, viewport, s, dir); diff --git a/src/upsample.cpp b/src/upsample.cpp index ef7fac9d..3d472765 100644 --- a/src/upsample.cpp +++ b/src/upsample.cpp @@ -1,5 +1,6 @@ //TODO: __example //TODO: __miss upsample that retuns a sparse matrix and inplace +#include #include #include @@ -42,6 +43,7 @@ npe_default_arg(number_of_subdivs, int, 1) npe_begin_code() + assert_valid_3d_tri_mesh(v, f); npe_Matrix_v nv; npe_Matrix_f nf; igl::upsample(v, f, nv, nf, number_of_subdivs); diff --git a/src/vector_area_matrix.cpp b/src/vector_area_matrix.cpp index d1cab181..16d988e9 100644 --- a/src/vector_area_matrix.cpp +++ b/src/vector_area_matrix.cpp @@ -1,3 +1,4 @@ +#include #include #include #include @@ -31,6 +32,7 @@ npe_doc(ds_vector_area_matrix) npe_arg(f, dense_int, dense_long, dense_longlong) npe_begin_code() + //assert_valid_3d_tri_mesh_faces(f, "f"); EigenSparseLike a; igl::vector_area_matrix(f, a); return npe::move(a); diff --git a/src/vertex_components.cpp b/src/vertex_components.cpp index 1271231e..ab56125b 100644 --- a/src/vertex_components.cpp +++ b/src/vertex_components.cpp @@ -31,6 +31,7 @@ npe_function(vertex_components) npe_doc(ds_vertex_components) npe_arg(f, dense_int, dense_long, dense_longlong) npe_begin_code() + //assert_valid_3d_tri_mesh_faces(f, "f"); npe_Matrix_f c; igl::vertex_components(f, c); return npe::move(c); diff --git a/src/vertex_triangle_adjacency.cpp b/src/vertex_triangle_adjacency.cpp index 00ce4f80..5bb3a877 100644 --- a/src/vertex_triangle_adjacency.cpp +++ b/src/vertex_triangle_adjacency.cpp @@ -1,5 +1,6 @@ // TODO: __miss __example +#include #include #include #include @@ -45,6 +46,7 @@ npe_arg(n, int) npe_begin_code() + //assert_valid_3d_tri_mesh_faces(f, "f"); Eigen::VectorXi vf; Eigen::VectorXi ni; igl::vertex_triangle_adjacency(f, n, vf, ni); diff --git a/src/winding_number.cpp b/src/winding_number.cpp index 272eaf0d..36b137d4 100644 --- a/src/winding_number.cpp +++ b/src/winding_number.cpp @@ -1,6 +1,7 @@ //TODO: __example // TODO: remove __copy // copy is necessary since the winding number only supports matrices +#include #include #include #include @@ -40,6 +41,8 @@ npe_arg(o, dense_float, dense_double) npe_begin_code() + assert_valid_3d_tri_mesh(v, f); + assert_cols_match(v, o, "v", "o"); Eigen::MatrixXd v_copy = v.template cast(); Eigen::MatrixXi f_copy = f.template cast(); Eigen::MatrixXd o_copy = o.template cast(); @@ -89,6 +92,8 @@ npe_arg(p, dense_float, dense_double) npe_begin_code() + assert_valid_tet_or_tri_mesh(v, f); + assert_cols_match(v, f, "v", "f"); Eigen::MatrixXd v_copy = v.template cast(); Eigen::MatrixXi f_copy = f.template cast(); Eigen::MatrixXd p_copy = p.template cast(); diff --git a/src/writeOBJ.cpp b/src/writeOBJ.cpp index 3f5e49b5..33ca02e2 100644 --- a/src/writeOBJ.cpp +++ b/src/writeOBJ.cpp @@ -41,6 +41,7 @@ npe_arg(f, dense_int, dense_long, dense_longlong) //npe_default_arg(ftc, npe_matches(f), pybind11::array()) npe_begin_code() + assert_valid_tet_or_tri_mesh(v, f); //return igl::writeOBJ(filename, v, f, cn, fn, tc, ftc); return igl::writeOBJ(filename, v, f); diff --git a/src/writeOFF.cpp b/src/writeOFF.cpp index f71e6b45..3c2c34cf 100644 --- a/src/writeOFF.cpp +++ b/src/writeOFF.cpp @@ -1,3 +1,4 @@ +#include #include #include @@ -47,6 +48,7 @@ npe_arg(c, npe_matches(v)) npe_begin_code() + assert_valid_3d_tri_mesh(v, f); return igl::writeOFF(str, v, f, c); npe_end_code() diff --git a/src/write_triangle_mesh.cpp b/src/write_triangle_mesh.cpp index c1ed5bdd..3379ac53 100644 --- a/src/write_triangle_mesh.cpp +++ b/src/write_triangle_mesh.cpp @@ -1,5 +1,6 @@ //TODO: __example +#include #include #include @@ -43,6 +44,7 @@ npe_default_arg(force_ascii, bool, bool(true)) npe_begin_code() + assert_valid_3d_tri_mesh(v, f); // TODO: remove __copy //copy is necessary for the ply library Eigen::MatrixXi f_copy = f.template cast(); From 9525b3d38c96abea825720cb83f2fcb8504abd11 Mon Sep 17 00:00:00 2001 From: KarlLeell Date: Mon, 5 Aug 2019 14:32:35 -0400 Subject: [PATCH 4/7] fixing tests input --- tests/test_basic.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/tests/test_basic.py b/tests/test_basic.py index 3fe1e86c..973ecb48 100644 --- a/tests/test_basic.py +++ b/tests/test_basic.py @@ -323,7 +323,7 @@ def test_per_face_normals(self): def test_ambient_occlusion(self): n = igl.per_face_normals(self.v2, self.f2, self.v2) - s = igl.ambient_occlusion(self.v2, self.f2, self.v2, n, 2) + s = igl.ambient_occlusion(self.v2, self.f2, self.v2, n[0:self.v2.shape[0], :], 2) self.assertEqual(s.dtype, self.v1.dtype) self.assertEqual(len(s.shape), 1) From 31f02242adfdc45048f401c414ab4d8f13706f7c Mon Sep 17 00:00:00 2001 From: KarlLeell Date: Mon, 5 Aug 2019 15:14:16 -0400 Subject: [PATCH 5/7] Fixed input data shapes --- tests/test_basic.py | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/tests/test_basic.py b/tests/test_basic.py index 973ecb48..3bceef6c 100644 --- a/tests/test_basic.py +++ b/tests/test_basic.py @@ -673,7 +673,7 @@ def test_tet_tet_adjacency(self): self.assertEqual(tti.dtype, tet.dtype) def test_arap1(self): - v, f, _ = igl.read_off("data/camelhead.off") + v, f, _ = igl.read_off("../data/camelhead.off") b = igl.boundary_loop(f) thetas = np.linspace(0, 2 * np.pi, len(b))[:, np.newaxis] bc = np.concatenate([np.cos(thetas), np.sin(thetas), np.zeros_like(thetas)], axis=1) @@ -709,7 +709,7 @@ def test_arap2(self): self.assertEqual(v2.shape[0], v0.shape[0]) def test_slim(self): - v, f, _ = igl.read_off("data/camelhead.off") + v, f, _ = igl.read_off("../data/camelhead.off") b = igl.boundary_loop(f) thetas = np.linspace(0, 2 * np.pi, len(b))[:, np.newaxis] bc = np.concatenate([np.cos(thetas), np.sin(thetas), np.zeros_like(thetas)], axis=1) From bb7efa38fdb3fe8feaa90f7ede8d3738a8c88f42 Mon Sep 17 00:00:00 2001 From: KarlLeell Date: Wed, 7 Aug 2019 10:28:36 -0400 Subject: [PATCH 6/7] fix shape checks --- src/crouzeix_raviart_cotmatrix.cpp | 4 +++- src/crouzeix_raviart_massmatrix.cpp | 4 +++- src/unproject.cpp | 2 +- src/unproject_in_mesh.cpp | 4 ++-- src/unproject_onto_mesh.cpp | 4 ++-- src/unproject_ray.cpp | 4 ++-- 6 files changed, 13 insertions(+), 9 deletions(-) diff --git a/src/crouzeix_raviart_cotmatrix.cpp b/src/crouzeix_raviart_cotmatrix.cpp index 2d26979b..882ffb83 100644 --- a/src/crouzeix_raviart_cotmatrix.cpp +++ b/src/crouzeix_raviart_cotmatrix.cpp @@ -97,7 +97,9 @@ npe_arg(emap, npe_matches(f)) npe_begin_code() assert_valid_tet_or_tri_mesh(v, f); - assert_shapes_match(f, emap, "f", "emap"); + //assert_rows_equals(emap, 3/4*f.rows(), "emap"); + //assert_cols_equals(e, 2/3, "emap"); + assert_cols_equals(emap, 1, "emap"); EigenSparseLike l; igl::crouzeix_raviart_cotmatrix(v, f, e, emap, l); return npe::move(l); diff --git a/src/crouzeix_raviart_massmatrix.cpp b/src/crouzeix_raviart_massmatrix.cpp index 07bc5356..5f9923f9 100644 --- a/src/crouzeix_raviart_massmatrix.cpp +++ b/src/crouzeix_raviart_massmatrix.cpp @@ -100,7 +100,9 @@ npe_arg(emap, npe_matches(f)) npe_begin_code() assert_valid_tet_or_tri_mesh(v, f); - assert_shapes_match(f, emap, "f", "emap"); + //assert_rows_equals(emap, 3/4*f.rows(), "emap"); + //assert_cols_equals(e, 2/3, "emap"); + assert_cols_equals(emap, 1, "emap"); EigenSparseLike m; igl::crouzeix_raviart_massmatrix(v, f, e, emap, m); return npe::move(m); diff --git a/src/unproject.cpp b/src/unproject.cpp index e2f864c8..9a53948d 100644 --- a/src/unproject.cpp +++ b/src/unproject.cpp @@ -46,7 +46,7 @@ npe_begin_code() assert_rows_equals(model, 4, "model"); assert_cols_equals(model, 4, "model"); assert_shapes_match(model, proj, "model", "proj"); - assert_cols_equals(viewport, 4, "viewport"); + assert_rows_equals(viewport, 4, "viewport"); npe_Matrix_win scene; igl::unproject(win, model, proj, viewport, scene); return npe::move(scene); diff --git a/src/unproject_in_mesh.cpp b/src/unproject_in_mesh.cpp index 16c3f089..33bb480d 100644 --- a/src/unproject_in_mesh.cpp +++ b/src/unproject_in_mesh.cpp @@ -61,11 +61,11 @@ npe_arg(f, dense_int, dense_long, dense_longlong) npe_begin_code() assert_valid_3d_tri_mesh(v, f); - assert_cols_equals(pos, 2, "pos"); + assert_rows_equals(pos, 2, "pos"); assert_rows_equals(model, 4, "model"); assert_cols_equals(model, 4, "model"); assert_shapes_match(model, proj, "model", "proj"); - assert_cols_equals(viewport, 4, "viewport"); + assert_rows_equals(viewport, 4, "viewport"); // TODO: remove __copy Eigen::Vector2f pos_copy = pos.template cast(); diff --git a/src/unproject_onto_mesh.cpp b/src/unproject_onto_mesh.cpp index 0b53c94e..6888367f 100644 --- a/src/unproject_onto_mesh.cpp +++ b/src/unproject_onto_mesh.cpp @@ -61,11 +61,11 @@ npe_arg(f, dense_int, dense_long, dense_longlong) npe_begin_code() assert_valid_3d_tri_mesh(v, f); - assert_cols_equals(pos, 2, "pos"); + assert_rows_equals(pos, 2, "pos"); assert_rows_equals(model, 4, "model"); assert_cols_equals(model, 4, "model"); assert_shapes_match(model, proj, "model", "proj"); - assert_cols_equals(viewport, 4, "viewport"); + assert_rows_equals(viewport, 4, "viewport"); // TODO: remove __copy Eigen::Vector2f pos_copy = pos.template cast(); diff --git a/src/unproject_ray.cpp b/src/unproject_ray.cpp index bc91c2ea..39335161 100644 --- a/src/unproject_ray.cpp +++ b/src/unproject_ray.cpp @@ -46,11 +46,11 @@ npe_arg(viewport, npe_matches(pos)) npe_begin_code() - assert_cols_equals(pos, 2, "pos"); + assert_rows_equals(pos, 2, "pos"); assert_rows_equals(model, 4, "model"); assert_cols_equals(model, 4, "model"); assert_shapes_match(model, proj, "model", "proj"); - assert_cols_equals(viewport, 4, "viewport"); + assert_rows_equals(viewport, 4, "viewport"); Eigen::Matrix s; Eigen::Matrix dir; From 1e76609823b018ac152b08d6c8384cea5031df3e Mon Sep 17 00:00:00 2001 From: Chengchen Li Date: Wed, 7 Aug 2019 12:53:57 -0400 Subject: [PATCH 7/7] change data path --- tests/test_basic.py | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/tests/test_basic.py b/tests/test_basic.py index 8fbeec86..525feaf0 100644 --- a/tests/test_basic.py +++ b/tests/test_basic.py @@ -678,7 +678,7 @@ def test_tet_tet_adjacency(self): self.assertEqual(tti.dtype, tet.dtype) def test_arap1(self): - v, f, _ = igl.read_off("../data/camelhead.off") + v, f, _ = igl.read_off("data/camelhead.off") b = igl.boundary_loop(f) thetas = np.linspace(0, 2 * np.pi, len(b))[:, np.newaxis] bc = np.concatenate([np.cos(thetas), np.sin(thetas), np.zeros_like(thetas)], axis=1) @@ -714,7 +714,7 @@ def test_arap2(self): self.assertEqual(v2.shape[0], v0.shape[0]) def test_slim(self): - v, f, _ = igl.read_off("../data/camelhead.off") + v, f, _ = igl.read_off("data/camelhead.off") b = igl.boundary_loop(f) thetas = np.linspace(0, 2 * np.pi, len(b))[:, np.newaxis] bc = np.concatenate([np.cos(thetas), np.sin(thetas), np.zeros_like(thetas)], axis=1)