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