Browse Source

Moving some functions around to keep the header a bit more tidy

Godzil 4 years ago
parent
commit
95c7616646
2 changed files with 55 additions and 44 deletions
  1. 4 44
      source/include/matrix.h
  2. 51 0
      source/matrix.cpp

+ 4 - 44
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;

+ 51 - 0
source/matrix.cpp

@@ -11,6 +11,33 @@
 #include <tuples.h>
 #include <math_helper.h>
 
+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;
 }