Classes | Modules | Typedefs | Functions
Geometry_Module
Collaboration diagram for Geometry_Module:

Classes

class  Eigen::AlignedBox< _Scalar, _AmbientDim >
 An axis aligned box. More...
class  Eigen::AngleAxis< _Scalar >
 Represents a 3D rotation as a rotation angle around an arbitrary 3D axis. More...
class  Eigen::Homogeneous< MatrixType, _Direction >
 Expression of one (or a set of) homogeneous vector(s) More...
class  Eigen::Hyperplane< _Scalar, _AmbientDim >
 A hyperplane. More...
class  Eigen::ParametrizedLine< _Scalar, _AmbientDim >
 A parametrized line. More...
class  Eigen::Quaternion< _Scalar >
 The quaternion class used to represent 3D orientations and rotations. More...
class  Eigen::QuaternionBase< Derived >
 Base class for quaternion expressions. More...
class  Eigen::Rotation2D< _Scalar >
 Represents a rotation/orientation in a 2 dimensional space. More...
class  Eigen::Scaling< _Scalar, _Dim >
 Represents a possibly non uniform scaling transformation. More...
class  Eigen::Transform< _Scalar, _Dim >
 Represents an homogeneous transformation in a N dimensional space. More...
class  Eigen::Translation< _Scalar, _Dim >
 Represents a translation transformation. More...

Modules

 Global aligned box typedefs

Typedefs

typedef Transform< double,
2, Affine > 
Eigen::Affine2d
typedef Transform< float,
2, Affine > 
Eigen::Affine2f
typedef Transform< double,
3, Affine > 
Eigen::Affine3d
typedef Transform< float,
3, Affine > 
Eigen::Affine3f
typedef Transform< double,
2, AffineCompact > 
Eigen::AffineCompact2d
typedef Transform< float,
2, AffineCompact > 
Eigen::AffineCompact2f
typedef Transform< double,
3, AffineCompact > 
Eigen::AffineCompact3d
typedef Transform< float,
3, AffineCompact > 
Eigen::AffineCompact3f
typedef DiagonalMatrix< double, 2 > Eigen::AlignedScaling2d
typedef DiagonalMatrix< float, 2 > Eigen::AlignedScaling2f
typedef DiagonalMatrix< double, 3 > Eigen::AlignedScaling3d
typedef DiagonalMatrix< float, 3 > Eigen::AlignedScaling3f
typedef AngleAxis< double > Eigen::AngleAxisd
typedef AngleAxis< float > Eigen::AngleAxisf
typedef Transform< double,
2, Isometry > 
Eigen::Isometry2d
typedef Transform< float,
2, Isometry > 
Eigen::Isometry2f
typedef Transform< double,
3, Isometry > 
Eigen::Isometry3d
typedef Transform< float,
3, Isometry > 
Eigen::Isometry3f
typedef Transform< double,
2, Projective > 
Eigen::Projective2d
typedef Transform< float,
2, Projective > 
Eigen::Projective2f
typedef Transform< double,
3, Projective > 
Eigen::Projective3d
typedef Transform< float,
3, Projective > 
Eigen::Projective3f
typedef Quaternion< double > Eigen::Quaterniond
typedef Quaternion< float > Eigen::Quaternionf
typedef Map< Quaternion
< double >, Aligned > 
Eigen::QuaternionMapAlignedd
typedef Map< Quaternion< float >
, Aligned > 
Eigen::QuaternionMapAlignedf
typedef Map< Quaternion
< double >, 0 > 
Eigen::QuaternionMapd
typedef Map< Quaternion< float >, 0 > Eigen::QuaternionMapf
typedef Rotation2D< double > Eigen::Rotation2Dd
typedef Rotation2D< float > Eigen::Rotation2Df
typedef Scaling< double, 2 > Eigen::Scaling2d
typedef Scaling< float, 2 > Eigen::Scaling2f
typedef Scaling< double, 3 > Eigen::Scaling3d
typedef Scaling< float, 3 > Eigen::Scaling3f
typedef Transform< double, 2 > Eigen::Transform2d
typedef Transform< float, 2 > Eigen::Transform2f
typedef Transform< double, 3 > Eigen::Transform3d
typedef Transform< float, 3 > Eigen::Transform3f
typedef Translation< double, 2 > Eigen::Translation2d
typedef Translation< float, 2 > Eigen::Translation2f
typedef Translation< double, 3 > Eigen::Translation3d
typedef Translation< float, 3 > Eigen::Translation3f

Functions

Matrix< Scalar, 3, 1 > Eigen::MatrixBase< Derived >::eulerAngles (Index a0, Index a1, Index a2) const
template<typename Derived , typename OtherDerived >
internal::umeyama_transform_matrix_type
< Derived, OtherDerived >
::type 
Eigen::umeyama (const MatrixBase< Derived > &src, const MatrixBase< OtherDerived > &dst, bool with_scaling=true)
 Returns the transformation between two point sets.

