6
6
#include < ipc/collisions/normal/normal_collisions.hpp>
7
7
#include < ipc/potentials/barrier_potential.hpp>
8
8
9
+ #include < igl/edges.h>
10
+
9
11
using namespace ipc ;
10
12
11
13
TEST_CASE (" Codim. vertex-vertex collisions" , " [collisions][codim]" )
@@ -298,4 +300,53 @@ TEST_CASE("NormalCollisions::is_*", "[collisions]")
298
300
CHECK (collisions.is_face_vertex (i) == (i == 3 ));
299
301
CHECK (collisions.is_plane_vertex (i) == (i == 4 ));
300
302
}
303
+ }
304
+
305
+ TEST_CASE (" NormalCollisions::to_string" , " [collisions]" )
306
+ {
307
+ const double dhat = 1e-1 ;
308
+
309
+ Eigen::MatrixXd vertices;
310
+ Eigen::MatrixXi edges, faces;
311
+ const bool success =
312
+ tests::load_mesh (" two-cubes-close.ply" , vertices, edges, faces);
313
+ REQUIRE (success);
314
+
315
+ CollisionMesh mesh (vertices, edges, faces);
316
+
317
+ NormalCollisions collisions;
318
+ collisions.set_use_convergent_formulation (true );
319
+ collisions.build (mesh, vertices, dhat);
320
+
321
+ std::sort (collisions.vv_collisions .begin (), collisions.vv_collisions .end ());
322
+ collisions.vv_collisions .erase (
323
+ collisions.vv_collisions .begin () + 1 ,
324
+ collisions.vv_collisions .end () - 1 );
325
+
326
+ std::sort (collisions.ev_collisions .begin (), collisions.ev_collisions .end ());
327
+ collisions.ev_collisions .erase (
328
+ collisions.ev_collisions .begin () + 1 ,
329
+ collisions.ev_collisions .end () - 1 );
330
+
331
+ std::sort (collisions.ee_collisions .begin (), collisions.ee_collisions .end ());
332
+ collisions.ee_collisions .erase (
333
+ collisions.ee_collisions .begin () + 1 ,
334
+ collisions.ee_collisions .end () - 1 );
335
+
336
+ std::sort (collisions.fv_collisions .begin (), collisions.fv_collisions .end ());
337
+ collisions.fv_collisions .erase (
338
+ collisions.fv_collisions .begin () + 1 ,
339
+ collisions.fv_collisions .end () - 1 );
340
+
341
+ std::string s = collisions.to_string (mesh, vertices);
342
+
343
+ CHECK (s == R"ipc_Qu8mg5v7(
344
+ vv: 1 5, w: 1000, d: 0.000913492
345
+ vv: 160 163, w: 1000, d: 0.000277936
346
+ ev: 14=(24, 46) 205, w: 14.0559, d: 0.00500364
347
+ ev: 719=(237, 261) 128, w: 12.2856, d: 0.00727213
348
+ ee: 14=(24, 46) 456=(161, 205), w: -2.97853, dtype: 0, d: 0.00538125
349
+ ee: 346=(76, 128) 718=(236, 261), w: -3.28539, dtype: 5, d: 0.00717647
350
+ fv: 17=(46, 24, 72) 205, w: 13.7957, d: 0.00500269
351
+ fv: 471=(155, 238, 259) 64, w: 16.0469, d: 0.00639199)ipc_Qu8mg5v7" );
301
352
}
0 commit comments