
Continuando , ya configuramos ( leer como configurar ) , ahora para programar ...
9. abre el devc, nuevo proyecto ene este icono , indicas el lugar de guardar y el nombre
10. propiedades de proyecto
11.parámetros o argumentos en otros , porque ? , pos no se
12.linkear , añadir librería
13. escoges la librerías, *.lib, solo son 4 , y van a destacar justo porqué están en mayúscula
Aceptar.
**no siempre va aparecer en los links , lib/opengl..etc, depende de donde se allá guardado el proyecto , va aparecer la ruta
14.listo , ahora a escribir el código ,..hagamos una prueba
15. este es el código
//inicio de codigo #include <stdlib.h> #include<conio.h> #include <gl/glut.h> #include <math.h> //permite ajustar la escala visual double esc=0.3; //guarda el angulo de rotacion del sol y los planetas //azul, rojo y verde respectivamente int velocidad=3; double sol=0; double azul=0; double rojo=0; double verde=0; //guarda el angulo de traslacion de los planetas //azul, rojo y verde respectivos double tazul=0; double tverde=0; double trojo=0; //guarda el sentido de la rotacion del sol y los //planetas respectivos static int sen1=1; //sol static int senA=1; //azul static int senR=1; //rojo static int senV=1; //verde //guarda el sentido de la traslacion del los //planetas respectivos static int senta=1; //azul static int sentv=1; //rojo static int sentr=1; //verde // para el elipse a es el radio del eje horizontal // y b el del eje vertical el valor de c sera la distancia // del foco al centro que sera calculado como: c=b-a double a=4; double b=5; void dibu_sol() { glColor3f(1,1,0); glutWireSphere(0.75,20,20); } void dibu_verde() { glColor3f(0,1,0); glutWireSphere(0.2,10,10); } void dibu_azul() { glColor3f(0,0,1); glutWireSphere(0.2,10,10); } void dibu_rojo() { glColor3f(1,0,0); glutWireSphere(0.2,10,10); } void init(void) { glClearColor(1,1,1,0); glShadeModel(GL_FLAT); } void objeto_geometrico(void) { glScalef(esc,esc,esc);//genera una escala de visualizacion //grafica al sol y sus movimientos glRotatef(sol,0,1,0); dibu_sol(); glRotatef(-sol,0,1,0); //grafica al planeta azul y sus movimientos glRotatef(tazul,0,1,0); glTranslatef(-4,0,0); glRotatef(azul,0,1,0); dibu_azul(); glRotatef(-azul,0,1,0); glTranslatef(4,0,0); glRotatef(-tazul,0,1,0); //grafica al planeta verde y sus movimientos glRotatef(tverde,0,0,1); glTranslatef(0,2.5,0); glRotatef(verde,0,1,0); dibu_verde(); glRotatef(-verde,0,1,0); glTranslatef(0,-2.5,0); glRotatef(-tverde,0,0,1); //grafica al planeta rojo y sus movimientos glTranslatef(a*cos(trojo),b*sin(trojo),0); glTranslatef(0,b-a,0); glRotatef(rojo,0,1,0); dibu_rojo(); glRotatef(rojo,0,1,0); glTranslatef(0,a-b,0); glTranslatef(-a*cos(trojo),-b*sin(trojo),0); } void display(void) { glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT); glLoadIdentity(); glColor3f(1,1,1); //dibuja los ejes cordenados glBegin(GL_LINES); glVertex3f(0,0,0); glVertex3f(0,0,1.5); glVertex3f(0,0,0); glVertex3f(0,1.5,0); glVertex3f(0,0,0); glVertex3f(1.5,0,0); glEnd(); objeto_geometrico (); glFlush(); glutSwapBuffers(); }
//genera el momiento de rotacion del sol usando presisamente rotaciones void girar_sol() { sol +=0.7*sen1*velocidad; if(sol>360) sol -= 360.0; if(sol<0) sol += 360.0; display(); } //genera el momiento de rotacion del planeta azul usando presisamente rotaciones void girar_Azul() { azul += 0.6*senA*velocidad; if(azul>360) azul -= 360.0; if(azul<0) azul += 360.0; display(); } //genera el momiento de rotacion del planeta verde usando presisamente rotaciones void girar_Verde() { verde += 0.6*senV*velocidad; if(verde>360) verde -= 360.0; if(verde<0) verde += 360.0; display(); } //genera el momiento de rotacion del planeta rojo usando presisamente rotaciones void girar_Rojo() { rojo += 0.6*senR*velocidad; if(rojo>360) rojo -= 360.0; if(rojo<0) rojo += 360.0; display(); } //genera el momiento de rotacion del planeta azul usando rotaciones void trans_azul() { tazul+=0.8*senta*velocidad; if(tazul>360) tazul -= 360.0; if(tazul<0) tazul += 360.0; display(); } //genera el momiento de rotacion del planeta verde usando rotaciones void trans_verde() { tverde+=0.8*sentv*velocidad; if(tverde>360) tverde -= 360.0; if(tverde<0) tverde += 360.0; display(); } //genera el momiento de rotacion del planeta rojo usando transalaciones //adaptando la ecuacion de la circunferencia para el elipse void trans_rojo() { trojo+=0.015*sentr*velocidad; if(trojo>360) trojo -= 360.0; if(trojo<-360) trojo += 360.0; display(); }
//permite cambiar el sentido de las rotaciones y translaciones //de los planetas y el sol void teclado(unsigned char tecla,int x,int y) { switch(tecla) { case 'q' : case 'Q' : sen1 = 1; break; case 'w' : case 'W' : sen1 = -1; break; case 'a' : case 'A' : senA=1;break; case 's' : case 'S' : senA=-1;break; case 'E' : case 'e' : senta=1;break; case 'r' : case 'R' : senta=-1;break; case 'O' : case 'o' : senV=1;break; case 'p' : case 'P' : senV=-1;break; case 'C' : case 'c' : sentv=1;break; case 'v' : case 'V' : sentv=-1;break; case 'z' : case 'Z' : senR=1;break; case 'X' : case 'x' : senR=-1;break; case 'D' : case 'd' : sentr=1;break; case 'F' : case 'f' : sentr=-1;break; case 'K' : case 'k' : exit(0) ; } } void myReshape(int w, int h) { glViewport(0,0,w,h); glMatrixMode(GL_PROJECTION); glLoadIdentity(); if(w <=h) glOrtho(-2.0,2.0,-2.0*(GLdouble)h/(GLdouble)w, 2.0*(GLdouble)h/(GLdouble)w, -10.0, 10.0); else glOrtho(-2.0*(GLdouble)w/(GLdouble)h, 2.0*(GLdouble)w/(GLdouble)h, -2.0,2.0,-10.0,10.0); glMatrixMode(GL_MODELVIEW); } void menu1(int op) { switch(op){ case 1: sen1=1; break; case 2: sen1=-1; break; case 3: senA=1; break; case 4: senA=-1; break; case 5: senta=1; break; case 6: senta=-1; break; case 7 :senV=1; break; case 8: senV=-1; break; case 9: sentv=1; break; case 10:sentv=-1; break; case 11:senR=1; break; case 12:senR=-1; break; case 13:sentr=1 ; break; case 14 :sentr=-1 ; break; case 15 : exit(0); break; } } void inicio() { girar_sol(); girar_Azul(); trans_azul(); girar_Verde(); trans_verde(); girar_Rojo(); trans_rojo(); } int main(int argc, char **argv) { glutInit(&argc, argv); glutInitDisplayMode(GLUT_DOUBLE | GLUT_RGB | GLUT_DEPTH); glutInitWindowSize(600,600); glutCreateWindow("Sistema Planetario"); glutDisplayFunc(display); glutIdleFunc(inicio); int submenu=glutCreateMenu(menu1);//de los modelos glutCreateMenu(menu1); glutAddSubMenu("Planetas",submenu); glutAddMenuEntry("Rotacion Sol antihoraria",1); glutAddMenuEntry("Rotacion Sol horaria",2); glutAddMenuEntry("Rotacion Azul antihoraria",3); glutAddMenuEntry("Rotacion Azul horaria",4); glutAddMenuEntry("Traslacion Azul antihoraria",5); glutAddMenuEntry("Traslacion Azul horaria",6); glutAddMenuEntry("Rotacion Verde antihoraria",7); glutAddMenuEntry("Rotacion Verde horaria",8); glutAddMenuEntry("Traslacion Verde antihoraria",9); glutAddMenuEntry("Traslacion Verde horaria",10); glutAddMenuEntry("Rotacion Rojo antihoraria",11); glutAddMenuEntry("Rotacion Rojo horaria",12); glutAddMenuEntry("Traslacion Rojo antihoraria",13); glutAddMenuEntry("Traslacion Rojo horaria",14); glutAddMenuEntry("Salir",15); glutAttachMenu(GLUT_RIGHT_BUTTON); glutReshapeFunc(myReshape); glutKeyboardFunc(teclado); glEnable(GL_DEPTH_TEST); glutMainLoop(); } //fin de codigo
16. F9 , para compilar y ejecutar , come primera ves taímen te va pedir guardar , y ponerle un nombre ……, lito
17. Bien!!! si funciona .
Todo listo , ahora pueden llevárselo en usb y programar a gusto .
Suerte.
Archivos Adicionales ::
Archivos Adicionales ::
fart fuck but
ResponderEliminar