00001 #ifndef MIRRORMATERIAL_H_ 00002 #define MIRRORMATERIAL_H_ 00003 00004 #include "Material.h" 00005 00006 namespace rcrt 00007 { 00008 00009 class MirrorMaterial : public rcrt::Material 00010 { 00011 private: 00012 RGBColor reflectivity; 00013 00014 public: 00015 MirrorMaterial(const RGBColor& refl); 00016 virtual ~MirrorMaterial(); 00017 00018 virtual bool hasDiffuse() const; 00019 virtual bool hasSpecular() const; 00020 virtual bool hasTransmissive() const; 00021 virtual RGBColor getEmitted(const Vec3D& wOut, Intersection& is); 00022 virtual RGBColor sample(const Vec3D& wOut, const Vec3D& wInc, Intersection& is); 00023 virtual RGBColor sampleDiffuse(const Vec3D& wOut, const Vec3D& wInc, Intersection& is); 00024 virtual RGBColor sampleSpecular(const Vec3D& wOut, const Vec3D& wInc, Intersection&); 00025 virtual ScatterEvent scatterPhoton(Intersection& is, Photon* photon); 00026 virtual bool refracts() const; 00027 }; 00028 00029 } 00030 00031 #endif /*MIRRORMATERIAL_H_*/