From 95c7616646e3e08e302d352950b9eec59833f811 Mon Sep 17 00:00:00 2001 From: Godzil Date: Fri, 14 Feb 2020 17:52:47 +0000 Subject: [PATCH] Moving some functions around to keep the header a bit more tidy --- source/include/matrix.h | 48 ++++---------------------------------- source/matrix.cpp | 51 +++++++++++++++++++++++++++++++++++++++++ 2 files changed, 55 insertions(+), 44 deletions(-) diff --git a/source/include/matrix.h b/source/include/matrix.h index b71731e..b83a30e 100644 --- a/source/include/matrix.h +++ b/source/include/matrix.h @@ -19,54 +19,14 @@ private: int width; public: - Matrix(int width) : width(width) - { - int i; - for(i = 0; i < width*width; i++) - { - this->data[i] = 0; - } - }; - Matrix(double values[], int width) - { - int x, y; + Matrix(int width); + Matrix(double values[], int width); - this->width = width; - - for(y = 0; y < this->width; y++) - { - for (x = 0 ; x < this->width ; x++) - { - this->data[this->width * x + y] = values[this->width * x + y]; - } - } - }; double get(int x, int y) const { return this->data[this->width * x + y]; }; void set(int x, int y, double v) { this->data[this->width * x + y] = v; }; - Matrix identity() - { - int i; - for(i = 0; i < this->width; i++) - { - this->set(i, i, 1); - } - return *this; - } - - Matrix transpose() - { - int x, y; - Matrix ret = Matrix(this->width); - for(y = 0; y < this->width; y++) - { - for (x = 0 ; x < this->width ; x++) - { - ret.set(y, x, this->get(x, y)); - } - } - return ret; - } + Matrix identity(); + Matrix transpose(); bool operator==(const Matrix &b) const; bool operator!=(const Matrix &b) const; diff --git a/source/matrix.cpp b/source/matrix.cpp index fafaae1..930191d 100644 --- a/source/matrix.cpp +++ b/source/matrix.cpp @@ -11,6 +11,33 @@ #include #include +Matrix::Matrix(int width) +{ + int i; + + this->width = width; + + for(i = 0; i < width*width; i++) + { + this->data[i] = 0; + } +}; + +Matrix::Matrix(double values[], int width) +{ + int x, y; + + this->width = width; + + for(y = 0; y < this->width; y++) + { + for (x = 0 ; x < this->width ; x++) + { + this->data[this->width * x + y] = values[this->width * x + y]; + } + } +}; + bool Matrix::operator==(const Matrix &b) const { int i; @@ -79,4 +106,28 @@ Tuple Matrix::operator*(const Tuple &b) const b.x * this->get(1, 0) + b.y * this->get(1, 1) + b.z * this->get(1, 2) + b.w * this->get(1, 3), b.x * this->get(2, 0) + b.y * this->get(2, 1) + b.z * this->get(2, 2) + b.w * this->get(2, 3), b.x * this->get(3, 0) + b.y * this->get(3, 1) + b.z * this->get(3, 2) + b.w * this->get(3, 3)); +} + +Matrix Matrix::identity() +{ + int i; + for(i = 0; i < this->width; i++) + { + this->set(i, i, 1); + } + return *this; +} + +Matrix Matrix::transpose() +{ + int x, y; + Matrix ret = Matrix(this->width); + for (y = 0 ; y < this->width ; y++) + { + for (x = 0 ; x < this->width ; x++) + { + ret.set(y, x, this->get(x, y)); + } + } + return ret; } \ No newline at end of file