Code-Eli  0.3.6
minimum_distance_point_test_suite.hpp
Go to the documentation of this file.
1 /*********************************************************************************
2 * Copyright (c) 2013 David D. Marshall <ddmarsha@calpoly.edu>
3 *
4 * All rights reserved. This program and the accompanying materials
5 * are made available under the terms of the Eclipse Public License v1.0
6 * which accompanies this distribution, and is available at
7 * http://www.eclipse.org/legal/epl-v10.html
8 *
9 * Contributors:
10 * David D. Marshall - initial code and implementation
11 ********************************************************************************/
12 
13 #ifndef minimum_distance_point_test_suite_hpp
14 #define minimum_distance_point_test_suite_hpp
15 
16 #include <cmath> // cos(), sin()
17 
18 #include <typeinfo> // typeid
19 
20 #include "eli/util/tolerance.hpp"
21 
23 
24 template<typename data__>
25 class minimum_distance_point_test_suite : public Test::Suite
26 {
27  private:
28  typedef data__ data_type;
29  typedef Eigen::Matrix<data_type, 1, 1> point_type1;
30  typedef Eigen::Matrix<data_type, 1, 2> point_type2;
31  typedef Eigen::Matrix<data_type, 1, 3> point_type3;
32 
33  typedef typename point_type1::Index index_type;
34 
36 
37  protected:
38  void AddTests(const float &)
39  {
40  // add the tests
44  }
45  void AddTests(const double &)
46  {
47  // add the tests
51  }
52  void AddTests(const long double &)
53  {
54  // add the tests
58  }
59 
60  public:
62  {
63  AddTests(data__());
64  }
66  {
67  }
68 
69  private:
71  {
72  point_type1 pt1, pt2;
73  data_type dist;
74 
75  pt1 << 1;
76  pt2 << 2;
77 
78  dist=(pt1-pt2).norm();
79  TEST_ASSERT(tol.approximately_equal(dist, eli::geom::intersect::minimum_distance(pt1, pt2)));
80  }
81 
83  {
84  point_type2 pt1, pt2;
85  data_type dist;
86 
87  pt1 << 1, 1;
88  pt2 << 2, 2;
89 
90  dist=(pt1-pt2).norm();
91  TEST_ASSERT(tol.approximately_equal(dist, eli::geom::intersect::minimum_distance(pt1, pt2)));
92  }
93 
95  {
96  point_type3 pt1, pt2;
97  data_type dist;
98 
99  pt1 << 1, 1, 2;
100  pt2 << 2, 2, 3;
101 
102  dist=(pt1-pt2).norm();
103  TEST_ASSERT(tol.approximately_equal(dist, eli::geom::intersect::minimum_distance(pt1, pt2)));
104  }
105 };
106 
107 #endif
108 
curve::piecewise< curve1__, data1__, dim1__, tol1__ >::data_type minimum_distance(typename curve::piecewise< curve1__, data1__, dim1__, tol1__ >::data_type &t, const curve::piecewise< curve1__, data1__, dim1__, tol1__ > &pc, const typename curve::piecewise< curve1__, data1__, dim1__, tol1__ >::point_type &pt)
void simple_2d_test()
Definition: minimum_distance_point_test_suite.hpp:82
Definition: minimum_distance_point_test_suite.hpp:25
Eigen::Matrix< data_type, 1, 1 > point_type1
Definition: minimum_distance_point_test_suite.hpp:29
minimum_distance_point_test_suite()
Definition: minimum_distance_point_test_suite.hpp:61
void simple_3d_test()
Definition: minimum_distance_point_test_suite.hpp:94
bool approximately_equal(const Eigen::MatrixBase< Derived1 > &m1, const Eigen::MatrixBase< Derived2 > &m2) const
Definition: tolerance.hpp:99
point_type1::Index index_type
Definition: minimum_distance_point_test_suite.hpp:33
Eigen::Matrix< data_type, 1, 2 > point_type2
Definition: minimum_distance_point_test_suite.hpp:30
void AddTests(const float &)
Definition: minimum_distance_point_test_suite.hpp:38
Eigen::Matrix< data_type, 1, 3 > point_type3
Definition: minimum_distance_point_test_suite.hpp:31
eli::util::tolerance< data_type > tol
Definition: minimum_distance_point_test_suite.hpp:35
void AddTests(const long double &)
Definition: minimum_distance_point_test_suite.hpp:52
void simple_1d_test()
Definition: minimum_distance_point_test_suite.hpp:70
void AddTests(const double &)
Definition: minimum_distance_point_test_suite.hpp:45
~minimum_distance_point_test_suite()
Definition: minimum_distance_point_test_suite.hpp:65
data__ data_type
Definition: minimum_distance_point_test_suite.hpp:28