Spec-Zone.ru › Eigen3

Eigen::Transform

template<typename _Scalar, int _Dim, int _Mode, int _Options>
class Eigen::Transform< _Scalar, _Dim, _Mode, _Options >

Представляет однородное преобразование в пространстве N измерений.

Определено в модуле Geometry.

#include <Eigen/Geometry> 
Параметры шаблона
_Scalar тип скаляра, т.е. тип коэффициентов
_Dim размерность пространства
_Mode тип преобразования. Может быть:
  • Affine: преобразование хранится в виде матрицы размера (Dim+1)^2, где последняя строка предполагается [0 ... 0 1].
  • AffineCompact: преобразование хранится в виде матрицы размера (Dim)x(Dim+1).
  • Projective: преобразование хранится в виде матрицы размера (Dim+1)^2 без каких-либо предположений.
  • Isometry: то же, что и Affine с дополнительным предположением, что линейная часть представляет вращение. Это предположение используется для ускорения некоторых функций, таких как inverse() и rotation().
_Options имеет то же значение, что и в классе Matrix. Позволяет указать DontAlign и/или RowMajor. Эти опции передаются непосредственно типу базовой матрицы.

Гомография внутренне представлена и хранится в матрице, доступной через метод matrix(). Чтобы понять поведение этого класса, необходимо рассматривать объект Transform как его внутреннее матричное представление. Принятая конвенция — правое умножение:

v' = T * v 

Поэтому, матрица аффинного преобразования M имеет такой вид:

\( \left( \begin{array}{cc} linear & translation\\ 0 ... 0 & 1 \end{array} \right) \)

Обратите внимание, что для проективного преобразования последняя строка может быть любой, а затем интерпретация различных частей может немного отличаться.

Однако, в отличие от обычной матрицы, класс Transform предоставляет множество функций, упрощающих как его сборку, так и использование. В частности, его можно комбинировать с другими преобразованиями (Transform,Translation,RotationBase,DiagonalMatrix) и напрямую использовать для преобразования неявных однородных векторов. Все эти операции обрабатываются через оператор*. Для объединения преобразований его принцип заключается в том, чтобы сначала преобразовать правые/левые части произведения в совместимую матрицу размера (Dim+1)^2, а затем выполнить чистое матричное произведение. Конечно, внутренне оператор* пытается выполнить минимальное количество операций в соответствии с природой каждого из членов. Аналогично, при применении преобразования к точкам последние автоматически преобразуются в однородные векторы перед выполнением матричного произведения. Конвенции для однородных представлений выполняются следующим образом:

Translation t (Dim)x(1): \( \left( \begin{array}{cc} I & t \\ 0\,...\,0 & 1 \end{array} \right) \)

Вращение R (Dim)x(Dim): \( \left( \begin{array}{cc} R & 0\\ 0\,...\,0 & 1 \end{array} \right) \)

Масштабирование DiagonalMatrix S (Dim)x(Dim): \( \left( \begin{array}{cc} S & 0\\ 0\,...\,0 & 1 \end{array} \right) \)

Столбец точки v (Dim)x(1): \( \left( \begin{array}{c} v\\ 1 \end{array} \right) \)

Набор столбцов точек V1...Vn (Dim)x(n): \( \left( \begin{array}{ccc} v_1 & ... & v_n\\ 1 & ... & 1 \end{array} \right) \)

Соединение объекта Transform с любым типом другого преобразования всегда возвращает объект Transform.

Небольшое исключение из правила «как чистое матричное произведение» — случай преобразования векторов, не являющихся однородными, с помощью аффинного преобразования. В этом случае последнюю строку матрицы можно игнорировать, и произведение возвращает векторы, не являющиеся однородными.

Поскольку, например, матрица Dim x Dim интерпретируется как линейное преобразование, невозможно напрямую преобразовать векторы Dim, хранящиеся в матрице Dim x Dim. Решение состоит либо в использовании матрицы Dim x Dynamic, либо в явном запросе преобразования вектора, сделав вектор однородным:

m' = T * m.colwise().homogeneous();

Обратите внимание, что накладных расходов нет.

Методы преобразования из/в QMatrix и QTransform Qt доступны, если определен препроцессорный символ EIGEN_QT_SUPPORT.

Этот класс можно расширить с помощью механизма плагинов, описанного на странице Расширение MatrixBase (и других классов), определив препроцессорный символ EIGEN_TRANSFORM_PLUGIN.