Typedef Documentation

typedef Transform<double,2,Affine> Eigen::Affine2d

Definition at line 656 of file Geometry/Transform.h.

typedef Transform<float,2,Affine> Eigen::Affine2f

Definition at line 652 of file Geometry/Transform.h.

typedef Transform<double,3,Affine> Eigen::Affine3d

Definition at line 658 of file Geometry/Transform.h.

typedef Transform<float,3,Affine> Eigen::Affine3f

Definition at line 654 of file Geometry/Transform.h.

typedef Transform<double,2,AffineCompact> Eigen::AffineCompact2d

Definition at line 665 of file Geometry/Transform.h.

typedef Transform<float,2,AffineCompact> Eigen::AffineCompact2f

Definition at line 661 of file Geometry/Transform.h.

typedef Transform<double,3,AffineCompact> Eigen::AffineCompact3d

Definition at line 667 of file Geometry/Transform.h.

typedef Transform<float,3,AffineCompact> Eigen::AffineCompact3f

Definition at line 663 of file Geometry/Transform.h.

typedef DiagonalMatrix<double,2> Eigen::AlignedScaling2d
Deprecated:

Definition at line 144 of file src/Geometry/Scaling.h.

typedef DiagonalMatrix<float, 2> Eigen::AlignedScaling2f
Deprecated:

Definition at line 142 of file src/Geometry/Scaling.h.

typedef DiagonalMatrix<double,3> Eigen::AlignedScaling3d
Deprecated:

Definition at line 148 of file src/Geometry/Scaling.h.

typedef DiagonalMatrix<float, 3> Eigen::AlignedScaling3f
Deprecated:

Definition at line 146 of file src/Geometry/Scaling.h.

typedef AngleAxis< double > Eigen::AngleAxisd

double precision angle-axis type

Definition at line 152 of file Eigen2Support/Geometry/AngleAxis.h.

typedef AngleAxis< float > Eigen::AngleAxisf

single precision angle-axis type

Definition at line 149 of file Eigen2Support/Geometry/AngleAxis.h.

typedef Transform<double,2,Isometry> Eigen::Isometry2d

Definition at line 647 of file Geometry/Transform.h.

typedef Transform<float,2,Isometry> Eigen::Isometry2f

Definition at line 643 of file Geometry/Transform.h.

typedef Transform<double,3,Isometry> Eigen::Isometry3d

Definition at line 649 of file Geometry/Transform.h.

typedef Transform<float,3,Isometry> Eigen::Isometry3f

Definition at line 645 of file Geometry/Transform.h.

typedef Transform<double,2,Projective> Eigen::Projective2d

Definition at line 674 of file Geometry/Transform.h.

typedef Transform<float,2,Projective> Eigen::Projective2f

Definition at line 670 of file Geometry/Transform.h.

typedef Transform<double,3,Projective> Eigen::Projective3d

Definition at line 676 of file Geometry/Transform.h.

typedef Transform<float,3,Projective> Eigen::Projective3f

Definition at line 672 of file Geometry/Transform.h.

typedef Quaternion< double > Eigen::Quaterniond

double precision quaternion type

Definition at line 211 of file Eigen2Support/Geometry/Quaternion.h.

typedef Quaternion< float > Eigen::Quaternionf

single precision quaternion type

Definition at line 208 of file Eigen2Support/Geometry/Quaternion.h.

typedef Map<Quaternion<double>, Aligned> Eigen::QuaternionMapAlignedd

Map a 16-bits aligned array of double precision scalars as a quaternion

Definition at line 422 of file Geometry/Quaternion.h.

typedef Map<Quaternion<float>, Aligned> Eigen::QuaternionMapAlignedf

Map a 16-bits aligned array of double precision scalars as a quaternion

Definition at line 419 of file Geometry/Quaternion.h.

typedef Map<Quaternion<double>, 0> Eigen::QuaternionMapd

Map an unaligned array of double precision scalar as a quaternion

Definition at line 416 of file Geometry/Quaternion.h.

typedef Map<Quaternion<float>, 0> Eigen::QuaternionMapf

Map an unaligned array of single precision scalar as a quaternion

Definition at line 413 of file Geometry/Quaternion.h.

typedef Rotation2D< double > Eigen::Rotation2Dd

double precision 2D rotation type

Definition at line 119 of file Eigen2Support/Geometry/Rotation2D.h.

typedef Rotation2D< float > Eigen::Rotation2Df

single precision 2D rotation type

Definition at line 116 of file Eigen2Support/Geometry/Rotation2D.h.

