All pastes #275163 Raw Edit

Unnamed

public text v1 · immutable
·published 2006-12-11 08:32 UTC
rendered paste body
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; i<contorno->num_puntos_contorno;i++){
		contorno->contorno[i] = rotar_coordenada (contorno->contorno[i], angulo, centro_rotacion);
	}
		dibujar_contorno_mapa (*contorno);
}