Add geom::submatrix
This commit is contained in:
parent
2d05fe9ea9
commit
9a50990c5c
1 changed files with 19 additions and 0 deletions
|
|
@ -303,6 +303,25 @@ namespace psemek::geom
|
||||||
return r;
|
return r;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
template <std::size_t R1, std::size_t C1, std::size_t R2, std::size_t C2, typename T, std::size_t R, std::size_t C>
|
||||||
|
matrix<T, R2 - R1, C2 - C1> submatrix(matrix<T, R, C> const & m)
|
||||||
|
{
|
||||||
|
static_assert(R1 < R2);
|
||||||
|
static_assert(C1 < C2);
|
||||||
|
static_assert(R2 <= R);
|
||||||
|
static_assert(C2 <= C);
|
||||||
|
|
||||||
|
matrix<T, R2 - R1, C2 - C1> 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 <typename T, std::size_t R, std::size_t C>
|
template <typename T, std::size_t R, std::size_t C>
|
||||||
std::ostream & operator << (std::ostream & os, matrix<T, R, C> const & m)
|
std::ostream & operator << (std::ostream & os, matrix<T, R, C> const & m)
|
||||||
{
|
{
|
||||||
|
|
|
||||||
Loading…
Add table
Reference in a new issue