void opcion6() { tContorno contorno; tNombre nombre_fichero_lec; tCoordenada centro; int i; float alpha =0; /* Inicializar contorno */ ini_contorno (&contorno); /* Leer nombre de fichero de contorno */ leer_cadena (nombre_fichero_lec,"El fitxer de lectura de contorno"); leer_contorno_fichero (&contorno, nombre_fichero_lec); escribir_contorno_pantalla (contorno); /* Leer centro de rotacion */ printf("\nInsereix el centre de rotacio:\n"); centro = leer_coordenada_teclado (); /* Rotar contorno una vuelta completa (360 grados) en etapas de ANGULO_ROTACION grados, con una pausa entre cada rotacion */ dibujar_contorno_mapa (contorno); pausa(); /*while (alpha < angulo){ borrar_dibujo (); rotar_contorno (&contorno, ANGULO_ROTACION, centro); pausa (); alpha = alpha + ANGULO_ROTACION; }*/ for (i=0;i<(360/ANGULO_ROTACION);i++) { borrar_dibujo (); rotar_contorno (&contorno, ANGULO_ROTACION, centro); pausa (); } } tCoordenada rotar_coordenada (tCoordenada origen, float angulo, tCoordenada centro_rotacion) { tCoordenada coordenada; float alpha,dist,x,y; coordenada = ini_coordenada(); alpha=angulo_segmento_abcisas (centro_rotacion,origen ); dist=calcular_distancia (centro_rotacion,origen ); girar (angulo); y=dist*sin((alpha+angulo)/180*PI); x=dist*cos((alpha+angulo)/180*PI); coordenada.longitud=centro_rotacion.longitud+x; coordenada.latitud=centro_rotacion.latitud+y; return coordenada; } void rotar_contorno ( tContorno *contorno, float angulo, tCoordenada centro_rotacion) { int i; for (i=0; inum_puntos_contorno;i++){ contorno->contorno[i] = rotar_coordenada (contorno->contorno[i], angulo, centro_rotacion); } dibujar_contorno_mapa (*contorno); }