diff --git a/libs/geom/include/psemek/geom/matrix.hpp b/libs/geom/include/psemek/geom/matrix.hpp index 57f4eef2..55dad440 100644 --- a/libs/geom/include/psemek/geom/matrix.hpp +++ b/libs/geom/include/psemek/geom/matrix.hpp @@ -303,6 +303,25 @@ namespace psemek::geom return r; } + template + matrix submatrix(matrix const & m) + { + static_assert(R1 < R2); + static_assert(C1 < C2); + static_assert(R2 <= R); + static_assert(C2 <= C); + + matrix result; + for (std::size_t i = 0; i < R2 - R1; ++i) + { + for (std::size_t j = 0; j < C2 - C1; ++j) + { + result[i][j] = m[i + R1][j + C1]; + } + } + return result; + } + template std::ostream & operator << (std::ostream & os, matrix const & m) {