1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127
| #include <stdio.h>
#include <stdlib.h>
#include <math.h>
double t0 (double e,double w,double a); //déclaration de la fonction t sans correction
double t1 (double e,double w,double a); //déclaration de la fonction t avec correction 1
double t2 (double e,double w,double a); //déclaration de la fonction t avec correction 2
double t3 (double e,double w,double a); //déclaration de la fonction t avec correction 3
double t4 (double e,double w,double a); //déclaration de la fonction t avec correction 4
int main()
{
double a=0; // rayon de l'orbite
double e=0; // exentricité
float v=0; // point de l'orbite d'anomalies vraie
float i=0; // inclinaison
double w=0; //
float mu=398600; // parametre mu définie dans le TP
float vc=0; //
double tab[28][5]={0}; // déclaration du tableau des calculs
float la=0; // latitude
float tp=0; //temp de passage au périgé
int t=0; //compteur de boucle pour l'affichage du tableau
int n=0; //nombre de V saisie
printf("projet modélisation mathématique de la trace d'un satelitte en orbite terrestre\n\n");
printf("veuillez saisir le rayon a de l'orbite \n");
scanf("%f",&a);
printf("veuillez saisir l'exentricite e\n");
scanf("%f",&e);
printf("veuillez saisir l'inclinaison i\n");
scanf("%f",&i);
printf("veuillez saisir le parametre w\n");
scanf("%f",&w);
tp=(-sqrt(pow(a,3)/mu))*(asin((sqrt(1-pow(e,2))*sin(-w))/(1+e*cos(-w)))-e*((sqrt(1-pow(e,2))*sin(-w))/(1+e*cos(-w))));
printf("temp de passage au perigee :%f\n",&tp);
printf("vous pouvez saisir 28 point different de V");
do
{
printf("veuillez saisir un point V de l'orbite\n");
scanf("%f",&v);
n++;
tab[n-1][0]=v; //attribution de V
tab[n-1][1]=(3.141592654*v)/180; //converstion de V en radian
vc=acos(-e); //calcul de Vc
if((vc<=tab[n-1][1])||(tab[n-1][1]<=2*(3.141592654)-vc))
{
tab[n-1][2]=t1(e,w,a)-tp;
} else
{
if(tab[n-1][1]>=2*(3.141592654)-vc)
{
tab[n-1][2]=t2(e,w,a)-tp;
} else
{
if((-2*(3.141592654)+vc<=tab[n-1][1])||(tab[n-1][1]<=-vc))
{
tab[n-1][2]=t3(e,w,a)-tp;
} else
{
if(2*(3.141592654)+vc>=tab[n-1][1])
{
tab[n-1][2]=t4(e,w,a)-tp;
} else
{
if((-vc<=tab[n-1][1])||(tab[n-1][1]<=vc,-vc<=-w,-w<=vc))
{
tab[n-1][2]=t0(e,w,a)-tp;
}
}
}
}
}
la=pow(sin(sin(w+tab[n-1][0])*sin(i)),-1); //calcul de la latitude
tab[n-1][3]=la;
tab[n-1][4]=pow(sin((tan(la))/(tan(i))),-1); //calcul de la longitude
} while(n!=28); //fin de la boucle à la 28e valeurs
printf("affichage du tableau\n");
printf("affichage du tableau\nresultats des calculs : \n\n");
for (t=0; t<28; t++) //boucle d'affichage des résultats
{
printf("point %2d : %f, %f, %f, %f, %f\n",t+1,tab[t][0],tab[t][1],tab[t][2],tab[t][3],tab[t][4]);
}
return 0;
}
double t0(double e,double w,double a)
{
float mu=398600;
double tab[28][5];
int n;
return (sqrt(pow(a,3)/mu))*(asin((sqrt(1-pow(e,2))*sin(tab[n-1][1]))/(1+e*cos(tab[n-1][1])))-e*((sqrt(1-pow(e,2))*sin(tab[n-1][1]))/(1+e*cos(tab[n-1][1]))));
}
double t1(double e,double w,double a)
{
float mu=398600;
double tab[28][5];
int n;
return (sqrt(pow(a,3)/mu))*((3.141592654)-(asin((sqrt(1-pow(e,2))*sin(tab[n-1][1]))/(1+e*cos(tab[n-1][1])))-e*((sqrt(1-pow(e,2))*sin(tab[n-1][1]))/(1+e*cos(tab[n-1][1])))));
} //définition de la fonction t1
double t2(double e,double w,double a)
{
float mu=398600;
double tab[28][5];
int n;
return (sqrt(pow(a,3)/mu))*(2*(3.141592654)+(asin((sqrt(1-pow(e,2))*sin(tab[n-1][1]))/(1+e*cos(tab[n-1][1])))-e*((sqrt(1-pow(e,2))*sin(tab[n-1][1]))/(1+e*cos(tab[n-1][1])))));
} //définition de la fonction t2
double t3 (double e,double w,double a)
{
float mu=398600;
double tab[28][5];
int n;
return (sqrt(pow(a,3)/mu))*((-3.141592654)-(asin((sqrt(1-pow(e,2))*sin(tab[n-1][1]))/(1+e*cos(tab[n-1][1])))-e*((sqrt(1-pow(e,2))*sin(tab[n-1][1]))/(1+e*cos(tab[n-1][1])))));
} //définition de la fonction t3
double t4(double e,double w,double a)
{
float mu=398600;
double tab[28][5];
int n;
return (sqrt(pow(a,3)/mu))*(-2*(-3.141592654)+(asin((sqrt(1-pow(e,2))*sin(tab[n-1][1]))/(1+e*cos(tab[n-1][1])))-e*((sqrt(1-pow(e,2))*sin(tab[n-1][1]))/(1+e*cos(tab[n-1][1])))));
} //définition de la fonction t4 |