См. также
класс Matrix, класс Quaternion
typedef internal::conditional< int(Mode)==int(AffineCompact), MatrixType &, Block< MatrixType, Dim, HDim > >::type AffinePart
typedef internal::conditional< int(Mode)==int(AffineCompact), const MatrixType &, const Block< const MatrixType, Dim, HDim > >::type ConstAffinePart
typedef const Block< ConstMatrixType, Dim, Dim, int(Mode)==(AffineCompact) &&(int(Options)&RowMajor)==0 > ConstLinearPart
typedef const MatrixType ConstMatrixType
typedef const Block< ConstMatrixType, Dim, 1,!(internal::traits< MatrixType >::Flags &RowMajorBit)> ConstTranslationPart
typedef Eigen::Index Index
typedef Matrix< Scalar, Dim, Dim, Options > LinearMatrixType
typedef Block< MatrixType, Dim, Dim, int(Mode)==(AffineCompact) &&(int(Options)&RowMajor)==0 > LinearPart
typedef internal::make_proper_matrix_type< Scalar, Rows, HDim, Options >::type MatrixType
typedef _Scalar Scalar
typedef Transform< Scalar, Dim, TransformTimeDiagonalMode > TransformTimeDiagonalReturnType
typedef Block< MatrixType, Dim, 1,!(internal::traits< MatrixType >::Flags &RowMajorBit)> TranslationPart
typedef Translation< Scalar, Dim > TranslationType
typedef Matrix< Scalar, Dim, 1 > VectorType
AffinePart affine ()
ConstAffinePart affine () const
шаблон<typename NewScalarType >
internal::cast_return_type< Transform, Transform< NewScalarType, Dim, Mode, Options > >::type cast () const
шаблон<typename RotationMatrixType , typename ScalingMatrixType >
void computeRotationScaling (RotationMatrixType *rotation, ScalingMatrixType *scaling) const
шаблон<typename ScalingMatrixType , typename RotationMatrixType >
void computeScalingRotation (ScalingMatrixType *scaling, RotationMatrixType *rotation) const
Scalar * data ()
const Scalar * data () const
EIGEN_MAKE_ALIGNED_OPERATOR_NEW_IF_VECTORIZABLE_FIXED_SIZE (_Scalar, _Dim==Dynamic ? Dynamic :(_Dim+1) *(_Dim+1)) enum
шаблон<typename PositionDerived , typename OrientationType , typename ScaleDerived >
Transform< Scalar, Dim, Mode, Options > & fromPositionOrientationScale (const MatrixBase< PositionDerived > &position, const OrientationType &orientation, const MatrixBase< ScaleDerived > &scale)
Transform inverse (TransformTraits traits=(TransformTraits) Mode) const
bool isApprox (const Transform &other, const typename NumTraits< Scalar >::Real &prec=NumTraits< Scalar >::dummy_precision()) const
LinearPart linear ()
ConstLinearPart linear () const
void makeAffine ()
MatrixType & matrix ()
const MatrixType & matrix () const
Scalar & operator() (Index row, Index col)
Scalar operator() (Index row, Index col) const
шаблон<typename DiagonalDerived >
const TransformTimeDiagonalReturnType operator* (const DiagonalBase< DiagonalDerived > &b) const
шаблон<typename OtherDerived >
const internal::transform_right_product_impl< Transform, OtherDerived >::ResultType operator* (const EigenBase< OtherDerived > &other) const
const Transform operator* (const Transform &other) const
шаблон<int OtherMode, int OtherOptions>
internal::transform_transform_product_impl< Transform, Transform< Scalar, Dim, OtherMode, OtherOptions > >::ResultType operator* (const Transform< Scalar, Dim, OtherMode, OtherOptions > &other) const
шаблон<typename OtherDerived >
Transform & operator= (const EigenBase< OtherDerived > &other)
Transform & operator= (const QMatrix &other)
Transform & operator= (const QTransform &other)
шаблон<typename RotationType >
Transform< Scalar, Dim, Mode, Options > & prerotate (const RotationType &rotation)
шаблон<typename OtherDerived >
Transform< Scalar, Dim, Mode, Options > & prescale (const MatrixBase< OtherDerived > &other)
Transform & prescale (const Scalar &s)
Transform & preshear (const Scalar &sx, const Scalar &sy)
шаблон<typename OtherDerived >
END_OF_DOCUMENT_MARKER
Transform< Scalar, Dim, Mode, Options > & pretranslate (const MatrixBase< OtherDerived > &other)
template<typename RotationType >
Transform< Scalar, Dim, Mode, Options > & rotate (const RotationType &rotation)
RotationReturnType rotation () const
template<typename OtherDerived >
Transform< Scalar, Dim, Mode, Options > & scale (const MatrixBase< OtherDerived > &other)
Transform & scale (const Scalar &s)
void setIdentity ()
Transform & shear (const Scalar &sx, const Scalar &sy)
QMatrix toQMatrix (void) const
QTransform toQTransform (void) const
Transform ()
template<typename OtherDerived >
Transform (const EigenBase< OtherDerived > &other)
Transform (const QMatrix &other)
Transform (const QTransform &other)
template<typename OtherScalarType >
Transform (const Transform< OtherScalarType, Dim, Mode, Options > &other)
template<typename OtherDerived >
Transform< Scalar, Dim, Mode, Options > & translate (const MatrixBase< OtherDerived > &other)
TranslationPart translation ()
ConstTranslationPart translation () const
static const Transform Identity ()
Возвращает преобразование тождества. Подробнее...

