#ifndef _POLY_H #define _POLY_H #include "vec.h" #include "spoly.h" #include "thing.h" #include "color.h" #include "material.h" #include <vector> #include <string> using namespace std; class Poly : SPoly { private: std::vector<Vec*> initpoints; int size; Vec* position; Vec* rotation; Vec* center; Vec* normal; Material* material; float delta; bool drawNormals; float scaleFactor; public: Poly(); Poly(std::vector<Vec*> & _points); Poly(std::vector<Vec*> & _points, Color _color); Poly(std::vector<Vec*> & _points, Material _material); ~Poly(); void setCenter(Vec c); void setCenter(Vec* c); Vec getInitRotation(Vec& v); Vec calcCenter(); void setPosition(Vec newcenter); void setPosition(Vec* newcenter); void setRotation(Vec rot); void setRotation(Vec* rot); void rotate(Vec rot); void draw(); int numPoints(); void vardump(std::string whitespace); void addPoint(Vec* p); void setColor(Color c); void setColor(Color* c); void setMaterial(Material m); void setMaterial(Material* m); Material* getMaterial(); void setDelta(float d); void showNormals(); void hideNormals(); void calcNormal(); Poly* clone(); void translate(Vec d); void scale(float f); }; #endif