diff --git a/main.cpp b/main.cpp index 30718e5..b4cc933 100644 --- a/main.cpp +++ b/main.cpp @@ -5,15 +5,11 @@ int main() { srand(time(0)); - Matrix a(3,1); + Matrix a(3,2); a.Randomize(); - Matrix b = a; - a.Print("A"); - b.Print("B"); - - a.Add(&b).Print("A + B"); + a.Transpose().Print("Transposed"); return 0; } \ No newline at end of file diff --git a/matrices.h b/matrices.h index 4467159..20bcd9a 100644 --- a/matrices.h +++ b/matrices.h @@ -27,7 +27,7 @@ class Matrix{ inline void Print(std::string_view); - inline void Transpose(); + inline Matrix Transpose(); // --- Operators // Assign @@ -168,18 +168,17 @@ void Matrix::Set(float value){ } // Transpose a matrix -void Matrix::Transpose(){ - std::vector> buffer = this->values; - this->values = {}; +Matrix Matrix::Transpose(){ + // Transposed matrix size is inverted + Matrix result(this->values[0].size(), this->values.size()); - // Invert matrix size - for(int m = 0; m < buffer[0].size(); m++){ - std::vector row = {}; - for(int n = 0; n < buffer.size(); n++){ - row.push_back(buffer[n][m]); + for(int m = 0; m < result.values.size(); m++){ + for(int n = 0; n < result.values[m].size(); n++){ + result.values[m][n] = this->values[n][m]; } - this->values.push_back(row); } + + return result; } // Randomize a matrix from 0.0F to 10.0F