#pragma once #include "Polygon3D.h" #include "Vertex.h" #include "Matrix.h" #include using namespace std; class Model { public: Model(); ~Model(); const vector& GetPolygons(); const vector& GetVertices(); const vector& GetPendingTransforms(); size_t GetPolygonCount(); size_t GetVerticesCount(); size_t GetPendingTransformCount(); void AddVertex(float x, float y, float z); void AddPolygon(int index0, int index1, int index2); void EnqueueTransform(Matrix transform); void ClearPendingTransforms(); Polygon3D GetPolygon(int index); Vertex GetVertex(int polygonIndex, int vertexPolygonIndex); Vertex GetVertex(int index); void ApplyTransformToLocalVertices(const Matrix& transform); void ApplyTransformToTransformedVertices(const Matrix& transform); void DehomogenizeAllVertices(); private: vector _polygons; vector _vertices; vector _transformedVertices; vector _pendingTransforms; };