void reshape(int w, int h) { glViewport(0, 0, (GLsizei) w, (GLsizei) h); glMatrixMode(GL_PROJECTION); menu_opciones(); glLoadIdentity(); glFrustum(-1.0, 1.0, -1.0, 1.0, 1.5, 20.0); glMatrixMode(GL_MODELVIEW); }
/* Contiene el menú principal del programa llama al resto de las funciones */ int menu(int control, float * dperfil, float * opc, float * opp, float * opf) { int opcion; if (control==0) { printf("\033[32m************************************************************************\n"); printf("CHMYukovski\n\nBienvenido al programa.\nElija la opción que desea ejecutar:\n\n1. Construcción del perfil del ala\n2. Calculo del flujo\n3. Opciones\n4. Salir\n"); printf("\033[32m************************************************************************"); printf("\033[0m\n"); } scanf("%d",&opcion); switch(opcion) { case 1: // Cálculo del perfil alar perfil(dperfil, opc, opp, opf); menu(0, dperfil, opc, opp, opf); // Llama al menú como si el programa volviese a empezar break; case 2: // Cálculo del flujo en el perfil if (flujo(dperfil, opc, opp, opf)==1) { printf("\033[34mProyecto final en C de la asignatura de Informática\nGrado en Ingeniería Aeroespacial\n\n Adrián Delgado Marcos\n Javier Lobato Pérez\n Pablo Rodríguez Robles"); printf("\033[0m\n\n"); return 0; } else menu(0, dperfil, opc, opp, opf); break; case 3: // Opciones menu_opciones(opc, opp, opf); menu(0, dperfil, opc, opp, opf); break; case 4: // Salir printf("\033[34mProyecto final en C de la asignatura de Informática\nGrado en Ingeniería Aeroespacial\n\n Adrián Delgado Marcos\n Javier Lobato Pérez\n Pablo Rodríguez Robles"); printf("\033[0m\n\n"); break; default: menu(1, dperfil, opc, opp, opf); // Si no se selecciona ninguna opción correcta llama al menú sin imprimir las opciones hasta que se elija una que lo sea break; } return 0; }
/* Menú para modificar opciones de plot del flujo del cilindro */ int menu_flujo (float * opc, float * opp, float * opf) { printf("\033[33m 1. Color de flujo \n 2. Tamaño de la linea de flujo\n 3. Color del cilindro \n 4. Salir"); // 1: (l)ine(c)olor flujo 2: (l)ine(w)idth 3:(l)ine(c)olor cilindro printf("\033[0m\n"); int opcion, lcf, lcc; float lw; scanf ("%d", &opcion); while (opcion!=1 && opcion!=2 && opcion!=3 && opcion!=4) //En caso de que el valor introducido sea diferente del esperado, espera otra introduccion { printf("\033[31mValor no valido"); printf("\033[0m\n"); scanf("%d", &opcion); } switch(opcion) { case 1: printf("\033[33m (1) Rojo \n (2) Verde \n (3) Azul \n (7) Negro \n (9) Gris"); printf("\033[0m\n"); scanf ("%d", &lcc); while (lcc!=1 && lcc!=2 && lcc!=3 && lcc!=7 && lcc!=9) { printf("\033[31m Valor no valido"); printf("\033[0m\n"); scanf("%d", &lcc); } opf[0]= (float) lcc; menu_flujo (opc, opp, opf); // Se vuelve al menu del flujo break; case 2: printf("\033[33m Tamaño de la linea de flujo: "); printf("\033[0m "); scanf ("%f", &lw); opf[2]=lw; // Introducimos el valor obtenido en el vector if (lw > 2) { printf("\033[31m ¡Te van a quedar lineas muy gruesas!\n"); printf("\033[0m\n"); } else printf("\033[0m\n"); menu_flujo (opc, opp, opf); // Se vuelve al menu del flujo break; case 3: printf("\033[33m (1) Rojo \n (2) Verde \n (3) Azul \n (7) Negro \n (9) Gris"); printf("\033[0m\n"); scanf ("%d", &lcf); while (lcf!=1 && lcf!=2 && lcf!=3 && lcf!=7 && lcf!=9) { printf("\033[31m Valor no valido"); printf("\033[0m\n"); scanf("%d", &lcf); } opf[2]= (float) lcf; menu_flujo (opc, opp, opf); // Se vuelve al menu del perfil break; case 4: menu_opciones(opc, opp, opf); // Se vuelve al menu de opciones break; } return 0; }
/* Menú para modificar opciones de plot del perfil */ int menu_perfil (float * opc, float * opp, float * opf) { printf("\033[33m 1. Tipo de punto \n 2. Tamaño de punto \n 3. Color de punto \n 4. Tipo de malla \n 5. Color de malla\n 6. Salir"); // 1: (p)oint(t)ype 2: (p)oint(s)ize 3: (l)ine(t)ype 4:(pattern) malla 5:(l)ine(c)olor malla printf("\033[0m\n"); int opcion, pt, lt, pattern, lc; float ps; scanf ("%d", &opcion); while (opcion!=1 && opcion!=2 && opcion!=3 && opcion!=4 && opcion!=5 && opcion!=6) //En caso de que el valor introducido sea diferente del esperado, espera otra introduccion { printf("\033[31m Valor no valido"); printf("\033[0m\n"); scanf("%d", &opcion); } switch(opcion) { case 1: printf("\033[33m (2) Cruz \n (3) Asterisco \n (4) Cuadrado \n (7) Punto"); printf("\033[0m\n"); scanf ("%d", &pt); while (pt!=2 && pt!=3 && pt!=4 && pt!=7) // En caso de que el valor introducido sea diferente del esperado, espera otra introduccion { printf("\033[31m Valor no valido"); printf("\033[0m\n"); scanf("%d", &pt); } opp[0]= (float) pt; // Introducimos el valor obtenido (con su correspondiente casting) en el vector menu_perfil (opc, opp, opf); // Se vuelve al menu del perfil break; case 2: printf("\033[33m Tamaño del punto: "); printf("\033[0m"); scanf ("%f", &ps); opp[1]=ps; // Introducimos el valor obtenido en el vector if (ps > 2) { printf("\033[31m Te van a quedar puntos muy grandes!\n"); printf("\033[0m\n"); } else printf("\033[0m\n"); menu_perfil (opc, opp, opf); // Se vuelve al menu del perfil break; case 3: printf("\033[33m (1) Rojo \n (2) Verde \n (3) Azul \n (7) Negro \n (9) Gris"); printf("\033[0m\n"); scanf ("%d", <); while (lt!=1 && lt!=2 && lt!=3 && lt!=7 && lt!=9) // En caso de que el valor introducido sea diferente del esperado, espera otra introduccion { printf("\033[31m Valor no valido"); printf("\033[0m\n"); scanf("%d", <); } opp[2]= (float) lt; // Introducimos el valor obtenido (con su correspondiente casting) en el vector menu_perfil (opc, opp, opf); // Se vuelve al menu del perfil break; case 4: printf("\033[33m (1) Malla 1\n (2) Malla 2 \n (3) Superficie"); printf("\033[0m\n"); scanf ("%d", &pattern); while (pattern!=1 && pattern!=2 && pattern!=3) // En caso de que el valor introducido sea diferente del esperado, espera otra introduccion { printf("\033[31m Valor no valido"); printf("\033[0m\n"); scanf("%d", &pattern); } opp[3]= (float) pattern; // Introducimos el valor obtenido (con su correspondiente casting) en el vector menu_perfil (opc, opp, opf); // Se vuelve al menu del perfil break; case 5: printf("\033[33m (1) Rojo \n (2) Verde \n (3) Azul \n (7) Negro \n (9) Gris"); printf("\033[0m\n"); scanf ("%d", &lc); while (lc!=1 && lc!=2 && lc!=3 && lc!=7 && lc!=9) { printf("\033[31m Valor no valido"); printf("\033[0m\n"); scanf("%d", &lc); } opp[4]= (float) lc; menu_perfil (opc, opp, opf); // Se vuelve al menu del perfil break; case 6: menu_opciones(opc, opp, opf); // Se vuelve al menu de opciones break; } return 0; }