//---------------------------------------------------------------------------- // William Baxter III's Ray Tracer // // Project for Comp 238, Raster Graphics // University of North Carolina at Chapel Hill // // $Id:$ //---------------------------------------------------------------------------- #ifndef WB3MATERIAL_H #define WB3MATERIAL_H //---------------------------------------------------------------------------- #include class wb3Material { public: wb3Material(const Vec3f& KAmbient, const Vec3f& KDiffuse, const Vec3f& KSpecular, const Vec3f& KReflect, const Vec3f& KRefract, float SpecExp = 2.0f, float Index = 1.0f); wb3Material(const Vec3f& K, float SpecExp = 2.0f, float Index = 1.0f); wb3Material(float SpecExp = 2.0f, float Index = 1.0f); ~wb3Material() {}; const Vec3f& GetAmbient() const; const Vec3f& GetDiffuse() const; const Vec3f& GetSpecular() const; const Vec3f& GetReflect() const; const Vec3f& GetRefract() const; void SetAmbient(const Vec3f& KAmb); void SetDiffuse(const Vec3f& KDif); void SetSpecular(const Vec3f& KSpec); void SetReflect(const Vec3f& KRefl); void SetRefract(const Vec3f& KRefr); float GetSpecularity() const; void SetSpecularity(float fSpec); float GetIndex() const; void SetIndex(float fIndexOfRefraction); protected: wb3Material *m_pNext; Vec3f m_KAmbient; Vec3f m_KDiffuse; Vec3f m_KSpecular; Vec3f m_KReflect; Vec3f m_KRefract; float m_fSpecExp; float m_fIndex; // index of refraction }; //---------------------------------------------------------------------------- inline const Vec3f& wb3Material::GetAmbient() const { return m_KAmbient; } //---------------------------------------------------------------------------- inline const Vec3f& wb3Material::GetDiffuse() const { return m_KDiffuse; } //---------------------------------------------------------------------------- inline const Vec3f& wb3Material::GetSpecular() const { return m_KSpecular; } //---------------------------------------------------------------------------- inline const Vec3f& wb3Material::GetReflect() const { return m_KReflect; } //---------------------------------------------------------------------------- inline const Vec3f& wb3Material::GetRefract() const { return m_KRefract; } //---------------------------------------------------------------------------- inline float wb3Material::GetIndex() const { return m_fIndex; } //---------------------------------------------------------------------------- inline void wb3Material::SetAmbient(const Vec3f& KAmb) { m_KAmbient = KAmb; } //---------------------------------------------------------------------------- inline void wb3Material::SetDiffuse(const Vec3f& KDif) { m_KDiffuse = KDif; } //---------------------------------------------------------------------------- inline void wb3Material::SetSpecular(const Vec3f& KSpec) { m_KSpecular = KSpec; } //---------------------------------------------------------------------------- inline void wb3Material::SetReflect(const Vec3f& KRefl) { m_KReflect = KRefl; } //---------------------------------------------------------------------------- inline void wb3Material::SetRefract(const Vec3f& KRefr) { m_KRefract = KRefr; } //---------------------------------------------------------------------------- inline void wb3Material::SetIndex(float fIndexOfRefraction) { m_fIndex = fIndexOfRefraction; } //---------------------------------------------------------------------------- inline float wb3Material::GetSpecularity() const { return m_fSpecExp; } //---------------------------------------------------------------------------- inline void wb3Material::SetSpecularity(float fSpecularity) { m_fSpecExp = fSpecularity; } //---------------------------------------------------------------------------- #endif