Home | History | Annotate | Download | only in Geometry

Lines Matching refs:Dim

24     Dim = Transform::Dim,
41 int Dim,
57 int Dim,
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
107 * to a compatible (Dim+1)^2 matrix and then perform a pure matrix product.
114 * \b Translation t (Dim)x(1):
120 * \b Rotation R (Dim)x(Dim):
126 * \b Linear \b Matrix L (Dim)x(Dim):
132 * \b Affine \b Matrix A (Dim)x(Dim+1):
138 * \b Column \b vector v (Dim)x(1):
144 * \b Set \b of \b column \b vectors V1...Vn (Dim)x(n):
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
183 Dim = _Dim, ///< space dimension in which the transformation holds
185 Rows = int(Mode)==(AffineCompact) ? Dim : HDim
195 typedef Matrix<Scalar,Dim,Dim,Options> LinearMatrixType;
197 typedef Block<MatrixType,Dim,Dim,int(Mode)==(AffineCompact) && (Options&RowMajor)==0> LinearPart;
199 typedef const Block<ConstMatrixType,Dim,Dim,int(Mode)==(AffineCompact) && (Options&RowMajor)==0> ConstLinearPart;
203 Block<MatrixType,Dim,HDim> >::type AffinePart;
207 const Block<const MatrixType,Dim,HDim> >::type ConstAffinePart;
209 typedef Matrix<Scalar,Dim,1> VectorType;
211 typedef Block<MatrixType,Dim,1,int(Mode)==(AffineCompact)> TranslationPart;
213 typedef const Block<ConstMatrixType,Dim,1,int(Mode)==(AffineCompact)> ConstTranslationPart;
215 typedef Translation<Scalar,Dim> TranslationType;
220 typedef Transform<Scalar,Dim,TransformTimeDiagonalMode> TransformTimeDiagonalReturnType;
254 inline explicit Transform(const RotationBase<Derived, Dim>& r)
265 /** Constructs and initializes a transformation from a Dim^2 or a (Dim+1)^2 matrix. */
273 internal::transform_construct_from_matrix<OtherDerived,Mode,Options,Dim,HDim>::run(this, other.derived());
276 /** Set \c *this from a Dim^2 or (Dim+1)^2 matrix. */
283 internal::transform_construct_from_matrix<OtherDerived,Mode,Options,Dim,HDim>::run(this, other.derived());
288 inline Transform(const Transform<Scalar,Dim,Mode,OtherOptions>& other)
296 inline Transform(const Transform<Scalar,Dim,OtherMode,OtherOptions>& other)
318 m_matrix.template block<Dim,Dim+1>(0,0) = other.matrix().template block<Dim,Dim+1>(0,0);
323 typedef typename Transform<Scalar,Dim,OtherMode,OtherOptions>::MatrixType OtherMatrixType;
324 internal::transform_construct_from_matrix<OtherMatrixType,Mode,Options,Dim,HDim>::run(this, other.matrix());
376 /** \returns a read-only expression of the Dim x HDim affine part of the transformation */
378 /** \returns a writable expression of the Dim x HDim affine part of the transformation */
382 inline ConstTranslationPart translation() const { return ConstTranslationPart(m_matrix,0,Dim); }
384 inline TranslationPart translation() { return TranslationPart(m_matrix,0,Dim); }
389 * \li a vector of size Dim,
390 * \li an homogeneous vector of size Dim+1,
391 * \li a set of vectors of size Dim x Dynamic,
392 * \li a set of homogeneous vectors of size Dim+1 x Dynamic,
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.
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.
413 { return internal::transform_left_product_impl<OtherDerived,Mode,Options,Dim,HDim>::run(a.derived(),b); }
444 res.matrix().row(Dim) = b.matrix().row(Dim);
468 typedef internal::transform_transform_product_impl<Transform,Transform<Scalar,Dim,OtherMode,OtherOptions> > ProductType;
476 operator * (const Transform<Scalar,Dim,OtherMode,OtherOptions>& other) const
484 inline typename internal::transform_transform_product_impl<Transform,Transform<Scalar,Dim,OtherMode,OtherOptions> >::ResultType
485 operator * (const Transform<Scalar,Dim,OtherMode,OtherOptions>& other) const
487 return internal::transform_transform_product_impl<Transform,Transform<Scalar,Dim,OtherMode,OtherOptions> >::run(*this,other);
533 inline Transform<Scalar,Dim,(int(Mode)==int(Isometry)?int(Affine):int(Mode))> operator*(const UniformScaling<Scalar>& s) const
535 Transform<Scalar,Dim,(int(Mode)==int(Isometry)?int(Affine):int(Mode)),Options> res = *this;
540 inline Transform& operator*=(const DiagonalMatrix<Scalar,Dim>& s) { linear() *= s; return *this; }
543 inline Transform& operator=(const RotationBase<Derived,Dim>& r);
545 inline Transform& operator*=(const RotationBase<Derived,Dim>& r) { return rotate(r.toRotationMatrix()); }
547 inline Transform operator*(const RotationBase<Derived,Dim>& r) const;
572 inline typename internal::cast_return_type<Transform,Transform<NewScalarType,Dim,Mode,Options> >::type cast() const
573 { return typename internal::cast_return_type<Transform,Transform<NewScalarType,Dim,Mode,Options> >::type(*this); }
577 inline explicit Transform(const Transform<OtherScalarType,Dim,Mode,Options>& other)
596 matrix().template block<1,Dim>(Dim,0).setZero();
597 matrix().coeffRef(Dim,Dim) = Scalar(1);
602 * \returns the Dim x Dim linear part if the transformation is affine,
603 * and the HDim x Dim part for projective transformations.
605 inline Block<MatrixType,int(Mode)==int(Projective)?HDim:Dim,Dim> linearExt()
606 { return m_matrix.template block<int(Mode)==int(Projective)?HDim:Dim,Dim>(0,0); }
608 * \returns the Dim x Dim linear part if the transformation is affine,
609 * and the HDim x Dim part for projective transformations.
611 inline const Block<MatrixType,int(Mode)==int(Projective)?HDim:Dim,Dim> linearExt() const
612 { return m_matrix.template block<int(Mode)==int(Projective)?HDim:Dim,Dim>(0,0); }
618 inline Block<MatrixType,int(Mode)==int(Projective)?HDim:Dim,1> translationExt()
619 { return m_matrix.template block<int(Mode)==int(Projective)?HDim:Dim,1>(0,Dim); }
624 inline const Block<MatrixType,int(Mode)==int(Projective)?HDim:Dim,1> translationExt() const
625 { return m_matrix.template block<int(Mode)==int(Projective)?HDim:Dim,1>(0,Dim); }
687 template<typename Scalar, int Dim, int Mode,int Options>
688 Transform<Scalar,Dim,Mode,Options>::Transform(const QMatrix& other)
698 template<typename Scalar, int Dim, int Mode,int Options>
699 Transform<Scalar,Dim,Mode,Options>& Transform<Scalar,Dim,Mode,Options>::operator=(const QMatrix& other)
701 EIGEN_STATIC_ASSERT(Dim==2, YOU_MADE_A_PROGRAMMING_MISTAKE)
714 template<typename Scalar, int Dim, int Mode, int Options>
715 QMatrix Transform<Scalar,Dim,Mode,Options>::toQMatrix(void) const
718 EIGEN_STATIC_ASSERT(Dim==2, YOU_MADE_A_PROGRAMMING_MISTAKE)
728 template<typename Scalar, int Dim, int Mode,int Options>
729 Transform<Scalar,Dim,Mode,Options>::Transform(const QTransform& other)
739 template<typename Scalar, int Dim, int Mode, int Options>
740 Transform<Scalar,Dim,Mode,Options>& Transform<Scalar,Dim,Mode,Options>::operator=(const QTransform& other)
743 EIGEN_STATIC_ASSERT(Dim==2, YOU_MADE_A_PROGRAMMING_MISTAKE)
758 template<typename Scalar, int Dim, int Mode, int Options>
759 QTransform Transform<Scalar,Dim,Mode,Options>::toQTransform(void) const
761 EIGEN_STATIC_ASSERT(Dim==2, YOU_MADE_A_PROGRAMMING_MISTAKE)
781 template<typename Scalar, int Dim, int Mode, int Options>
783 Transform<Scalar,Dim,Mode,Options>&
784 Transform<Scalar,Dim,Mode,Options>::scale(const MatrixBase<OtherDerived> &other)
786 EIGEN_STATIC_ASSERT_VECTOR_SPECIFIC_SIZE(OtherDerived,int(Dim))
796 template<typename Scalar, int Dim, int Mode, int Options>
797 inline Transform<Scalar,Dim,Mode,Options>& Transform<Scalar,Dim,Mode,Options>::scale(const Scalar& s)
808 template<typename Scalar, int Dim, int Mode, int Options>
810 Transform<Scalar,Dim,Mode,Options>&
811 Transform<Scalar,Dim,Mode,Options>::prescale(const MatrixBase<OtherDerived> &other)
813 EIGEN_STATIC_ASSERT_VECTOR_SPECIFIC_SIZE(OtherDerived,int(Dim))
815 m_matrix.template block<Dim,HDim>(0,0).noalias() = (other.asDiagonal() * m_matrix.template block<Dim,HDim>(0,0));
823 template<typename Scalar, int Dim, int Mode, int Options>
824 inline Transform<Scalar,Dim,Mode,Options>& Transform<Scalar,Dim,Mode,Options>::prescale(const Scalar& s)
827 m_matrix.template topRows<Dim>() *= s;
835 template<typename Scalar, int Dim, int Mode, int Options>
837 Transform<Scalar,Dim,Mode,Options>&
838 Transform<Scalar,Dim,Mode,Options>::translate(const MatrixBase<OtherDerived> &other)
840 EIGEN_STATIC_ASSERT_VECTOR_SPECIFIC_SIZE(OtherDerived,int(Dim))
849 template<typename Scalar, int Dim, int Mode, int Options>
851 Transform<Scalar,Dim,Mode,Options>&
852 Transform<Scalar,Dim,Mode,Options>::pretranslate(const MatrixBase<OtherDerived> &other)
854 EIGEN_STATIC_ASSERT_VECTOR_SPECIFIC_SIZE(OtherDerived,int(Dim))
856 affine() += other * m_matrix.row(Dim);
870 * - a Dim x Dim matrix expression,
879 template<typename Scalar, int Dim, int Mode, int Options>
881 Transform<Scalar,Dim,Mode,Options>&
882 Transform<Scalar,Dim,Mode,Options>::rotate(const RotationType& rotation)
884 linearExt() *= internal::toRotationMatrix<Scalar,Dim>(rotation);
895 template<typename Scalar, int Dim, int Mode, int Options>
897 Transform<Scalar,Dim,Mode,Options>&
898 Transform<Scalar,Dim,Mode,Options>::prerotate(const RotationType& rotation)
900 m_matrix.template block<Dim,HDim>(0,0) = internal::toRotationMatrix<Scalar,Dim>(rotation)
901 * m_matrix.template block<Dim,HDim>(0,0);
910 template<typename Scalar, int Dim, int Mode, int Options>
911 Transform<Scalar,Dim,Mode,Options>&
912 Transform<Scalar,Dim,Mode,Options>::shear(const Scalar& sx, const Scalar& sy)
914 EIGEN_STATIC_ASSERT(int(Dim)==2, YOU_MADE_A_PROGRAMMING_MISTAKE)
926 template<typename Scalar, int Dim, int Mode, int Options>
927 Transform<Scalar,Dim,Mode,Options>&
928 Transform<Scalar,Dim,Mode,Options>::preshear(const Scalar& sx, const Scalar& sy)
930 EIGEN_STATIC_ASSERT(int(Dim)==2, YOU_MADE_A_PROGRAMMING_MISTAKE)
932 m_matrix.template block<Dim,HDim>(0,0) = LinearMatrixType(1, sx, sy, 1) * m_matrix.template block<Dim,HDim>(0,0);
940 template<typename Scalar, int Dim, int Mode, int Options>
941 inline Transform<Scalar,Dim,Mode,Options>& Transform<Scalar,Dim,Mode,Options>::operator=(const TranslationType& t)
949 template<typename Scalar, int Dim, int Mode, int Options>
950 inline Transform<Scalar,Dim,Mode,Options> Transform<Scalar,Dim,Mode,Options>::operator*(const TranslationType& t) const
957 template<typename Scalar, int Dim, int Mode, int Options>
958 inline Transform<Scalar,Dim,Mode,Options>& Transform<Scalar,Dim,Mode,Options>::operator=(const UniformScaling<Scalar>& s)
966 template<typename Scalar, int Dim, int Mode, int Options>
968 inline Transform<Scalar,Dim,Mode,Options>& Transform<Scalar,Dim,Mode,Options>::operator=(const RotationBase<Derived,Dim>& r)
970 linear() = internal::toRotationMatrix<Scalar,Dim>(r);
976 template<typename Scalar, int Dim, int Mode, int Options>
978 inline Transform<Scalar,Dim,Mode,Options> Transform<Scalar,Dim,Mode,Options>::operator*(const RotationBase<Derived,Dim>& r) const
996 template<typename Scalar, int Dim, int Mode, int Options>
997 const typename Transform<Scalar,Dim,Mode,Options>::LinearMatrixType
998 Transform<Scalar,Dim,Mode,Options>::rotation() const
1017 template<typename Scalar, int Dim, int Mode, int Options>
1019 void Transform<Scalar,Dim,Mode,Options>::computeRotationScaling(RotationMatrixType *rotation, ScalingMatrixType *scaling) const
1046 template<typename Scalar, int Dim, int Mode, int Options>
1048 void Transform<Scalar,Dim,Mode,Options>::computeScalingRotation(ScalingMatrixType *scaling, RotationMatrixType *rotation) const
1067 template<typename Scalar, int Dim, int Mode, int Options>
1069 Transform<Scalar,Dim,Mode,Options>&
1070 Transform<Scalar,Dim,Mode,Options>::fromPositionOrientationScale(const MatrixBase<PositionDerived> &position,
1073 linear() = internal::toRotationMatrix<Scalar,Dim>(orientation);
1122 template<typename Scalar, int Dim, int Mode, int Options>
1123 Transform<Scalar,Dim,Mode,Options>
1124 Transform<Scalar,Dim,Mode,Options>::inverse(TransformTraits hint) const
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();
1164 { return m.template block<TransformType::Dim,TransformType::HDim>(0,0); }
1166 { return m.template block<TransformType::Dim,TransformType::HDim>(0,0); }
1169 template<typename Scalar, int Dim, int Options>
1170 struct transform_take_affine_part<Transform<Scalar,Dim,AffineCompact, Options> > {
1171 typedef typename Transform<Scalar,Dim,AffineCompact,Options>::MatrixType MatrixType;
1180 template<typename Other, int Mode, int Options, int Dim, int HDim>
1181 struct transform_construct_from_matrix<Other, Mode,Options,Dim,HDim, Dim,Dim>
1183 static inline void run(Transform<typename Other::Scalar,Dim,Mode,Options> *transform, const Other& other)
1191 template<typename Other, int Mode, int Options, int Dim, int HDim>
1192 struct transform_construct_from_matrix<Other, Mode,Options,Dim,HDim, Dim,HDim>
1194 static inline void run(Transform<typename Other::Scalar,Dim,Mode,Options> *transform, const Other& other)
1201 template<typename Other, int Mode, int Options, int Dim, int HDim>
1202 struct transform_construct_from_matrix<Other, Mode,Options,Dim,HDim, HDim,HDim>
1204 static inline void run(Transform<typename Other::Scalar,Dim,Mode,Options> *transform, const Other& other)
1208 template<typename Other, int Options, int Dim, int HDim>
1209 struct transform_construct_from_matrix<Other, AffineCompact,Options,Dim,HDim, HDim,HDim>
1211 static inline void run(Transform<typename Other::Scalar,Dim,AffineCompact,Options> *transform, const Other& other)
1212 { transform->matrix() = other.template block<Dim,HDim>(0,0); }
1247 Dim = TransformType::Dim,
1259 typedef Block<ResultType, Dim, OtherCols, int(MatrixType::RowsAtCompileTime)==Dim> TopLeftLhs;
1262 TopLeftLhs(res, 0, 0, Dim, other.cols()).noalias() = T.affine() * other;
1273 Dim = TransformType::Dim,
1283 EIGEN_STATIC_ASSERT(OtherRows==Dim, YOU_MIXED_MATRICES_OF_DIFFERENT_SIZES);
1285 typedef Block<ResultType, Dim, OtherCols, true> TopLeftLhs;
1287 TopLeftLhs(res, 0, 0, Dim, other.cols()).noalias() += T.linear() * other;
1298 template<typename Other,int Mode, int Options, int Dim, int HDim>
1299 struct transform_left_product_impl<Other,Mode,Options,Dim,HDim, HDim,HDim>
1301 typedef Transform<typename Other::Scalar,Dim,Mode,Options> TransformType;
1303 typedef Transform<typename Other::Scalar,Dim,Projective,Options> ResultType;
1309 template<typename Other, int Options, int Dim, int HDim>
1310 struct transform_left_product_impl<Other,AffineCompact,Options,Dim,HDim, HDim,HDim>
1312 typedef Transform<typename Other::Scalar,Dim,AffineCompact,Options> TransformType;
1314 typedef Transform<typename Other::Scalar,Dim,Projective,Options> ResultType;
1318 res.matrix().noalias() = other.template block<HDim,Dim>(0,0) * tr.matrix();
1319 res.matrix().col(Dim) += other.col(Dim);
1325 template<typename Other,int Mode, int Options, int Dim, int HDim>
1326 struct transform_left_product_impl<Other,Mode,Options,Dim,HDim, Dim,HDim>
1328 typedef Transform<typename Other::Scalar,Dim,Mode,Options> TransformType;
1335 res.matrix().row(Dim) = tr.matrix().row(Dim);
1341 template<typename Other, int Options, int Dim, int HDim>
1342 struct transform_left_product_impl<Other,AffineCompact,Options,Dim,HDim, Dim,HDim>
1344 typedef Transform<typename Other::Scalar,Dim,AffineCompact,Options> TransformType;
1350 res.matrix().noalias() = other.template block<Dim,Dim>(0,0) * tr.matrix();
1351 res.translation() += other.col(Dim);
1357 template<typename Other,int Mode, int Options, int Dim, int HDim>
1358 struct transform_left_product_impl<Other,Mode,Options,Dim,HDim, Dim,Dim>
1360 typedef Transform<typename Other::Scalar,Dim,Mode,Options> TransformType;
1367 res.matrix().row(Dim) = tr.matrix().row(Dim);
1368 res.matrix().template topRows<Dim>().noalias()
1369 = other * tr.matrix().template topRows<Dim>();
1378 template<typename Scalar, int Dim, int LhsMode, int LhsOptions, int RhsMode, int RhsOptions>
1379 struct transform_transform_product_impl<Transform<Scalar,Dim,LhsMode,LhsOptions>,Transform<Scalar,Dim,RhsMode,RhsOptions>,false >
1382 typedef Transform<Scalar,Dim,LhsMode,LhsOptions> Lhs;
1383 typedef Transform<Scalar,Dim,RhsMode,RhsOptions> Rhs;
1384 typedef Transform<Scalar,Dim,ResultMode,LhsOptions> ResultType;
1395 template<typename Scalar, int Dim, int LhsMode, int LhsOptions, int RhsMode, int RhsOptions>
1396 struct transform_transform_product_impl<Transform<Scalar,Dim,LhsMode,LhsOptions>,Transform<Scalar,Dim,RhsMode,RhsOptions>,true >
1398 typedef Transform<Scalar,Dim,LhsMode,LhsOptions> Lhs;
1399 typedef Transform<Scalar,Dim,RhsMode,RhsOptions> Rhs;
1400 typedef Transform<Scalar,Dim,Projective> ResultType;
1407 template<typename Scalar, int Dim, int LhsOptions, int RhsOptions>
1408 struct transform_transform_product_impl<Transform<Scalar,Dim,AffineCompact,LhsOptions>,Transform<Scalar,Dim,Projective,RhsOptions>,true >
1410 typedef Transform<Scalar,Dim,AffineCompact,LhsOptions> Lhs;
1411 typedef Transform<Scalar,Dim,Projective,RhsOptions> Rhs;
1412 typedef Transform<Scalar,Dim,Projective> ResultType;
1416 res.matrix().template topRows<Dim>() = lhs.matrix() * rhs.matrix();
1417 res.matrix().row(Dim) = rhs.matrix().row(Dim);
1422 template<typename Scalar, int Dim, int LhsOptions, int RhsOptions>
1423 struct transform_transform_product_impl<Transform<Scalar,Dim,Projective,LhsOptions>,Transform<Scalar,Dim,AffineCompact,RhsOptions>,true >
1425 typedef Transform<Scalar,Dim,Projective,LhsOptions> Lhs;
1426 typedef Transform<Scalar,Dim,AffineCompact,RhsOptions> Rhs;
1427 typedef Transform<Scalar,Dim,Projective> ResultType;
1430 ResultType res(lhs.matrix().template leftCols<Dim>() * rhs.matrix());
1431 res.matrix().col(Dim) += lhs.matrix().col(Dim);