1c981c48f5bc9aefeffc0bcb0cc3934c2fae179ddNarayan Kamath#include <Eigen/Core> 2c981c48f5bc9aefeffc0bcb0cc3934c2fae179ddNarayan Kamath#include <iostream> 3c981c48f5bc9aefeffc0bcb0cc3934c2fae179ddNarayan Kamathusing namespace Eigen; 4c981c48f5bc9aefeffc0bcb0cc3934c2fae179ddNarayan Kamathusing namespace std; 5c981c48f5bc9aefeffc0bcb0cc3934c2fae179ddNarayan Kamath 6c981c48f5bc9aefeffc0bcb0cc3934c2fae179ddNarayan Kamathtemplate<typename Derived> 7c981c48f5bc9aefeffc0bcb0cc3934c2fae179ddNarayan KamathEigen::Block<Derived> 8c981c48f5bc9aefeffc0bcb0cc3934c2fae179ddNarayan KamathtopLeftCorner(MatrixBase<Derived>& m, int rows, int cols) 9c981c48f5bc9aefeffc0bcb0cc3934c2fae179ddNarayan Kamath{ 10c981c48f5bc9aefeffc0bcb0cc3934c2fae179ddNarayan Kamath return Eigen::Block<Derived>(m.derived(), 0, 0, rows, cols); 11c981c48f5bc9aefeffc0bcb0cc3934c2fae179ddNarayan Kamath} 12c981c48f5bc9aefeffc0bcb0cc3934c2fae179ddNarayan Kamath 13c981c48f5bc9aefeffc0bcb0cc3934c2fae179ddNarayan Kamathtemplate<typename Derived> 14c981c48f5bc9aefeffc0bcb0cc3934c2fae179ddNarayan Kamathconst Eigen::Block<const Derived> 15c981c48f5bc9aefeffc0bcb0cc3934c2fae179ddNarayan KamathtopLeftCorner(const MatrixBase<Derived>& m, int rows, int cols) 16c981c48f5bc9aefeffc0bcb0cc3934c2fae179ddNarayan Kamath{ 17c981c48f5bc9aefeffc0bcb0cc3934c2fae179ddNarayan Kamath return Eigen::Block<const Derived>(m.derived(), 0, 0, rows, cols); 18c981c48f5bc9aefeffc0bcb0cc3934c2fae179ddNarayan Kamath} 19c981c48f5bc9aefeffc0bcb0cc3934c2fae179ddNarayan Kamath 20c981c48f5bc9aefeffc0bcb0cc3934c2fae179ddNarayan Kamathint main(int, char**) 21c981c48f5bc9aefeffc0bcb0cc3934c2fae179ddNarayan Kamath{ 22c981c48f5bc9aefeffc0bcb0cc3934c2fae179ddNarayan Kamath Matrix4d m = Matrix4d::Identity(); 23c981c48f5bc9aefeffc0bcb0cc3934c2fae179ddNarayan Kamath cout << topLeftCorner(4*m, 2, 3) << endl; // calls the const version 24c981c48f5bc9aefeffc0bcb0cc3934c2fae179ddNarayan Kamath topLeftCorner(m, 2, 3) *= 5; // calls the non-const version 25c981c48f5bc9aefeffc0bcb0cc3934c2fae179ddNarayan Kamath cout << "Now the matrix m is:" << endl << m << endl; 26c981c48f5bc9aefeffc0bcb0cc3934c2fae179ddNarayan Kamath return 0; 27c981c48f5bc9aefeffc0bcb0cc3934c2fae179ddNarayan Kamath} 28