typedef Scaling<double,2> Eigen::Scaling2d

Definition at line 141 of file src/Eigen2Support/Geometry/Scaling.h.

typedef Scaling<float, 2> Eigen::Scaling2f

Definition at line 140 of file src/Eigen2Support/Geometry/Scaling.h.

typedef Scaling<double,3> Eigen::Scaling3d

Definition at line 143 of file src/Eigen2Support/Geometry/Scaling.h.

typedef Scaling<float, 3> Eigen::Scaling3f

Definition at line 142 of file src/Eigen2Support/Geometry/Scaling.h.

typedef Transform<double,2> Eigen::Transform2d

Definition at line 286 of file Eigen2Support/Geometry/Transform.h.

typedef Transform<float,2> Eigen::Transform2f

Definition at line 282 of file Eigen2Support/Geometry/Transform.h.

typedef Transform<double,3> Eigen::Transform3d

Definition at line 288 of file Eigen2Support/Geometry/Transform.h.

typedef Transform<float,3> Eigen::Transform3f

Definition at line 284 of file Eigen2Support/Geometry/Transform.h.

typedef Translation< double, 2 > Eigen::Translation2d

Definition at line 144 of file Eigen2Support/Geometry/Translation.h.

typedef Translation< float, 2 > Eigen::Translation2f

Definition at line 143 of file Eigen2Support/Geometry/Translation.h.

typedef Translation< double, 3 > Eigen::Translation3d

Definition at line 146 of file Eigen2Support/Geometry/Translation.h.

typedef Translation< float, 3 > Eigen::Translation3f

Definition at line 145 of file Eigen2Support/Geometry/Translation.h.


Function Documentation

template<typename Derived >
Matrix< typename MatrixBase< Derived >::Scalar, 3, 1 > Eigen::MatrixBase< Derived >::eulerAngles ( Index  a0,
Index  a1,
Index  a2 
) const [inline]
Returns:
the Euler-angles of the rotation matrix *this using the convention defined by the triplet (a0,a1,a2)

Each of the three parameters a0,a1,a2 represents the respective rotation axis as an integer in {0,1,2}. For instance, in:

 Vector3f ea = mat.eulerAngles(2, 0, 2); 

"2" represents the z axis and "0" the x axis, etc. The returned angles are such that we have the following equality:

 mat == AngleAxisf(ea[0], Vector3f::UnitZ())
      * AngleAxisf(ea[1], Vector3f::UnitX())
      * AngleAxisf(ea[2], Vector3f::UnitZ()); 

This corresponds to the right-multiply conventions (with right hand side frames).

Definition at line 33 of file EulerAngles.h.

template<typename Derived , typename OtherDerived >
internal::umeyama_transform_matrix_type<Derived, OtherDerived>::type Eigen::umeyama ( const MatrixBase< Derived > &  src,
const MatrixBase< OtherDerived > &  dst,
bool  with_scaling = true 
)

Returns the transformation between two point sets.

The algorithm is based on: "Least-squares estimation of transformation parameters between two point patterns", Shinji Umeyama, PAMI 1991, DOI: 10.1109/34.88573

It estimates parameters $ c, \mathbf{R}, $ and $ \mathbf{t} $ such that

\begin{align*} \frac{1}{n} \sum_{i=1}^n \vert\vert y_i - (c\mathbf{R}x_i + \mathbf{t}) \vert\vert_2^2 \end{align*}

is minimized.

The algorithm is based on the analysis of the covariance matrix $ \Sigma_{\mathbf{x}\mathbf{y}} \in \mathbb{R}^{d \times d} $ of the input point sets $ \mathbf{x} $ and $ \mathbf{y} $ where $d$ is corresponding to the dimension (which is typically small). The analysis is involving the SVD having a complexity of $O(d^3)$ though the actual computational effort lies in the covariance matrix computation which has an asymptotic lower bound of $O(dm)$ when the input point sets have dimension $d \times m$.

Currently the method is working only for floating point matrices.

Todo:
Should the return type of umeyama() become a Transform?
Parameters:
srcSource points $ \mathbf{x} = \left( x_1, \hdots, x_n \right) $.
dstDestination points $ \mathbf{y} = \left( y_1, \hdots, y_n \right) $.
with_scalingSets $ c=1 $ when false is passed.
Returns:
The homogeneous transformation

\begin{align*} T = \begin{bmatrix} c\mathbf{R} & \mathbf{t} \\ \mathbf{0} & 1 \end{bmatrix} \end{align*}

minimizing the resudiual above. This transformation is always returned as an Eigen::Matrix.

Definition at line 95 of file Umeyama.h.



win_eigen
Author(s): Daniel Stonier
autogenerated on Mon Oct 6 2014 12:27:00