#include <stdlib.h>
#include <stdio.h>
#include <math.h>


double carre(double x){
	return ((x)*(x));
}

int main(){
//declaration des variables et ouverture du fichier de sortie
	double u0,rx,ry,ux,uy;
	double Dt=0.1;
	double fracOmega;
	unsigned int n, i;
	FILE* sortie;
	sortie =fopen("cyclotron.txt","w");

//demande d'entrée des conditions d'exécution du code
	printf("vitesse initiale ?\n");
	if(scanf("%lf",&u0)==1);
	printf("nombre d'itérations ?\n");
	if(scanf("%u",&n)==1);
	printf("rapport Omega/omega ?\n");
	if(scanf("%lf",&fracOmega)==1);

	rx=0;
	ry=0;
	ux=u0;
	uy=0;

//affichage de la position initiale dans le fichier de sortie
	fprintf(sortie,"0\t%lf\t%lf\t%lf\t%lf\t%lf\n",rx,ry,ux,uy,carre(ux)+carre(uy));

//calcul et affichage de toutes les autres positions
	if(fabs(fracOmega-1)<1e-8){
		for( i=1;i<n;i++){
			//x et y en fonction du temps (sans unité)
			rx=sin(i*Dt)*u0+sin(i*Dt)*(i*Dt)/2.0;
			ry=-(1.0/2.0)*sin(i*Dt)+cos(i*Dt)*(u0+(i*Dt)/2.0)-u0;
			//ux et uy en fonction du temps (sans unité)
			ux=0;//à compléter
			uy=0;//à compléter
			fprintf(sortie,"%lf\t%lf\t%lf\t%lf\t%lf\t%lf\n",i*Dt,rx,ry,ux,uy,carre(ux)+carre(uy));
		}
	}
	else{
		for( i=1;i<n;i++){
			//x et y en fonction du temps (sans unité)
			rx=0;//à compléter
			ry=0;//à compléter
			//ux et uy en fonction du temps (sans unité)
			ux=0;//à compléter
			uy=0;//à compléter
			fprintf(sortie,"%lf\t%lf\t%lf\t%lf\t%lf\t%lf\n",i*Dt,rx,ry,ux,uy,carre(ux)+carre(uy));
		}
	}
	return 0;
} 