AffinePart

template<typename _Scalar , int _Dim, int _Mode, int _Options>
typedef internal::conditional<int(Mode)==int(AffineCompact), MatrixType&, Block<MatrixType,Dim,HDim> >::type Eigen::Transform< _Scalar, _Dim, _Mode, _Options >::AffinePart

тип ссылок на чтение/запись аффинной части преобразования

ConstAffinePart

template<typename _Scalar , int _Dim, int _Mode, int _Options>
typedef internal::conditional<int(Mode)==int(AffineCompact), const MatrixType&, const Block<const MatrixType,Dim,HDim> >::type Eigen::Transform< _Scalar, _Dim, _Mode, _Options >::ConstAffinePart

тип ссылки для чтения аффинной части преобразования

ConstLinearPart

template<typename _Scalar , int _Dim, int _Mode, int _Options>
typedef const Block<ConstMatrixType,Dim,Dim,int(Mode)==(AffineCompact) && (int(Options)&RowMajor)==0> Eigen::Transform< _Scalar, _Dim, _Mode, _Options >::ConstLinearPart

тип ссылки для чтения линейной части преобразования

ConstMatrixType

template<typename _Scalar , int _Dim, int _Mode, int _Options>
typedef const MatrixType Eigen::Transform< _Scalar, _Dim, _Mode, _Options >::ConstMatrixType

константный MatrixType

ConstTranslationPart

template<typename _Scalar , int _Dim, int _Mode, int _Options>
typedef const Block<ConstMatrixType,Dim,1,!(internal::traits<MatrixType>::Flags & RowMajorBit)> Eigen::Transform< _Scalar, _Dim, _Mode, _Options >::ConstTranslationPart

тип ссылки для чтения части перевода вращения

Index

template<typename _Scalar , int _Dim, int _Mode, int _Options>
typedef Eigen::Index Eigen::Transform< _Scalar, _Dim, _Mode, _Options >::Index
Устарело:
с Eigen 3.3

LinearMatrixType

template<typename _Scalar , int _Dim, int _Mode, int _Options>
typedef Matrix<Scalar,Dim,Dim,Options> Eigen::Transform< _Scalar, _Dim, _Mode, _Options >::LinearMatrixType

тип матрицы, используемой для представления линейной части преобразования

LinearPart

template<typename _Scalar , int _Dim, int _Mode, int _Options>
typedef Block<MatrixType,Dim,Dim,int(Mode)==(AffineCompact) && (int(Options)&RowMajor)==0> Eigen::Transform< _Scalar, _Dim, _Mode, _Options >::LinearPart

тип ссылок чтения/записи на линейную часть преобразования

MatrixType

template<typename _Scalar , int _Dim, int _Mode, int _Options>
typedef internal::make_proper_matrix_type<Scalar,Rows,HDim,Options>::type Eigen::Transform< _Scalar, _Dim, _Mode, _Options >::MatrixType

тип матрицы, используемой для представления преобразования

Scalar

template<typename _Scalar , int _Dim, int _Mode, int _Options>
typedef _Scalar Eigen::Transform< _Scalar, _Dim, _Mode, _Options >::Scalar

тип скаляров коэффициентов

TransformTimeDiagonalReturnType

template<typename _Scalar , int _Dim, int _Mode, int _Options>
typedef Transform<Scalar,Dim,TransformTimeDiagonalMode> Eigen::Transform< _Scalar, _Dim, _Mode, _Options >::TransformTimeDiagonalReturnType

