Go to the documentation of this file.
10 #ifndef EIGEN_HOMOGENEOUS_H
11 #define EIGEN_HOMOGENEOUS_H
32 template<
typename MatrixType,
int Direction>
40 RowsPlusOne = (MatrixType::RowsAtCompileTime !=
Dynamic) ?
41 int(MatrixType::RowsAtCompileTime) + 1 :
Dynamic,
42 ColsPlusOne = (MatrixType::ColsAtCompileTime !=
Dynamic) ?
43 int(MatrixType::ColsAtCompileTime) + 1 :
Dynamic,
44 RowsAtCompileTime = Direction==
Vertical ? RowsPlusOne : MatrixType::RowsAtCompileTime,
45 ColsAtCompileTime = Direction==
Horizontal ? ColsPlusOne : MatrixType::ColsAtCompileTime,
46 MaxRowsAtCompileTime = RowsAtCompileTime,
47 MaxColsAtCompileTime = ColsAtCompileTime,
60 template<
typename MatrixType,
int _Direction>
class Homogeneous
82 template<
typename Rhs>
90 template<
typename Lhs>
friend
98 template<
typename Scalar,
int Dim,
int Mode,
int Options>
friend
106 template<
typename Func>
130 template<
typename Derived>
148 template<
typename ExpressionType,
int Direction>
172 template<
typename Derived>
178 ColsAtCompileTime==1?
size()-1:1,
179 ColsAtCompileTime==1?1:
size()-1) / coeff(
size()-1);
196 template<
typename ExpressionType,
int Direction>
204 Direction==
Vertical ? HNormalized_SizeMinusOne : 1,
205 Direction==
Horizontal ? HNormalized_SizeMinusOne : 1>
217 template<
typename MatrixOrTransformType>
220 typedef MatrixOrTransformType
type;
224 template<
typename Scalar,
int Dim,
int Mode,
int Options>
232 template<
typename Scalar,
int Dim,
int Options>
240 template<
typename MatrixType,
typename Lhs>
248 LhsMatrixTypeCleaned::RowsAtCompileTime,
249 MatrixTypeCleaned::ColsAtCompileTime,
250 MatrixTypeCleaned::PlainObject::Options,
251 LhsMatrixTypeCleaned::MaxRowsAtCompileTime,
255 template<
typename MatrixType,
typename Lhs>
257 :
public ReturnByValue<homogeneous_left_product_impl<Homogeneous<MatrixType,Vertical>,Lhs> >
276 LhsMatrixTypeNested::RowsAtCompileTime,
277 LhsMatrixTypeNested::ColsAtCompileTime==
Dynamic?
Dynamic:LhsMatrixTypeNested::ColsAtCompileTime-1>
278 (m_lhs,0,0,m_lhs.rows(),m_lhs.cols()-1) * m_rhs;
279 dst += m_lhs.col(m_lhs.cols()-1).rowwise()
280 .template replicate<MatrixType::ColsAtCompileTime>(m_rhs.cols());
283 typename LhsMatrixTypeCleaned::Nested
m_lhs;
287 template<
typename MatrixType,
typename Rhs>
291 MatrixType::RowsAtCompileTime,
292 Rhs::ColsAtCompileTime,
293 MatrixType::PlainObject::Options,
294 MatrixType::MaxRowsAtCompileTime,
298 template<
typename MatrixType,
typename Rhs>
300 :
public ReturnByValue<homogeneous_right_product_impl<Homogeneous<MatrixType,Horizontal>,Rhs> >
304 : m_lhs(lhs), m_rhs(rhs)
314 RhsNested::RowsAtCompileTime==
Dynamic?
Dynamic:RhsNested::RowsAtCompileTime-1,
315 RhsNested::ColsAtCompileTime>
316 (m_rhs,0,0,m_rhs.rows()-1,m_rhs.cols());
317 dst += m_rhs.row(m_rhs.rows()-1).colwise()
318 .template replicate<MatrixType::RowsAtCompileTime>(m_lhs.rows());
325 template<
typename ArgType,
int Direction>
335 template<
typename ArgType,
int Direction>
337 :
evaluator<typename Homogeneous<ArgType,Direction>::PlainObject >
346 ::new (
static_cast<Base*
>(
this))
Base(m_temp);
354 template<
typename DstXprType,
typename ArgType,
typename Scalar>
362 if((dst.rows()!=dstRows) || (dst.cols()!=dstCols))
363 dst.resize(dstRows, dstCols);
366 dst.row(dst.rows()-1).setOnes();
371 template<
typename DstXprType,
typename ArgType,
typename Scalar>
379 if((dst.rows()!=dstRows) || (dst.cols()!=dstCols))
380 dst.resize(dstRows, dstCols);
383 dst.col(dst.cols()-1).setOnes();
387 template<
typename LhsArg,
typename Rhs,
int ProductTag>
390 template<
typename Dest>
397 template<
typename Lhs,
typename Rhs>
401 Dim = Lhs::ColsAtCompileTime,
412 template<
typename Lhs,
typename Rhs,
int ProductTag>
414 :
public evaluator<typename homogeneous_right_product_refactoring_helper<typename Lhs::NestedExpression,Rhs>::Xpr>
423 :
Base( xpr.lhs().nestedExpression() .lazyProduct( xpr.rhs().template
topRows<
helper::Dim>(xpr.lhs().nestedExpression().
cols()) )
428 template<
typename Lhs,
typename RhsArg,
int ProductTag>
431 template<
typename Dest>
440 template<
typename Lhs,
typename RhsArg,
int ProductTag>
443 template<
typename Dest>
446 dst.noalias() = lhs * rhs.eval();
450 template<
typename Lhs,
typename Rhs>
454 Dim = Rhs::RowsAtCompileTime,
465 template<
typename Lhs,
typename Rhs,
int ProductTag>
467 :
public evaluator<typename homogeneous_left_product_refactoring_helper<Lhs,typename Rhs::NestedExpression>::Xpr>
476 :
Base( xpr.lhs().template
leftCols<
helper::Dim>(xpr.rhs().nestedExpression().
rows()) .lazyProduct( xpr.rhs().nestedExpression() )
481 template<
typename Scalar,
int Dim,
int Mode,
int Options,
typename RhsArg,
int ProductTag>
485 template<
typename Dest>
492 template<
typename ExpressionType,
int S
ide,
bool Transposed>
501 #endif // EIGEN_HOMOGENEOUS_H
helper::Xpr RefactoredXpr
static EIGEN_DEVICE_FUNC void evalTo(Dest &dst, const Homogeneous< LhsArg, Horizontal > &lhs, const Rhs &rhs)
Replicate< const ConstantColumn, Rows, 1 > ConstantBlock
#define EIGEN_DEVICE_FUNC
Namespace containing all symbols from the Eigen library.
Homogeneous< ArgType, Horizontal > SrcXprType
homogeneous_right_product_refactoring_helper< typename Lhs::NestedExpression, Rhs > helper
storage_kind_to_evaluator_kind< typename ArgType::StorageKind >::Kind Kind
Replicate< const ConstantColumn, 1, Cols > ConstantBlock
EIGEN_DEVICE_FUNC EIGEN_STRONG_INLINE internal::result_of< Func(Scalar, Scalar)>::type redux(const Func &func) const
Expression of a fixed-size or dynamic-size block.
static void evalTo(Dest &dst, const Lhs &lhs, const Homogeneous< RhsArg, Vertical > &rhs)
Generic expression where a coefficient-wise binary operator is applied to two expressions.
EIGEN_DEVICE_FUNC EIGEN_CONSTEXPR Index cols() const EIGEN_NOEXCEPT
EIGEN_DEVICE_FUNC homogeneous_right_product_impl(const MatrixType &lhs, const Rhs &rhs)
helper::Xpr RefactoredXpr
set noclip points set clip one set noclip two set bar set border lt lw set xdata set ydata set zdata set x2data set y2data set boxwidth set dummy x
Rhs::ConstRowXpr ConstantColumn
const unsigned int RowMajorBit
ref_selector< MatrixType >::type MatrixTypeNested
remove_all< typename Rhs::Nested >::type RhsNested
MatrixOrTransformType type
#define EIGEN_DENSE_PUBLIC_INTERFACE(Derived)
#define EIGEN_STATIC_ASSERT_VECTOR_ONLY(TYPE)
make_proper_matrix_type< typename traits< MatrixType >::Scalar, MatrixType::RowsAtCompileTime, Rhs::ColsAtCompileTime, MatrixType::PlainObject::Options, MatrixType::MaxRowsAtCompileTime, Rhs::MaxColsAtCompileTime >::type ReturnType
remove_all< MatrixType >::type MatrixTypeCleaned
evaluator< PlainObject > Base
EIGEN_DEVICE_FUNC EIGEN_CONSTEXPR Index rows() const EIGEN_NOEXCEPT
const EIGEN_DEVICE_FUNC Product< Homogeneous, Rhs > operator*(const MatrixBase< Rhs > &rhs) const
Expression of one (or a set of) homogeneous vector(s)
traits< MatrixType >::StorageKind StorageKind
EIGEN_DEVICE_FUNC EIGEN_STRONG_INLINE NColsBlockXpr< internal::get_fixed_value< NColsType >::value >::Type leftCols(NColsType n)
CwiseBinaryOp< internal::scalar_sum_op< typename Lhs::Scalar, typename Rhs::Scalar >, const LinearProduct, const ConstantBlock > Xpr
Lhs::template ConstNColsBlockXpr< Dim >::Type LinearBlockConst
Rhs::template ConstNRowsBlockXpr< Dim >::Type LinearBlockConst
EIGEN_DEVICE_FUNC EIGEN_STRONG_INLINE NRowsBlockXpr< internal::get_fixed_value< NRowsType >::value >::Type topRows(NRowsType n)
Homogeneous< ArgType, Vertical > SrcXprType
EIGEN_DEVICE_FUNC EIGEN_CONSTEXPR Index cols() const EIGEN_NOEXCEPT
MatrixType NestedExpression
EIGEN_DEVICE_FUNC void evalTo(Dest &dst) const
LhsMatrixTypeCleaned::Nested m_lhs
const EIGEN_DEVICE_FUNC HNormalizedReturnType hnormalized() const
column or row-wise homogeneous normalization
take_matrix_for_product< Lhs >::type LhsMatrixType
EIGEN_DEVICE_FUNC EIGEN_CONSTEXPR Index cols() const EIGEN_NOEXCEPT
Product< Lhs, LinearBlock, LazyProduct > LinearProduct
#define EIGEN_STRONG_INLINE
Expression of the multiple replication of a matrix or vector.
make_proper_matrix_type< typename traits< MatrixTypeCleaned >::Scalar, LhsMatrixTypeCleaned::RowsAtCompileTime, MatrixTypeCleaned::ColsAtCompileTime, MatrixTypeCleaned::PlainObject::Options, LhsMatrixTypeCleaned::MaxRowsAtCompileTime, MatrixTypeCleaned::MaxColsAtCompileTime >::type ReturnType
static EIGEN_DEVICE_FUNC void run(DstXprType &dst, const SrcXprType &src, const internal::assign_op< Scalar, typename ArgType::Scalar > &)
Homogeneous< ArgType, Direction > XprType
EIGEN_DEVICE_FUNC product_evaluator(const XprType &xpr)
Expression of the product of two arbitrary matrices or vectors.
EIGEN_DEVICE_FUNC homogeneous_left_product_impl(const Lhs &lhs, const MatrixType &rhs)
Lhs::ConstColXpr ConstantColumn
Product< Lhs, Rhs, LazyProduct > XprType
const EIGEN_DEVICE_FUNC NestedExpression & nestedExpression() const
homogeneous_left_product_refactoring_helper< Lhs, typename Rhs::NestedExpression > helper
EIGEN_DEVICE_FUNC HomogeneousReturnType homogeneous() const
Map< Matrix< T, Dynamic, Dynamic, ColMajor >, 0, OuterStride<> > matrix(T *data, int rows, int cols, int stride)
XprType::PlainObject PlainObject
EIGEN_DEVICE_FUNC void evalTo(Dest &dst) const
const EIGEN_DEVICE_FUNC HNormalizedReturnType hnormalized() const
homogeneous normalization
const typedef Block< const Derived, internal::traits< Derived >::RowsAtCompileTime, 1, !IsRowMajor > ConstColXpr
helper::ConstantBlock ConstantBlock
Product< LinearBlock, Rhs, LazyProduct > LinearProduct
remove_all< LhsMatrixType >::type LhsMatrixTypeCleaned
static EIGEN_DEVICE_FUNC void evalTo(Dest &dst, const Lhs &lhs, const Homogeneous< RhsArg, Vertical > &rhs)
evaluator< RefactoredXpr > Base
remove_all< typename LhsMatrixTypeCleaned::Nested >::type LhsMatrixTypeNested
EIGEN_DEVICE_FUNC unary_evaluator(const XprType &op)
MatrixBase< Homogeneous > Base
remove_const< LinearBlockConst >::type LinearBlock
static const EIGEN_DEVICE_FUNC type & run(const type &x)
traits< homogeneous_left_product_impl >::LhsMatrixType LhsMatrixType
The matrix class, also used for vectors and row-vectors.
Base class for all dense matrices, vectors, and expressions.
helper::ConstantBlock ConstantBlock
CwiseBinaryOp< internal::scalar_sum_op< typename Lhs::Scalar, typename Rhs::Scalar >, const LinearProduct, const ConstantBlock > Xpr
EIGEN_DEVICE_FUNC EIGEN_CONSTEXPR Index rows() const EIGEN_NOEXCEPT
EIGEN_DEVICE_FUNC HomogeneousReturnType homogeneous() const
const unsigned int HereditaryBits
evaluator< RefactoredXpr > Base
const typedef Block< const Derived, 1, internal::traits< Derived >::ColsAtCompileTime, IsRowMajor > ConstRowXpr
EIGEN_DEVICE_FUNC product_evaluator(const XprType &xpr)
Product< Lhs, Rhs, LazyProduct > XprType
static EIGEN_DEVICE_FUNC void run(DstXprType &dst, const SrcXprType &src, const internal::assign_op< Scalar, typename ArgType::Scalar > &)
EIGEN_DEVICE_FUNC EIGEN_CONSTEXPR Index rows() const EIGEN_NOEXCEPT
remove_all< LhsMatrixType >::type LhsMatrixTypeCleaned
remove_const< LinearBlockConst >::type LinearBlock
remove_reference< MatrixTypeNested >::type _MatrixTypeNested
MatrixType::Nested m_matrix
EIGEN_DEFAULT_DENSE_INDEX_TYPE Index
The Index type as used for the API.
gtsam
Author(s):
autogenerated on Sat Nov 16 2024 04:02:25