#include <cmath>
#include <Eigen/StdVector>
#include <Eigen/Core>
#include <Eigen/Eigenvalues>
#include <Eigen/Geometry>
#include <Eigen/SVD>
#include <Eigen/LU>
#include <Eigen/Dense>
#include <pcl/common/impl/eigen.hpp>
Go to the source code of this file.
Namespaces | |
namespace | pcl |
Defines | |
#define | NOMINMAX |
#define | PCL_EIGEN_SIZE_MIN_PREFER_DYNAMIC(a, b) |
Functions | |
template<typename Matrix , typename Vector > | |
void | pcl::computeCorrespondingEigenVector (const Matrix &mat, const typename Matrix::Scalar &eigenvalue, Vector &eigenvector) |
determines the corresponding eigenvector to the given eigenvalue of the symmetric positive semi definite input matrix | |
template<typename Matrix , typename Roots > | |
void | pcl::computeRoots (const Matrix &m, Roots &roots) |
computes the roots of the characteristic polynomial of the input matrix m, which are the eigenvalues | |
template<typename Scalar , typename Roots > | |
void | pcl::computeRoots2 (const Scalar &b, const Scalar &c, Roots &roots) |
Compute the roots of a quadratic polynom x^2 + b*x + c = 0. | |
template<typename Matrix > | |
Matrix::Scalar | pcl::determinant3x3Matrix (const Matrix &matrix) |
template<typename Matrix , typename Vector > | |
void | pcl::eigen22 (const Matrix &mat, typename Matrix::Scalar &eigenvalue, Vector &eigenvector) |
determine the smallest eigenvalue and its corresponding eigenvector | |
template<typename Matrix , typename Vector > | |
void | pcl::eigen22 (const Matrix &mat, Matrix &eigenvectors, Vector &eigenvalues) |
determine the smallest eigenvalue and its corresponding eigenvector | |
template<typename Matrix , typename Vector > | |
void | pcl::eigen33 (const Matrix &mat, typename Matrix::Scalar &eigenvalue, Vector &eigenvector) |
determines the eigenvector and eigenvalue of the smallest eigenvalue of the symmetric positive semi definite input matrix | |
template<typename Matrix , typename Vector > | |
void | pcl::eigen33 (const Matrix &mat, Vector &evals) |
determines the eigenvalues of the symmetric positive semi definite input matrix | |
template<typename Matrix , typename Vector > | |
void | pcl::eigen33 (const Matrix &mat, Matrix &evecs, Vector &evals) |
determines the eigenvalues and corresponding eigenvectors of the symmetric positive semi definite input matrix | |
void | pcl::getEulerAngles (const Eigen::Affine3f &t, float &roll, float &pitch, float &yaw) |
Extract the Euler angles (XYZ-convention) from the given transformation. | |
template<typename Scalar > | |
void | pcl::getTransformation (Scalar x, Scalar y, Scalar z, Scalar roll, Scalar pitch, Scalar yaw, Eigen::Transform< Scalar, 3, Eigen::Affine > &t) |
Create a transformation from the given translation and Euler angles (XYZ-convention) | |
void | pcl::getTransformation (float x, float y, float z, float roll, float pitch, float yaw, Eigen::Affine3f &t) |
void | pcl::getTransformation (double x, double y, double z, double roll, double pitch, double yaw, Eigen::Affine3d &t) |
Eigen::Affine3f | pcl::getTransformation (float x, float y, float z, float roll, float pitch, float yaw) |
Create a transformation from the given translation and Euler angles (XYZ-convention) | |
void | pcl::getTransformationFromTwoUnitVectors (const Eigen::Vector3f &y_direction, const Eigen::Vector3f &z_axis, Eigen::Affine3f &transformation) |
Get the unique 3D rotation that will rotate z_axis into (0,0,1) and y_direction into a vector with x=0 (or into (0,1,0) should y_direction be orthogonal to z_axis) | |
Eigen::Affine3f | pcl::getTransformationFromTwoUnitVectors (const Eigen::Vector3f &y_direction, const Eigen::Vector3f &z_axis) |
Get the unique 3D rotation that will rotate z_axis into (0,0,1) and y_direction into a vector with x=0 (or into (0,1,0) should y_direction be orthogonal to z_axis) | |
void | pcl::getTransformationFromTwoUnitVectorsAndOrigin (const Eigen::Vector3f &y_direction, const Eigen::Vector3f &z_axis, const Eigen::Vector3f &origin, Eigen::Affine3f &transformation) |
Get the transformation that will translate orign to (0,0,0) and rotate z_axis into (0,0,1) and y_direction into a vector with x=0 (or into (0,1,0) should y_direction be orthogonal to z_axis) | |
void | pcl::getTransFromUnitVectorsXY (const Eigen::Vector3f &x_axis, const Eigen::Vector3f &y_direction, Eigen::Affine3f &transformation) |
Get the unique 3D rotation that will rotate x_axis into (1,0,0) and y_direction into a vector with z=0 (or into (0,1,0) should y_direction be orthogonal to z_axis) | |
Eigen::Affine3f | pcl::getTransFromUnitVectorsXY (const Eigen::Vector3f &x_axis, const Eigen::Vector3f &y_direction) |
Get the unique 3D rotation that will rotate x_axis into (1,0,0) and y_direction into a vector with z=0 (or into (0,1,0) should y_direction be orthogonal to z_axis) | |
void | pcl::getTransFromUnitVectorsZY (const Eigen::Vector3f &z_axis, const Eigen::Vector3f &y_direction, Eigen::Affine3f &transformation) |
Get the unique 3D rotation that will rotate z_axis into (0,0,1) and y_direction into a vector with x=0 (or into (0,1,0) should y_direction be orthogonal to z_axis) | |
Eigen::Affine3f | pcl::getTransFromUnitVectorsZY (const Eigen::Vector3f &z_axis, const Eigen::Vector3f &y_direction) |
Get the unique 3D rotation that will rotate z_axis into (0,0,1) and y_direction into a vector with x=0 (or into (0,1,0) should y_direction be orthogonal to z_axis) | |
void | pcl::getTranslationAndEulerAngles (const Eigen::Affine3f &t, float &x, float &y, float &z, float &roll, float &pitch, float &yaw) |
template<typename Matrix > | |
Matrix::Scalar | pcl::invert2x2 (const Matrix &matrix, Matrix &inverse) |
Calculate the inverse of a 2x2 matrix. | |
template<typename Matrix > | |
Matrix::Scalar | pcl::invert3x3Matrix (const Matrix &matrix, Matrix &inverse) |
Calculate the inverse of a general 3x3 matrix. | |
template<typename Matrix > | |
Matrix::Scalar | pcl::invert3x3SymMatrix (const Matrix &matrix, Matrix &inverse) |
Calculate the inverse of a 3x3 symmetric matrix. | |
template<typename Derived > | |
void | pcl::loadBinary (Eigen::MatrixBase< Derived > const &matrix, std::istream &file) |
Read a matrix from an input stream. | |
template<typename Derived > | |
void | pcl::saveBinary (const Eigen::MatrixBase< Derived > &matrix, std::ostream &file) |
Write a matrix to an output stream. | |
template<typename Derived , typename OtherDerived > | |
Eigen::internal::umeyama_transform_matrix_type < Derived, OtherDerived > ::type | pcl::umeyama (const Eigen::MatrixBase< Derived > &src, const Eigen::MatrixBase< OtherDerived > &dst, bool with_scaling=false) |
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. |
#define NOMINMAX |
Definition at line 46 of file common/include/pcl/common/eigen.h.
#define PCL_EIGEN_SIZE_MIN_PREFER_DYNAMIC | ( | a, | |
b | |||
) |
((int (a) == 0 || int (b) == 0) ? 0 \ : (int (a) == 1 || int (b) == 1) ? 1 \ : (int (a) == Eigen::Dynamic || int (b) == Eigen::Dynamic) ? Eigen::Dynamic \ : (int (a) <= int (b)) ? int (a) : int (b))
Definition at line 826 of file common/include/pcl/common/eigen.h.