Тип результата произведения диагональной матрицы и преобразования

TranslationPart

template<typename _Scalar , int _Dim, int _Mode, int _Options>
typedef Block<MatrixType,Dim,1,!(internal::traits<MatrixType>::Flags & RowMajorBit)> Eigen::Transform< _Scalar, _Dim, _Mode, _Options >::TranslationPart

тип ссылок чтения/записи на часть переноса вращения

TranslationType

template<typename _Scalar , int _Dim, int _Mode, int _Options>
typedef Translation<Scalar,Dim> Eigen::Transform< _Scalar, _Dim, _Mode, _Options >::TranslationType

соответствующий тип переноса

VectorType

template<typename _Scalar , int _Dim, int _Mode, int _Options>
typedef Matrix<Scalar,Dim,1> Eigen::Transform< _Scalar, _Dim, _Mode, _Options >::VectorType

тип вектора

Transform() [1/5]

template<typename _Scalar , int _Dim, int _Mode, int _Options>
Eigen::Transform< _Scalar, _Dim, _Mode, _Options >::Transform ( )
inline

Конструктор по умолчанию без инициализации значимых коэффициентов. Если Mode==Affine или Mode==Isometry, то последняя строка устанавливается в [0 ... 0 1]

Transform() [2/5]

template<typename _Scalar , int _Dim, int _Mode, int _Options>
template<typename OtherDerived >
Eigen::Transform< _Scalar, _Dim, _Mode, _Options >::Transform ( const EigenBase< OtherDerived > & other )
inlineexplicit

Конструирует и инициализирует преобразование из Dim^2 или (Dim+1)^2 матрицы.

Transform() [3/5]

template<typename Scalar , int Dim, int Mode, int Options>
Eigen::Transform< Scalar, Dim, Mode, Options >::Transform ( const QMatrix & other )
inline

Инициализирует *this из QMatrix, предполагая размерность 2.

Эта функция доступна только если определен токен EIGEN_QT_SUPPORT.

Transform() [4/5]

template<typename Scalar , int Dim, int Mode, int Options>
Eigen::Transform< Scalar, Dim, Mode, Options >::Transform ( const QTransform< _Scalar, _Dim, _Mode, _Options > & other )
inline

Инициализирует *this из QTransform, предполагая размерность 2.

Эта функция доступна только если определен токен EIGEN_QT_SUPPORT.

Transform() [5/5]

template<typename _Scalar , int _Dim, int _Mode, int _Options>
template<typename OtherScalarType >
Eigen::Transform< _Scalar, _Dim, _Mode, _Options >::Transform ( const Transform< OtherScalarType, Dim, Mode, Options > & other )
inlineexplicit

Конструктор копирования с преобразованием типа скаляра

affine() [1/2]

template<typename _Scalar , int _Dim, int _Mode, int _Options>
AffinePart Eigen::Transform< _Scalar, _Dim, _Mode, _Options >::affine ( )
inline
Возвращает
выражение для записи части Dim x HDim преобразования

affine() [2/2]

template<typename _Scalar , int _Dim, int _Mode, int _Options>
ConstAffinePart Eigen::Transform< _Scalar, _Dim, _Mode, _Options >::affine ( ) const
inline
Возвращает
только для чтения выражение части Dim x HDim преобразования

cast()

template<typename _Scalar , int _Dim, int _Mode, int _Options>
template<typename NewScalarType >
internal::cast_return_type<Transform,Transform<NewScalarType,Dim,Mode,Options> >::type Eigen::Transform< _Scalar, _Dim, _Mode, _Options >::cast ( ) const
inline
Возвращает
*this с типом скаляра, преобразованным в NewScalarType

Обратите внимание, что если NewScalarType равен текущему типу скаляра *this , то эта функция умно возвращает константную ссылку на *this.

computeRotationScaling()

шаблон<typename Скаляр , int Dim, int Режим, int Опции>
шаблон<typename МатрицаВращения , typename МатрицаМасштабирования >
void Eigen::Transform< Скаляр, Dim, Режим, Опции >::computeRotationScaling ( МатрицаВращения * вращение,
МатрицаМасштабирования * масштабирование
) const

разлагает линейную часть преобразования как произведение вращения x масштабирования, масштабирование не обязательно положительно.

Если указатель равен нулю, соответствующее вычисление пропускается.

Это определено в модуле SVD.

#include <Eigen/SVD> 
См. также
computeScalingRotation(), rotation(), класс SVD

computeScalingRotation()

