pmc/cube.cc
changeset 45 7197576fedcf
parent 43 cf8c1b5127b2
child 46 4b9e1ac40246
--- a/pmc/cube.cc
+++ b/pmc/cube.cc
@@ -6,8 +6,14 @@
 #include <cube.h>
 #include <cstdio>
 
+using namespace algebra;
+
 Cube::Cube (Surface * s)
 {
+    surface = s;
+    name = "Cube";
+    height = 25;
+
     P[0] = new Vector (0, 0);
     P[1] = new Vector (100, 0);
     P[2] = new Vector (100, 100);
@@ -17,16 +23,15 @@
     P[5] = new Vector (125, 25);
     P[6] = new Vector (125, 125);
     P[7] = new Vector (25, 125);
-
-    surface = s;
-    height = 25;
 }
 
-Cube::Cube (Surface * s, Vector& p1, Vector& p2, Vector& p3, Vector& p4, int h)
+Cube::Cube (Surface * s, Vector & p1, Vector & p2, Vector & p3, Vector & p4, int h)
 {
+    surface = s;
+    name = "Cube";
     height = h;
-    surface = s;
-    Vector location(h/2, h/2);
+
+    Vector location (h / 4, h / 4);
 
     P[0] = new Vector (p1);
     P[1] = new Vector (p2);
@@ -39,6 +44,21 @@
     }
 }
 
+Cube::Cube (Surface * s, Vector p[4], int h)
+{
+    surface = s;
+    name = "Cube";
+    height = h;
+
+    Vector location (h / 4, h / 4);
+
+    for (int i = 0; i < 4; i++) {
+        P[i] = new Vector (p[i]);
+        P[4 + i] = new Vector (*P[i]);
+        *P[4 + i] = *P[i] + location;
+    }
+}
+
 Cube::~Cube ()
 {
     for (int i = 0; i < 8; i++) {
@@ -58,7 +78,9 @@
 
 void Cube::show ()
 {
-	/* Implement some Sanity Checks */
+    /*
+     * Implement some Sanity Checks
+     */
     int height = surface->getHeight ();
 
     surface->drawLine (P[0]->X (), P[0]->Y (), P[1]->X (), P[1]->Y ());