#include "Cuboid.h" #include "gl.h" #include //#include //#include 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 Cuboid::getTriangles(/*const Matrix &modelview*/) { std::list 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; }