EnclosingEllipsoid.h
Go to the documentation of this file.
1 /*
2  * This file is part of ArmarX.
3  *
4  * ArmarX is free software; you can redistribute it and/or modify
5  * it under the terms of the GNU General Public License version 2 as
6  * published by the Free Software Foundation.
7  *
8  * ArmarX is distributed in the hope that it will be useful, but
9  * WITHOUT ANY WARRANTY; without even the implied warranty of
10  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
11  * GNU General Public License for more details.
12  *
13  * You should have received a copy of the GNU General Public License
14  * along with this program. If not, see <http://www.gnu.org/licenses/>.
15  *
16  * @author Fabian Reister ( fabian dot reister at kit dot edu )
17  * @date 2021
18  * @copyright http://www.gnu.org/licenses/gpl-2.0.txt
19  * GNU General Public License
20  */
21 
22 #pragma once
23 
24 #include <Eigen/Core>
25 #include <Eigen/Geometry>
26 
28 
30 {
31 
32  // struct Ellipsoid
33  // {
34  // Eigen::Vector2f center;
35  // float angle;
36 
37  // Eigen::Vector2f radii;
38 
39  // Eigen::Affine2f pose() const noexcept;
40  // };
41 
43 
44  /**
45  * @brief Minimum volume enclosing ellipsoid (MVEE) for a set of points.
46  *
47  * See https://de.mathworks.com/matlabcentral/fileexchange/9542-minimum-volume-enclosing-ellipsoid
48  *
49  */
51  {
52  public:
53  using Point = Eigen::Vector2f;
54  using Points = std::vector<Point>;
55 
56  EnclosingEllipsoid(const Points& points);
57 
58  private:
59  /**
60  * @brief Computes the enclosing ellipsoid for the given points by using Khachiyan's Algorithm.
61  *
62  * The implementation is based on
63  * https://github.com/minillinim/ellipsoid/blob/master/ellipsoid.py
64  *
65  * @return true
66  * @return false
67  */
68  bool compute(const Points& points);
69  };
70 
71 } // namespace armarx::navigation::components::laser_scanner_feature_extraction
armarx::navigation::components::laser_scanner_feature_extraction::Ellipsoid
memory::Ellipsoid Ellipsoid
Definition: EnclosingEllipsoid.h:42
armarx::navigation::components::laser_scanner_feature_extraction::EnclosingEllipsoid
Minimum volume enclosing ellipsoid (MVEE) for a set of points.
Definition: EnclosingEllipsoid.h:50
Point
Definition: PointCloud.h:21
armarx::navigation::memory::Ellipsoid
Definition: types.h:34
armarx::navigation::components::laser_scanner_feature_extraction::EnclosingEllipsoid::Points
std::vector< Point > Points
Definition: EnclosingEllipsoid.h:54
types.h
armarx::navigation::components::laser_scanner_feature_extraction::EnclosingEllipsoid::EnclosingEllipsoid
EnclosingEllipsoid(const Points &points)
Definition: EnclosingEllipsoid.cpp:38
armarx::navigation::components::laser_scanner_feature_extraction
Definition: ArVizDrawer.cpp:28