Welcome to mirror list, hosted at ThFree Co, Russian Federation.

transformations_test.cpp « geometry_tests « geometry - github.com/mapsme/omim.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
blob: a6d911e618ef9aa68d794da6d9afe51e79b753a0 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
#include "base/SRC_FIRST.hpp"

#include "testing/testing.hpp"
#include "base/matrix.hpp"
#include "geometry/point2d.hpp"
#include "geometry/transformations.hpp"

UNIT_TEST(Transformations_Shift)
{
  math::Matrix<double, 3, 3> m = math::Shift(math::Identity<double, 3>(), 200.0, 100.0);

  m2::PointD pt = m2::PointD(30, 20) * m;

  TEST(pt.EqualDxDy(m2::PointD(230, 120), 1.0E-10), ());
}

UNIT_TEST(Transformations_ShiftScale)
{
  math::Matrix<double, 3, 3> m = math::Scale(math::Shift(math::Identity<double, 3>(), 100, 100), 2, 3);
  m2::PointD pt = m2::PointD(20, 10) * m;

  TEST(pt.EqualDxDy(m2::PointD(240, 330), 1.0E-10), ());
}

UNIT_TEST(Transformations_Rotate)
{
  math::Matrix<double, 3, 3> m = math::Rotate(math::Identity<double, 3>(), math::pi / 2);
  TEST(m2::PointD(0, 100).EqualDxDy(m2::PointD(100, 0) * m, 1.0E-10), ());
}

UNIT_TEST(Transformations_ShiftScaleRotate)
{
  math::Matrix<double, 3, 3> m = math::Rotate(math::Scale(math::Shift(math::Identity<double, 3>(), 100, 100), 2, 3), -math::pi / 2);
  m2::PointD pt = m2::PointD(20, 10) * m;

  TEST(pt.EqualDxDy(m2::PointD(330, -240), 1.0E-10), ());

  math::Matrix<double, 3, 3> invM = math::Inverse(m);

  m2::PointD invPt = m2::PointD(330, -240) * invM;

  TEST(invPt.EqualDxDy(m2::PointD(20, 10), 1.0E-10), ());
}