шаблон<typename Скаляр , int Dim, int Режим, int Опции>
шаблон<typename МатрицаМасштабирования , typename МатрицаВращения >
void Eigen::Transform< Скаляр, Dim, Режим, Опции >::computeScalingRotation ( МатрицаМасштабирования * масштабирование,
МатрицаВращения * вращение
) const

разлагает линейную часть преобразования как произведение масштабирования x вращения, масштабирование не обязательно положительно.

Если указатель равен нулю, соответствующее вычисление пропускается.

Это определено в модуле SVD.

#include <Eigen/SVD> 
См. также
computeRotationScaling(), rotation(), класс SVD

data() [1/2]

шаблон<typename _Скаляр , int _Dim, int _Режим, int _Опции>
Скаляр* Eigen::Transform< _Скаляр, _Dim, _Режим, _Опции >::data ( )
inline
Возвращает
непостоянный указатель на внутреннюю матрицу в порядке следования столбцов

data() [2/2]

шаблон<typename _Скаляр , int _Dim, int _Режим, int _Опции>
const Скаляр* Eigen::Transform< _Скаляр, _Dim, _Режим, _Опции >::data ( ) const
inline
Возвращает
постоянный указатель на внутреннюю матрицу в порядке следования столбцов

EIGEN_MAKE_ALIGNED_OPERATOR_NEW_IF_VECTORIZABLE_FIXED_SIZE()

шаблон<typename _Скаляр , int _Dim, int _Режим, int _Опции>
Eigen::Transform< _Скаляр, _Dim, _Режим, _Опции >::EIGEN_MAKE_ALIGNED_OPERATOR_NEW_IF_VECTORIZABLE_FIXED_SIZE ( _Скаляр ,
_Dim = =Dynamic ? Dynamic : (_Dim+1)*(_Dim+1)
)
inline

< размерность пространства, в котором выполняется преобразование

< размер соответствующего однородного вектора

fromPositionOrientationScale()

шаблон<typename _Скаляр , int _Dim, int _Режим, int _Опции>
шаблон<typename PositionDerived , typename OrientationType , typename ScaleDerived >
Transform<Скаляр,Dim,Режим,Опции>& Eigen::Transform< _Скаляр, _Dim, _Режим, _Опции >::fromPositionOrientationScale ( const MatrixBase< PositionDerived > & position,
const OrientationType & orientation,
const MatrixBase< ScaleDerived > & scale
)

Удобный метод для задания *this из положения, ориентации и масштаба 3D объекта.

Identity()

шаблон<typename _Скаляр , int _Dim, int _Режим, int _Опции>
static const Transform Eigen::Transform< _Скаляр, _Dim, _Режим, _Опции >::Identity ( )
inlinestatic

Возвращает преобразование тождества.

inverse()

шаблон<typename Скаляр , int Dim, int Режим, int Опции>
Transform< Скаляр, Dim, Режим, Опции > Eigen::Transform< Скаляр, Dim, Режим, Опции >::inverse ( TransformTraits подсказка = (TransformTraits)Mode ) const
inline
Возвращает
обратное преобразование в соответствии с некоторыми известными данными о *this.
Параметры
подсказка позволяет оптимизировать процесс инверсии, когда преобразование известно как не общее преобразование (необязательно). Возможные значения:
  • Проективное, если преобразование не обязательно аффинное, т.е. если последняя строка не гарантированно [0 ... 0 1]
  • Аффинное, если последнюю строку можно считать [0 ... 0 1]
  • Изометрия, если преобразование представляет собой только последовательность сдвигов и вращений. По умолчанию — параметр шаблона класса Mode.
Предупреждение
если характеристики не всегда установлены на NoShear или NoScaling, эта функция требует универсального метода обратного преобразования MatrixBase, определенного в модуле LU. Если вы забудете включить этот модуль, возникнут трудно отлаживаемые ошибки компоновки.
См. также
MatrixBase::inverse()

isApprox()

шаблон<typename _Скаляр , int _Dim, int _Режим, int _Опции>
bool Eigen::Transform< _Скаляр, _Dim, _Режим, _Опции >::isApprox ( const Transform< _Скаляр, _Dim, _Режим, _Опции > & other,
const typename NumTraits< Скаляр >::Real & prec = NumTraits<Scalar>::dummy_precision()
) const
inline
Возвращает
true если *this приблизительно равно other, в пределах точности, определяемой prec.
См. также
MatrixBase::isApprox()

linear() [1/2]

