#include "cStaticTriangleMesh.h" /* cStaticTriangleMesh::cStaticTriangleMesh() { numVertices_ = 3; numTriangles_ = 1; numEdges_ = 3; vertices_ = new cVertex[numVertices_]; triangles_ = new cTriangle[numTriangles_]; faces_ = new cFace[numTriangles_]; edges_ = new cEdge[numEdges_]; vertices_[0] = cVector(-5,.1,-5); vertices_[0].numFaces_ = 1; vertices_[0].faces_ = faces_; vertices_[1] = cVector(-3,5,5); vertices_[1].numFaces_ = 1; vertices_[1].faces_ = faces_; vertices_[2] = cVector(4,-.4,.2); vertices_[2].numFaces_ = 1; vertices_[2].faces_ = faces_; faces_[0].v0_ = &vertices_[0]; faces_[0].v1_ = &vertices_[1]; faces_[0].v2_ = &vertices_[2]; faces_[0].e0_ = &edges_[0]; faces_[0].e1_ = &edges_[1]; faces_[0].e2_ = &edges_[2]; faces_[0].triangle_ = &triangles_[0]; edges_[0].f0_ = &faces_[0]; edges_[0].f1_ = NULL; edges_[0].v0_ = &vertices_[0]; edges_[0].v1_ = &vertices_[1]; edges_[1].f0_ = &faces_[0]; edges_[1].f1_ = NULL; edges_[1].v0_ = &vertices_[1]; edges_[1].v1_ = &vertices_[2]; edges_[2].f0_ = &faces_[0]; edges_[2].f1_ = NULL; edges_[2].v0_ = &vertices_[2]; edges_[2].v1_ = &vertices_[0]; triangles_[0].face_ = &faces_[0]; triangles_[0].v0_ = &vertices_[0]; triangles_[0].v1_ = &vertices_[1]; triangles_[0].v2_ = &vertices_[2]; triangles_[0].e0_ = &edges_[0]; triangles_[0].e1_ = &edges_[1]; triangles_[0].e2_ = &edges_[2]; triangles_[0].r_ = 1.0; triangles_[0].g_ = 0.0; triangles_[0].b_ = 0.0; for(int i = 0; i < numTriangles_; ++i) { triangles_[i].computeNormal(); triangles_[i].standardizeVertices(); } } */ cStaticTriangleMesh::cStaticTriangleMesh() { float pyramidHeight = 4.0; float halfPyramidSidelength = 3.0; numVertices_ = 5; numTriangles_ = 4; numEdges_ = 8; vertices_ = new cVertex[numVertices_]; triangles_ = new cTriangle[numTriangles_]; faces_ = new cFace[numTriangles_]; edges_ = new cEdge[numEdges_]; //add vertices vertices_[0] = cVector(0,pyramidHeight,0); vertices_[0].numFaces_ = 4; vertices_[0].faces_.push_back(&faces_[0]); vertices_[0].faces_.push_back(&faces_[1]); vertices_[0].faces_.push_back(&faces_[2]); vertices_[0].faces_.push_back(&faces_[3]); vertices_[1] = cVector(-halfPyramidSidelength,0,halfPyramidSidelength); vertices_[1].numFaces_ = 2; vertices_[1].faces_.push_back(&faces_[0]); vertices_[1].faces_.push_back(&faces_[1]); vertices_[2] = cVector(halfPyramidSidelength,0,halfPyramidSidelength); vertices_[2].numFaces_ = 2; vertices_[2].faces_.push_back(&faces_[0]); vertices_[2].faces_.push_back(&faces_[2]); vertices_[3] = cVector(-halfPyramidSidelength,0,-halfPyramidSidelength); vertices_[3].numFaces_ = 2; vertices_[3].faces_.push_back(&faces_[1]); vertices_[3].faces_.push_back(&faces_[3]); vertices_[4] = cVector(halfPyramidSidelength,0,-halfPyramidSidelength); vertices_[4].numFaces_ = 2; vertices_[4].faces_.push_back(&faces_[2]); vertices_[4].faces_.push_back(&faces_[3]); //add faces faces_[0].v0_ = &vertices_[0]; faces_[0].v1_ = &vertices_[2]; faces_[0].v2_ = &vertices_[1]; faces_[0].e0_ = &edges_[2]; faces_[0].e1_ = &edges_[0]; faces_[0].e2_ = &edges_[1]; faces_[0].triangle_ = &triangles_[0]; faces_[1].v0_ = &vertices_[0]; faces_[1].v1_ = &vertices_[1]; faces_[1].v2_ = &vertices_[3]; faces_[1].e0_ = &edges_[1]; faces_[1].e1_ = &edges_[3]; faces_[1].e2_ = &edges_[4]; faces_[1].triangle_ = &triangles_[1]; faces_[2].v0_ = &vertices_[0]; faces_[2].v1_ = &vertices_[4]; faces_[2].v2_ = &vertices_[2]; faces_[2].e0_ = &edges_[5]; faces_[2].e1_ = &edges_[7]; faces_[2].e2_ = &edges_[2]; faces_[2].triangle_ = &triangles_[2]; faces_[3].v0_ = &vertices_[0]; faces_[3].v1_ = &vertices_[3]; faces_[3].v2_ = &vertices_[4]; faces_[3].e0_ = &edges_[4]; faces_[3].e1_ = &edges_[6]; faces_[3].e2_ = &edges_[5]; faces_[3].triangle_ = &triangles_[3]; //add edges edges_[0].f0_ = &faces_[0]; edges_[0].f1_ = NULL; edges_[0].v0_ = &vertices_[1]; edges_[0].v1_ = &vertices_[2]; edges_[1].f0_ = &faces_[0]; edges_[1].f1_ = &faces_[1]; edges_[1].v0_ = &vertices_[0]; edges_[1].v1_ = &vertices_[1]; edges_[2].f0_ = &faces_[0]; edges_[2].f1_ = &faces_[2]; edges_[2].v0_ = &vertices_[0]; edges_[2].v1_ = &vertices_[2]; edges_[3].f0_ = &faces_[1]; edges_[3].f1_ = NULL; edges_[3].v0_ = &vertices_[1]; edges_[3].v1_ = &vertices_[3]; edges_[4].f0_ = &faces_[1]; edges_[4].f1_ = &faces_[3]; edges_[4].v0_ = &vertices_[0]; edges_[4].v1_ = &vertices_[3]; edges_[5].f0_ = &faces_[2]; edges_[5].f1_ = &faces_[3]; edges_[5].v0_ = &vertices_[0]; edges_[5].v1_ = &vertices_[4]; edges_[6].f0_ = &faces_[3]; edges_[6].f1_ = NULL; edges_[6].v0_ = &vertices_[3]; edges_[6].v1_ = &vertices_[4]; edges_[7].f0_ = &faces_[2]; edges_[7].f1_ = NULL; edges_[7].v0_ = &vertices_[4]; edges_[7].v1_ = &vertices_[2]; //add triangles triangles_[0].face_ = &faces_[0]; triangles_[0].v0_ = &vertices_[0]; triangles_[0].v1_ = &vertices_[2]; triangles_[0].v2_ = &vertices_[1]; triangles_[0].e0_ = &edges_[2]; triangles_[0].e1_ = &edges_[0]; triangles_[0].e2_ = &edges_[1]; triangles_[0].r_ = 1.0; triangles_[0].g_ = 0.0; triangles_[0].b_ = 0.0; triangles_[1].face_ = &faces_[1]; triangles_[1].v0_ = &vertices_[0]; triangles_[1].v1_ = &vertices_[1]; triangles_[1].v2_ = &vertices_[3]; triangles_[1].e0_ = &edges_[1]; triangles_[1].e1_ = &edges_[3]; triangles_[1].e2_ = &edges_[4]; triangles_[1].r_ = 0.0; triangles_[1].g_ = 1.0; triangles_[1].b_ = 0.0; triangles_[2].face_ = &faces_[2]; triangles_[2].v0_ = &vertices_[0]; triangles_[2].v1_ = &vertices_[4]; triangles_[2].v2_ = &vertices_[2]; triangles_[2].e0_ = &edges_[5]; triangles_[2].e1_ = &edges_[7]; triangles_[2].e2_ = &edges_[2]; triangles_[2].r_ = 0.0; triangles_[2].g_ = 0.0; triangles_[2].b_ = 1.0; triangles_[3].face_ = &faces_[3]; triangles_[3].v0_ = &vertices_[0]; triangles_[3].v1_ = &vertices_[3]; triangles_[3].v2_ = &vertices_[4]; triangles_[3].e0_ = &edges_[4]; triangles_[3].e1_ = &edges_[6]; triangles_[3].e2_ = &edges_[5]; triangles_[3].r_ = .5; triangles_[3].g_ = .5; triangles_[3].b_ = .5; for(int i = 0; i < numTriangles_; ++i) { triangles_[i].computeNormal(); triangles_[i].standardizeVertices(); } } cStaticTriangleMesh::~cStaticTriangleMesh() { delete[] vertices_; delete[] triangles_; delete[] faces_; delete[] edges_; } /* void cStaticTriangleMesh::addTriangle(cVector v1, cVector v2, cVector v3, int numTriangle) { faces_[numTriangle].v0_ = &v1; faces_[numTriangle].v1_ = &v2; faces_[numTriangle].v2_ = &v3; faces_[numTriangle].e0_ = &edges_[0]; faces_[numTriangle].e1_ = &edges_[1]; faces_[numTriangle].e2_ = &edges_[2]; faces_[numTriangle].triangle_ = &triangles_[0]; for(int i=0; i < 3; ++i) { vertices_[numTriangle*3 + i].numFaces_++; vertices_[numTriangle*3 + i].faces_.push_back(faces_[numTriangle]); } } */ void cStaticTriangleMesh::draw() { for(int i = 0; i < numTriangles_; ++i) triangles_[i].draw(); }