Expression of one (or a set of) homogeneous vector(s) More...
#include <Homogeneous.h>
Public Types | |
typedef internal::traits < Homogeneous< MatrixType, _Direction > >::Index | Index |
The type of indices. | |
typedef Matrix< typename internal::traits< Homogeneous < MatrixType, _Direction > >::Scalar, internal::traits < Homogeneous< MatrixType, _Direction > >::RowsAtCompileTime, internal::traits< Homogeneous < MatrixType, _Direction > >::ColsAtCompileTime, AutoAlign|(internal::traits < Homogeneous< MatrixType, _Direction > >::Flags &RowMajorBit?RowMajor:ColMajor), internal::traits< Homogeneous < MatrixType, _Direction > >::MaxRowsAtCompileTime, internal::traits< Homogeneous < MatrixType, _Direction > >::MaxColsAtCompileTime > | PlainObject |
The plain matrix type corresponding to this expression. | |
Public Member Functions | |
ArrayWrapper< Homogeneous < MatrixType, _Direction > > | array () |
const CwiseBinaryOp < CustomBinaryOp, const Homogeneous< MatrixType, _Direction >, const OtherDerived > | binaryExpr (const Eigen::MatrixBase< OtherDerived > &other, const CustomBinaryOp &func=CustomBinaryOp()) const |
Block< Homogeneous< MatrixType, _Direction > > | block (Index startRow, Index startCol, Index blockRows, Index blockCols) |
const Block< const Homogeneous < MatrixType, _Direction > > | block (Index startRow, Index startCol, Index blockRows, Index blockCols) const |
Block< Homogeneous< MatrixType, _Direction >, BlockRows, BlockCols > | block (Index startRow, Index startCol) |
const Block< const Homogeneous < MatrixType, _Direction > , BlockRows, BlockCols > | block (Index startRow, Index startCol) const |
Block< Homogeneous< MatrixType, _Direction > > | bottomLeftCorner (Index cRows, Index cCols) |
const Block< const Homogeneous < MatrixType, _Direction > > | bottomLeftCorner (Index cRows, Index cCols) const |
Block< Homogeneous< MatrixType, _Direction >, CRows, CCols > | bottomLeftCorner () |
const Block< const Homogeneous < MatrixType, _Direction > , CRows, CCols > | bottomLeftCorner () const |
Block< Homogeneous< MatrixType, _Direction > > | bottomRightCorner (Index cRows, Index cCols) |
const Block< const Homogeneous < MatrixType, _Direction > > | bottomRightCorner (Index cRows, Index cCols) const |
Block< Homogeneous< MatrixType, _Direction >, CRows, CCols > | bottomRightCorner () |
const Block< const Homogeneous < MatrixType, _Direction > , CRows, CCols > | bottomRightCorner () const |
RowsBlockXpr | bottomRows (Index n) |
ConstRowsBlockXpr | bottomRows (Index n) const |
NRowsBlockXpr< N >::Type | bottomRows () |
ConstNRowsBlockXpr< N >::Type | bottomRows () const |
internal::cast_return_type < Homogeneous< MatrixType, _Direction >, const CwiseUnaryOp < internal::scalar_cast_op < typename internal::traits < Homogeneous< MatrixType, _Direction > >::Scalar, NewType >, const Homogeneous < MatrixType, _Direction > > >::type | cast () const |
ColXpr | col (Index i) |
ConstColXpr | col (Index i) const |
ConjugateReturnType | conjugate () const |
const CwiseUnaryOp < internal::scalar_abs_op < Scalar >, const Homogeneous < MatrixType, _Direction > > | cwiseAbs () const |
const CwiseUnaryOp < internal::scalar_abs2_op < Scalar >, const Homogeneous < MatrixType, _Direction > > | cwiseAbs2 () const |
const CwiseBinaryOp < std::equal_to< Scalar > , const Homogeneous < MatrixType, _Direction > , const OtherDerived > | cwiseEqual (const Eigen::MatrixBase< OtherDerived > &other) const |
const CwiseUnaryOp < std::binder1st < std::equal_to< Scalar > >, const Homogeneous < MatrixType, _Direction > > | cwiseEqual (const Scalar &s) const |
const CwiseUnaryOp < internal::scalar_inverse_op < Scalar >, const Homogeneous < MatrixType, _Direction > > | cwiseInverse () const |
const CwiseBinaryOp < internal::scalar_max_op < Scalar >, const Homogeneous < MatrixType, _Direction > , const OtherDerived > | cwiseMax (const Eigen::MatrixBase< OtherDerived > &other) const |
const CwiseBinaryOp < internal::scalar_max_op < Scalar >, const Homogeneous < MatrixType, _Direction > , const ConstantReturnType > | cwiseMax (const Scalar &other) const |
const CwiseBinaryOp < internal::scalar_min_op < Scalar >, const Homogeneous < MatrixType, _Direction > , const OtherDerived > | cwiseMin (const Eigen::MatrixBase< OtherDerived > &other) const |
const CwiseBinaryOp < internal::scalar_min_op < Scalar >, const Homogeneous < MatrixType, _Direction > , const ConstantReturnType > | cwiseMin (const Scalar &other) const |
const CwiseBinaryOp < std::not_equal_to< Scalar > , const Homogeneous < MatrixType, _Direction > , const OtherDerived > | cwiseNotEqual (const Eigen::MatrixBase< OtherDerived > &other) const |
const CwiseBinaryOp < internal::scalar_quotient_op < Scalar >, const Homogeneous < MatrixType, _Direction > , const OtherDerived > | cwiseQuotient (const Eigen::MatrixBase< OtherDerived > &other) const |
const CwiseUnaryOp < internal::scalar_sqrt_op < Scalar >, const Homogeneous < MatrixType, _Direction > > | cwiseSqrt () const |
Index | diagonalSize () const |
const | EIGEN_CWISE_PRODUCT_RETURN_TYPE (Homogeneous< MatrixType, _Direction >, OtherDerived) cwiseProduct(const Eigen |
EvalReturnType | eval () const |
const ImagReturnType | imag () const |
NonConstImagReturnType | imag () |
Index | innerSize () const |
ColsBlockXpr | leftCols (Index n) |
ConstColsBlockXpr | leftCols (Index n) const |
NColsBlockXpr< N >::Type | leftCols () |
ConstNColsBlockXpr< N >::Type | leftCols () const |
ColsBlockXpr | middleCols (Index startCol, Index numCols) |
ConstColsBlockXpr | middleCols (Index startCol, Index numCols) const |
NColsBlockXpr< N >::Type | middleCols (Index startCol) |
ConstNColsBlockXpr< N >::Type | middleCols (Index startCol) const |
RowsBlockXpr | middleRows (Index startRow, Index numRows) |
ConstRowsBlockXpr | middleRows (Index startRow, Index numRows) const |
NRowsBlockXpr< N >::Type | middleRows (Index startRow) |
ConstNRowsBlockXpr< N >::Type | middleRows (Index startRow) const |
Index | nonZeros () const |
bool | operator!= (const MatrixBase< OtherDerived > &other) const |
const ScalarMultipleReturnType | operator* (const Scalar &scalar) const |
const CwiseUnaryOp < internal::scalar_multiple2_op < Scalar, std::complex< Scalar > >, const Homogeneous < MatrixType, _Direction > > | operator* (const std::complex< Scalar > &scalar) const |
const CwiseUnaryOp < internal::scalar_opposite_op < typename internal::traits < Homogeneous< MatrixType, _Direction > >::Scalar > , const Homogeneous < MatrixType, _Direction > > | operator- () const |
const CwiseUnaryOp < internal::scalar_quotient1_op < typename internal::traits < Homogeneous< MatrixType, _Direction > >::Scalar > , const Homogeneous < MatrixType, _Direction > > | operator/ (const Scalar &scalar) const |
bool | operator== (const MatrixBase< OtherDerived > &other) const |
Index | outerSize () const |
RealReturnType | real () const |
NonConstRealReturnType | real () |
void | resize (Index size) |
void | resize (Index rows, Index cols) |
ColsBlockXpr | rightCols (Index n) |
ConstColsBlockXpr | rightCols (Index n) const |
NColsBlockXpr< N >::Type | rightCols () |
ConstNColsBlockXpr< N >::Type | rightCols () const |
RowXpr | row (Index i) |
ConstRowXpr | row (Index i) const |
void | swap (const DenseBase< OtherDerived > &other, int=OtherDerived::ThisConstantIsPrivateInPlainObjectBase) |
void | swap (PlainObjectBase< OtherDerived > &other) |
Block< Homogeneous< MatrixType, _Direction > > | topLeftCorner (Index cRows, Index cCols) |
const Block< const Homogeneous < MatrixType, _Direction > > | topLeftCorner (Index cRows, Index cCols) const |
Block< Homogeneous< MatrixType, _Direction >, CRows, CCols > | topLeftCorner () |
const Block< const Homogeneous < MatrixType, _Direction > , CRows, CCols > | topLeftCorner () const |
Block< Homogeneous< MatrixType, _Direction > > | topRightCorner (Index cRows, Index cCols) |
const Block< const Homogeneous < MatrixType, _Direction > > | topRightCorner (Index cRows, Index cCols) const |
Block< Homogeneous< MatrixType, _Direction >, CRows, CCols > | topRightCorner () |
const Block< const Homogeneous < MatrixType, _Direction > , CRows, CCols > | topRightCorner () const |
RowsBlockXpr | topRows (Index n) |
ConstRowsBlockXpr | topRows (Index n) const |
NRowsBlockXpr< N >::Type | topRows () |
ConstNRowsBlockXpr< N >::Type | topRows () const |
const CwiseUnaryOp < CustomUnaryOp, const Homogeneous< MatrixType, _Direction > > | unaryExpr (const CustomUnaryOp &func=CustomUnaryOp()) const |
Apply a unary operator coefficient-wise. | |
const CwiseUnaryView < CustomViewOp, const Homogeneous< MatrixType, _Direction > > | unaryViewExpr (const CustomViewOp &func=CustomViewOp()) const |
CoeffReturnType | value () const |
Expression of one (or a set of) homogeneous vector(s)
This is defined in the Geometry module.
#include <Eigen/Geometry>
MatrixType | the type of the object in which we are making homogeneous |
This class represents an expression of one (or a set of) homogeneous vector(s). It is the return type of MatrixBase::homogeneous() and most of the time this is the only way it is used.
typedef internal::traits<Homogeneous< MatrixType, _Direction > >::Index Index [inherited] |
The type of indices.
To change this, #define
the preprocessor symbol EIGEN_DEFAULT_DENSE_INDEX_TYPE
.
typedef Matrix<typename internal::traits<Homogeneous< MatrixType, _Direction > >::Scalar, internal::traits<Homogeneous< MatrixType, _Direction > >::RowsAtCompileTime, internal::traits<Homogeneous< MatrixType, _Direction > >::ColsAtCompileTime, AutoAlign | (internal::traits<Homogeneous< MatrixType, _Direction > >::Flags&RowMajorBit ? RowMajor : ColMajor), internal::traits<Homogeneous< MatrixType, _Direction > >::MaxRowsAtCompileTime, internal::traits<Homogeneous< MatrixType, _Direction > >::MaxColsAtCompileTime > PlainObject [inherited] |
The plain matrix type corresponding to this expression.
This is not necessarily exactly the return type of eval(). In the case of plain matrices, the return type of eval() is a const reference to a matrix, not a matrix! It is however guaranteed that the return type of eval() is either PlainObject or const PlainObject&.
ArrayWrapper<Homogeneous< MatrixType, _Direction > > array | ( | ) | [inline, inherited] |
const CwiseBinaryOp<CustomBinaryOp, const Homogeneous< MatrixType, _Direction > , const OtherDerived> binaryExpr | ( | const Eigen::MatrixBase< OtherDerived > & | other, |
const CustomBinaryOp & | func = CustomBinaryOp() |
||
) | const [inline, inherited] |
*this
and other *this
and other The template parameter CustomBinaryOp is the type of the functor of the custom operator (see class CwiseBinaryOp for an example)
Here is an example illustrating the use of custom functors:
#include <Eigen/Core> #include <iostream> using namespace Eigen; using namespace std; // define a custom template binary functor template<typename Scalar> struct MakeComplexOp { EIGEN_EMPTY_STRUCT_CTOR(MakeComplexOp) typedef complex<Scalar> result_type; complex<Scalar> operator()(const Scalar& a, const Scalar& b) const { return complex<Scalar>(a,b); } }; int main(int, char**) { Matrix4d m1 = Matrix4d::Random(), m2 = Matrix4d::Random(); cout << m1.binaryExpr(m2, MakeComplexOp<double>()) << endl; return 0; }
Output:
(0.68,0.271) (0.823,-0.967) (-0.444,-0.687) (-0.27,0.998) (-0.211,0.435) (-0.605,-0.514) (0.108,-0.198) (0.0268,-0.563) (0.566,-0.717) (-0.33,-0.726) (-0.0452,-0.74) (0.904,0.0259) (0.597,0.214) (0.536,0.608) (0.258,-0.782) (0.832,0.678)
Block<Homogeneous< MatrixType, _Direction > > block | ( | Index | startRow, |
Index | startCol, | ||
Index | blockRows, | ||
Index | blockCols | ||
) | [inline, inherited] |
startRow | the first row in the block |
startCol | the first column in the block |
blockRows | the number of rows in the block |
blockCols | the number of columns in the block |
Example:
Matrix4i m = Matrix4i::Random(); cout << "Here is the matrix m:" << endl << m << endl; cout << "Here is m.block(1, 1, 2, 2):" << endl << m.block(1, 1, 2, 2) << endl; m.block(1, 1, 2, 2).setZero(); cout << "Now the matrix m is:" << endl << m << endl;
Output:
Here is the matrix m: 7 9 -5 -3 -2 -6 1 0 6 -3 0 9 6 6 3 9 Here is m.block(1, 1, 2, 2): -6 1 -3 0 Now the matrix m is: 7 9 -5 -3 -2 0 0 0 6 0 0 9 6 6 3 9
const Block<const Homogeneous< MatrixType, _Direction > > block | ( | Index | startRow, |
Index | startCol, | ||
Index | blockRows, | ||
Index | blockCols | ||
) | const [inline, inherited] |
This is the const version of block(Index,Index,Index,Index).
Block<Homogeneous< MatrixType, _Direction > , BlockRows, BlockCols> block | ( | Index | startRow, |
Index | startCol | ||
) | [inline, inherited] |
The template parameters BlockRows and BlockCols are the number of rows and columns in the block.
startRow | the first row in the block |
startCol | the first column in the block |
Example:
Matrix4i m = Matrix4i::Random(); cout << "Here is the matrix m:" << endl << m << endl; cout << "Here is m.block<2,2>(1,1):" << endl << m.block<2,2>(1,1) << endl; m.block<2,2>(1,1).setZero(); cout << "Now the matrix m is:" << endl << m << endl;
Output:
Here is the matrix m: 7 9 -5 -3 -2 -6 1 0 6 -3 0 9 6 6 3 9 Here is m.block<2,2>(1,1): -6 1 -3 0 Now the matrix m is: 7 9 -5 -3 -2 0 0 0 6 0 0 9 6 6 3 9
m.template block<3,3>(1,1);
const Block<const Homogeneous< MatrixType, _Direction > , BlockRows, BlockCols> block | ( | Index | startRow, |
Index | startCol | ||
) | const [inline, inherited] |
This is the const version of block<>(Index, Index).
Block<Homogeneous< MatrixType, _Direction > > bottomLeftCorner | ( | Index | cRows, |
Index | cCols | ||
) | [inline, inherited] |
cRows | the number of rows in the corner |
cCols | the number of columns in the corner |
Example:
Matrix4i m = Matrix4i::Random(); cout << "Here is the matrix m:" << endl << m << endl; cout << "Here is m.bottomLeftCorner(2, 2):" << endl; cout << m.bottomLeftCorner(2, 2) << endl; m.bottomLeftCorner(2, 2).setZero(); cout << "Now the matrix m is:" << endl << m << endl;
Output:
Here is the matrix m: 7 9 -5 -3 -2 -6 1 0 6 -3 0 9 6 6 3 9 Here is m.bottomLeftCorner(2, 2): 6 -3 6 6 Now the matrix m is: 7 9 -5 -3 -2 -6 1 0 0 0 0 9 0 0 3 9
const Block<const Homogeneous< MatrixType, _Direction > > bottomLeftCorner | ( | Index | cRows, |
Index | cCols | ||
) | const [inline, inherited] |
This is the const version of bottomLeftCorner(Index, Index).
Block<Homogeneous< MatrixType, _Direction > , CRows, CCols> bottomLeftCorner | ( | ) | [inline, inherited] |
The template parameters CRows and CCols are the number of rows and columns in the corner.
Example:
Matrix4i m = Matrix4i::Random(); cout << "Here is the matrix m:" << endl << m << endl; cout << "Here is m.bottomLeftCorner<2,2>():" << endl; cout << m.bottomLeftCorner<2,2>() << endl; m.bottomLeftCorner<2,2>().setZero(); cout << "Now the matrix m is:" << endl << m << endl;
Output:
Here is the matrix m: 7 9 -5 -3 -2 -6 1 0 6 -3 0 9 6 6 3 9 Here is m.bottomLeftCorner<2,2>(): 6 -3 6 6 Now the matrix m is: 7 9 -5 -3 -2 -6 1 0 0 0 0 9 0 0 3 9
const Block<const Homogeneous< MatrixType, _Direction > , CRows, CCols> bottomLeftCorner | ( | ) | const [inline, inherited] |
This is the const version of bottomLeftCorner<int, int>().
Block<Homogeneous< MatrixType, _Direction > > bottomRightCorner | ( | Index | cRows, |
Index | cCols | ||
) | [inline, inherited] |
cRows | the number of rows in the corner |
cCols | the number of columns in the corner |
Example:
Matrix4i m = Matrix4i::Random(); cout << "Here is the matrix m:" << endl << m << endl; cout << "Here is m.bottomRightCorner(2, 2):" << endl; cout << m.bottomRightCorner(2, 2) << endl; m.bottomRightCorner(2, 2).setZero(); cout << "Now the matrix m is:" << endl << m << endl;
Output:
Here is the matrix m: 7 9 -5 -3 -2 -6 1 0 6 -3 0 9 6 6 3 9 Here is m.bottomRightCorner(2, 2): 0 9 3 9 Now the matrix m is: 7 9 -5 -3 -2 -6 1 0 6 -3 0 0 6 6 0 0
const Block<const Homogeneous< MatrixType, _Direction > > bottomRightCorner | ( | Index | cRows, |
Index | cCols | ||
) | const [inline, inherited] |
This is the const version of bottomRightCorner(Index, Index).
Block<Homogeneous< MatrixType, _Direction > , CRows, CCols> bottomRightCorner | ( | ) | [inline, inherited] |
The template parameters CRows and CCols are the number of rows and columns in the corner.
Example:
Matrix4i m = Matrix4i::Random(); cout << "Here is the matrix m:" << endl << m << endl; cout << "Here is m.bottomRightCorner<2,2>():" << endl; cout << m.bottomRightCorner<2,2>() << endl; m.bottomRightCorner<2,2>().setZero(); cout << "Now the matrix m is:" << endl << m << endl;
Output:
Here is the matrix m: 7 9 -5 -3 -2 -6 1 0 6 -3 0 9 6 6 3 9 Here is m.bottomRightCorner<2,2>(): 0 9 3 9 Now the matrix m is: 7 9 -5 -3 -2 -6 1 0 6 -3 0 0 6 6 0 0
const Block<const Homogeneous< MatrixType, _Direction > , CRows, CCols> bottomRightCorner | ( | ) | const [inline, inherited] |
This is the const version of bottomRightCorner<int, int>().
RowsBlockXpr bottomRows | ( | Index | n | ) | [inline, inherited] |
n | the number of rows in the block |
Example:
Array44i a = Array44i::Random(); cout << "Here is the array a:" << endl << a << endl; cout << "Here is a.bottomRows(2):" << endl; cout << a.bottomRows(2) << endl; a.bottomRows(2).setZero(); cout << "Now the array a is:" << endl << a << endl;
Output:
Here is the array a: 7 9 -5 -3 -2 -6 1 0 6 -3 0 9 6 6 3 9 Here is a.bottomRows(2): 6 -3 0 9 6 6 3 9 Now the array a is: 7 9 -5 -3 -2 -6 1 0 0 0 0 0 0 0 0 0
ConstRowsBlockXpr bottomRows | ( | Index | n | ) | const [inline, inherited] |
This is the const version of bottomRows(Index).
NRowsBlockXpr<N>::Type bottomRows | ( | ) | [inline, inherited] |
N | the number of rows in the block |
Example:
Array44i a = Array44i::Random(); cout << "Here is the array a:" << endl << a << endl; cout << "Here is a.bottomRows<2>():" << endl; cout << a.bottomRows<2>() << endl; a.bottomRows<2>().setZero(); cout << "Now the array a is:" << endl << a << endl;
Output:
Here is the array a: 7 9 -5 -3 -2 -6 1 0 6 -3 0 9 6 6 3 9 Here is a.bottomRows<2>(): 6 -3 0 9 6 6 3 9 Now the array a is: 7 9 -5 -3 -2 -6 1 0 0 0 0 0 0 0 0 0
ConstNRowsBlockXpr<N>::Type bottomRows | ( | ) | const [inline, inherited] |
This is the const version of bottomRows<int>().
internal::cast_return_type<Homogeneous< MatrixType, _Direction > ,const CwiseUnaryOp<internal::scalar_cast_op<typename internal::traits<Homogeneous< MatrixType, _Direction > >::Scalar, NewType>, const Homogeneous< MatrixType, _Direction > > >::type cast | ( | ) | const [inline, inherited] |
The template parameter NewScalar is the type we are casting the scalars to.
ConjugateReturnType conjugate | ( | ) | const [inline, inherited] |
*this
.const CwiseUnaryOp<internal::scalar_abs_op<Scalar>, const Homogeneous< MatrixType, _Direction > > cwiseAbs | ( | ) | const [inline, inherited] |
*this
Example:
MatrixXd m(2,3); m << 2, -4, 6, -5, 1, 0; cout << m.cwiseAbs() << endl;
Output:
2 4 6 5 1 0
const CwiseUnaryOp<internal::scalar_abs2_op<Scalar>, const Homogeneous< MatrixType, _Direction > > cwiseAbs2 | ( | ) | const [inline, inherited] |
*this
Example:
MatrixXd m(2,3); m << 2, -4, 6, -5, 1, 0; cout << m.cwiseAbs2() << endl;
Output:
4 16 36 25 1 0
const CwiseBinaryOp<std::equal_to<Scalar>, const Homogeneous< MatrixType, _Direction > , const OtherDerived> cwiseEqual | ( | const Eigen::MatrixBase< OtherDerived > & | other | ) | const [inline, inherited] |
Example:
MatrixXi m(2,2); m << 1, 0, 1, 1; cout << "Comparing m with identity matrix:" << endl; cout << m.cwiseEqual(MatrixXi::Identity(2,2)) << endl; int count = m.cwiseEqual(MatrixXi::Identity(2,2)).count(); cout << "Number of coefficients that are equal: " << count << endl;
Output:
Comparing m with identity matrix: 1 1 0 1 Number of coefficients that are equal: 3
const CwiseUnaryOp<std::binder1st<std::equal_to<Scalar> >, const Homogeneous< MatrixType, _Direction > > cwiseEqual | ( | const Scalar & | s | ) | const [inline, inherited] |
*this
and a scalar s const CwiseUnaryOp<internal::scalar_inverse_op<Scalar>, const Homogeneous< MatrixType, _Direction > > cwiseInverse | ( | ) | const [inline, inherited] |
Example:
MatrixXd m(2,3); m << 2, 0.5, 1, 3, 0.25, 1; cout << m.cwiseInverse() << endl;
Output:
0.5 2 1 0.333 4 1
const CwiseBinaryOp<internal::scalar_max_op<Scalar>, const Homogeneous< MatrixType, _Direction > , const OtherDerived> cwiseMax | ( | const Eigen::MatrixBase< OtherDerived > & | other | ) | const [inline, inherited] |
Example:
Vector3d v(2,3,4), w(4,2,3); cout << v.cwiseMax(w) << endl;
Output:
4 3 4
const CwiseBinaryOp<internal::scalar_max_op<Scalar>, const Homogeneous< MatrixType, _Direction > , const ConstantReturnType> cwiseMax | ( | const Scalar & | other | ) | const [inline, inherited] |
const CwiseBinaryOp<internal::scalar_min_op<Scalar>, const Homogeneous< MatrixType, _Direction > , const OtherDerived> cwiseMin | ( | const Eigen::MatrixBase< OtherDerived > & | other | ) | const [inline, inherited] |
Example:
Vector3d v(2,3,4), w(4,2,3); cout << v.cwiseMin(w) << endl;
Output:
2 2 3
const CwiseBinaryOp<internal::scalar_min_op<Scalar>, const Homogeneous< MatrixType, _Direction > , const ConstantReturnType> cwiseMin | ( | const Scalar & | other | ) | const [inline, inherited] |
const CwiseBinaryOp<std::not_equal_to<Scalar>, const Homogeneous< MatrixType, _Direction > , const OtherDerived> cwiseNotEqual | ( | const Eigen::MatrixBase< OtherDerived > & | other | ) | const [inline, inherited] |
Example:
MatrixXi m(2,2); m << 1, 0, 1, 1; cout << "Comparing m with identity matrix:" << endl; cout << m.cwiseNotEqual(MatrixXi::Identity(2,2)) << endl; int count = m.cwiseNotEqual(MatrixXi::Identity(2,2)).count(); cout << "Number of coefficients that are not equal: " << count << endl;
Output:
Comparing m with identity matrix: 0 0 1 0 Number of coefficients that are not equal: 1
const CwiseBinaryOp<internal::scalar_quotient_op<Scalar>, const Homogeneous< MatrixType, _Direction > , const OtherDerived> cwiseQuotient | ( | const Eigen::MatrixBase< OtherDerived > & | other | ) | const [inline, inherited] |
Example:
Vector3d v(2,3,4), w(4,2,3); cout << v.cwiseQuotient(w) << endl;
Output:
0.5 1.5 1.33
const CwiseUnaryOp<internal::scalar_sqrt_op<Scalar>, const Homogeneous< MatrixType, _Direction > > cwiseSqrt | ( | ) | const [inline, inherited] |
Example:
Vector3d v(1,2,4); cout << v.cwiseSqrt() << endl;
Output:
1 1.41 2
Index diagonalSize | ( | ) | const [inline, inherited] |
const EIGEN_CWISE_PRODUCT_RETURN_TYPE | ( | Homogeneous< MatrixType, _Direction > | , |
OtherDerived | |||
) | const [inline, inherited] |
Example:
Matrix3i a = Matrix3i::Random(), b = Matrix3i::Random(); Matrix3i c = a.cwiseProduct(b); cout << "a:\n" << a << "\nb:\n" << b << "\nc:\n" << c << endl;
Output:
a: 7 6 -3 -2 9 6 6 -6 -5 b: 1 -3 9 0 0 3 3 9 5 c: 7 -18 -27 0 0 18 18 -54 -25
EvalReturnType eval | ( | ) | const [inline, inherited] |
Notice that in the case of a plain matrix or vector (not an expression) this function just returns a const reference, in order to avoid a useless copy.
const ImagReturnType imag | ( | ) | const [inline, inherited] |
*this
.NonConstImagReturnType imag | ( | ) | [inline, inherited] |
*this
.n | the number of columns in the block |
Example:
Array44i a = Array44i::Random(); cout << "Here is the array a:" << endl << a << endl; cout << "Here is a.leftCols(2):" << endl; cout << a.leftCols(2) << endl; a.leftCols(2).setZero(); cout << "Now the array a is:" << endl << a << endl;
Output:
Here is the array a: 7 9 -5 -3 -2 -6 1 0 6 -3 0 9 6 6 3 9 Here is a.leftCols(2): 7 9 -2 -6 6 -3 6 6 Now the array a is: 0 0 -5 -3 0 0 1 0 0 0 0 9 0 0 3 9
This is the const version of leftCols(Index).
NColsBlockXpr<N>::Type leftCols | ( | ) | [inline, inherited] |
N | the number of columns in the block |
Example:
Array44i a = Array44i::Random(); cout << "Here is the array a:" << endl << a << endl; cout << "Here is a.leftCols<2>():" << endl; cout << a.leftCols<2>() << endl; a.leftCols<2>().setZero(); cout << "Now the array a is:" << endl << a << endl;
Output:
Here is the array a: 7 9 -5 -3 -2 -6 1 0 6 -3 0 9 6 6 3 9 Here is a.leftCols<2>(): 7 9 -2 -6 6 -3 6 6 Now the array a is: 0 0 -5 -3 0 0 1 0 0 0 0 9 0 0 3 9
ConstNColsBlockXpr<N>::Type leftCols | ( | ) | const [inline, inherited] |
This is the const version of leftCols<int>().
ColsBlockXpr middleCols | ( | Index | startCol, |
Index | numCols | ||
) | [inline, inherited] |
startCol | the index of the first column in the block |
numCols | the number of columns in the block |
Example:
#include <Eigen/Core> #include <iostream> using namespace Eigen; using namespace std; int main(void) { int const N = 5; MatrixXi A(N,N); A.setRandom(); cout << "A =\n" << A << '\n' << endl; cout << "A(1..3,:) =\n" << A.middleCols(1,3) << endl; return 0; }
Output:
A = 7 -6 0 9 -10 -2 -3 3 3 -5 6 6 -3 5 -8 6 -5 0 -8 6 9 1 9 2 -7 A(1..3,:) = -6 0 9 -3 3 3 6 -3 5 -5 0 -8 1 9 2
ConstColsBlockXpr middleCols | ( | Index | startCol, |
Index | numCols | ||
) | const [inline, inherited] |
This is the const version of middleCols(Index,Index).
NColsBlockXpr<N>::Type middleCols | ( | Index | startCol | ) | [inline, inherited] |
N | the number of columns in the block |
startCol | the index of the first column in the block |
Example:
#include <Eigen/Core> #include <iostream> using namespace Eigen; using namespace std; int main(void) { int const N = 5; MatrixXi A(N,N); A.setRandom(); cout << "A =\n" << A << '\n' << endl; cout << "A(:,1..3) =\n" << A.middleCols<3>(1) << endl; return 0; }
Output:
A = 7 -6 0 9 -10 -2 -3 3 3 -5 6 6 -3 5 -8 6 -5 0 -8 6 9 1 9 2 -7 A(:,1..3) = -6 0 9 -3 3 3 6 -3 5 -5 0 -8 1 9 2
ConstNColsBlockXpr<N>::Type middleCols | ( | Index | startCol | ) | const [inline, inherited] |
This is the const version of middleCols<int>().
RowsBlockXpr middleRows | ( | Index | startRow, |
Index | numRows | ||
) | [inline, inherited] |
startRow | the index of the first row in the block |
numRows | the number of rows in the block |
Example:
#include <Eigen/Core> #include <iostream> using namespace Eigen; using namespace std; int main(void) { int const N = 5; MatrixXi A(N,N); A.setRandom(); cout << "A =\n" << A << '\n' << endl; cout << "A(2..3,:) =\n" << A.middleRows(2,2) << endl; return 0; }
Output:
A = 7 -6 0 9 -10 -2 -3 3 3 -5 6 6 -3 5 -8 6 -5 0 -8 6 9 1 9 2 -7 A(2..3,:) = 6 6 -3 5 -8 6 -5 0 -8 6
ConstRowsBlockXpr middleRows | ( | Index | startRow, |
Index | numRows | ||
) | const [inline, inherited] |
This is the const version of middleRows(Index,Index).
NRowsBlockXpr<N>::Type middleRows | ( | Index | startRow | ) | [inline, inherited] |
N | the number of rows in the block |
startRow | the index of the first row in the block |
Example:
#include <Eigen/Core> #include <iostream> using namespace Eigen; using namespace std; int main(void) { int const N = 5; MatrixXi A(N,N); A.setRandom(); cout << "A =\n" << A << '\n' << endl; cout << "A(1..3,:) =\n" << A.middleRows<3>(1) << endl; return 0; }
Output:
A = 7 -6 0 9 -10 -2 -3 3 3 -5 6 6 -3 5 -8 6 -5 0 -8 6 9 1 9 2 -7 A(1..3,:) = -2 -3 3 3 -5 6 6 -3 5 -8 6 -5 0 -8 6
ConstNRowsBlockXpr<N>::Type middleRows | ( | Index | startRow | ) | const [inline, inherited] |
This is the const version of middleRows<int>().
bool operator!= | ( | const MatrixBase< OtherDerived > & | other | ) | const [inline, inherited] |
*this
and other are not exactly equal to each other. const ScalarMultipleReturnType operator* | ( | const Scalar & | scalar | ) | const [inline, inherited] |
*this
scaled by the scalar factor scalar const CwiseUnaryOp<internal::scalar_multiple2_op<Scalar,std::complex<Scalar> >, const Homogeneous< MatrixType, _Direction > > operator* | ( | const std::complex< Scalar > & | scalar | ) | const [inline, inherited] |
Overloaded for efficient real matrix times complex scalar value
const CwiseUnaryOp<internal::scalar_opposite_op<typename internal::traits<Homogeneous< MatrixType, _Direction > >::Scalar>, const Homogeneous< MatrixType, _Direction > > operator- | ( | ) | const [inline, inherited] |
*this
const CwiseUnaryOp<internal::scalar_quotient1_op<typename internal::traits<Homogeneous< MatrixType, _Direction > >::Scalar>, const Homogeneous< MatrixType, _Direction > > operator/ | ( | const Scalar & | scalar | ) | const [inline, inherited] |
*this
divided by the scalar value scalar bool operator== | ( | const MatrixBase< OtherDerived > & | other | ) | const [inline, inherited] |
*this
and other are all exactly equal. rows()==1 || cols()==1
RealReturnType real | ( | ) | const [inline, inherited] |
*this
.NonConstRealReturnType real | ( | ) | [inline, inherited] |
*this
.Only plain matrices/arrays, not expressions, may be resized; therefore the only useful resize methods are Matrix::resize() and Array::resize(). The present method only asserts that the new size equals the old size, and does nothing else.
Only plain matrices/arrays, not expressions, may be resized; therefore the only useful resize methods are Matrix::resize() and Array::resize(). The present method only asserts that the new size equals the old size, and does nothing else.
n | the number of columns in the block |
Example:
Array44i a = Array44i::Random(); cout << "Here is the array a:" << endl << a << endl; cout << "Here is a.rightCols(2):" << endl; cout << a.rightCols(2) << endl; a.rightCols(2).setZero(); cout << "Now the array a is:" << endl << a << endl;
Output:
Here is the array a: 7 9 -5 -3 -2 -6 1 0 6 -3 0 9 6 6 3 9 Here is a.rightCols(2): -5 -3 1 0 0 9 3 9 Now the array a is: 7 9 0 0 -2 -6 0 0 6 -3 0 0 6 6 0 0
This is the const version of rightCols(Index).
NColsBlockXpr<N>::Type rightCols | ( | ) | [inline, inherited] |
N | the number of columns in the block |
Example:
Array44i a = Array44i::Random(); cout << "Here is the array a:" << endl << a << endl; cout << "Here is a.rightCols<2>():" << endl; cout << a.rightCols<2>() << endl; a.rightCols<2>().setZero(); cout << "Now the array a is:" << endl << a << endl;
Output:
Here is the array a: 7 9 -5 -3 -2 -6 1 0 6 -3 0 9 6 6 3 9 Here is a.rightCols<2>(): -5 -3 1 0 0 9 3 9 Now the array a is: 7 9 0 0 -2 -6 0 0 6 -3 0 0 6 6 0 0
ConstNColsBlockXpr<N>::Type rightCols | ( | ) | const [inline, inherited] |
This is the const version of rightCols<int>().
void swap | ( | const DenseBase< OtherDerived > & | other, |
int | = OtherDerived::ThisConstantIsPrivateInPlainObjectBase |
||
) | [inline, inherited] |
swaps *this with the expression other.
void swap | ( | PlainObjectBase< OtherDerived > & | other | ) | [inline, inherited] |
swaps *this with the matrix or array other.
Block<Homogeneous< MatrixType, _Direction > > topLeftCorner | ( | Index | cRows, |
Index | cCols | ||
) | [inline, inherited] |
cRows | the number of rows in the corner |
cCols | the number of columns in the corner |
Example:
Matrix4i m = Matrix4i::Random(); cout << "Here is the matrix m:" << endl << m << endl; cout << "Here is m.topLeftCorner(2, 2):" << endl; cout << m.topLeftCorner(2, 2) << endl; m.topLeftCorner(2, 2).setZero(); cout << "Now the matrix m is:" << endl << m << endl;
Output:
Here is the matrix m: 7 9 -5 -3 -2 -6 1 0 6 -3 0 9 6 6 3 9 Here is m.topLeftCorner(2, 2): 7 9 -2 -6 Now the matrix m is: 0 0 -5 -3 0 0 1 0 6 -3 0 9 6 6 3 9
const Block<const Homogeneous< MatrixType, _Direction > > topLeftCorner | ( | Index | cRows, |
Index | cCols | ||
) | const [inline, inherited] |
This is the const version of topLeftCorner(Index, Index).
Block<Homogeneous< MatrixType, _Direction > , CRows, CCols> topLeftCorner | ( | ) | [inline, inherited] |
The template parameters CRows and CCols are the number of rows and columns in the corner.
Example:
Matrix4i m = Matrix4i::Random(); cout << "Here is the matrix m:" << endl << m << endl; cout << "Here is m.topLeftCorner<2,2>():" << endl; cout << m.topLeftCorner<2,2>() << endl; m.topLeftCorner<2,2>().setZero(); cout << "Now the matrix m is:" << endl << m << endl;
Output:
Here is the matrix m: 7 9 -5 -3 -2 -6 1 0 6 -3 0 9 6 6 3 9 Here is m.topLeftCorner<2,2>(): 7 9 -2 -6 Now the matrix m is: 0 0 -5 -3 0 0 1 0 6 -3 0 9 6 6 3 9
const Block<const Homogeneous< MatrixType, _Direction > , CRows, CCols> topLeftCorner | ( | ) | const [inline, inherited] |
This is the const version of topLeftCorner<int, int>().
Block<Homogeneous< MatrixType, _Direction > > topRightCorner | ( | Index | cRows, |
Index | cCols | ||
) | [inline, inherited] |
cRows | the number of rows in the corner |
cCols | the number of columns in the corner |
Example:
Matrix4i m = Matrix4i::Random(); cout << "Here is the matrix m:" << endl << m << endl; cout << "Here is m.topRightCorner(2, 2):" << endl; cout << m.topRightCorner(2, 2) << endl; m.topRightCorner(2, 2).setZero(); cout << "Now the matrix m is:" << endl << m << endl;
Output:
Here is the matrix m: 7 9 -5 -3 -2 -6 1 0 6 -3 0 9 6 6 3 9 Here is m.topRightCorner(2, 2): -5 -3 1 0 Now the matrix m is: 7 9 0 0 -2 -6 0 0 6 -3 0 9 6 6 3 9
const Block<const Homogeneous< MatrixType, _Direction > > topRightCorner | ( | Index | cRows, |
Index | cCols | ||
) | const [inline, inherited] |
This is the const version of topRightCorner(Index, Index).
Block<Homogeneous< MatrixType, _Direction > , CRows, CCols> topRightCorner | ( | ) | [inline, inherited] |
The template parameters CRows and CCols are the number of rows and columns in the corner.
Example:
Matrix4i m = Matrix4i::Random(); cout << "Here is the matrix m:" << endl << m << endl; cout << "Here is m.topRightCorner<2,2>():" << endl; cout << m.topRightCorner<2,2>() << endl; m.topRightCorner<2,2>().setZero(); cout << "Now the matrix m is:" << endl << m << endl;
Output:
Here is the matrix m: 7 9 -5 -3 -2 -6 1 0 6 -3 0 9 6 6 3 9 Here is m.topRightCorner<2,2>(): -5 -3 1 0 Now the matrix m is: 7 9 0 0 -2 -6 0 0 6 -3 0 9 6 6 3 9
const Block<const Homogeneous< MatrixType, _Direction > , CRows, CCols> topRightCorner | ( | ) | const [inline, inherited] |
This is the const version of topRightCorner<int, int>().
n | the number of rows in the block |
Example:
Array44i a = Array44i::Random(); cout << "Here is the array a:" << endl << a << endl; cout << "Here is a.topRows(2):" << endl; cout << a.topRows(2) << endl; a.topRows(2).setZero(); cout << "Now the array a is:" << endl << a << endl;
Output:
Here is the array a: 7 9 -5 -3 -2 -6 1 0 6 -3 0 9 6 6 3 9 Here is a.topRows(2): 7 9 -5 -3 -2 -6 1 0 Now the array a is: 0 0 0 0 0 0 0 0 6 -3 0 9 6 6 3 9
This is the const version of topRows(Index).
NRowsBlockXpr<N>::Type topRows | ( | ) | [inline, inherited] |
N | the number of rows in the block |
Example:
Array44i a = Array44i::Random(); cout << "Here is the array a:" << endl << a << endl; cout << "Here is a.topRows<2>():" << endl; cout << a.topRows<2>() << endl; a.topRows<2>().setZero(); cout << "Now the array a is:" << endl << a << endl;
Output:
Here is the array a: 7 9 -5 -3 -2 -6 1 0 6 -3 0 9 6 6 3 9 Here is a.topRows<2>(): 7 9 -5 -3 -2 -6 1 0 Now the array a is: 0 0 0 0 0 0 0 0 6 -3 0 9 6 6 3 9
ConstNRowsBlockXpr<N>::Type topRows | ( | ) | const [inline, inherited] |
This is the const version of topRows<int>().
const CwiseUnaryOp<CustomUnaryOp, const Homogeneous< MatrixType, _Direction > > unaryExpr | ( | const CustomUnaryOp & | func = CustomUnaryOp() | ) | const [inline, inherited] |
Apply a unary operator coefficient-wise.
[in] | func | Functor implementing the unary operator |
CustomUnaryOp | Type of func |
The function ptr_fun()
from the C++ standard library can be used to make functors out of normal functions.
Example:
#include <Eigen/Core> #include <iostream> using namespace Eigen; using namespace std; // define function to be applied coefficient-wise double ramp(double x) { if (x > 0) return x; else return 0; } int main(int, char**) { Matrix4d m1 = Matrix4d::Random(); cout << m1 << endl << "becomes: " << endl << m1.unaryExpr(ptr_fun(ramp)) << endl; return 0; }
Output:
0.68 0.823 -0.444 -0.27 -0.211 -0.605 0.108 0.0268 0.566 -0.33 -0.0452 0.904 0.597 0.536 0.258 0.832 becomes: 0.68 0.823 0 0 0 0 0.108 0.0268 0.566 0 0 0.904 0.597 0.536 0.258 0.832
Genuine functors allow for more possibilities, for instance it may contain a state.
Example:
#include <Eigen/Core> #include <iostream> using namespace Eigen; using namespace std; // define a custom template unary functor template<typename Scalar> struct CwiseClampOp { CwiseClampOp(const Scalar& inf, const Scalar& sup) : m_inf(inf), m_sup(sup) {} const Scalar operator()(const Scalar& x) const { return x<m_inf ? m_inf : (x>m_sup ? m_sup : x); } Scalar m_inf, m_sup; }; int main(int, char**) { Matrix4d m1 = Matrix4d::Random(); cout << m1 << endl << "becomes: " << endl << m1.unaryExpr(CwiseClampOp<double>(-0.5,0.5)) << endl; return 0; }
Output:
0.68 0.823 -0.444 -0.27 -0.211 -0.605 0.108 0.0268 0.566 -0.33 -0.0452 0.904 0.597 0.536 0.258 0.832 becomes: 0.5 0.5 -0.444 -0.27 -0.211 -0.5 0.108 0.0268 0.5 -0.33 -0.0452 0.5 0.5 0.5 0.258 0.5
const CwiseUnaryView<CustomViewOp, const Homogeneous< MatrixType, _Direction > > unaryViewExpr | ( | const CustomViewOp & | func = CustomViewOp() | ) | const [inline, inherited] |
The template parameter CustomUnaryOp is the type of the functor of the custom unary operator.
Example:
#include <Eigen/Core> #include <iostream> using namespace Eigen; using namespace std; // define a custom template unary functor template<typename Scalar> struct CwiseClampOp { CwiseClampOp(const Scalar& inf, const Scalar& sup) : m_inf(inf), m_sup(sup) {} const Scalar operator()(const Scalar& x) const { return x<m_inf ? m_inf : (x>m_sup ? m_sup : x); } Scalar m_inf, m_sup; }; int main(int, char**) { Matrix4d m1 = Matrix4d::Random(); cout << m1 << endl << "becomes: " << endl << m1.unaryExpr(CwiseClampOp<double>(-0.5,0.5)) << endl; return 0; }
Output:
0.68 0.823 -0.444 -0.27 -0.211 -0.605 0.108 0.0268 0.566 -0.33 -0.0452 0.904 0.597 0.536 0.258 0.832 becomes: 0.5 0.5 -0.444 -0.27 -0.211 -0.5 0.108 0.0268 0.5 -0.33 -0.0452 0.5 0.5 0.5 0.258 0.5
CoeffReturnType value | ( | ) | const [inline, inherited] |