author | Markus Bröker <mbroeker@largo.dyndns.tv> |
Thu, 14 May 2009 17:31:45 +0200 | |
changeset 92 | 0bc2646daa82 |
parent 77 | 49e0babccb23 |
permissions | -rw-r--r-- |
/** * pmc/cube.cc * Copyright (C) 2008 Markus Broeker */ #include <cube.hpp> #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); P[3] = new Vector (0, 100); P[4] = new Vector (25, 25); P[5] = new Vector (125, 25); P[6] = new Vector (125, 125); P[7] = new Vector (25, 125); refCounter++; } Cube::Cube (Surface * s, Vector & p1, Vector & p2, Vector & p3, Vector & p4, int h) { surface = s; name = "Cube"; height = h; Vector location (h / 4, h / 4); P[0] = new Vector (p1); P[1] = new Vector (p2); P[2] = new Vector (p3); P[3] = new Vector (p4); for (int i = 0; i < 4; i++) { P[4 + i] = new Vector (); *P[4 + i] = *P[i] + location; } refCounter++; } 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; } refCounter++; } Cube::Cube (const Cube & copy) { fprintf (stderr, "Copy Constructor in Cube disabled...\n"); } Cube::~Cube () { for (int i = 0; i < 8; i++) { #ifdef DEBUG fprintf (stderr, "Removing P[%d]: ", i); #endif delete P[i]; } } void Cube::move (Vector location) { for (int i = 0; i < 8; i++) { *P[i] = *P[i] + location; } } void Cube::show () { surface->drawLine (P[0]->X (), P[0]->Y (), P[1]->X (), P[1]->Y ()); surface->drawLine (P[3]->X (), P[3]->Y (), P[2]->X (), P[2]->Y ()); surface->drawLine (P[2]->X (), P[2]->Y (), P[1]->X (), P[1]->Y ()); surface->drawLine (P[3]->X (), P[3]->Y (), P[0]->X (), P[0]->Y ()); surface->drawLine (P[4]->X (), P[4]->Y (), P[5]->X (), P[5]->Y ()); surface->drawLine (P[7]->X (), P[7]->Y (), P[6]->X (), P[6]->Y ()); surface->drawLine (P[7]->X (), P[7]->Y (), P[4]->X (), P[4]->Y ()); surface->drawLine (P[6]->X (), P[6]->Y (), P[5]->X (), P[5]->Y ()); surface->drawLine (P[0]->X (), P[0]->Y (), P[4]->X (), P[4]->Y ()); surface->drawLine (P[1]->X (), P[1]->Y (), P[5]->X (), P[5]->Y ()); surface->drawLine (P[2]->X (), P[2]->Y (), P[6]->X (), P[6]->Y ()); surface->drawLine (P[3]->X (), P[3]->Y (), P[7]->X (), P[7]->Y ()); }