Calcul de la position d'un satellite

Fermé
lala - 27 mars 2010 à 13:40
 lala - 27 mars 2010 à 23:00
Bnojour,

je voudrai bien réaliser une application qui permet de visualiser en 3D la terre et aussi les orbites des satellites autour de cette dernière.

Mon problème est le suivant : supposant que la terre est déjà modélisée dans un rendu 3D et qui tourne autour d'elle, ce que je cherche c'est j'ai les fonctions qui permettent de calculer la position du satellite à chaque instant t depuis un temps de début t0, et la je ne sais pas comment faire pour intégrer ce calcul vu que j'ai la date système .

par exemple pour le calcule de la position sur l'axe x je dois utiliser la fonction suivante :

long double Satellite::calculX(const long double tps) const
{
long double res;
long double e=calculAnomalieExcentrique(tps);
res=getDemiGrandAxe()*(cos(e)-getExcentricite())*
(
(cos(getArgument())*cos(getAscension()))
-
(sin(getArgument())*cos(getInclinaison())*sin(getAscension()))
);
res+=getDemiGrandAxe()*(sqrt(1.0-(getExcentricite()*getExcentricite())))
*sin(e)
*
(
(-sin(getArgument())*cos(getAscension()))
-
(cos(getArgument())*cos(getInclinaison())*sin(getAscension()))
);
return res;
}

long double Satellite::calculAnomalieExcentrique(const long double tps) const
{
long double m = calculAnomalieMoyenne(tps);
long double e=0;

long double tolerance = 0.0000000000001;//probleme ???
long double mMod = modulo(m,2*PI);
long double nbTours=m-mMod;

long double en=mMod;
long double enp=mMod+getExcentricite()*sin(en);
long double ecart=valAbsolue(enp-en);

while(ecart>tolerance)
{
en=enp;
enp=mMod+getExcentricite()*sin(en);
ecart=valAbsolue(enp-en);
}
return enp+nbTours;
}

long double Satellite::calculAnomalieMoyenne(const long double tps) const
{
return (calculMouvementMoyen()*(tps-getDateDebut()))+getAnomalie();
}


les fonctions retournent les bonnes valeurs, mais comment je vais faire alors pour mettre ça en oeuvre en temps réel ?

j'utilise en fait l'Open Scene Graph pour le rendu 3D.

merci de me répondre .
A voir également:

3 réponses

naruto-94 Messages postés 865 Date d'inscription mercredi 17 août 2005 Statut Membre Dernière intervention 20 décembre 2012 188
27 mars 2010 à 17:06
Salut ,

Je pense qu'il faudra prendre les résultats reçu et les remettre dans un autre calcul par rapport à l'angle de vue que choisi l'utilisateur car il pourra faire un effet d'optique comme si que le satellite frôle la terre donc tes résultats seront fossé .

Je ne sais pas si ce que je dis est vrai ..et de plus il faudrait trouver ce calcul .
0
lermite222 Messages postés 8724 Date d'inscription dimanche 8 avril 2007 Statut Contributeur Dernière intervention 22 janvier 2020 1 190
Modifié par lermite222 le 27/03/2010 à 19:06
Bonjour,
Je ne comprend pas bien la relation avec ton Temps(0), si tu calcul en seconde.. traduire l'heure de ton PC en seconde depuis Heure 0:00 devrait être relativement façile, ou en minute...également si c'est suivant la date 1/1/XX ?
Suis peut-être a côté mais pour moi c'est ce qui ressort de ta question.
Concernatn la remarque de naruto , me semble qu'il suffit de changer l'angle d'incidence, ce qui est déjà prévu dans ta fonction.
Si je suis variment à côté tu dis.. je supprimerais mon commentaire.
A+

L'expérience instruit plus sûrement que le conseil. (André Gide)
Si tu te cogne à un pot et que ça sonne creux, c'est pas forcément le pot qui est vide. ;-)(Confucius)
0
ok vous n'avez pas compris ma question mes je vous remercie pour vos réponses.
0