# Matrix

 Problem 1 Create an Open GL application called Yellow to test translation in Open GL.Cree una aplicación de Open GL llamada Yellow para probar la translación en Open GL.

 Yellow.cpp ... bool Yellow::RenderScene() {      static double currentTime = 0.0;      //_________________________________________________ Translation      static double z = 0.0;      glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT);// clear screen and depth buffer      glLoadIdentity();      gluLookAt(0.0f, 6.0f, 0.1f, 0.0f, 0.0f, 0.0f, 0.0f, 1.0f, 0.0f);      glPushMatrix();      glTranslatef(0.0f, 0.0f, (GLfloat)z);      glPointSize(4);      glBegin(GL_POINTS);      glVertex3f(5.0f, 0.0f, 0.0f);      glEnd();      glPopMatrix();      const double deltaTime = stopWatch.GetSeconds() - currentTime;      z -= (deltaTime*0.1f);      currentTime = stopWatch.GetSeconds() ;      return true; // return false to stop }

 Problem 2 Create an Open GL application called Purple to test rotation in Open GL.Cree una aplicación de Open GL llamada Purple para probar la rotación en Open GL.

 Purple.cpp ... bool Purple::RenderScene() {      static double currentTime = 0.0;      //________________________________________________ Rotation X      static double angle = 0.0f;      glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT);// clear screen and depth buffer      glLoadIdentity();      gluLookAt(0.0f, 10.0f, 0.1f, 0.0f, 0.0f, 0.0f, 0.0f, 1.0f, 0.0f);           glColor3f(0.0f, 1.0f, 0.0f);      glPolygonMode(GL_FRONT_AND_BACK, GL_LINE);      glPushMatrix();      glRotatef((float)angle, 1.0f, 0.0f, 0.0f);      //________________________________________________ Draw Cube      glBegin(GL_POLYGON);      //_________________________ top face      glVertex3f(0.0f, 0.0f, 0.0f);      glVertex3f(0.0f, 0.0f, -1.0f);      glVertex3f(-1.0f, 0.0f, -1.0f);      glVertex3f(-1.0f, 0.0f, 0.0f);      //_________________________ front face      glVertex3f(0.0f, 0.0f, 0.0f);      glVertex3f(-1.0f, 0.0f, 0.0f);      glVertex3f(-1.0f, -1.0f, 0.0f);      glVertex3f(0.0f, -1.0f, 0.0f);      //_________________________ right face      glVertex3f(0.0f, 0.0f, 0.0f);      glVertex3f(0.0f, -1.0f, 0.0f);      glVertex3f(0.0f, -1.0f, -1.0f);      glVertex3f(0.0f, 0.0f, -1.0f);      //_________________________ left face      glVertex3f(-1.0f, 0.0f, 0.0f);      glVertex3f(-1.0f, 0.0f, -1.0f);      glVertex3f(-1.0f, -1.0f, -1.0f);      glVertex3f(-1.0f, -1.0f, 0.0f);      //_________________________ bottom face      glVertex3f(0.0f, 0.0f, 0.0f);      glVertex3f(0.0f, -1.0f, -1.0f);      glVertex3f(-1.0f, -1.0f, -1.0f);      glVertex3f(-1.0f, -1.0f, 0.0f);      //_________________________ back face      glVertex3f(0.0f, 0.0f, 0.0f);      glVertex3f(-1.0f, 0.0f, -1.0f);      glVertex3f(-1.0f, -1.0f, -1.0f);      glVertex3f(0.0f, -1.0f, -1.0f);      glEnd();      glPopMatrix();      const double deltaTime = stopWatch.GetSeconds() - currentTime;      angle += deltaTime*20.0;      if (angle > 360.0f) angle -= 360.0f;      currentTime = stopWatch.GetSeconds();      return true; // return false to stop }

 Problem 3 Create an Open GL application called Redy to test scaling in Open GL.Cree una aplicación de Open GL llamada Redy para probar el escalamiento en Open GL.

 Redy.cpp ... bool Redy::RenderScene() {      static double currentTime = 0.0;      //_______________________________________________ Scaling      static double scale = 0.1;      glPolygonMode(GL_FRONT_AND_BACK, GL_LINE);      glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT);// clear screen and depth buffer      glLoadIdentity();      gluLookAt(0.0, 10.0, 0.1, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0);      glColor3f(0.0f, 1.0f, 0.0f);      glPushMatrix();      glRotatef(45, 1.0, 0.0, 0.0);      glScalef((GLfloat)scale, (GLfloat)scale, (GLfloat)scale);      //______________________________________________ Draw Cube      glBegin(GL_POLYGON);      //_________________________ top face      glVertex3f(0.0f, 0.0f, 0.0f);      glVertex3f(0.0f, 0.0f, -1.0f);      glVertex3f(-1.0f, 0.0f, -1.0f);      glVertex3f(-1.0f, 0.0f, 0.0f);      //_________________________ front face      glVertex3f(0.0f, 0.0f, 0.0f);      glVertex3f(-1.0f, 0.0f, 0.0f);      glVertex3f(-1.0f, -1.0f, 0.0f);      glVertex3f(0.0f, -1.0f, 0.0f);      //_________________________ right face      glVertex3f(0.0f, 0.0f, 0.0f);      glVertex3f(0.0f, -1.0f, 0.0f);      glVertex3f(0.0f, -1.0f, -1.0f);      glVertex3f(0.0f, 0.0f, -1.0f);      //_________________________ left face      glVertex3f(-1.0f, 0.0f, 0.0f);      glVertex3f(-1.0f, 0.0f, -1.0f);      glVertex3f(-1.0f, -1.0f, -1.0f);      glVertex3f(-1.0f, -1.0f, 0.0f);      //_________________________ bottom face      glVertex3f(0.0f, 0.0f, 0.0f);      glVertex3f(0.0f, -1.0f, -1.0f);      glVertex3f(-1.0f, -1.0f, -1.0f);      glVertex3f(-1.0f, -1.0f, 0.0f);      //_________________________ back face      glVertex3f(0.0f, 0.0f, 0.0f);      glVertex3f(-1.0f, 0.0f, -1.0f);      glVertex3f(-1.0f, -1.0f, -1.0f);      glVertex3f(0.0f, -1.0f, -1.0f);      glEnd();      glPopMatrix();      const double deltaTime = stopWatch.GetSeconds() - currentTime;      scale += (deltaTime*0.1f);      if (scale > 3.0) scale = 0.0f;      currentTime = stopWatch.GetSeconds();      return true; // return false to stop }