шаблон<typename _Скаляр , int _Dim, int _Режим, int _Опции>
LinearPart Eigen::Transform< _Скаляр, _Dim, _Режим, _Опции >::linear ( )
inline
Возвращает
записываемое выражение линейной части преобразования

linear() [2/2]

шаблон<typename _Скаляр , int _Dim, int _Режим, int _Опции>
ConstLinearPart Eigen::Transform< _Скаляр, _Dim, _Режим, _Опции >::linear ( ) const
inline
Возвращает
только для чтения выражение линейной части преобразования

makeAffine()

шаблон<typename _Скаляр , int _Dim, int _Режим, int _Опции>
void Eigen::Transform< _Скаляр, _Dim, _Режим, _Опции >::makeAffine ( )
inline

Устанавливает последнюю строку в [0 ... 0 1]

matrix() [1/2]

template<typename _Scalar , int _Dim, int _Mode, int _Options>
MatrixType& Eigen::Transform< _Scalar, _Dim, _Mode, _Options >::matrix ( )
inline
Возвращает
запись выражения матрицы преобразования

matrix() [2/2]

template<typename _Scalar , int _Dim, int _Mode, int _Options>
const MatrixType& Eigen::Transform< _Scalar, _Dim, _Mode, _Options >::matrix ( ) const
inline
Возвращает
только для чтения выражение матрицы преобразования

operator()() [1/2]

template<typename _Scalar , int _Dim, int _Mode, int _Options>
Scalar& Eigen::Transform< _Scalar, _Dim, _Mode, _Options >::operator() ( Index row,
Index col
)
inline

сокращенная форма для m_matrix(row,col);

См. также
MatrixBase::operator(Index,Index)

operator()() [2/2]

template<typename _Scalar , int _Dim, int _Mode, int _Options>
Scalar Eigen::Transform< _Scalar, _Dim, _Mode, _Options >::operator() ( Index row,
Index col
) const
inline

сокращенная форма для m_matrix(row,col);

См. также
MatrixBase::operator(Index,Index) const

operator*() [1/4]

template<typename _Scalar , int _Dim, int _Mode, int _Options>
template<typename DiagonalDerived >
const TransformTimeDiagonalReturnType Eigen::Transform< _Scalar, _Dim, _Mode, _Options >::operator* ( const DiagonalBase< DiagonalDerived > & b ) const
inline
Возвращает
выражение произведения преобразования a на диагональную матрицу b

Диагональная матрица справа интерпретируется как аффинное преобразование масштабирования. Результатом произведения является преобразование Transform того же типа (режим), что и слева, только если режим слева не является изометрией. В этом случае возвращаемое преобразование является аффинным.

operator*() [2/4]

template<typename _Scalar , int _Dim, int _Mode, int _Options>
template<typename OtherDerived >
const internal::transform_right_product_impl<Transform, OtherDerived>::ResultType Eigen::Transform< _Scalar, _Dim, _Mode, _Options >::operator* ( const EigenBase< OtherDerived > & other ) const
inline
Возвращает
выражение произведения преобразования *this и выражения матрицы other.

Правая часть other может быть:

  • однородный вектор размера Dim+1,
  • набором однородных векторов размера Dim+1 x N,
  • матрицей преобразования размера Dim+1 x Dim+1.

Кроме того, если *this представляет аффинное преобразование (т.е., Mode!=Projective), то other также может быть:

  • точкой размера Dim (вычисляет:
    this->linear() * other + this->translation()
    ),
  • набором N точек как Dim x N матрицы (вычисляет:
    (this->linear() * other).colwise() + this->translation()
    
    ),

Во всех случаях тип возвращаемого значения — матрица или вектор тех же размеров, что и правая часть other.

Если вы хотите интерпретировать other как линейное или аффинное преобразование, сначала преобразуйте его в тип Transform<> или сделайте свою собственную обработку.

Наконец, если вы хотите применять аффинные преобразования к векторам, то явно примените только линейную часть:

Affine3f A;
Vector3f v1, v2;
v2 = A.linear() * v1;

operator*() [3/4]

template<typename _Scalar , int _Dim, int _Mode, int _Options>
const Transform Eigen::Transform< _Scalar, _Dim, _Mode, _Options >::operator* ( const Transform< _Scalar, _Dim, _Mode, _Options > & other ) const
inline

Сцепляет два преобразования

operator*() [4/4]

