diff options
author | Alex Zolotarev <deathbaba@gmail.com> | 2010-12-05 19:24:16 +0300 |
---|---|---|
committer | Alex Zolotarev <alex@maps.me> | 2015-09-22 22:33:57 +0300 |
commit | d6e12b7ce4bcbf0ccd1c07eb25de143422913c34 (patch) | |
tree | a7e910c330ce4da9b4f2d8be76067adece2561c4 /geometry/geometry_tests/point_test.cpp |
One Month In Minsk. Made in Belarus.
Diffstat (limited to 'geometry/geometry_tests/point_test.cpp')
-rw-r--r-- | geometry/geometry_tests/point_test.cpp | 59 |
1 files changed, 59 insertions, 0 deletions
diff --git a/geometry/geometry_tests/point_test.cpp b/geometry/geometry_tests/point_test.cpp new file mode 100644 index 0000000000..609ce8c84d --- /dev/null +++ b/geometry/geometry_tests/point_test.cpp @@ -0,0 +1,59 @@ +#include "../../base/SRC_FIRST.hpp" +#include "../../testing/testing.hpp" +#include "equality.hpp" +#include "../point2d.hpp" + +UNIT_TEST(Point_Rotate) +{ + m2::PointD p(1.0, 0.0); + p.Rotate(math::pi / 6.0); + TEST(test::is_equal(p.x, sqrt(3.0) / 2.0), ()); + TEST(test::is_equal(p.y, 1.0 / 2.0), ()); +} + +UNIT_TEST(PointInTriangle) +{ + m2::PointD const a(1, 0); + m2::PointD const b(2, 0); + m2::PointD const c(-1, 3); + + TEST(!m2::IsPointStrictlyInsideTriangle(a, a, a, a), ()); + + TEST(!m2::IsPointStrictlyInsideTriangle(a, a, a, b), ()); + TEST(!m2::IsPointStrictlyInsideTriangle(b, a, a, b), ()); + TEST(!m2::IsPointStrictlyInsideTriangle(a, a, b, a), ()); + TEST(!m2::IsPointStrictlyInsideTriangle(b, a, b, a), ()); + + TEST(!m2::IsPointStrictlyInsideTriangle(a, a, b, c), ()); + TEST(!m2::IsPointStrictlyInsideTriangle(a, a, c, b), ()); + TEST(!m2::IsPointStrictlyInsideTriangle(b, a, b, c), ()); + TEST(!m2::IsPointStrictlyInsideTriangle(b, a, c, b), ()); + TEST(!m2::IsPointStrictlyInsideTriangle(c, a, b, c), ()); + TEST(!m2::IsPointStrictlyInsideTriangle(c, a, c, b), ()); + + TEST(!m2::IsPointStrictlyInsideTriangle(m2::PointD(0, 1), a, b, c), ()); + TEST(!m2::IsPointStrictlyInsideTriangle(m2::PointD(0, 1), a, c, b), ()); + TEST(!m2::IsPointStrictlyInsideTriangle(m2::PointD(0, 1.5), a, b, c), ()); + TEST(!m2::IsPointStrictlyInsideTriangle(m2::PointD(0, 1.5), a, c, b), ()); + TEST(m2::IsPointStrictlyInsideTriangle(m2::PointD(0, 1.77), a, b, c), ()); + TEST(m2::IsPointStrictlyInsideTriangle(m2::PointD(0, 1.77), a, c, b), ()); + TEST(!m2::IsPointStrictlyInsideTriangle(m2::PointD(0, 2), a, b, c), ()); + TEST(!m2::IsPointStrictlyInsideTriangle(m2::PointD(0, 2), a, c, b), ()); + TEST(!m2::IsPointStrictlyInsideTriangle(m2::PointD(1, 1), a, b, c), ()); + TEST(!m2::IsPointStrictlyInsideTriangle(m2::PointD(1, 1), a, c, b), ()); + TEST(m2::IsPointStrictlyInsideTriangle(m2::PointD(1, 0.5), a, b, c), ()); + TEST(m2::IsPointStrictlyInsideTriangle(m2::PointD(1, 0.5), a, c, b), ()); + TEST(!m2::IsPointStrictlyInsideTriangle(m2::PointD(100, 100), a, b, c), ()); + TEST(!m2::IsPointStrictlyInsideTriangle(m2::PointD(100, 100), a, c, b), ()); + TEST(!m2::IsPointStrictlyInsideTriangle(m2::PointD(5, 0), a, b, c), ()); + TEST(!m2::IsPointStrictlyInsideTriangle(m2::PointD(5, 0), a, c, b), ()); + TEST(!m2::IsPointStrictlyInsideTriangle(m2::PointD(-1, -1), a, c, b), ()); + TEST(!m2::IsPointStrictlyInsideTriangle(m2::PointD(0, 0.5), a, b, c), ()); + TEST(!m2::IsPointStrictlyInsideTriangle(m2::PointD(0, 0.5), a, c, b), ()); +} + +UNIT_TEST(PointInTriangle_EmptyTriangle) +{ + m2::PointD pt(27, 31); + TEST(!m2::IsPointStrictlyInsideTriangle(m2::PointD(0, 16), pt, pt, pt), ()); +} |