Expression of one (or a set of) homogeneous vector(s) More...
#include <Homogeneous.h>
Inheritance diagram for Homogeneous< MatrixType, _Direction >: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 (operator-)(const Eigen |
| const | CwiseBinaryOp (operator+)(const Eigen |
| 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_product_op < typename internal::traits < Homogeneous< MatrixType, _Direction > >::Scalar, typename internal::traits < OtherDerived >::Scalar > , const Homogeneous < MatrixType, _Direction > , const OtherDerived > | cwiseProduct (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 |
| 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] |
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.
| ColXpr col | ( | Index | i | ) | [inline, inherited] |
| ConstColXpr col | ( | Index | i | ) | const [inline, inherited] |
This is the const version of col().
| 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 | ( | operator- | ) | const [inline, inherited] |
*this and other | const CwiseBinaryOp | ( | operator+ | ) | const [inline, inherited] |
*this and other | 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_product_op< typename internal::traits< Homogeneous< MatrixType, _Direction > >::Scalar, typename internal::traits< OtherDerived >::Scalar >, const Homogeneous< MatrixType, _Direction > , const OtherDerived > cwiseProduct | ( | const Eigen::MatrixBase< OtherDerived > & | other | ) | 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
| 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] |
| 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.| Index innerSize | ( | ) | const [inline, inherited] |
| ColsBlockXpr leftCols | ( | Index | n | ) | [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
| ConstColsBlockXpr leftCols | ( | Index | n | ) | const [inline, inherited] |
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>().
| 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
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>().
| 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
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>().
| Index nonZeros | ( | ) | const [inline, inherited] |
| 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. | Index outerSize | ( | ) | const [inline, inherited] |
rows()==1 || cols()==1
| RealReturnType real | ( | ) | const [inline, inherited] |
*this.| NonConstRealReturnType real | ( | ) | [inline, inherited] |
*this.| void resize | ( | Index | size | ) | [inline, inherited] |
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.
| ColsBlockXpr rightCols | ( | Index | n | ) | [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
| ConstColsBlockXpr rightCols | ( | Index | n | ) | const [inline, inherited] |
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>().
| RowXpr row | ( | Index | i | ) | [inline, inherited] |
| ConstRowXpr row | ( | Index | i | ) | const [inline, inherited] |
This is the const version of row().
| 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>().
| RowsBlockXpr topRows | ( | 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.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
| ConstRowsBlockXpr topRows | ( | Index | n | ) | const [inline, inherited] |
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] |