From cae538d7a50d36a884d0f0361d1ee14c73e2429d Mon Sep 17 00:00:00 2001 From: lisyarus Date: Thu, 30 Dec 2021 17:21:10 +0300 Subject: [PATCH] Add geom::matrix::diagonal --- libs/geom/include/psemek/geom/matrix.hpp | 10 ++++++++++ 1 file changed, 10 insertions(+) diff --git a/libs/geom/include/psemek/geom/matrix.hpp b/libs/geom/include/psemek/geom/matrix.hpp index 55dad440..a30e2cb5 100644 --- a/libs/geom/include/psemek/geom/matrix.hpp +++ b/libs/geom/include/psemek/geom/matrix.hpp @@ -48,6 +48,7 @@ namespace psemek::geom static matrix zero(); static matrix identity(); static matrix scalar(T const & s); + static matrix diagonal(vector const & d); }; template @@ -74,6 +75,15 @@ namespace psemek::geom return m; } + template + matrix matrix::diagonal(vector const & d) + { + matrix m = zero(); + for (std::size_t i = 0; i < std::min(R, C); ++i) + m[i][i] = d[i]; + return m; + } + template bool operator == (matrix const & m1, matrix const & m2) {