Forráskód Böngészése

Move the cross product to Tuple instead of just vector (to ease some stuff later, but this is invalid on Points)

Godzil 4 éve
szülő
commit
17aebe6538
2 módosított fájl, 7 hozzáadás és 5 törlés
  1. 2 1
      source/include/tuple.h
  2. 5 4
      source/tuple.cpp

+ 2 - 1
source/include/tuple.h

@@ -41,6 +41,8 @@ public:
     double magnitude();
     Tuple normalise();
     double dot(const Tuple &b);
+
+    Tuple cross(const Tuple &b) const;
 };
 
 class Point: public Tuple
@@ -53,7 +55,6 @@ class Vector: public Tuple
 {
 public:
     Vector(double x, double y, double z) : Tuple(x, y, z, 0.0) {};
-    Vector cross(const Vector &b) const;
 };
 
 #endif /*DORAYME_TUPLE_H*/

+ 5 - 4
source/tuple.cpp

@@ -27,9 +27,10 @@ double Tuple::dot(const Tuple &b)
     return this->x * b.x + this->y * b.y + this->z * b.z + this->w * b.w;
 }
 
-Vector Vector::cross(const Vector &b) const
+Tuple Tuple::cross(const Tuple &b) const
 {
-    return Vector(this->y * b.z - this->z * b.y,
-                  this->z * b.x - this->x * b.z,
-                  this->x * b.y - this->y * b.x);
+    return Tuple(this->y * b.z - this->z * b.y,
+                 this->z * b.x - this->x * b.z,
+                 this->x * b.y - this->y * b.x,
+                 0);
 }