diff --git a/tests/core/math/PlaneTest.cpp b/tests/core/math/PlaneTest.cpp index b8f2d49b78e607e7834802ee7fa026f12ab4dd41..73e7d56c73808062b320609666219077e374398c 100644 --- a/tests/core/math/PlaneTest.cpp +++ b/tests/core/math/PlaneTest.cpp @@ -135,20 +135,22 @@ int main(int argc, char * argv[]) Vec3Real p1 = rpg(); Vec3Real p2 = rpg(); - if( (p0 - p1).sqrLength() < 1e-6 || (p0 - p2).sqrLength() < 1e-6 || (p2 - p1).sqrLength() < 1e-6 ) + real_t angle = std::acos( (p1-p0) * (p2-p0) / std::sqrt( (p1-p0).sqrLength() * (p2-p0).sqrLength() ) ); + + if( (p0 - p1).sqrLength() < 1e-6 || (p0 - p2).sqrLength() < 1e-6 || (p2 - p1).sqrLength() < 1e-6 || angle < math::PI / real_t(180) ) { --i; continue; } - Plane plane( p0, (p0 - p1) % (p0 - p2) ); + Plane plane( p0, (p0 - p1).getNormalized() % (p0 - p2).getNormalized() ); - WALBERLA_CHECK ( realIsEqual( plane.signedDistance( p0 ), real_t(0) ) ); - WALBERLA_CHECK ( realIsEqual( plane.distance ( p0 ), real_t(0) ) ); - WALBERLA_CHECK ( realIsEqual( plane.signedDistance( p1 ), real_t(0) ) ); - WALBERLA_CHECK ( realIsEqual( plane.distance ( p1 ), real_t(0) ) ); - WALBERLA_CHECK ( realIsEqual( plane.signedDistance( p2 ), real_t(0) ) ); - WALBERLA_CHECK ( realIsEqual( plane.distance ( p2 ), real_t(0) ) ); + WALBERLA_CHECK_FLOAT_EQUAL( plane.signedDistance( p0 ), real_t(0) ); + WALBERLA_CHECK_FLOAT_EQUAL( plane.distance ( p0 ), real_t(0) ); + WALBERLA_CHECK_FLOAT_EQUAL( plane.signedDistance( p1 ), real_t(0) ); + WALBERLA_CHECK_FLOAT_EQUAL( plane.distance ( p1 ), real_t(0) ); + WALBERLA_CHECK_FLOAT_EQUAL( plane.signedDistance( p2 ), real_t(0) ); + WALBERLA_CHECK_FLOAT_EQUAL( plane.distance ( p2 ), real_t(0) ); WALBERLA_CHECK_GREATER_EQUAL( plane.distance( p0 ), real_t(0) ); WALBERLA_CHECK_GREATER_EQUAL( plane.distance( p1 ), real_t(0) ); WALBERLA_CHECK_GREATER_EQUAL( plane.distance( p2 ), real_t(0) );