00001 #ifndef DIRLIGHT_H_ 00002 #define DIRLIGHT_H_ 00003 00004 #include "Light.h" 00005 #include "../math/rcrtmath.h" 00006 00007 namespace rcrt 00008 { 00009 00010 class DirLight : public rcrt::Light 00011 { 00012 private: 00013 Vec3D direction; 00014 00015 public: 00016 DirLight(const RGBColor& p, const Vec3D& dir); 00017 virtual ~DirLight(); 00018 00019 const Vec3D& getDirection() const; 00020 virtual LightSample illuminate(const Point3D& p, const Vec3D& no) const; 00021 virtual void illuminate(const Point3D& p, const Vec3D& no, std::vector<LightSample>& samples, 00022 const int& noSamples, Scene* s) const; 00023 virtual RGBColor getEmitted(const Vec3D& dir, const Point3D& pos) const; 00024 00025 virtual void emitPhoton(Photon* photon) const; 00026 00027 }; 00028 00029 } 00030 00031 #endif /*DIRLIGHT_H_*/