include/crbn/matter/matter.hpp

00001 
00002 #ifndef __matter_hpp__
00003 #define __matter_hpp__
00004 
00005 #include <crbn/basic/vec3.hpp>
00006 #include <crbn/basic/trihedron.hpp>
00007 
00022 class Matter
00023 {
00024  public:
00025 
00026   // ctor.
00027   Matter() : _ok          ( false ), 
00028              _is_specular ( false ),
00029              _index       ( 1.0f  ),
00030              _absortion   ( 1.0f  ) {}
00031 
00032   Matter(const bool& ok,
00033          const bool& is_specular = false, 
00034          const bool& index       = 1.0f,
00035          const bool& absortion   = 1.0f ) :
00036         _ok          ( ok          ),
00037         _is_specular ( is_specular ),
00038         _index       ( index       ),
00039         _absortion   ( absortion   ) {}
00040 
00041   // dtor.
00042   virtual ~Matter() {}
00043 
00044   bool is_ok       () { return _ok;          }
00045   bool is_specular () { return _is_specular; }
00046 
00047   virtual float specular() const = 0; // may disappear soon
00048 
00049   float index     () const { return _index;     }
00050   float absortion () const { return _absortion; }
00051 
00052   virtual float eval( trihedron& tri, vec3& in, vec3& out ) = 0;
00053 
00058   virtual int sample( trihedron& tri, vec3& in, int number, vec3* outs );
00059 
00060 protected:
00061   bool  _ok;
00062   bool  _is_specular;
00063   float _index;
00064   float _absortion;
00065 };
00066 
00067 #endif // __matter_hpp__

Generated on Tue Nov 14 15:40:08 2006 for libcrbn by  doxygen 1.5.0