You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
43 lines
1.4 KiB
43 lines
1.4 KiB
#include <test_common.h>
|
|
#include <igl/predicates/segment_segment_intersect.h>
|
|
#include <iomanip>
|
|
|
|
TEST_CASE("segment_segment_intersect: robust", "[igl/predicates]")
|
|
{
|
|
// example 1: vanila intersecting case
|
|
auto A1 = Eigen::RowVector2d(0, 128.5);
|
|
auto B1 = Eigen::RowVector2d(-77.44,1.2);
|
|
auto C1 = Eigen::RowVector2d(-83.2,2.8);
|
|
auto D1 = Eigen::RowVector2d(-1.0,-1.0);
|
|
|
|
bool check1 = igl::predicates::segment_segment_intersect(A1,B1,C1,D1);
|
|
REQUIRE(check1 == true);
|
|
|
|
// example 2: colinear overlapping
|
|
auto A2 = Eigen::RowVector2d(1.0,5.0);
|
|
auto B2 = Eigen::RowVector2d(1.0,9.0);
|
|
auto C2 = Eigen::RowVector2d(1.0,8.0);
|
|
auto D2 = Eigen::RowVector2d(1.0,12.0);
|
|
|
|
bool check2 = igl::predicates::segment_segment_intersect(A2,B2,C2,D2);
|
|
REQUIRE(check2 == true);
|
|
|
|
// example 3: colinear touching endpoint
|
|
auto A3 = Eigen::RowVector2d(0.0,0.0);
|
|
auto B3 = Eigen::RowVector2d(1.5,1.5);
|
|
auto C3 = Eigen::RowVector2d(1.5,1.5);
|
|
auto D3 = Eigen::RowVector2d(2.0,2.0);
|
|
|
|
bool check3 = igl::predicates::segment_segment_intersect(A3,B3,C3,D3);
|
|
REQUIRE(check3 == true);
|
|
|
|
// example 6: colinear not touching endpoint
|
|
double eps = 1e-14;
|
|
auto A4 = Eigen::RowVector2d(0.0,0.0);
|
|
auto B4 = Eigen::RowVector2d(1.5,1.5);
|
|
auto C4 = Eigen::RowVector2d(1.5+eps,1.5+eps);
|
|
auto D4 = Eigen::RowVector2d(2.0,2.0);
|
|
bool check4 = igl::predicates::segment_segment_intersect(A4,B4,C4,D4);
|
|
REQUIRE(check4 == false);
|
|
|
|
}
|