Beispiel #1
0
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", &lt);

			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", &lt);
			}

			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;
}