// Tetrahedron.cpp: implementation of the CTetrahedron class. // ////////////////////////////////////////////////////////////////////// #include "Tetrahedron.h" ////////////////////////////////////////////////////////////////////// // Construction/Destruction ////////////////////////////////////////////////////////////////////// GLfloat gTriangleVertices[4][3]={ {-1.0,-1.0,1.0},{1.0,-1.0,0.0}, {-1.0,-1.0,-1.0},{0.0,1.0,0.0}}; GLfloat gColors[4][3] = {{1.0,0.0,0.0},{0.0,1.0,0.0},{0.0,0.0,1.0},{1.0,1.0,0.0}}; CTetrahedron::CTetrahedron():CGeometry() { Type=TRIANGLE; Name="tetrahedron"; Selected=false; Visible=true; setVertices(gTriangleVertices); setColors(gColors); } CTetrahedron::~CTetrahedron() { } void CTetrahedron::setVertices(GLfloat Vertices[][3]) { int i,j; for(i=0;i<4;i++) for(j=0;j<3;j++) triangleVertices[i][j]=Vertices[i][j]; } void CTetrahedron::setColors(GLfloat cols[][3]) { int i,j; for(i=0;i<4;i++) for(j=0;j<3;j++) colors[i][j]=cols[i][j]; } void CTetrahedron::drawLine(GLfloat Vertices[][3], int a, int b) { glBegin(GL_LINES); glVertex3fv( Vertices[a]); glVertex3fv(Vertices[b]); glEnd(); } void CTetrahedron::drawTrianglePlane(GLfloat Vertices[][3], int a, int b, int c, int color) { glColor3fv(colors[color]); // Draw the sides of the cube glBegin(GL_TRIANGLES); glVertex3fv(Vertices[a]); glVertex3fv(Vertices[b]); glVertex3fv(Vertices[c]); glEnd(); } void CTetrahedron::drawTriangleInWireFrame() { glColor4f(0.0,0.0,0.0,1.0); drawLine(triangleVertices,0,1); drawLine(triangleVertices,0,2); drawLine(triangleVertices,0,3); drawLine(triangleVertices,1,2); drawLine(triangleVertices,1,3); drawLine(triangleVertices,2,3); } void CTetrahedron::drawTriangle() { drawTrianglePlane(triangleVertices,0,1,2,0); drawTrianglePlane(triangleVertices,0,1,3,1); drawTrianglePlane(triangleVertices,0,2,3,2); drawTrianglePlane(triangleVertices,1,2,3,3); } void CTetrahedron::render() { /* drawTriangle(); if(isSelected()) drawTriangleInWireFrame(); */ if(isSelected()) glColor3fv(HighlightColor); else glColor3fv(NormalColor); glutWireTetrahedron(); } void CTetrahedron::renderSolid() { if(isSelected()) glColor3fv(HighlightColor); else glColor3fv(NormalColor); glutSolidTetrahedron(); }