rendered paste bodyvoid 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; i<contorno->num_puntos_contorno;i++){
contorno->contorno[i] = rotar_coordenada (contorno->contorno[i], angulo, centro_rotacion);
}
dibujar_contorno_mapa (*contorno);
}