00001 #ifndef MATERIAL_H
00002 #define MATERIAL_H
00003
00004 #include "raytrace_defs.h"
00005
00016
00017 class Material {
00018
00019 public:
00020
00022 virtual ~Material() {
00023 };
00024
00027 virtual Magick::Color get_color(const Point3D& intersection_point) const =0;
00028
00034 virtual Magick::Color get_color(const Point3D& intersection_point, const Renderable * const obj) const {
00035 return get_color(intersection_point);
00036 };
00037
00043 virtual bool is_light(const Point3D& intersection_point) const =0;
00044
00049 virtual void set_is_light(bool v) =0;
00050
00054 virtual double get_diffuse(const Point3D& intersection_point) const =0;
00055
00058 virtual void set_diffuse(double diffuse) =0;
00059
00063 virtual double get_reflection(const Point3D& intersection_point) const =0;
00064
00068 virtual double get_reflectivity(const Point3D& intersection_point) const =0;
00069
00075 virtual double get_refraction_index(const Point3D& intersection_point) const =0;
00076
00080 virtual double get_opacity(const Point3D& intersection_point) const =0;
00081
00086 virtual void set_opacity(double opacity) =0;
00087
00088 #if 0
00089
00090 Stub out of specular methods
00091
00096 virtual double get_specular_coeffiecient() = 0;
00097
00104 virtual double get_specular_power() = 0;
00105 #endif
00106
00107
00108 };
00109
00110 #endif