template<typename _Scalar , int _Dim, int _Mode, int _Options>
template<int OtherMode, int OtherOptions>
internal::transform_transform_product_impl<Transform,Transform<Scalar,Dim,OtherMode,OtherOptions> >::ResultType Eigen::Transform< _Scalar, _Dim, _Mode, _Options >::operator* ( const Transform< Scalar, Dim, OtherMode, OtherOptions > & other ) const
inline

Сцепляет два разных преобразования

operator=() [1/3]

template<typename _Scalar , int _Dim, int _Mode, int _Options>
template<typename OtherDerived >
Transform& Eigen::Transform< _Scalar, _Dim, _Mode, _Options >::operator= ( const EigenBase< OtherDerived > & other )
inline

Устанавливает *this из матрицы размера Dim^2 или (Dim+1)^2.

operator=() [2/3]

template<typename Scalar , int Dim, int Mode, int Options>
Transform< Scalar, Dim, Mode, Options > & Eigen::Transform< Scalar, Dim, Mode, Options >::operator= ( const QMatrix & other )
inline

Устанавливает *this из QMatrix, предполагая размерность 2.

Эта функция доступна только если определён макрос EIGEN_QT_SUPPORT.

operator=() [3/3]

template<typename Scalar , int Dim, int Mode, int Options>
Transform< Scalar, Dim, Mode, Options > & Eigen::Transform< Scalar, Dim, Mode, Options >::operator= ( const QTransform< _Scalar, _Dim, _Mode, _Options > & other )
inline

Устанавливает *this из QTransform, предполагая размерность 2.

Эта функция доступна только если определён макрос EIGEN_QT_SUPPORT.

prerotate()

template<typename _Scalar , int _Dim, int _Mode, int _Options>
template<typename RotationType >
Transform<Scalar,Dim,Mode,Options>& Eigen::Transform< _Scalar, _Dim, _Mode, _Options >::prerotate ( const RotationType & rotation )

Применяет слева вращение, задаваемое вращением rotation, к *this и возвращает ссылку на *this.

См. rotate() для получения дополнительных сведений.

См. также
rotate()

prescale() [1/2]

шаблон<typename _Scalar , int _Dim, int _Mode, int _Options>
шаблон<typename OtherDerived >
Преобразование<Скаляр,Dim,Mode,Options>& Eigen::Преобразование< _Scalar, _Dim, _Mode, _Options >::prescale ( const МатрицаБаза< OtherDerived > & other )

Применяет слева неравномерное масштабирование, заданное вектором other, к *this и возвращает ссылку на *this.

См. также
scale()

prescale() [2/2]

шаблон<typename Scalar , int Dim, int Mode, int Options>
Преобразование< Скаляр, Dim, Mode, Options > & Eigen::Преобразование< Скаляр, Dim, Mode, Options >::prescale ( const Скаляр & s )
inline

Применяет слева равномерное масштабирование с коэффициентом c к *this и возвращает ссылку на *this.

См. также
scale(Scalar)

preshear()

шаблон<typename Scalar , int Dim, int Mode, int Options>
Преобразование< Скаляр, Dim, Mode, Options > & Eigen::Преобразование< Скаляр, Dim, Mode, Options >::preshear ( const Скаляр & sx,
const Скаляр & sy
)

Применяет слева сдвиг, заданный вектором other, к *this и возвращает ссылку на *this.

Предупреждение
Только для 2D.
См. также
shear()

pretranslate()

шаблон<typename _Scalar , int _Dim, int _Mode, int _Options>
шаблон<typename OtherDerived >
Преобразование<Скаляр,Dim,Mode,Options>& Eigen::Преобразование< _Scalar, _Dim, _Mode, _Options >::pretranslate ( const МатрицаБаза< OtherDerived > & other )

Применяет слева матрицу сдвига, заданную вектором other, к *this и возвращает ссылку на *this.

См. также
translate()

rotate()

шаблон<typename _Scalar , int _Dim, int _Mode, int _Options>
шаблон<typename RotationType >
Преобразование<Скаляр,Dim,Mode,Options>& Eigen::Преобразование< _Scalar, _Dim, _Mode, _Options >::rotate ( const RotationType & rotation )

Применяет справа вращение, заданное вращением rotation, к *this и возвращает ссылку на *this.

Шаблонный параметр RotationType — тип вращения, который должен быть известен internal::toRotationMatrix<>.

Встроенные поддерживаемые типы включают:

  • любой скаляр (2D),
  • выражение матрицы Dim x Dim,
  • Кватернион (3D),
  • AngleAxis (3D)

