/*********************************************************************************/
/*																				 */
/*			Generation d'une mire d'elevation directement sur une sphere		 */
/*																				 */
/*																				 */
/*	Emilie KOENIG											octobre 2009		 */
/*																				 */
/*********************************************************************************/

#include "main.h"

/**********************************************************************************/
/*	Programme principal															  */
/**********************************************************************************/

int main (int argc, char **argv)
{
	/* Donnees d'entree */
	char fentree[100], fsortie[100];
	FILE *file1, *file2;

	/* Donnees du fichier d'entree */
	int indic=0;

	
	int i = 0, tmp;
		
	double max, min;
	
	char * date;
	time_t intps;


	/**		Analyse des parametres d'entree		**/
	printf("Analyse des parametres\n");

	Ray = 1.0; r_min = 0.01; L = 1.0;
	motif = 1; 
	
		// Lecture des entrees
	while ( ++i < argc )
	{
		if ( strcmp( argv[i], "-f" ) == 0 )
		{
			strcpy( fentree, argv[++i] );
			indic += 1;
		}
		if ( strcmp( argv[i], "-Ray" ) == 0 )
			Ray = atof( argv[++i] );
		if (strcmp(argv[i], "-L") == 0)
			L = atof(argv[++i]);
		if ( strcmp( argv[i], "-r" ) == 0 )
			r_min = atof( argv[++i] );
		if (strcmp(argv[i], "-m") == 0)
			motif = atof(argv[++i]);
	}
	
		// Erreur si pas assez d'entrŽes
	if ( indic != 1 )
	{
		fprintf(stderr, "Usage complet : -Ray Ray -L L -r rmin -f input\n");
		fprintf(stderr, "Usage minimum : -f input\n");
		fprintf(stderr, "      Ray		: rayon de la sphere\n");
		fprintf(stderr, "      L		: grande echelle de la texture\n");
		fprintf(stderr, "      rmin		: resolution des details\n");
		fprintf(stderr, "      input	: fichier d'entree\n");
		exit( 1 );
	}
	if (indic ==1)
	{
		printf("rayon = %f\n L = %f\n   r_min = %f\n         motif = %d\n", Ray, L, r_min, motif);
	}


	
	/**		Lecture du fichier d'entree		**/
	printf("Lecture du fichier d'entree\n");
		// Ouverture du fichier
	file1 = fopen(fentree,"r");
	if (!file1)
	{
		fprintf(stderr, "Erreur d'ouverture du fichier %s\n", fentree);
		exit(1);
	}
		// Lecture des coordonnees des sommets
	
	fscanf(file1, "%d\n", &maillage);

	lecture_equi(file1);
	
	fclose(file1);

	/**		Generation de la mire		**/
	synthese_map(maillage);

	/**		Ecriture du fichier pour la visualisation		**/
	printf("Ecriture du fichier pour la visualisation\n");
	
	date = (char *)calloc(30, sizeof(char));
	intps = time(NULL);
	strftime(date, 25, "mire_%d_%Hh%M", localtime(&intps));
	file2 = fopen(date,"w");
	if (!file2)
	{
		fprintf(stderr, "Erreur d'ouverture du fichier %s\n", fsortie);
		exit(1);
	}
	fprintf(file2, "%d\n", 4);
	fprintf(file2, "%d\n", maillage);

	ecriture_equi(file2);

	fclose(file2);

	free(date);
	
	free(liste_sommets);
	free(liste_triee_y);

	return 0;
}


