#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