Public Member Functions | Private Attributes | List of all members
ecl::CovarianceEllipsoid< double, 2 > Class Template Reference

Specialisation of covariance ellipsoids in two dimensions. More...

#include <covariance_ellipsoid.hpp>

Public Member Functions

const ecl::linear_algebra::Matrix2d & axes ()
 Returns the ellipse axes/covariance eigen vectors. More...
 
void compute (const ecl::linear_algebra::Matrix2d &M)
 Computes the covariance ellipsoid for the specified matrix. More...
 
 CovarianceEllipsoid ()
 Default constructor, use with compute(). More...
 
 CovarianceEllipsoid (const ecl::linear_algebra::Matrix2d &M)
 Automatically generates ellipsoid information at construction. More...
 
ecl::linear_algebra::Vector2d intercepts ()
 Specifies the intercepts of the ellipse with the cartesian axes. More...
 
const ecl::linear_algebra::Vector2d & lengths ()
 Returns the precomputed ellipsoid minor/major axis lengths. More...
 
double rotation ()
 Calculates the rotation of the ellipse. More...
 
virtual ~CovarianceEllipsoid ()
 

Private Attributes

ecl::linear_algebra::Matrix2d ellipse_axes
 
ecl::linear_algebra::Vector2d ellipse_lengths
 

Detailed Description

template<>
class ecl::CovarianceEllipsoid< double, 2 >

Specialisation of covariance ellipsoids in two dimensions.

This creates ellipsoids for 2x2 covariance matrices, i.e. the usual sort for mobile robot navigation. It uses lovely dirty c-style code to work out the underlying eigen properties rather than Eigen's solver - tends to be a bit faster in only two dimensions.

Usage:

This class is also more conveniently typedef'd as CovarianceEllipsoid2d.

You can either instantiate directly through the constructor or by hand via the compute() method. Recomputing is also possible without having to construct an entirely new instance.

CovarianceEllipsoid2d ellipsoid(M); // OR
CovarianceEllipsoid2d ellipsoid_hand;
ellipsoid_hand.compute(M);

Once generated, the ellipse properties can easily be extracted.

Vector2d lengths = ellipsoid.lengths(); // axis lengths.
double angle = ellipsoid.rotation(); // angle of rotation to the major axis

There are a couple more methods that can be accessed for more detailed information about the ellipse, but the above two are usually sufficient for drawing your own ellipses.

See also
CovarianceEllipsoid.

Definition at line 320 of file covariance_ellipsoid.hpp.

Constructor & Destructor Documentation

◆ CovarianceEllipsoid() [1/2]

Default constructor, use with compute().

This constructor does not do anything - you must use it together with the compute() function. Sometimes useful when using this class with containers.

Definition at line 134 of file covariance_ellipsoid.cpp.

◆ CovarianceEllipsoid() [2/2]

ecl::CovarianceEllipsoid< double, 2 >::CovarianceEllipsoid ( const ecl::linear_algebra::Matrix2d &  M)

Automatically generates ellipsoid information at construction.

Using the specified input covariance matrix, this constructor automatically generates (indirectly calls compute()) the full ellipse information, making it instantly ready for use.

Parameters
M: the input covariance matrix (must be symmetric positive definite).

Definition at line 139 of file covariance_ellipsoid.cpp.

◆ ~CovarianceEllipsoid()

virtual ecl::CovarianceEllipsoid< double, 2 >::~CovarianceEllipsoid ( )
inlinevirtual

Definition at line 341 of file covariance_ellipsoid.hpp.

Member Function Documentation

◆ axes()

const ecl::linear_algebra::Matrix2d& ecl::CovarianceEllipsoid< double, 2 >::axes ( )
inline

Returns the ellipse axes/covariance eigen vectors.

This returns the ellipse axes (aka covariance eigen vectors) as columns of a matrix.

Returns
Matrix2d : the set of eigenvectors as column vectors in a matrix.

Definition at line 369 of file covariance_ellipsoid.hpp.

◆ compute()

void ecl::CovarianceEllipsoid< double, 2 >::compute ( const ecl::linear_algebra::Matrix2d &  M)

Computes the covariance ellipsoid for the specified matrix.

This can either be called indirectly via the constructor or directly via this function. In either case, it resets the object and generates/computes the resulting ellipse from the specified input covariance matrix.

Parameters
M: the input covariance matrix (must be symmetric positive definite).

Definition at line 142 of file covariance_ellipsoid.cpp.

◆ intercepts()

Vector2d ecl::CovarianceEllipsoid< double, 2 >::intercepts ( )

Specifies the intercepts of the ellipse with the cartesian axes.

This determines the distance from the origin to the ellipse boundary in the directions of the usual cartesian axes. Note that the intercepts here are given as a two dimensional vector and this is not the (x,y) pair of an intercept itself.

Rather this is both the x and y magnitudes for which the full set of four intercepts can be generated. These magnitudes are the distances from the centre of the ellipse to the boundary of the ellipse in both the x and y directions.

Returns
Vector2d : x and y-axis intercept distances from the origin.

Definition at line 194 of file covariance_ellipsoid.cpp.

◆ lengths()

const ecl::linear_algebra::Vector2d& ecl::CovarianceEllipsoid< double, 2 >::lengths ( )
inline

Returns the precomputed ellipsoid minor/major axis lengths.

Returns the precomputed ellipsoid minor/major axis lengths.

Returns
Vector2d : the minor/major axis lengths.

Definition at line 361 of file covariance_ellipsoid.hpp.

◆ rotation()

double ecl::CovarianceEllipsoid< double, 2 >::rotation ( )

Calculates the rotation of the ellipse.

This determines the angle between the x axis and the major axis of the ellipse.

Returns
double : the rotation angle.

Definition at line 190 of file covariance_ellipsoid.cpp.

Member Data Documentation

◆ ellipse_axes

ecl::linear_algebra::Matrix2d ecl::CovarianceEllipsoid< double, 2 >::ellipse_axes
private

Definition at line 401 of file covariance_ellipsoid.hpp.

◆ ellipse_lengths

ecl::linear_algebra::Vector2d ecl::CovarianceEllipsoid< double, 2 >::ellipse_lengths
private

Definition at line 400 of file covariance_ellipsoid.hpp.


The documentation for this class was generated from the following files:


ecl_statistics
Author(s): Daniel Stonier
autogenerated on Mon Feb 28 2022 22:18:40