#include <iostream>
#include <string>
#include <math.h>
#include <fstream>
#include <stdlib.h>
#define PI 3.14159265358979323846264338327950288419716939937510
using namespace std;

int densidadGiro( double, int, int );

int main()
{
	double angInicial;
	char renombrar[40];
	int numEspiras=36;
	int numParPolos=2;
	int EPPP=numEspiras/numParPolos; // EPPP espiras por par de polos
	int espirasPorGrupo=EPPP/6;

	for(int i=0; i<1; i++){
		angInicial=i*PI/32;
		densidadGiro(angInicial, EPPP, espirasPorGrupo);
/*		system("cli.bin .");
		system("gmsh captura.script");
		sprintf( renombrar, "mv render.jpg zrender%d.jpg", i+1001);
		cout << renombrar << endl;
		system(renombrar);*/
	}

//	system("mencoder 'mf://zrender*.jpg' -mf fps=50 -o animation.avi -ovc x264 -x264encopts bitrate=20000:threads=3");
}

int densidadGiro( double angInicial, int numEspiras, int EPG )
{
	ifstream fileDensidad;
	ofstream fileSalida;
	int N_C, *nodo, j=0;
	double maximo, angulo, real, imag, *valor;

	
	angulo=PI*2/(numEspiras/EPG); // variacion del angulo por cada fase *1/2


	fileDensidad.open("0.densidadCorri.reg", ios::in);
		if(!fileDensidad.is_open())
			{cout<<"Densico: Error leyendo archivo 0.densidadCorri.reg\n";exit(0);}
	fileDensidad >> maximo;
	fileDensidad >> N_C;
	nodo = new int[N_C];
	valor = new double[N_C];
	for(int i=0; i<N_C; i++){
		fileDensidad >> nodo[i];
	}
	fileDensidad.close();


	fileSalida.precision( 16 ); // set precision to output fileNode
	fileSalida.open("densidadCorri.reg", ios::out);
		if(!fileSalida.is_open())
			{cout<<"Densico: Error creando archivo densidadCorri.reg\n";exit(0);}
	fileSalida << N_C << endl;
	while(j<N_C){
		for( int i=0;i<EPG; i++){
			real = maximo*(sin(((j/EPG)*angulo)+angInicial));
			imag = maximo*(cos(((j/EPG)*angulo)+angInicial));
			fileSalida <<nodo[i+j]<<' '<< real <<' '<<imag<<endl;
		}
		j=j+EPG;
	}

	fileSalida << 'F';
	fileSalida.close();
	return 1;
}