Этот механизм легко расширяется для поддержки пользовательских типов, таких как углы Эйлера или пара кватернионов для 4D вращений.

См. также
rotate(Scalar), класс Кватернион, класс AngleAxis, prerotate(RotationType)

rotation()

шаблон<typename Scalar , int Dim, int Mode, int Options>
Преобразование< Скаляр, Dim, Mode, Options >::RotationReturnType Eigen::Преобразование< Скаляр, Dim, Mode, Options >::rotation
Возвращает
часть вращения преобразования

Если Mode==Isometry, то этот метод является псевдонимом для linear(), в противном случае он вызывает computeRotationScaling() для извлечения вращения с помощью разложения по сингулярным значениям.

Это определено в модуле SVD.

#include <Eigen/SVD> 
См. также
computeRotationScaling(), computeScalingRotation(), класс SVD

scale() [1/2]

шаблон<typename _Scalar , int _Dim, int _Mode, int _Options>
шаблон<typename OtherDerived >
Преобразование<Скаляр,Dim,Mode,Options>& Eigen::Преобразование< _Scalar, _Dim, _Mode, _Options >::scale ( const МатрицаБаза< OtherDerived > & other )

Применяет справа неравномерное масштабирование, заданное вектором other, к *this и возвращает ссылку на *this.

См. также
prescale()

scale() [2/2]

шаблон<typename Scalar , int Dim, int Mode, int Options>
Преобразование< Скаляр, Dim, Mode, Options > & Eigen::Преобразование< Скаляр, Dim, Mode, Options >::scale ( const Скаляр & s )
inline

Применяет справа равномерное масштабирование с коэффициентом c к *this и возвращает ссылку на *this.

См. также
prescale(Scalar)

setIdentity()

шаблон<typename _Scalar , int _Dim, int _Mode, int _Options>
void Eigen::Преобразование< _Scalar, _Dim, _Mode, _Options >::setIdentity ( )
inline
См. также
MatrixBase::setIdentity()

shear()

шаблон<typename Scalar , int Dim, int Mode, int Options>
Преобразование< Скаляр, Dim, Mode, Options > & Eigen::Преобразование< Скаляр, Dim, Mode, Options >::shear ( const Скаляр & sx,
const Скаляр & sy
)

Применяет справа сдвиг, заданный вектором other, к *this и возвращает ссылку на *this.

Предупреждение
Только для 2D.
См. также
preshear()

toQMatrix()

шаблон<typename Scalar , int Dim, int Mode, int Options>
QMatrix Eigen::Преобразование< Скаляр, Dim, Mode, Options >::toQMatrix ( void ) const
inline
Возвращает
QMatrix из *this, предполагая размерность 2.
Предупреждение
Это преобразование может потерять данные, если *this не является аффинным

Эта функция доступна только если определен токен EIGEN_QT_SUPPORT.

toQTransform()

template<typename Scalar , int Dim, int Mode, int Options>
QTransform Eigen::Transform< Scalar, Dim, Mode, Options >::toQTransform ( void ) const
inline
Возвращает
объект QTransform из *this, предполагая размерность 2.

Эта функция доступна только если определён макрос EIGEN_QT_SUPPORT.

translate()

template<typename _Scalar , int _Dim, int _Mode, int _Options>
template<typename OtherDerived >
Transform<Scalar,Dim,Mode,Options>& Eigen::Transform< _Scalar, _Dim, _Mode, _Options >::translate ( const MatrixBase< OtherDerived > & other )

Применяет к правому вектору other матрицу переноса, представленную вектором, к *this и возвращает ссылку на *this.

См. также
pretranslate()

translation() [1/2]

template<typename _Scalar , int _Dim, int _Mode, int _Options>
TranslationPart Eigen::Transform< _Scalar, _Dim, _Mode, _Options >::translation ( )
inline
Возвращает
записываемое выражение вектора переноса преобразования

translation() [2/2]

template<typename _Scalar , int _Dim, int _Mode, int _Options>
ConstTranslationPart Eigen::Transform< _Scalar, _Dim, _Mode, _Options >::translation ( ) const
inline
Возвращает
только для чтения выражение вектора переноса преобразования

The documentation for this class was generated from the following file:
  • Transform.h

© Eigen.
Licensed under the MPL2 License.
https://eigen.tuxfamily.org/dox/classEigen_1_1Transform.html

Spec-Zone.ru

Настройки Оффлайн Что нового Помощь О нас
Spec-Zone .ru
спецификации, руководства, описания, API