From 873bf9be915d5c46b6bbdbcd788fb94b646ee6fb Mon Sep 17 00:00:00 2001 From: Matthias Schiffer Date: Fri, 27 Nov 2009 21:11:46 +0100 Subject: Cuboid und DisplayClass aktualisiert --- Cuboid.cpp | 20 ++++++++++++-------- Cuboid.h | 9 +++++---- DisplayClass.cpp | 47 ++++++++++++++++++++++++++++++++++++++--------- 3 files changed, 55 insertions(+), 21 deletions(-) diff --git a/Cuboid.cpp b/Cuboid.cpp index 5557e39..6569e31 100644 --- a/Cuboid.cpp +++ b/Cuboid.cpp @@ -5,10 +5,14 @@ //#include //#include +Cuboid::Cuboid(float width, float height, float depth) { + setSize(width, height, depth); + setPos(0, 0, 0); +} -Cuboid::Cuboid(float height, float width, float depth, float x, float y, float z) +Cuboid::Cuboid(float width, float height, float depth, float x, float y, float z) { - setSize(height, width, depth); + setSize(width, height, depth); setPos(x, y, z); } @@ -42,10 +46,10 @@ float Cuboid::getPosZ() return z; } -void Cuboid::setSize(float h, float w, float d) +void Cuboid::setSize(float w, float h, float d) { - height = h; width = w; + height = h; depth = d; } @@ -62,7 +66,7 @@ std::list Cuboid::getTriangles(const Matrix &modelview) //srand(time(NULL)); // width, height, depth // Front face - Color c(0.0, 0.0, 1.0); + Color c(0.0, 0.0, 1.0, 0.5); triangles.push_back(Triangle(Vertex(x , y , z), Vertex(x+width, y , z), @@ -73,7 +77,7 @@ std::list Cuboid::getTriangles(const Matrix &modelview) Vertex(x+width, y-height, z), c)); // Back face - c = Color(1.0, 1.0, 0.0); + c = Color(1.0, 1.0, 0.0, 0.5); triangles.push_back(Triangle(Vertex(x , y , z-depth), Vertex(x , y-height, z-depth), @@ -84,7 +88,7 @@ std::list Cuboid::getTriangles(const Matrix &modelview) Vertex(x+width, y-height, z-depth), c)); // Left face - c = Color(0.0, 1.0, 0.0); + c = Color(0.0, 1.0, 0.0, 0.5); triangles.push_back(Triangle(Vertex(x, y , z ), Vertex(x, y-height, z ), @@ -105,7 +109,7 @@ std::list Cuboid::getTriangles(const Matrix &modelview) Vertex(x+width, y-height, z ), c)); // Top face - c = Color(1.0, 0.0, 0.0); + c = Color(1.0, 0.0, 0.0, 0.5); triangles.push_back(Triangle(Vertex(x , y, z ), Vertex(x+width, y, z ), diff --git a/Cuboid.h b/Cuboid.h index 661dc0d..d54e5d2 100644 --- a/Cuboid.h +++ b/Cuboid.h @@ -9,20 +9,21 @@ class Cuboid { - public: - Cuboid(float height, float width, float depth, float x, float y, float z); + public: + Cuboid(float width, float height, float depth); + Cuboid(float width, float height, float depth, float x, float y, float z); float getHeight(); float getWidth(); float getDepth(); float getPosX(); float getPosY(); float getPosZ(); - void setSize(float h, float w, float d); + void setSize(float w, float h, float d); void setPos(float x, float y, float z); std::list getTriangles(const Matrix &modelview); private: - float height, width, depth; + float width, height, depth; float x, y, z; }; #endif /*_CUBOID_H_*/ diff --git a/DisplayClass.cpp b/DisplayClass.cpp index 836988d..9cae95c 100644 --- a/DisplayClass.cpp +++ b/DisplayClass.cpp @@ -6,12 +6,34 @@ void DisplayClass::renderScene(unsigned long delta) -{ - - Cuboid cube1(2, 2, 1, -1, 1, 0.5); - Cuboid cube2(1, 1, 2, -0.5, 0.5, -1.5); +{ + //Cuboid cube1(2, 2, 1, -1, 1, 0.5); + //Cuboid cube2(1, 1, 2, -0.5, 0.5, -1.5); + + static const Cuboid dc(0.8, 2, 0.8); + static const float xs[5] = {-2.5, -1.5, -0.5, 0.5, 1.5}; + static const float zs[5] = {-1.5, -0.5, 0.5, 1.5, 2.5}; + + Cuboid cubes[5][5] = { + {dc, dc, dc, dc, dc}, + {dc, dc, dc, dc, dc}, + {dc, dc, dc, dc, dc}, + {dc, dc, dc, dc, dc}, + {dc, dc, dc, dc, dc}, + }; + + for(int i = 0; i < 5; ++i) { + for(int j = 0; j < 5; ++j) { + cubes[i][j].setPos(xs[j], 1.0, zs[i]); + } + } +/* {Cuboid(2, 1, 1, -2.5, 1.0, -1.5), Cuboid(2, 1, 1, -1.5, 1.0, -1.5), Cuboid(2, 1, 1, -0.5, 1.0, -1.5), Cuboid(2, 1, 1, 0.5, 1.0, -1.5), Cuboid(2, 1, 1, 1.5, 1.0, -1.5)}, + {Cuboid(2, 1, 1, -2.5, 1.0, -0.5), Cuboid(2, 1, 1, -1.5, 1.0, -1.5), Cuboid(2, 1, 1, -0.5, 1.0, -1.5), Cuboid(2, 1, 1, 0.5, 1.0, -0.5), Cuboid(2, 1, 1, 1.5, 1.0, -0.5)}, + {Cuboid(2, 1, 1, -2.5, 1.0, 0.5), Cuboid(2, 1, 1, -1.5, 1.0, -1.5), Cuboid(2, 1, 1, -0.5, 1.0, -1.5), Cuboid(2, 1, 1, 0.5, 1.0, -1.5), Cuboid(2, 1, 1, 1.5, 1.0, 0.5)}, + {Cuboid(2, 1, 1, -2.5, 1.0, 1.5), Cuboid(2, 1, 1, -1.5, 1.0, -1.5), Cuboid(2, 1, 1, -0.5, 1.0, -1.5), Cuboid(2, 1, 1, 0.5, 1.0, -1.5), Cuboid(2, 1, 1, 1.5, 1.0, 1.5)}, + {Cuboid(2, 1, 1, -2.5, 1.0, 2.5), Cuboid(2, 1, 1, -1.5, 1.0, 2.5), Cuboid(2, 1, 1, -0.5, 1.0, 2.5), Cuboid(2, 1, 1, 0.5, 1.0, 2.5), Cuboid(2, 1, 1, 1.5, 1.0, 2.5)}};*/ static float angle = 0.0; - angle += delta*0.05; + angle += delta*0.043; if(angle >= 360) angle -= 360; @@ -28,17 +50,24 @@ void DisplayClass::renderScene(unsigned long delta) //glRotatef(angle*2, 1.0, 0.0, 0.0); //glRotatef(angle*3, 0.0, 0.0, 1.0); - glRotatef(-angle*5, 0.0, 0.0, 1.0); + //glRotatef(-angle*5, 0.0, 0.0, 1.0); m.store(); // Save current transformation + + for(int i = 0; i < 5; ++i) { + for(int j = 0; j < 5; ++j) { + std::list ct = cubes[i][j].getTriangles(m); + triangles.splice(triangles.end(), ct); + } + } - std::list t1 = cube1.getTriangles(m); + /*std::list t1 = cube1.getTriangles(m); triangles.splice(triangles.end(), t1); glRotatef(angle*10, 0.0, 0.0, 1.0); m.store(); - std::list t2 = cube2.getTriangles(m); - triangles.splice(triangles.end(), t2); + t1 = cube2.getTriangles(m); + triangles.splice(triangles.end(), t1);*/ //std::sort(triangles.begin(), triangles.end(), Sorter(p)); -- cgit v1.2.3