summaryrefslogtreecommitdiffstats
path: root/Cuboid.cpp
diff options
context:
space:
mode:
authorConstantin Riß <constantin.riss@dre.de>2010-03-01 23:30:40 +0100
committerConstantin Riß <constantin.riss@dre.de>2010-03-01 23:30:40 +0100
commit070051b8759806873267cff46ceb2be7d6a3262f (patch)
treea19b03e51847d3dee10514e456a4c7921b306b3e /Cuboid.cpp
downloadheadshot-070051b8759806873267cff46ceb2be7d6a3262f.tar
headshot-070051b8759806873267cff46ceb2be7d6a3262f.zip
initial commit
Diffstat (limited to 'Cuboid.cpp')
-rw-r--r--Cuboid.cpp128
1 files changed, 128 insertions, 0 deletions
diff --git a/Cuboid.cpp b/Cuboid.cpp
new file mode 100644
index 0000000..5afae93
--- /dev/null
+++ b/Cuboid.cpp
@@ -0,0 +1,128 @@
+#include "Cuboid.h"
+#include "gl.h"
+
+Cuboid::Cuboid(float width, float height, float depth) {
+ setSize(width, height, depth);
+ setPos(0, 0, 0);
+}
+
+Cuboid::Cuboid(float width, float height, float depth, float x, float y, float z)
+{
+ setSize(width, height, depth);
+ setPos(x, y, z);
+}
+
+float Cuboid::getHeight()
+{
+ return height;
+}
+
+float Cuboid::getWidth()
+{
+ return width;
+}
+
+float Cuboid::getDepth()
+{
+ return depth;
+}
+
+float Cuboid::getPosX()
+{
+ return x;
+}
+
+float Cuboid::getPosY()
+{
+ return y;
+}
+
+float Cuboid::getPosZ()
+{
+ return z;
+}
+
+void Cuboid::setSize(float w, float h, float d)
+{
+ width = w;
+ height = h;
+ depth = d;
+}
+
+void Cuboid::setPos(float x, float y, float z)
+{
+ this->x = x;
+ this->y = y;
+ this->z = z;
+}
+
+std::list<Triangle> Cuboid::getTriangles()
+{
+ std::list<Triangle> triangles;
+ // width, height, depth
+ // Front face
+ vmml::vec4f c(0.0, 0.0, 1.0, 0.5);
+
+ triangles.push_back(Triangle(vmml::vec3f(x-width/2, y+height/2, z+depth/2),
+ vmml::vec3f(x-width/2, y-height/2, z+depth/2),
+ vmml::vec3f(x+width/2, y+height/2, z+depth/2), c));
+
+ triangles.push_back(Triangle(vmml::vec3f(x-width/2, y-height/2, z+depth/2),
+ vmml::vec3f(x+width/2, y-height/2, z+depth/2),
+ vmml::vec3f(x+width/2, y+height/2, z+depth/2), c));
+
+ // Back face
+ c = vmml::vec4f(1.0, 1.0, 0.0, 0.5);
+
+ triangles.push_back(Triangle(vmml::vec3f(x-width/2, y+height/2, z-depth/2),
+ vmml::vec3f(x+width/2, y+height/2, z-depth/2),
+ vmml::vec3f(x-width/2, y-height/2, z-depth/2), c));
+
+ triangles.push_back(Triangle(vmml::vec3f(x-width/2, y-height/2, z-depth/2),
+ vmml::vec3f(x+width/2, y+height/2, z-depth/2),
+ vmml::vec3f(x+width/2, y-height/2, z-depth/2), c));
+
+ // Left face
+ c = vmml::vec4f(0.0, 1.0, 0.0, 0.5);
+
+ triangles.push_back(Triangle(vmml::vec3f(x-width/2, y+height/2, z+depth/2),
+ vmml::vec3f(x-width/2, y+height/2, z-depth/2),
+ vmml::vec3f(x-width/2, y-height/2, z+depth/2), c));
+
+ triangles.push_back(Triangle(vmml::vec3f(x-width/2, y-height/2, z-depth/2),
+ vmml::vec3f(x-width/2, y-height/2, z+depth/2),
+ vmml::vec3f(x-width/2, y+height/2, z-depth/2), c));
+
+ // Right face
+
+ triangles.push_back(Triangle(vmml::vec3f(x+width/2, y+height/2, z+depth/2),
+ vmml::vec3f(x+width/2, y-height/2, z+depth/2),
+ vmml::vec3f(x+width/2, y+height/2, z-depth/2), c));
+
+ triangles.push_back(Triangle(vmml::vec3f(x+width/2, y-height/2, z-depth/2),
+ vmml::vec3f(x+width/2, y+height/2, z-depth/2),
+ vmml::vec3f(x+width/2, y-height/2, z+depth/2), c));
+
+ // Top face
+ c = vmml::vec4f(1.0, 0.0, 0.0, 0.5);
+
+ triangles.push_back(Triangle(vmml::vec3f(x-width/2, y+height/2, z+depth/2),
+ vmml::vec3f(x+width/2, y+height/2, z+depth/2),
+ vmml::vec3f(x-width/2, y+height/2, z-depth/2), c));
+
+ triangles.push_back(Triangle(vmml::vec3f(x+width/2, y+height/2, z+depth/2),
+ vmml::vec3f(x+width/2, y+height/2, z-depth/2),
+ vmml::vec3f(x-width/2, y+height/2, z-depth/2), c));
+
+ // Bottom face
+
+ triangles.push_back(Triangle(vmml::vec3f(x-width/2, y-height/2, z+depth/2),
+ vmml::vec3f(x-width/2, y-height/2, z-depth/2),
+ vmml::vec3f(x+width/2, y-height/2, z+depth/2), c));
+
+ triangles.push_back(Triangle(vmml::vec3f(x+width/2, y-height/2, z+depth/2),
+ vmml::vec3f(x-width/2, y-height/2, z-depth/2),
+ vmml::vec3f(x+width/2, y-height/2, z-depth/2), c));
+
+ return triangles;
+}