class model{ int P; int order; double size; GLfloat matrix[16]; GLfloat *vertNorms; int **lines; std::string *polynames; std::string *vertnames; GLfloat *points; GLfloat *translated; bool *jawVerts; bool *lowerlipVerts; bool *upperlipVerts; bool *rightbrowVerts; bool *leftbrowVerts; GLfloat eyeM[16]; GLfloat jaw; GLfloat upperlipI[4][3]; GLfloat upperlip[4][3]; GLfloat lowerlipI[4][3]; GLfloat lowerlip[4][3]; GLfloat rightbrowI[4][3]; GLfloat rightbrow[4][3]; GLfloat leftbrowI[4][3]; GLfloat leftbrow[4][3]; public: model(std::string file); void initFFD(); void initMatrices(); void lookUp(float val); void lookRight(float val); void openLeftEye(float val); void openJaw(float val); void openMouth(float val); void raiseRight(float val); void raiseLeft(float val); void curlLip(float val); void Oface(float val); void lowerLeftBrowI(float val); void lowerRightBrowI(float val); void lowerLeftBrowO(float val); void lowerRightBrowO(float val); void applyMouthFFD(); void applyBrowFFD(); void reset(); void rotateX(float rot); void rotateY(float rot); void rotateZ(float rot); void scale(float x, float y, float z); void translate(float x, float y, float z); void drawModel(bool test); void print(); void renderPoints(); };