Lines Matching full:matrix
76 * - #Affine: the transformation is stored as a (Dim+1)^2 matrix,
78 * - #AffineCompact: the transformation is stored as a (Dim)x(Dim+1) matrix.
79 * - #Projective: the transformation is stored as a (Dim+1)^2 matrix
81 * \tparam _Options has the same meaning as in class Matrix. It allows to specify DontAlign and/or RowMajor.
82 * These Options are passed directly to the underlying matrix type.
84 * The homography is internally represented and stored by a matrix which
85 * is available through the matrix() method. To understand the behavior of
87 * matrix representation. The chosen convention is right multiply:
91 * Therefore, an affine transformation matrix M is shaped like this:
101 * However, unlike a plain matrix, the Transform class provides many features
103 * with any other transformations (Transform,Translation,RotationBase,Matrix)
107 * to a compatible (Dim+1)^2 matrix and then perform a pure matrix product.
111 * one before doing the matrix product. The convertions to homogeneous representations
126 * \b Linear \b Matrix L (Dim)x(Dim):
132 * \b Affine \b Matrix A (Dim)x(Dim+1):
153 * A little exception to the "as pure matrix product" rule is the case of the
155 * that case the last matrix row can be ignored, and the product returns non
158 * Since, for instance, a Dim x Dim matrix is interpreted as a linear transformation,
159 * it is not possible to directly transform Dim vectors stored in a Dim x Dim matrix.
160 * The solution is either to use a Dim x Dynamic matrix or explicitly request a
173 * \sa class Matrix, class Quaternion
190 /** type of the matrix used to represent the transformation */
194 /** type of the matrix used to represent the linear part of the transformation */
195 typedef Matrix<Scalar,Dim,Dim,Options> LinearMatrixType;
209 typedef Matrix<Scalar,Dim,1> VectorType;
219 /** The return type of the product between a diagonal matrix and a transform */
265 /** Constructs and initializes a transformation from a Dim^2 or a (Dim+1)^2 matrix. */
276 /** Set \c *this from a Dim^2 or (Dim+1)^2 matrix. */
292 m_matrix = other.matrix();
318 m_matrix.template block<Dim,Dim+1>(0,0) = other.matrix().template block<Dim,Dim+1>(0,0);
324 internal::transform_construct_from_matrix<OtherMatrixType,Mode,Options,Dim,HDim>::run(this, other.matrix());
366 /** \returns a read-only expression of the transformation matrix */
367 inline const MatrixType& matrix() const { return m_matrix; }
368 /** \returns a writable expression of the transformation matrix */
369 inline MatrixType& matrix() { return m_matrix; }
386 /** \returns an expression of the product between the transform \c *this and a matrix expression \a other
393 * \li a linear transformation matrix of size Dim x Dim,
394 * \li an affine transformation matrix of size Dim x Dim+1,
395 * \li a transformation matrix of size Dim+1 x Dim+1.
403 /** \returns the product expression of a transformation matrix
406 * \li a linear transformation matrix of size Dim x Dim,
407 * \li an affine transformation matrix of size Dim x Dim+1,
408 * \li a general transformation matrix of size Dim+1 x Dim+1.
415 /** \returns The product expression of a transform \a a times a diagonal matrix \a b
417 * The rhs diagonal matrix is interpreted as an affine scaling transformation. The
430 /** \returns The product expression of a diagonal matrix \a a times a transform \a b
432 * The lhs diagonal matrix is interpreted as an affine scaling transformation. The
444 res.matrix().row(Dim) = b.matrix().row(Dim);
561 /** \returns a const pointer to the column major internal matrix */
563 /** \returns a non-const pointer to the column major internal matrix */
580 m_matrix = other.matrix().template cast<Scalar>();
596 matrix().template block<1,Dim>(Dim,0).setZero();
597 matrix().coeffRef(Dim,Dim) = Scalar(1);
831 /** Applies on the right the translation matrix represented by the vector \a other
845 /** Applies on the left the translation matrix represented by the vector \a other
870 * - a Dim x Dim matrix expression,
1082 // selector needed to avoid taking the inverse of a 3x4 matrix
1095 res.matrix() = m.matrix().inverse();
1135 res.matrix().template topLeftCorner<Dim,Dim>() = linear().transpose();
1139 res.matrix().template topLeftCorner<Dim,Dim>() = linear().inverse();
1146 res.matrix().template topRightCorner<Dim,1>()
1147 = - res.matrix().template topLeftCorner<Dim,Dim>() * translation();
1177 *** Specializations of construct from matrix ***
1205 { transform->matrix() = other; }
1212 { transform->matrix() = other.template block<Dim,HDim>(0,0); }
1239 return T.matrix() * other;
1297 // generic HDim x HDim matrix * T => Projective
1305 { return ResultType(other * tr.matrix()); }
1308 // generic HDim x HDim matrix * AffineCompact => Projective
1318 res.matrix().noalias() = other.template block<HDim,Dim>(0,0) * tr.matrix();
1319 res.matrix().col(Dim) += other.col(Dim);
1324 // affine matrix * T
1334 res.affine().noalias() = other * tr.matrix();
1335 res.matrix().row(Dim) = tr.matrix().row(Dim);
1340 // affine matrix * AffineCompact
1350 res.matrix().noalias() = other.template block<Dim,Dim>(0,0) * tr.matrix();
1356 // linear matrix * T
1367 res.matrix().row(Dim) = tr.matrix().row(Dim);
1368 res.matrix().template topRows<Dim>().noalias()
1369 = other * tr.matrix().template topRows<Dim>();
1403 return ResultType( lhs.matrix() * rhs.matrix() );
1416 res.matrix().template topRows<Dim>() = lhs.matrix() * rhs.matrix();
1417 res.matrix().row(Dim) = rhs.matrix().row(Dim);
1430 ResultType res(lhs.matrix().template leftCols<Dim>() * rhs.matrix());
1431 res.matrix().col(Dim) += lhs.matrix().col(Dim);