src/rcrt/gi/Photon.h

Go to the documentation of this file.
00001 #ifndef PHOTON_H_
00002 #define PHOTON_H_
00003 
00004 #include "../RGBColor.h"
00005 #include "../math/Point3D.h"
00006 #include "../math/Vec3D.h"
00007 #include "../primitives/Axis.hpp"
00008 
00009 namespace rcrt
00010 {
00011 
00012 enum ScatterEvent{
00013         STORE,
00014         DIFFUSE,
00015         SPECULAR,
00016         REFRACTED,
00017         INVALID,
00018 };
00019 
00020 class Photon
00021 {
00022 private:
00023         RGBColor power;
00024         Vec3D direction;
00025         Point3D position;
00026         float weight;
00027         int bounces;
00028         
00029 public:
00030         Photon(const float& w = 1);
00031         Photon(const RGBColor& pow, const Vec3D& dir, const Point3D& pos, const int& b = 0, const float& weight = 1);
00032         virtual ~Photon();
00033         
00034         inline void setWeight(const float& w)
00035         {
00036                 weight = w;
00037         }
00038         
00039         inline const float& getWeight() const
00040         {
00041                 return weight;
00042         }
00043         
00044         inline void setPos(const Point3D& pos)
00045         {
00046                 position = pos;
00047         }
00048         
00049         inline const Point3D& getPos() const
00050         {
00051                 return position;
00052         }
00053         
00054         inline void setPower(const RGBColor& pow)
00055         {
00056                 power = pow;
00057         }
00058         
00059         inline const RGBColor& getPower() const
00060         {
00061                 return power;
00062         }
00063         
00064         inline void scalePower(const RGBColor& fac)
00065         {
00066                 power = power * fac;
00067         }
00068         
00069         inline void scalePower(const float& fac)
00070         {
00071                 power = power * fac;
00072         }
00073         
00074         inline void setDir(const Vec3D& vec)
00075         {
00076                 direction = vec;
00077         }
00078         
00079         inline const Vec3D& getDir() const
00080         {
00081                 return direction;
00082         }
00083         
00084         inline void addBounce()
00085         {
00086                 bounces++;
00087         }
00088         
00089         inline const int& getBounces()
00090         {
00091                 return bounces;
00092         }
00093         
00094         inline void setBounces(const int& i)
00095         {
00096                 bounces = i;
00097         }
00098         
00099 };
00100 
00101 }
00102 
00103 #endif /*PHOTON_H_*/

Generated on Thu Jan 31 19:26:19 2008 for RenderingCompetitionRayTracer by  doxygen 1.5.3