#include <cmath> #include <Util/exceptions.h> #include "triangle.h" using namespace Ray; using namespace Util; ////////////// // Triangle // ////////////// void Triangle::init( const LocalSceneData &data ) { // Set the vertex pointers for( int i=0 ; i<3 ; i++ ) { if( _vIndices[i]==-1 ) THROW( "negative vertex index: %d" , _vIndices[i] ); else if( _vIndices[i]>=data.vertices.size() ) THROW( "vertex index out of bounds: %d <= %d" , _vIndices[i] , (int)data.vertices.size() ); else _v[i] = &data.vertices[ _vIndices[i] ]; } /////////////////////////////////// // Do any additional set-up here // /////////////////////////////////// WARN_ONCE( "method undefined" ); } void Triangle::updateBoundingBox( void ) { /////////////////////////////// // Set the _bBox object here // /////////////////////////////// Point3D pList[3]; for( int i=0 ; i<3 ; i++ ) pList[i] = _v[i]->position; _bBox = BoundingBox3D( pList , 3 ); for( int i=0 ; i<3 ; i++ ) _bBox[0][i] -= Epsilon , _bBox[1][i] += Epsilon; } void Triangle::initOpenGL( void ) { /////////////////////////// // Do OpenGL set-up here // /////////////////////////// WARN_ONCE( "method undefined" ); // Sanity check to make sure that OpenGL state is good ASSERT_OPEN_GL_STATE(); } double Triangle::intersect( Ray3D ray , RayShapeIntersectionInfo& iInfo , BoundingBox1D range , std::function< bool (double) > validityLambda ) const { ///////////////////////////////////////////////////////////// // Compute the intersection of the shape with the ray here // ///////////////////////////////////////////////////////////// THROW( "method undefined" ); return Infinity; } void Triangle::drawOpenGL( GLSLProgram * glslProgram ) const { ////////////////////////////// // Do OpenGL rendering here // ////////////////////////////// THROW( "method undefined" ); // Sanity check to make sure that OpenGL state is good ASSERT_OPEN_GL_STATE(); }