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
27
#include <
armarx/navigation/memory/types.h
>
28
29
namespace
armarx::navigation::components::laser_scanner_feature_extraction
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
42
using
Ellipsoid
=
memory::Ellipsoid
;
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
*/
50
class
EnclosingEllipsoid
:
public
Ellipsoid
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
armarx
navigation
components
laser_scanner_feature_extraction
EnclosingEllipsoid.h
Generated on Sat Oct 12 2024 09:14:15 for armarx_documentation by
1.8.17