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 <vector>
25
26
#include <Eigen/Core>
27
#include <Eigen/Geometry>
28
29
#include <
armarx/navigation/memory/types.h
>
30
31
namespace
armarx::navigation::components::laser_scanner_feature_extraction
32
{
33
34
// struct Ellipsoid
35
// {
36
// Eigen::Vector2f center;
37
// float angle;
38
39
// Eigen::Vector2f radii;
40
41
// Eigen::Affine2f pose() const noexcept;
42
// };
43
44
using
Ellipsoid
=
memory::Ellipsoid
;
45
46
/**
47
* @brief Minimum volume enclosing ellipsoid (MVEE) for a set of points.
48
*
49
* See https://de.mathworks.com/matlabcentral/fileexchange/9542-minimum-volume-enclosing-ellipsoid
50
*
51
*/
52
class
EnclosingEllipsoid
:
public
Ellipsoid
53
{
54
public
:
55
using
Point
= Eigen::Vector2f;
56
using
Points
= std::vector<Point>;
57
58
EnclosingEllipsoid
(
const
Points
& points);
59
60
private
:
61
/**
62
* @brief Computes the enclosing ellipsoid for the given points by using Khachiyan's Algorithm.
63
*
64
* The implementation is based on
65
* https://github.com/minillinim/ellipsoid/blob/master/ellipsoid.py
66
*
67
* @return true
68
* @return false
69
*/
70
bool
compute(
const
Points
& points);
71
};
72
73
}
// namespace armarx::navigation::components::laser_scanner_feature_extraction
armarx::navigation::components::laser_scanner_feature_extraction::Ellipsoid
memory::Ellipsoid Ellipsoid
Definition:
EnclosingEllipsoid.h:44
armarx::navigation::components::laser_scanner_feature_extraction::EnclosingEllipsoid
Minimum volume enclosing ellipsoid (MVEE) for a set of points.
Definition:
EnclosingEllipsoid.h:52
Point
Definition:
PointCloud.h:21
armarx::navigation::memory::Ellipsoid
Definition:
types.h:33
armarx::navigation::components::laser_scanner_feature_extraction::EnclosingEllipsoid::Points
std::vector< Point > Points
Definition:
EnclosingEllipsoid.h:56
types.h
armarx::navigation::components::laser_scanner_feature_extraction::EnclosingEllipsoid::EnclosingEllipsoid
EnclosingEllipsoid(const Points &points)
Definition:
EnclosingEllipsoid.cpp:39
armarx::navigation::components::laser_scanner_feature_extraction
Definition:
ArVizDrawer.cpp:28
armarx
navigation
components
laser_scanner_feature_extraction
EnclosingEllipsoid.h
Generated on Sat Mar 29 2025 09:17:35 for armarx_documentation by
1.8.17