Home | History | Annotate | Download | only in Geometry

Lines Matching defs:Dim

24     Dim = Transform::Dim,
41 int Dim,
57 int Dim,
78 * - #Affine: the transformation is stored as a (Dim+1)^2 matrix,
80 * - #AffineCompact: the transformation is stored as a (Dim)x(Dim+1) matrix.
81 * - #Projective: the transformation is stored as a (Dim+1)^2 matrix
109 * to a compatible (Dim+1)^2 matrix and then perform a pure matrix product.
116 * \b Translation t (Dim)x(1):
122 * \b Rotation R (Dim)x(Dim):
128 * \b Linear \b Matrix L (Dim)x(Dim):
134 * \b Affine \b Matrix A (Dim)x(Dim+1):
140 * \b Column \b vector v (Dim)x(1):
146 * \b Set \b of \b column \b vectors V1...Vn (Dim)x(n):
160 * Since, for instance, a Dim x Dim matrix is interpreted as a linear transformation,
161 * it is not possible to directly transform Dim vectors stored in a Dim x Dim matrix.
162 * The solution is either to use a Dim x Dynamic matrix or explicitly request a
185 Dim = _Dim, ///< space dimension in which the transformation holds
187 Rows = int(Mode)==(AffineCompact) ? Dim : HDim
197 typedef Matrix<Scalar,Dim,Dim,Options> LinearMatrixType;
199 typedef Block<MatrixType,Dim,Dim,int(Mode)==(AffineCompact) && (Options&RowMajor)==0> LinearPart;
201 typedef const Block<ConstMatrixType,Dim,Dim,int(Mode)==(AffineCompact) && (Options&RowMajor)==0> ConstLinearPart;
205 Block<MatrixType,Dim,HDim> >::type AffinePart;
209 const Block<const MatrixType,Dim,HDim> >::type ConstAffinePart;
211 typedef Matrix<Scalar,Dim,1> VectorType;
213 typedef Block<MatrixType,Dim,1,int(Mode)==(AffineCompact)> TranslationPart;
215 typedef const Block<ConstMatrixType,Dim,1,int(Mode)==(AffineCompact)> ConstTranslationPart;
217 typedef Translation<Scalar,Dim> TranslationType;
222 typedef Transform<Scalar,Dim,TransformTimeDiagonalMode> TransformTimeDiagonalReturnType;
255 inline explicit Transform(const RotationBase<Derived, Dim>& r)
266 /** Constructs and initializes a transformation from a Dim^2 or a (Dim+1)^2 matrix. */
274 internal::transform_construct_from_matrix<OtherDerived,Mode,Options,Dim,HDim>::run(this, other.derived());
277 /** Set \c *this from a Dim^2 or (Dim+1)^2 matrix. */
284 internal::transform_construct_from_matrix<OtherDerived,Mode,Options,Dim,HDim>::run(this, other.derived());
289 inline Transform(const Transform<Scalar,Dim,Mode,OtherOptions>& other)
297 inline Transform(const Transform<Scalar,Dim,OtherMode,OtherOptions>& other)
319 m_matrix.template block<Dim,Dim+1>(0,0) = other.matrix().template block<Dim,Dim+1>(0,0);
324 typedef typename Transform<Scalar,Dim,OtherMode,OtherOptions>::MatrixType OtherMatrixType;
325 internal::transform_construct_from_matrix<OtherMatrixType,Mode,Options,Dim,HDim>::run(this, other.matrix());
377 /** \returns a read-only expression of the Dim x HDim affine part of the transformation */
379 /** \returns a writable expression of the Dim x HDim affine part of the transformation */
383 inline ConstTranslationPart translation() const { return ConstTranslationPart(m_matrix,0,Dim); }
385 inline TranslationPart translation() { return TranslationPart(m_matrix,0,Dim); }
390 * \li a vector of size Dim,
391 * \li an homogeneous vector of size Dim+1,
392 * \li a set of vectors of size Dim x Dynamic,
393 * \li a set of homogeneous vectors of size Dim+1 x Dynamic,
394 * \li a linear transformation matrix of size Dim x Dim,
395 * \li an affine transformation matrix of size Dim x Dim+1,
396 * \li a transformation matrix of size Dim+1 x Dim+1.
407 * \li a linear transformation matrix of size Dim x Dim,
408 * \li an affine transformation matrix of size Dim x Dim+1,
409 * \li a general transformation matrix of size Dim+1 x Dim+1.
414 { return internal::transform_left_product_impl<OtherDerived,Mode,Options,Dim,HDim>::run(a.derived(),b); }
445 res.matrix().row(Dim) = b.matrix().row(Dim);
469 typedef internal::transform_transform_product_impl<Transform,Transform<Scalar,Dim,OtherMode,OtherOptions> > ProductType;
477 operator * (const Transform<Scalar,Dim,OtherMode,OtherOptions>& other) const
485 inline typename internal::transform_transform_product_impl<Transform,Transform<Scalar,Dim,OtherMode,OtherOptions> >::ResultType
486 operator * (const Transform<Scalar,Dim,OtherMode,OtherOptions>& other) const
488 return internal::transform_transform_product_impl<Transform,Transform<Scalar,Dim,OtherMode,OtherOptions> >::run(*this,other);
534 inline Transform<Scalar,Dim,(int(Mode)==int(Isometry)?int(Affine):int(Mode))> operator*(const UniformScaling<Scalar>& s) const
536 Transform<Scalar,Dim,(int(Mode)==int(Isometry)?int(Affine):int(Mode)),Options> res = *this;
541 inline Transform& operator*=(const DiagonalMatrix<Scalar,Dim>& s) { linear() *= s; return *this; }
544 inline Transform& operator=(const RotationBase<Derived,Dim>& r);
546 inline Transform& operator*=(const RotationBase<Derived,Dim>& r) { return rotate(r.toRotationMatrix()); }
548 inline Transform operator*(const RotationBase<Derived,Dim>& r) const;
573 inline typename internal::cast_return_type<Transform,Transform<NewScalarType,Dim,Mode,Options> >::type cast() const
574 { return typename internal::cast_return_type<Transform,Transform<NewScalarType,Dim,Mode,Options> >::type(*this); }
578 inline explicit Transform(const Transform<OtherScalarType,Dim,Mode,Options>& other)
599 * \returns the Dim x Dim linear part if the transformation is affine,
600 * and the HDim x Dim part for projective transformations.
602 inline Block<MatrixType,int(Mode)==int(Projective)?HDim:Dim,Dim> linearExt()
603 { return m_matrix.template block<int(Mode)==int(Projective)?HDim:Dim,Dim>(0,0); }
605 * \returns the Dim x Dim linear part if the transformation is affine,
606 * and the HDim x Dim part for projective transformations.
608 inline const Block<MatrixType,int(Mode)==int(Projective)?HDim:Dim,Dim> linearExt() const
609 { return m_matrix.template block<int(Mode)==int(Projective)?HDim:Dim,Dim>(0,0); }
615 inline Block<MatrixType,int(Mode)==int(Projective)?HDim:Dim,1> translationExt()
616 { return m_matrix.template block<int(Mode)==int(Projective)?HDim:Dim,1>(0,Dim); }
621 inline const Block<MatrixType,int(Mode)==int(Projective)?HDim:Dim,1> translationExt() const
622 { return m_matrix.template block<int(Mode)==int(Projective)?HDim:Dim,1>(0,Dim); }
684 template<typename Scalar, int Dim, int Mode,int Options>
685 Transform<Scalar,Dim,Mode,Options>::Transform(const QMatrix& other)
695 template<typename Scalar, int Dim, int Mode,int Options>
696 Transform<Scalar,Dim,Mode,Options>& Transform<Scalar,Dim,Mode,Options>::operator=(const QMatrix& other)
698 EIGEN_STATIC_ASSERT(Dim==2, YOU_MADE_A_PROGRAMMING_MISTAKE)
711 template<typename Scalar, int Dim, int Mode, int Options>
712 QMatrix Transform<Scalar,Dim,Mode,Options>::toQMatrix(void) const
715 EIGEN_STATIC_ASSERT(Dim==2, YOU_MADE_A_PROGRAMMING_MISTAKE)
725 template<typename Scalar, int Dim, int Mode,int Options>
726 Transform<Scalar,Dim,Mode,Options>::Transform(const QTransform& other)
736 template<typename Scalar, int Dim, int Mode, int Options>
737 Transform<Scalar,Dim,Mode,Options>& Transform<Scalar,Dim,Mode,Options>::operator=(const QTransform& other)
740 EIGEN_STATIC_ASSERT(Dim==2, YOU_MADE_A_PROGRAMMING_MISTAKE)
755 template<typename Scalar, int Dim, int Mode, int Options>
756 QTransform Transform<Scalar,Dim,Mode,Options>::toQTransform(void) const
758 EIGEN_STATIC_ASSERT(Dim==2, YOU_MADE_A_PROGRAMMING_MISTAKE)
778 template<typename Scalar, int Dim, int Mode, int Options>
780 Transform<Scalar,Dim,Mode,Options>&
781 Transform<Scalar,Dim,Mode,Options>::scale(const MatrixBase<OtherDerived> &other)
783 EIGEN_STATIC_ASSERT_VECTOR_SPECIFIC_SIZE(OtherDerived,int(Dim))
793 template<typename Scalar, int Dim, int Mode, int Options>
794 inline Transform<Scalar,Dim,Mode,Options>& Transform<Scalar,Dim,Mode,Options>::scale(const Scalar& s)
805 template<typename Scalar, int Dim, int Mode, int Options>
807 Transform<Scalar,Dim,Mode,Options>&
808 Transform<Scalar,Dim,Mode,Options>::prescale(const MatrixBase<OtherDerived> &other)
810 EIGEN_STATIC_ASSERT_VECTOR_SPECIFIC_SIZE(OtherDerived,int(Dim))
812 m_matrix.template block<Dim,HDim>(0,0).noalias() = (other.asDiagonal() * m_matrix.template block<Dim,HDim>(0,0));
820 template<typename Scalar, int Dim, int Mode, int Options>
821 inline Transform<Scalar,Dim,Mode,Options>& Transform<Scalar,Dim,Mode,Options>::prescale(const Scalar& s)
824 m_matrix.template topRows<Dim>() *= s;
832 template<typename Scalar, int Dim, int Mode, int Options>
834 Transform<Scalar,Dim,Mode,Options>&
835 Transform<Scalar,Dim,Mode,Options>::translate(const MatrixBase<OtherDerived> &other)
837 EIGEN_STATIC_ASSERT_VECTOR_SPECIFIC_SIZE(OtherDerived,int(Dim))
846 template<typename Scalar, int Dim, int Mode, int Options>
848 Transform<Scalar,Dim,Mode,Options>&
849 Transform<Scalar,Dim,Mode,Options>::pretranslate(const MatrixBase<OtherDerived> &other)
851 EIGEN_STATIC_ASSERT_VECTOR_SPECIFIC_SIZE(OtherDerived,int(Dim))
853 affine() += other * m_matrix.row(Dim);
867 * - a Dim x Dim matrix expression,
876 template<typename Scalar, int Dim, int Mode, int Options>
878 Transform<Scalar,Dim,Mode,Options>&
879 Transform<Scalar,Dim,Mode,Options>::rotate(const RotationType& rotation)
881 linearExt() *= internal::toRotationMatrix<Scalar,Dim>(rotation);
892 template<typename Scalar, int Dim, int Mode, int Options>
894 Transform<Scalar,Dim,Mode,Options>&
895 Transform<Scalar,Dim,Mode,Options>::prerotate(const RotationType& rotation)
897 m_matrix.template block<Dim,HDim>(0,0) = internal::toRotationMatrix<Scalar,Dim>(rotation)
898 * m_matrix.template block<Dim,HDim>(0,0);
907 template<typename Scalar, int Dim, int Mode, int Options>
908 Transform<Scalar,Dim,Mode,Options>&
909 Transform<Scalar,Dim,Mode,Options>::shear(const Scalar& sx, const Scalar& sy)
911 EIGEN_STATIC_ASSERT(int(Dim)==2, YOU_MADE_A_PROGRAMMING_MISTAKE)
923 template<typename Scalar, int Dim, int Mode, int Options>
924 Transform<Scalar,Dim,Mode,Options>&
925 Transform<Scalar,Dim,Mode,Options>::preshear(const Scalar& sx, const Scalar& sy)
927 EIGEN_STATIC_ASSERT(int(Dim)==2, YOU_MADE_A_PROGRAMMING_MISTAKE)
929 m_matrix.template block<Dim,HDim>(0,0) = LinearMatrixType(1, sx, sy, 1) * m_matrix.template block<Dim,HDim>(0,0);
937 template<typename Scalar, int Dim, int Mode, int Options>
938 inline Transform<Scalar,Dim,Mode,Options>& Transform<Scalar,Dim,Mode,Options>::operator=(const TranslationType& t)
946 template<typename Scalar, int Dim, int Mode, int Options>
947 inline Transform<Scalar,Dim,Mode,Options> Transform<Scalar,Dim,Mode,Options>::operator*(const TranslationType& t) const
954 template<typename Scalar, int Dim, int Mode, int Options>
955 inline Transform<Scalar,Dim,Mode,Options>& Transform<Scalar,Dim,Mode,Options>::operator=(const UniformScaling<Scalar>& s)
963 template<typename Scalar, int Dim, int Mode, int Options>
965 inline Transform<Scalar,Dim,Mode,Options>& Transform<Scalar,Dim,Mode,Options>::operator=(const RotationBase<Derived,Dim>& r)
967 linear() = internal::toRotationMatrix<Scalar,Dim>(r);
973 template<typename Scalar, int Dim, int Mode, int Options>
975 inline Transform<Scalar,Dim,Mode,Options> Transform<Scalar,Dim,Mode,Options>::operator*(const RotationBase<Derived,Dim>& r) const
993 template<typename Scalar, int Dim, int Mode, int Options>
994 const typename Transform<Scalar,Dim,Mode,Options>::LinearMatrixType
995 Transform<Scalar,Dim,Mode,Options>::rotation() const
1014 template<typename Scalar, int Dim, int Mode, int Options>
1016 void Transform<Scalar,Dim,Mode,Options>::computeRotationScaling(RotationMatrixType *rotation, ScalingMatrixType *scaling) const
1043 template<typename Scalar, int Dim, int Mode, int Options>
1045 void Transform<Scalar,Dim,Mode,Options>::computeScalingRotation(ScalingMatrixType *scaling, RotationMatrixType *rotation) const
1064 template<typename Scalar, int Dim, int Mode, int Options>
1066 Transform<Scalar,Dim,Mode,Options>&
1067 Transform<Scalar,Dim,Mode,Options>::fromPositionOrientationScale(const MatrixBase<PositionDerived> &position,
1070 linear() = internal::toRotationMatrix<Scalar,Dim>(orientation);
1085 static const int Dim = MatrixType::ColsAtCompileTime-1;
1086 mat.template block<1,Dim>(Dim,0).setZero();
1087 mat.coeffRef(Dim,Dim) = typename MatrixType::Scalar(1);
1137 template<typename Scalar, int Dim, int Mode, int Options>
1138 Transform<Scalar,Dim,Mode,Options>
1139 Transform<Scalar,Dim,Mode,Options>::inverse(TransformTraits hint) const
1150 res.matrix().template topLeftCorner<Dim,Dim>() = linear().transpose();
1154 res.matrix().template topLeftCorner<Dim,Dim>() = linear().inverse();
1161 res.matrix().template topRightCorner<Dim,1>()
1162 = - res.matrix().template topLeftCorner<Dim,Dim>() * translation();
1179 { return m.template block<TransformType::Dim,TransformType::HDim>(0,0); }
1181 { return m.template block<TransformType::Dim,TransformType::HDim>(0,0); }
1184 template<typename Scalar, int Dim, int Options>
1185 struct transform_take_affine_part<Transform<Scalar,Dim,AffineCompact, Options> > {
1186 typedef typename Transform<Scalar,Dim,AffineCompact,Options>::MatrixType MatrixType;
1195 template<typename Other, int Mode, int Options, int Dim, int HDim>
1196 struct transform_construct_from_matrix<Other, Mode,Options,Dim,HDim, Dim,Dim>
1198 static inline void run(Transform<typename Other::Scalar,Dim,Mode,Options> *transform, const Other& other)
1206 template<typename Other, int Mode, int Options, int Dim, int HDim>
1207 struct transform_construct_from_matrix<Other, Mode,Options,Dim,HDim, Dim,HDim>
1209 static inline void run(Transform<typename Other::Scalar,Dim,Mode,Options> *transform, const Other& other)
1216 template<typename Other, int Mode, int Options, int Dim, int HDim>
1217 struct transform_construct_from_matrix<Other, Mode,Options,Dim,HDim, HDim,HDim>
1219 static inline void run(Transform<typename Other::Scalar,Dim,Mode,Options> *transform, const Other& other)
1223 template<typename Other, int Options, int Dim, int HDim>
1224 struct transform_construct_from_matrix<Other, AffineCompact,Options,Dim,HDim, HDim,HDim>
1226 static inline void run(Transform<typename Other::Scalar,Dim,AffineCompact,Options> *transform, const Other& other)
1227 { transform->matrix() = other.template block<Dim,HDim>(0,0); }
1262 Dim = TransformType::Dim,
1274 typedef Block<ResultType, Dim, OtherCols, int(MatrixType::RowsAtCompileTime)==Dim> TopLeftLhs;
1277 TopLeftLhs(res, 0, 0, Dim, other.cols()).noalias() = T.affine() * other;
1288 Dim = TransformType::Dim,
1298 EIGEN_STATIC_ASSERT(OtherRows==Dim, YOU_MIXED_MATRICES_OF_DIFFERENT_SIZES);
1300 typedef Block<ResultType, Dim, OtherCols, true> TopLeftLhs;
1302 TopLeftLhs(res, 0, 0, Dim, other.cols()).noalias() += T.linear() * other;
1313 template<typename Other,int Mode, int Options, int Dim, int HDim>
1314 struct transform_left_product_impl<Other,Mode,Options,Dim,HDim, HDim,HDim>
1316 typedef Transform<typename Other::Scalar,Dim,Mode,Options> TransformType;
1318 typedef Transform<typename Other::Scalar,Dim,Projective,Options> ResultType;
1324 template<typename Other, int Options, int Dim, int HDim>
1325 struct transform_left_product_impl<Other,AffineCompact,Options,Dim,HDim, HDim,HDim>
1327 typedef Transform<typename Other::Scalar,Dim,AffineCompact,Options> TransformType;
1329 typedef Transform<typename Other::Scalar,Dim,Projective,Options> ResultType;
1333 res.matrix().noalias() = other.template block<HDim,Dim>(0,0) * tr.matrix();
1334 res.matrix().col(Dim) += other.col(Dim);
1340 template<typename Other,int Mode, int Options, int Dim, int HDim>
1341 struct transform_left_product_impl<Other,Mode,Options,Dim,HDim, Dim,HDim>
1343 typedef Transform<typename Other::Scalar,Dim,Mode,Options> TransformType;
1350 res.matrix().row(Dim) = tr.matrix().row(Dim);
1356 template<typename Other, int Options, int Dim, int HDim>
1357 struct transform_left_product_impl<Other,AffineCompact,Options,Dim,HDim, Dim,HDim>
1359 typedef Transform<typename Other::Scalar,Dim,AffineCompact,Options> TransformType;
1365 res.matrix().noalias() = other.template block<Dim,Dim>(0,0) * tr.matrix();
1366 res.translation() += other.col(Dim);
1372 template<typename Other,int Mode, int Options, int Dim, int HDim>
1373 struct transform_left_product_impl<Other,Mode,Options,Dim,HDim, Dim,Dim>
1375 typedef Transform<typename Other::Scalar,Dim,Mode,Options> TransformType;
1382 res.matrix().row(Dim) = tr.matrix().row(Dim);
1383 res.matrix().template topRows<Dim>().noalias()
1384 = other * tr.matrix().template topRows<Dim>();
1393 template<typename Scalar, int Dim, int LhsMode, int LhsOptions, int RhsMode, int RhsOptions>
1394 struct transform_transform_product_impl<Transform<Scalar,Dim,LhsMode,LhsOptions>,Transform<Scalar,Dim,RhsMode,RhsOptions>,false >
1397 typedef Transform<Scalar,Dim,LhsMode,LhsOptions> Lhs;
1398 typedef Transform<Scalar,Dim,RhsMode,RhsOptions> Rhs;
1399 typedef Transform<Scalar,Dim,ResultMode,LhsOptions> ResultType;
1410 template<typename Scalar, int Dim, int LhsMode, int LhsOptions, int RhsMode, int RhsOptions>
1411 struct transform_transform_product_impl<Transform<Scalar,Dim,LhsMode,LhsOptions>,Transform<Scalar,Dim,RhsMode,RhsOptions>,true >
1413 typedef Transform<Scalar,Dim,LhsMode,LhsOptions> Lhs;
1414 typedef Transform<Scalar,Dim,RhsMode,RhsOptions> Rhs;
1415 typedef Transform<Scalar,Dim,Projective> ResultType;
1422 template<typename Scalar, int Dim, int LhsOptions, int RhsOptions>
1423 struct transform_transform_product_impl<Transform<Scalar,Dim,AffineCompact,LhsOptions>,Transform<Scalar,Dim,Projective,RhsOptions>,true >
1425 typedef Transform<Scalar,Dim,AffineCompact,LhsOptions> Lhs;
1426 typedef Transform<Scalar,Dim,Projective,RhsOptions> Rhs;
1427 typedef Transform<Scalar,Dim,Projective> ResultType;
1431 res.matrix().template topRows<Dim>() = lhs.matrix() * rhs.matrix();
1432 res.matrix().row(Dim) = rhs.matrix().row(Dim);
1437 template<typename Scalar, int Dim, int LhsOptions, int RhsOptions>
1438 struct transform_transform_product_impl<Transform<Scalar,Dim,Projective,LhsOptions>,Transform<Scalar,Dim,AffineCompact,RhsOptions>,true >
1440 typedef Transform<Scalar,Dim,Projective,LhsOptions> Lhs;
1441 typedef Transform<Scalar,Dim,AffineCompact,RhsOptions> Rhs;
1442 typedef Transform<Scalar,Dim,Projective> ResultType;
1445 ResultType res(lhs.matrix().template leftCols<Dim>() * rhs.matrix());
1446 res.matrix().col(Dim) += lhs.matrix().col(Dim);