Classes |
| class | Eigen::Homogeneous |
| | More...
|
| class | Eigen::Rotation2D |
| | More...
|
| class | Eigen::Quaternion |
| | More...
|
| class | Eigen::AngleAxis |
| | More...
|
| class | Eigen::Transform |
| | More...
|
| class | Eigen::Translation |
| | More...
|
| class | Scaling |
| | More...
|
| class | Eigen::Hyperplane |
| | More...
|
| class | Eigen::ParametrizedLine |
| | More...
|
| class | Eigen::AlignedBox |
| | More...
|
Typedefs |
| typedef Rotation2D< float > | Eigen::Rotation2Df |
| | single precision 2D rotation type
|
| typedef Rotation2D< double > | Eigen::Rotation2Dd |
| | double precision 2D rotation type
|
| typedef Quaternion< float > | Eigen::Quaternionf |
| | single precision quaternion type
|
| typedef Quaternion< double > | Eigen::Quaterniond |
| | double precision quaternion type
|
| typedef Map< Quaternion< float >, 0 > | Eigen::QuaternionMapf |
| | Map an unaligned array of single precision scalar as a quaternion.
|
typedef Map< Quaternion
< double >, 0 > | Eigen::QuaternionMapd |
| | Map an unaligned array of double precision scalar as a quaternion.
|
typedef Map< Quaternion< float >
, Aligned > | Eigen::QuaternionMapAlignedf |
| | Map a 16-bits aligned array of double precision scalars as a quaternion.
|
typedef Map< Quaternion
< double >, Aligned > | Eigen::QuaternionMapAlignedd |
| | Map a 16-bits aligned array of double precision scalars as a quaternion.
|
| typedef AngleAxis< float > | Eigen::AngleAxisf |
| | single precision angle-axis type
|
| typedef AngleAxis< double > | Eigen::AngleAxisd |
| | double precision angle-axis type
|
typedef Transform< float,
2, Isometry > | Eigen::Isometry2f |
typedef Transform< float,
3, Isometry > | Eigen::Isometry3f |
typedef Transform< double,
2, Isometry > | Eigen::Isometry2d |
typedef Transform< double,
3, Isometry > | Eigen::Isometry3d |
typedef Transform< float,
2, Affine > | Eigen::Affine2f |
typedef Transform< float,
3, Affine > | Eigen::Affine3f |
typedef Transform< double,
2, Affine > | Eigen::Affine2d |
typedef Transform< double,
3, Affine > | Eigen::Affine3d |
typedef Transform< float,
2, AffineCompact > | Eigen::AffineCompact2f |
typedef Transform< float,
3, AffineCompact > | Eigen::AffineCompact3f |
typedef Transform< double,
2, AffineCompact > | Eigen::AffineCompact2d |
typedef Transform< double,
3, AffineCompact > | Eigen::AffineCompact3d |
typedef Transform< float,
2, Projective > | Eigen::Projective2f |
typedef Transform< float,
3, Projective > | Eigen::Projective3f |
typedef Transform< double,
2, Projective > | Eigen::Projective2d |
typedef Transform< double,
3, Projective > | Eigen::Projective3d |
| typedef Translation< float, 2 > | Eigen::Translation2f |
| typedef Translation< double, 2 > | Eigen::Translation2d |
| typedef Translation< float, 3 > | Eigen::Translation3f |
| typedef Translation< double, 3 > | Eigen::Translation3d |
| typedef DiagonalMatrix< float, 2 > | Eigen::AlignedScaling2f |
| typedef DiagonalMatrix< double, 2 > | Eigen::AlignedScaling2d |
| typedef DiagonalMatrix< float, 3 > | Eigen::AlignedScaling3f |
| typedef DiagonalMatrix< double, 3 > | Eigen::AlignedScaling3d |
Functions |
| 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) |
| |
|
| Matrix< Scalar, 3, 1 > | Eigen::MatrixBase::eulerAngles (Index a0, Index a1, Index a2) const |
| |
|
| Matrix< typename MatrixBase< Derived >::Scalar, 3, 1 > Eigen::MatrixBase::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:
This corresponds to the right-multiply conventions (with right hand side frames).
Definition at line 47 of file Geometry.
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
and
such that
is minimized.
The algorithm is based on the analysis of the covariance matrix
of the input point sets
and
where
is corresponding to the dimension (which is typically small). The analysis is involving the SVD having a complexity of
though the actual computational effort lies in the covariance matrix computation which has an asymptotic lower bound of
when the input point sets have dimension
.
Currently the method is working only for floating point matrices.
- Todo:
- Should the return type of umeyama() become a Transform?
- Parameters:
-
| src | Source points . |
| dst | Destination points . |
| with_scaling | Sets when false is passed. |
- Returns:
- The homogeneous transformation
minimizing the resudiual above. This transformation is always returned as an Eigen::Matrix.
Definition at line 109 of file Geometry.