#include #include #include float angulo; float trans; int swc; void ejesCoordenada(float w) { glLineWidth(w); glBegin(GL_LINES); glColor3f(1.0,0.0,0.0); glVertex2f(0,10); glVertex2f(0,-10); glColor3f(0.0,0.0,1.0); glVertex2f(10,0); glVertex2f(-10,0); glEnd(); glLineWidth(w-1.0); int i; glColor3f(0.0,1.0,0.0); glBegin(GL_LINES); for(i = -10; i <=10; i++){ if (i!=0) { if ((i%2)==0){ glVertex2f(i,0.4); glVertex2f(i,-0.4); glVertex2f(0.4,i); glVertex2f(-0.4,i); }else{ glVertex2f(i,0.2); glVertex2f(i,-0.2); glVertex2f(0.2,i); glVertex2f(-0.2,i); } } } glEnd(); glLineWidth(1.0); } void dibujarCuadrado() { glBegin(GL_LINE_LOOP); glVertex2f(-1,1); glVertex2f(1,1); glVertex2f(1,-1); glVertex2f(-1,-1); glEnd(); } void dibujarTriangulo() { glBegin(GL_LINE_LOOP); glVertex2f(0,0); glVertex2f(0,1); glVertex2f(-1,0); glEnd(); glBegin(GL_LINE_LOOP); glVertex2f(0,0); glVertex2f(0,-1); glVertex2f(1,0); glEnd(); } void display(){ glClearColor(0.0f, 0.0f, 0.0f ,1.0f); glClear(GL_COLOR_BUFFER_BIT); glLoadIdentity(); ejesCoordenada(2.5); glTranslatef(0.0,4.0,0.0); glRotatef(angulo,0.0,0.0,1.0); ejesCoordenada(1.5); glColor3f(1.0,1.0,0.0); glPushMatrix(); glTranslatef(trans,0.0,0.0); glScalef(1.0,1.0,1.0); dibujarCuadrado(); glPopMatrix(); glPushMatrix(); glTranslatef(3.0,0.0,0.0); glScalef(1.0,1.0,1.0); glRotatef((-1)*angulo,0.0,0.0,1.0); ejesCoordenada(1.1); glColor3f(1.0,0.5,0.5); dibujarTriangulo(); glPopMatrix(); //glFlush(); glutSwapBuffers(); } void animacion1() { if (swc==0) { trans = trans + 0.1; if (trans >= 10.0) swc = 1; }else { trans = trans - 0.1; if (trans<=-10.0) swc = 0; } angulo = angulo + 0.1; glutPostRedisplay(); } void animacion2(int v) { if (swc==0) { trans = trans + 0.1; if (trans>=10.0) swc = 1; }else { trans = trans - 0.1; if (trans<=-10.0) swc = 0; } angulo = angulo + 5; glutPostRedisplay(); glutTimerFunc(500,animacion2,0); } void cambioventana(int w, int h){ float aspectratio; if (h==0) h=1; glViewport(0, 0, w, h); glMatrixMode(GL_PROJECTION); glLoadIdentity(); aspectratio = (float) w / (float) h; if (w<=h) { glOrtho(-10, 10, -10/aspectratio, 10/aspectratio, 1.0, -1.0); }else{ glOrtho(-10*aspectratio, 10*aspectratio, -10, 10, 1.0, -1.0); } glMatrixMode(GL_MODELVIEW); } int main(int argc,char** argv) { angulo = 0.0; swc = 0; glutInit(&argc,argv); //glutInitDisplayMode (GLUT_RGB | GLUT_SINGLE); glutInitDisplayMode (GLUT_RGB | GLUT_DOUBLE); glutInitWindowSize (500, 500); glutInitWindowPosition (10, 50); glutCreateWindow ("Mi primera ventana"); glutDisplayFunc(display); glutReshapeFunc(cambioventana); glutIdleFunc(animacion1); //glutTimerFunc (1000, animacion2, 0); glutMainLoop(); return 0; }