summaryrefslogtreecommitdiffstats
path: root/Cubehole.cpp
diff options
context:
space:
mode:
authorConstantin Riß <constantin.riss@dre.de>2009-12-03 22:15:45 +0100
committerConstantin Riß <constantin.riss@dre.de>2009-12-03 22:15:45 +0100
commitbfa11fa56f513f68cfd9ec1da1443c5cf624c4dc (patch)
tree7e1e8963f255df7d92a0c4389ae98e006714ddb5 /Cubehole.cpp
parent9581542002a57f72afcbaebfe1ae6fc3b4021400 (diff)
downloadc3d-bfa11fa56f513f68cfd9ec1da1443c5cf624c4dc.tar
c3d-bfa11fa56f513f68cfd9ec1da1443c5cf624c4dc.zip
Dateien zu adden wurde nachgeholt.
Diffstat (limited to 'Cubehole.cpp')
-rw-r--r--Cubehole.cpp206
1 files changed, 206 insertions, 0 deletions
diff --git a/Cubehole.cpp b/Cubehole.cpp
new file mode 100644
index 0000000..e755e45
--- /dev/null
+++ b/Cubehole.cpp
@@ -0,0 +1,206 @@
+#include "Cubehole.h"
+#include "gl.h"
+
+std::list<Triangle> Cubehole::getTriangles(const Matrix &modelview)
+{
+ std::list<Triangle> triangles;
+ // width, height, depth
+ // Front face
+ Color c(0.0, 0.0, 1.0, 0.5);
+
+ triangles.push_back(Triangle(Vertex(x-width/2, y+height/2, z+depth/2),
+ Vertex(x+width/2, y+height/2, z+depth/2),
+ Vertex(x-width/2, y-height/2, z+depth/2), c));
+
+ triangles.push_back(Triangle(Vertex(x-width/2, y-height/2, z+depth/2),
+ Vertex(x+width/2, y+height/2, z+depth/2),
+ Vertex(x+width/2, y-height/2, z+depth/2), c));
+
+ // Back face
+ c = Color(1.0, 1.0, 0.0, 0.5);
+
+ triangles.push_back(Triangle(Vertex(x-width/2, y+height/2, z-depth/2),
+ Vertex(x-width/2, y-height/2, z-depth/2),
+ Vertex(x+width/2, y+height/2, z-depth/2), c));
+
+ triangles.push_back(Triangle(Vertex(x-width/2, y-height/2, z-depth/2),
+ Vertex(x+width/2, y+height/2, z-depth/2),
+ Vertex(x+width/2, y-height/2, z-depth/2), c));
+
+ // Left face
+ c = Color(0.0, 1.0, 0.0, 0.5);
+
+ triangles.push_back(Triangle(Vertex(x-width/2, y+height/2, z+depth/2),
+ Vertex(x-width/2, y-height/2, z+depth/2),
+ Vertex(x-width/2, y+height/2, z-depth/2), c));
+
+ triangles.push_back(Triangle(Vertex(x-width/2, y-height/2, z-depth/2),
+ Vertex(x-width/2, y+height/2, z-depth/2),
+ Vertex(x-width/2, y-height/2, z+depth/2), c));
+
+ // Right face
+
+ triangles.push_back(Triangle(Vertex(x+width/2, y+height/2, z+depth/2),
+ Vertex(x+width/2, y-height/2, z+depth/2),
+ Vertex(x+width/2, y+height/2, z-depth/2), c));
+
+ triangles.push_back(Triangle(Vertex(x+width/2, y-height/2, z-depth/2),
+ Vertex(x+width/2, y+height/2, z-depth/2),
+ Vertex(x+width/2, y-height/2, z+depth/2), c));
+
+ // Top face
+ c = Color(1.0, 0.0, 0.0, 0.5);
+
+ triangles.push_back(Triangle(Vertex(x-width/2, y+height/2, z+depth/2),
+ Vertex(x+width/2, y+height/2, z+depth/2),
+ Vertex(x-width/2, y+height/2, z+innerdepth/2), c));
+
+ triangles.push_back(Triangle(Vertex(x+width/2, y+height/2, z+depth/2),
+ Vertex(x+width/2, y+height/2, z+innerdepth/2),
+ Vertex(x-width/2, y+height/2, z+innerdepth/2), c));
+
+ triangles.push_back(Triangle(Vertex(x-width/2, y+height/2, z-depth/2),
+ Vertex(x+width/2, y+height/2, z-depth/2),
+ Vertex(x-width/2, y+height/2, z-innerdepth/2), c));
+
+ triangles.push_back(Triangle(Vertex(x+width/2, y+height/2, z-depth/2),
+ Vertex(x+width/2, y+height/2, z-innerdepth/2),
+ Vertex(x-width/2, y+height/2, z-innerdepth/2), c));
+
+ triangles.push_back(Triangle(Vertex(x- width/2, y+height/2, z+innerdepth/2),
+ Vertex(x-innerwidth/2, y+height/2, z+innerdepth/2),
+ Vertex(x-innerwidth/2, y+height/2, z-innerdepth/2), c));
+ triangles.push_back(Triangle(Vertex(x- width/2, y+height/2, z+innerdepth/2),
+ Vertex(x-innerwidth/2, y+height/2, z-innerdepth/2),
+ Vertex(x- width/2, y+height/2, z-innerdepth/2), c));
+
+ triangles.push_back(Triangle(Vertex(x+ width/2, y+height/2, z+innerdepth/2),
+ Vertex(x+innerwidth/2, y+height/2, z+innerdepth/2),
+ Vertex(x+innerwidth/2, y+height/2, z-innerdepth/2), c));
+ triangles.push_back(Triangle(Vertex(x+ width/2, y+height/2, z+innerdepth/2),
+ Vertex(x+innerwidth/2, y+height/2, z-innerdepth/2),
+ Vertex(x+ width/2, y+height/2, z-innerdepth/2), c));
+
+ // Bottom face
+
+ triangles.push_back(Triangle(Vertex(x-width/2, y-height/2, z+depth/2),
+ Vertex(x+width/2, y-height/2, z+depth/2),
+ Vertex(x-width/2, y-height/2, z+innerdepth/2), c));
+ triangles.push_back(Triangle(Vertex(x+width/2, y-height/2, z+depth/2),
+ Vertex(x+width/2, y-height/2, z+innerdepth/2),
+ Vertex(x-width/2, y-height/2, z+innerdepth/2), c));
+
+ triangles.push_back(Triangle(Vertex(x-width/2, y-height/2, z-depth/2),
+ Vertex(x+width/2, y-height/2, z-depth/2),
+ Vertex(x-width/2, y-height/2, z-innerdepth/2), c));
+ triangles.push_back(Triangle(Vertex(x+width/2, y-height/2, z-depth/2),
+ Vertex(x+width/2, y-height/2, z-innerdepth/2),
+ Vertex(x-width/2, y-height/2, z-innerdepth/2), c));
+
+ triangles.push_back(Triangle(Vertex(x- width/2, y-height/2, z+innerdepth/2),
+ Vertex(x-innerwidth/2, y-height/2, z+innerdepth/2),
+ Vertex(x-innerwidth/2, y-height/2, z-innerdepth/2), c));
+ triangles.push_back(Triangle(Vertex(x- width/2, y-height/2, z+innerdepth/2),
+ Vertex(x-innerwidth/2, y-height/2, z-innerdepth/2),
+ Vertex(x- width/2, y-height/2, z-innerdepth/2), c));
+
+ triangles.push_back(Triangle(Vertex(x+ width/2, y-height/2, z+innerdepth/2),
+ Vertex(x+innerwidth/2, y-height/2, z+innerdepth/2),
+ Vertex(x+innerwidth/2, y-height/2, z-innerdepth/2), c));
+ triangles.push_back(Triangle(Vertex(x+ width/2, y-height/2, z+innerdepth/2),
+ Vertex(x+innerwidth/2, y-height/2, z-innerdepth/2),
+ Vertex(x+ width/2, y-height/2, z-innerdepth/2), c));
+
+ // FrontInner face
+ c = Color(1.0, 1.0, 1.0, 0.5);
+
+ triangles.push_back(Triangle(Vertex(x-innerwidth/2, y+height/2, z+innerdepth/2),
+ Vertex(x+innerwidth/2, y+height/2, z+innerdepth/2),
+ Vertex(x-innerwidth/2, y-height/2, z+innerdepth/2), c));
+
+ triangles.push_back(Triangle(Vertex(x-innerwidth/2, y-height/2, z+innerdepth/2),
+ Vertex(x+innerwidth/2, y+height/2, z+innerdepth/2),
+ Vertex(x+innerwidth/2, y-height/2, z+innerdepth/2), c));
+
+ // BackInner face
+ c = Color(1.0, 0.5, 0.0, 0.5);
+
+ triangles.push_back(Triangle(Vertex(x-innerwidth/2, y+height/2, z-innerdepth/2),
+ Vertex(x-innerwidth/2, y-height/2, z-innerdepth/2),
+ Vertex(x+innerwidth/2, y+height/2, z-innerdepth/2), c));
+
+ triangles.push_back(Triangle(Vertex(x-innerwidth/2, y-height/2, z-innerdepth/2),
+ Vertex(x+innerwidth/2, y+height/2, z-innerdepth/2),
+ Vertex(x+innerwidth/2, y-height/2, z-innerdepth/2), c));
+
+ // LeftInner face
+ c = Color(0.0, 1.0, 0.0, 0.5);
+
+ triangles.push_back(Triangle(Vertex(x-innerwidth/2, y+height/2, z+innerdepth/2),
+ Vertex(x-innerwidth/2, y-height/2, z+innerdepth/2),
+ Vertex(x-innerwidth/2, y+height/2, z-innerdepth/2), c));
+
+ triangles.push_back(Triangle(Vertex(x-innerwidth/2, y-height/2, z-innerdepth/2),
+ Vertex(x-innerwidth/2, y+height/2, z-innerdepth/2),
+ Vertex(x-innerwidth/2, y-height/2, z+innerdepth/2), c));
+
+ // RightInner face
+
+ triangles.push_back(Triangle(Vertex(x+innerwidth/2, y+height/2, z+innerdepth/2),
+ Vertex(x+innerwidth/2, y-height/2, z+innerdepth/2),
+ Vertex(x+innerwidth/2, y+height/2, z-innerdepth/2), c));
+
+ triangles.push_back(Triangle(Vertex(x+innerwidth/2, y-height/2, z-innerdepth/2),
+ Vertex(x+innerwidth/2, y+height/2, z-innerdepth/2),
+ Vertex(x+innerwidth/2, y-height/2, z+innerdepth/2), c));
+
+ for(std::list<Triangle>::iterator t = triangles.begin(); t != triangles.end(); ++t) {
+ t->transform(modelview);
+ }
+
+ return triangles;
+}
+
+float Cubehole::getHeight()
+{
+ return height;
+}
+
+float Cubehole::getWidth()
+{
+ return width;
+}
+
+float Cubehole::getDepth()
+{
+ return depth;
+}
+
+float Cubehole::getPosX()
+{
+ return x;
+}
+
+float Cubehole::getPosY()
+{
+ return y;
+}
+
+float Cubehole::getPosZ()
+{
+ return z;
+}
+
+void Cubehole::setSize(float w, float h, float d)
+{
+ width = w;
+ height = h;
+ depth = d;
+}
+
+void Cubehole::setPos(float x, float y, float z)
+{
+ this->x = x;
+ this->y = y;
+ this->z = z;
+}