Modules | |
Global aligned box typedefs | |
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_, Options_ > |
A hyperplane. More... | |
class | Eigen::Map< const Quaternion< Scalar_ >, Options_ > |
Quaternion expression mapping a constant memory buffer. More... | |
class | Eigen::Map< Quaternion< Scalar_ >, Options_ > |
Expression of a quaternion from a memory buffer. More... | |
class | Eigen::ParametrizedLine< Scalar_, AmbientDim_, Options_ > |
A parametrized line. More... | |
class | Eigen::Quaternion< Scalar_, Options_ > |
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::Transform< Scalar_, Dim_, Mode_, Options_ > |
Represents an homogeneous transformation in a N dimensional space. More... | |
class | Eigen::Translation< Scalar_, Dim_ > |
Represents a translation transformation. More... | |
class | Eigen::UniformScaling< Scalar_ > |
Represents a generic uniform scaling transformation. More... | |
This module provides support for:
typedef Transform<double,2,Affine> Eigen::Affine2d |
Definition at line 712 of file Transform.h.
typedef Transform<float,2,Affine> Eigen::Affine2f |
Definition at line 708 of file Transform.h.
typedef Transform<double,3,Affine> Eigen::Affine3d |
Definition at line 714 of file Transform.h.
typedef Transform<float,3,Affine> Eigen::Affine3f |
Definition at line 710 of file Transform.h.
typedef Transform<double,2,AffineCompact> Eigen::AffineCompact2d |
Definition at line 721 of file Transform.h.
typedef Transform<float,2,AffineCompact> Eigen::AffineCompact2f |
Definition at line 717 of file Transform.h.
typedef Transform<double,3,AffineCompact> Eigen::AffineCompact3d |
Definition at line 723 of file Transform.h.
typedef Transform<float,3,AffineCompact> Eigen::AffineCompact3f |
Definition at line 719 of file Transform.h.
typedef AngleAxis<double> Eigen::AngleAxisd |
double precision angle-axis type
Definition at line 162 of file AngleAxis.h.
typedef AngleAxis<float> Eigen::AngleAxisf |
single precision angle-axis type
Definition at line 159 of file AngleAxis.h.
typedef Transform<double,2,Isometry> Eigen::Isometry2d |
Definition at line 703 of file Transform.h.
typedef Transform<float,2,Isometry> Eigen::Isometry2f |
Definition at line 699 of file Transform.h.
typedef Transform<double,3,Isometry> Eigen::Isometry3d |
Definition at line 705 of file Transform.h.
typedef Transform<float,3,Isometry> Eigen::Isometry3f |
Definition at line 701 of file Transform.h.
typedef Transform<double,2,Projective> Eigen::Projective2d |
Definition at line 730 of file Transform.h.
typedef Transform<float,2,Projective> Eigen::Projective2f |
Definition at line 726 of file Transform.h.
typedef Transform<double,3,Projective> Eigen::Projective3d |
Definition at line 732 of file Transform.h.
typedef Transform<float,3,Projective> Eigen::Projective3f |
Definition at line 728 of file Transform.h.
typedef Quaternion<double> Eigen::Quaterniond |
double precision quaternion type
Definition at line 372 of file Quaternion.h.
typedef Quaternion<float> Eigen::Quaternionf |
single precision quaternion type
Definition at line 369 of file Quaternion.h.
typedef Map<Quaternion<double>, Aligned> Eigen::QuaternionMapAlignedd |
Map a 16-byte aligned array of double precision scalars as a quaternion
Definition at line 484 of file Quaternion.h.
typedef Map<Quaternion<float>, Aligned> Eigen::QuaternionMapAlignedf |
Map a 16-byte aligned array of single precision scalars as a quaternion
Definition at line 481 of file Quaternion.h.
typedef Map<Quaternion<double>, 0> Eigen::QuaternionMapd |
Map an unaligned array of double precision scalars as a quaternion
Definition at line 478 of file Quaternion.h.
typedef Map<Quaternion<float>, 0> Eigen::QuaternionMapf |
Map an unaligned array of single precision scalars as a quaternion
Definition at line 475 of file Quaternion.h.
typedef Rotation2D<double> Eigen::Rotation2Dd |
double precision 2D rotation type
Definition at line 170 of file Rotation2D.h.
typedef Rotation2D<float> Eigen::Rotation2Df |
single precision 2D rotation type
Definition at line 167 of file Rotation2D.h.
|
inline |
This is defined in the Geometry module.
*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:
"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).
For Tait-Bryan angle configurations (a0 != a2), the returned angles are in the ranges [-pi:pi]x[-pi/2:pi/2]x[-pi:pi]. For proper Euler angle configurations (a0 == a2), the returned angles are in the ranges [-pi:pi]x[0:pi]x[-pi:pi].
The approach used is also described here: https://d3cw3dd2w32x2b.cloudfront.net/wp-content/uploads/2012/07/euler-angles.pdf
Definition at line 43 of file EulerAngles.h.
const VectorwiseOp< ExpressionType, Direction >::CrossReturnType Eigen::VectorwiseOp< ExpressionType, Direction >::cross | ( | const MatrixBase< OtherDerived > & | other | ) | const |
This is defined in the Geometry module.
The referenced matrix must have one dimension equal to 3. The result matrix has the same dimensions than the referenced one.
Definition at line 157 of file OrthoMethods.h.
|
inline |
This is defined in the Geometry module.
*this
and other. This is either a scalar for size-2 vectors or a size-3 vector for size-3 vectors.This method is implemented for two different cases: between vectors of fixed size 2 and between vectors of fixed size 3.
For vectors of size 3, the output is simply the traditional cross product.
For vectors of size 2, the output is a scalar. Given vectors \( v = \begin{bmatrix} v_1 & v_2 \end{bmatrix} \) and \( w = \begin{bmatrix} w_1 & w_2 \end{bmatrix} \), the result is simply \( v\times w = \overline{v_1 w_2 - v_2 w_1} = \text{conj}\left|\begin{smallmatrix} v_1 & w_1 \\ v_2 & w_2 \end{smallmatrix}\right| \); or, to put it differently, it is the third coordinate of the cross product of \( \begin{bmatrix} v_1 & v_2 & v_3 \end{bmatrix} \) and \( \begin{bmatrix} w_1 & w_2 & w_3 \end{bmatrix} \). For real-valued inputs, the result can be interpreted as the signed area of a parallelogram spanned by the two vectors.
Definition at line 92 of file OrthoMethods.h.
|
inline |
This is defined in the Geometry module.
*this
and other using only the x, y, and z coefficientsThe size of *this
and other must be four. This function is especially useful when using 4D vectors instead of 3D ones to get advantage of SSE/AltiVec vectorization.
Definition at line 129 of file OrthoMethods.h.
|
inline |
This is defined in the Geometry module.
*this
using the convention defined by the triplet (a0,a1,a2)NB: The returned angles are in non-canonical ranges [0:pi]x[-pi:pi]x[-pi:pi]. For canonical Tait-Bryan/proper Euler ranges, use canonicalEulerAngles.
Definition at line 139 of file EulerAngles.h.
|
inline |
homogeneous normalization
This is defined in the Geometry module.
*this
divided by that last coefficient.This can be used to convert homogeneous coordinates to affine coordinates.
It is essentially a shortcut for:
Example:
Output:
v = 0.68 -0.211 0.566 0.597]^T v.hnormalized() = 1.14 -0.354 0.949]^T P*v = 0.663 -0.16 -0.13 0.91]^T (P*v).hnormalized() = 0.729 -0.176 -0.143]^T
Definition at line 176 of file Homogeneous.h.
|
inline |
column or row-wise homogeneous normalization
This is defined in the Geometry module.
*this
divided by the last coefficient of each column (or row).This can be used to convert homogeneous coordinates to affine coordinates.
It is conceptually equivalent to calling MatrixBase::hnormalized() to each column (or row) of *this
.
Example:
Output:
The matrix M is: 0.68 0.823 -0.444 -0.27 0.271 -0.211 -0.605 0.108 0.0268 0.435 0.566 -0.33 -0.0452 0.904 -0.717 0.597 0.536 0.258 0.832 0.214 M.colwise().hnormalized(): 1.14 1.53 -1.72 -0.325 1.27 -0.354 -1.13 0.419 0.0322 2.03 0.949 -0.614 -0.175 1.09 -3.35 P*M: 0.186 -0.589 0.369 1.33 -1.23 -0.871 -0.337 0.127 -0.715 0.091 -0.158 -0.0104 0.312 0.429 -0.478 0.992 0.777 -0.373 0.468 -0.651 (P*M).colwise().hnormalized(): 0.188 -0.759 -0.989 2.85 1.89 -0.877 -0.433 -0.342 -1.53 -0.14 -0.16 -0.0134 -0.837 0.915 0.735
Definition at line 200 of file Homogeneous.h.
|
inline |
This is defined in the Geometry module.
This can be used to convert affine coordinates to homogeneous coordinates.
This is only for vectors (either row-vectors or column-vectors), i.e. matrices which are known at compile-time to have either one row or one column.
Example:
Output:
v = [ 0.68 -0.211 0.566]^T h.homogeneous() = [ 0.68 -0.211 0.566 1]^T (P * v.homogeneous()) = [ 1.27 0.772 0.0154 -0.419]^T (P * v.homogeneous()).hnormalized() = [ -3.03 -1.84 -0.0367]^T
Definition at line 134 of file Homogeneous.h.
|
inline |
This is defined in the Geometry module.
This can be used to convert affine coordinates to homogeneous coordinates.
Example:
Output:
The matrix M is: 0.68 0.597 -0.33 0.108 -0.27 -0.211 0.823 0.536 -0.0452 0.0268 0.566 -0.605 -0.444 0.258 0.904 M.colwise().homogeneous(): 0.68 0.597 -0.33 0.108 -0.27 -0.211 0.823 0.536 -0.0452 0.0268 0.566 -0.605 -0.444 0.258 0.904 1 1 1 1 1 P * M.colwise().homogeneous(): 0.0832 -0.477 -1.21 -0.545 -0.452 0.998 0.779 0.695 0.894 0.277 -0.271 -0.608 -0.895 -0.544 -0.874 -0.728 -0.551 0.202 -0.21 -0.469 P * M.colwise().homogeneous().hnormalized(): -0.114 0.866 -6 2.6 0.962 -1.37 -1.41 3.44 -4.27 -0.591 0.373 1.1 -4.43 2.6 1.86
Definition at line 152 of file Homogeneous.h.
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.
This is defined in the Geometry module.
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.
src | Source points \( \mathbf{x} = \left( x_1, \hdots, x_n \right) \). |
dst | Destination points \( \mathbf{y} = \left( y_1, \hdots, y_n \right) \). |
with_scaling | Sets \( c=1 \) when false is passed. |
\begin{align*} T = \begin{bmatrix} c\mathbf{R} & \mathbf{t} \\ \mathbf{0} & 1 \end{bmatrix} \end{align*}
minimizing the residual above. This transformation is always returned as an Eigen::Matrix.Definition at line 97 of file Umeyama.h.
|
inline |
This is defined in the Geometry module.
*this
The size of *this
must be at least 2. If the size is exactly 2, then the returned vector is a counter clock wise rotation of *this
, i.e., (-y,x).normalized().
Definition at line 273 of file OrthoMethods.h.