#ifndef _THING_H #define _THING_H #include "vec.h" #include "color.h" using namespace std; class Thing { public: virtual void draw(); virtual void rotate(Vec rot); virtual void setColor(Color* c); virtual void setColor(Color c); virtual void setDelta(float d); virtual void showNormals(); virtual void hideNormals(); virtual void show(); virtual void hide(); virtual void setPosition(Vec newpos); virtual void setCenter(Vec newcenter); virtual void translate(Vec d); virtual void scale(float f); virtual void trace(bool s); virtual void setIterations(int i); virtual ~Thing(); }; class View : public Thing { private: Vec* rotation; Vec* position; Color* bgcolor; public: View(); View(Vec pos); View(Vec pos, Vec rot); void rotate(Vec rot); void setPosition(Vec newpos); void translate(Vec d); void draw(); void setColor(Color* c); }; class ThingGroup : public Thing { private: std::vector<Thing*> things; public: ThingGroup(); void addThing(Thing* t); void show(); void hide(); void draw(); void rotate(Vec r); }; #endif