Vue de la Lune depuis Artemis II
Vue de la Lune depuis Artemis II
par Jeffrey Bryant
Maintenant qu’Artemis II a été lancée avec succès et a quitté l’orbite terrestre en route vers la Lune, le nouvel objectif est d’effectuer un vol autour de la Lune. J’ai présenté la trajectoire orbitale prévue dans un précédent article (https://community.wolfram.com/groups/-/m/t/3672762). Maintenant, je veux explorer ce que l’équipage verra à l’approche de la Lune, puis lors du retour vers la Terre.
Comme auparavant, nous devons interroger JPL Horizons pour obtenir les données de trajectoire les plus récentes de la mission. Nous devons d’abord définir la fenêtre pour les dates et les heures, dans ce cas les limites des données fournies par JPL et un incrément d’échantillonnage de 10 minutes :
In[]:=
date0=;date1=;dt=;
Il est maintenant possible d’interroger JPL Horizons :
In[]:=
horizonsEarth="State","@-1024",<|"Frame"->"EclipticJ2000","Center"->,"Dates"->{date0,date1,dt}|>,"Position","Dataset";
Ensuite, on peut construire une TimeSeries à partir des données interrogées :
In[]:=
artemisEarthTS=TimeSeries@QuantityMagnitude[Normal@horizonsEarth,"AstronomicalUnit"];
Puis, certaines fonctions utilitaires sont créées pour obtenir les positions des divers éléments de la scène finale, en utilisant le référentiel "EclipticICRS" (qui est identique à « EclipticJ2000 » de la NASA) centré sur le centre de la Terre :
In[]:=
artemisPos[d_]:=Values[artemisEarthTS[d]]moonPos[d_]:=AstroPosition,"EclipticICRS",d,,"Cartesian"["Data"]earthPos[d_]:={0,0,0};sunPos[d_]:=AstroPosition,"EclipticICRS",d,,"Cartesian"["Data"]
Comme auparavant, on utilise certaines fonctions non documentées pour obtenir les rotations temporellement dépendantes correctes des éléments 3D. Le repère "EclipticICRS" est indépendant du temps, donc nous n’avons pas besoin de lui donner une date :
In[]:=
moonRot[d_]:=Astronomy`AstroOrientationMatrix[{"IAU_MOON",d},"EclipticICRS"]earthRot[d_]:=Astronomy`AstroOrientationMatrix[{"ITRS",d},"EclipticICRS"]
Les dimensions physiques des corps sont nécessaires :
In[]:=
moonRad=QuantityMagnitude["EquatorialRadius"],"AstronomicalUnit";earthRad=QuantityMagnitude["EquatorialRadius"],"AstronomicalUnit";sunRad=QuantityMagnitude["EquatorialRadius"],"AstronomicalUnit";
Des textures et des styles sont nécessaires pour les corps du système solaire :
In[]:=
moon0={Texture[GeoImage[GeoModel->"Moon",GeoCenter->-90,GeoProjection->"Equirectangular",GeoZoomLevel->2]],Sphere[]};earth0=["TexturedSurface"][[1]];sun0={ColorData["BlackBodySpectrum"][5770],Sphere[]};
Nous allons ensuite faire pivoter, redimensionner et déplacer chacun des corps du système solaire pour les placer à leur emplacement respectif :
In[]:=
moon[d_]:=Translate[Scale[GeometricTransformation[moon0,moonRot[d]],moonRad,{0,0,0}],moonPos[d]]earth[d_]:=Scale[GeometricTransformation[earth0,earthRot[d]],earthRad,{0,0,0}]sun[d_]:=Translate[Scale[sun0,sunRad,{0,0,0}],sunPos[d]]
Une certaine mise en forme pour l’estampille de date est également utile :
In[]:=
label[d_]:=Style[DateString[d,{"DayShort"," ","MonthNameShort"," ","Year"," ","Hour24",":","Minute",":","Second"," ","GMT"}],GrayLevel[.75],Bold,22]
Pour rendre les choses plus intéressantes, il est utile de « ralentir l’horloge » lorsque la vue est proche de la Lune afin qu’une plus grande attention aux détails soit possible. Pour ce faire, l’intervalle de dates est échantillonné par incréments de 1 minute lorsqu’on est loin de la Lune, mais par incréments de 1 seconde lorsqu’on est proche de la Lune.
In[]:=
movingAverage[dates_List,n_Integer]:=Mean/@Partition[dates,n,1];
In[]:=
IntervalSampling[intsamps_List]:=With[{all=Union@@Map[IntervalSampling,intsamps]},{n=Round[Length[all]/100,2]},{res=movingAverage[all,n+1]},Union[Take[all,n/2],res,Take[all,-n/2]]];
In[]:=
IntervalSampling[Rule[{tmin_,tmax_},dt_]]:=Range[tmin,tmax,dt]
In[]:=
dates=IntervalSampling,->,,->;
La scène peut enfin être assemblée. La fonctionnalité clé ici est l’utilisation de l’option ViewVector. Cela permet de placer la caméra à l’emplacement du vaisseau spatial et de pointer la cible vers la Lune. Le résultat est une vue simulée de ce que l’équipage d’Artemis II verrait s’il regardait la Lune pendant toute la mission.
In[]:=
crewViewFrames=Graphics3D{AmbientLight[GrayLevel[.2]],{Specularity[White,1],PointLight[White,sunPos[#]],AmbientLight[GrayLevel[.2]],moon[#],earth[#]},{DirectionalLight[White,ImageScaled[{0,0,1}]],sun[#]}},&/@dates;
In[]:=
crewViewVideo=SlideShowVideo[crewViewFrames,DefaultDuration->45,RasterSize->{720,720}]
Out[]=
Retour sur la vue orbitale précédente
Retour sur la vue orbitale précédente
CITER CE NOTEBOOK
CITER CE NOTEBOOK