Código Fuente:
//Las figuras se dibujan presionando la tecla d;
#ifdef __APPLE__
#include <GLUT/glut.h>
#else
#include <GL/gl.h>
#include <GL/glut.h>
#endif
#include <stdlib.h>
#include <iostream>
using namespace std;
float valor_x=0.0,valor_y=0.0;
float x1=0.0,y1=1.0,x2=0.0,y2=-1.0,x3=-1.0,y3=0.0,x4=1.0,y4=0.0;
int cont=0,i=0;
float Arreglo[2][200]={0.0};
void display()
{
glClearColor(0,0,0,0);
glClear(GL_COLOR_BUFFER_BIT);
glMatrixMode(GL_PROJECTION);
glLoadIdentity();
glPushMatrix();
glPointSize(10);
glLineWidth(2);
glColor3f(0.0,0.0,1.0);
glBegin(GL_LINES);
glVertex2d(x1,y1);
glVertex2d(x2,y2);
glVertex2d(x3,y3);
glVertex2d(x4,y4);
glEnd();
glPopMatrix();
i=0;
while(i<cont)
{
glPushMatrix();
glTranslatef(Arreglo[0][i],Arreglo[1][i],0);
glColor3f(1,0,0);
glRotatef(70,0,1,1);
glutWireCube(0.1);
glPopMatrix();
i+=1;
}
glFlush();
}
void keyinput(unsigned char key, int x, int y)
{
switch(key)
{
case 'q':
exit(0);
break;
case 'd':
Arreglo[0][cont]=valor_x;
Arreglo[1][cont]=valor_y;
cont+=1;
glutPostRedisplay();
break;
}
}
void specialKeyInput(int key,int x,int y)
{
if(key==GLUT_KEY_DOWN)
{
valor_y-=0.2;
y3-=0.2;
y4-=0.2;
y2-=0.2;
if(valor_y<=float(-1.1) and valor_y>float(-1.3))
{
valor_y=1.0;
y3=1;
y4=1;
}
glutPostRedisplay();
}
if(key==GLUT_KEY_UP)
{
valor_y+=0.2;
y3+=0.2;
y4+=0.2;
y1+=0.2;
if(valor_y>=float(1.1) and valor_y<float(1.3))
{
valor_y=-1.0;
y3=-1.0;
y4=-1.0;
}
glutPostRedisplay();
}
if(key==GLUT_KEY_LEFT)
{
valor_x-=0.2;
x1-=0.2;
x2-=0.2;
x3-=0.2;
if(valor_x<=float(-1.1) and valor_x>float(-1.3))
{
valor_x=1.0;
x1=1.0;
x2=1.0;
}
glutPostRedisplay();
}
if(key==GLUT_KEY_RIGHT)
{
valor_x+=0.2;
x1+=0.2;
x2+=0.2;
x4+=0.2;
if(valor_x>=float(1.1) and valor_x<float(1.3))
{
valor_x=-1.0;
x1=-1.0;
x2=-1.0;
}
glutPostRedisplay();
}
}
int main(int argc, char *argv[])
{
cerr << "main () \n";
glutInitDisplayMode(GLUT_SINGLE | GLUT_RGBA);
glutInitWindowSize(500,500);
glutCreateWindow("");
glutDisplayFunc(display);
glutKeyboardFunc(keyinput);
glutSpecialFunc(specialKeyInput);
glutMainLoop();
}
No hay comentarios:
Publicar un comentario