Vista da Lua a partir da Artemis II

por Jeffrey Bryant
Agora que a Artemis II foi lançada com sucesso e deixou a órbita da Terra rumo à Lua, o novo objetivo é realizar o sobrevoo ao redor da Lua. Abordei a trajetória orbital esperada em uma publicação anterior (https://www.wolframcloud.com/obj/international-essays/Published/ArtemisIItrajectory_pt-br.nb). Agora, o objetivo é explorar o que a tripulação verá ao se aproximar da Lua e depois ao retornar para casa.
Como fizemos anteriormente, é necessário consultar JPL Horizons para obter os dados mais recentes de trajetória da missão. Primeiro, é preciso definir o intervalo de data e hora — neste caso, os limites dos dados fornecidos por JPL e um incremento de amostragem de 10 minutos:
In[]:=
date0=
Thu 2 Apr 2026 01:58:00GMT
;​​date1=
Fri 10 Apr 2026 23:50:00GMT
;​​dt=
10
min
;
Em seguida, podemos consultar JPL Horizons:
In[]:=
horizonsEarth=
[◼]
HorizonsEphemerisData
"State","@-1024",<|"Frame"->"EclipticJ2000","Center"->
Earth
PLANET
,"Dates"->{date0,date1,dt}|>,"Position","Dataset";
Depois, uma TimeSeries pode ser construída a partir dos dados obtidos:
In[]:=
artemisEarthTS=TimeSeries@QuantityMagnitude[Normal@horizonsEarth,"AstronomicalUnit"];
Na sequência, são criadas algumas funções auxiliares para obter as posições dos diversos elementos da cena final, utilizando o referencial “EclipticICRS” (que é idêntico ao “EclipticJ2000” da NASA), centrado no centro da Terra:
In[]:=
artemisPos[d_]:=Values[artemisEarthTS[d]]​​moonPos[d_]:=AstroPosition
Moon
PLANETARY MOON
,"EclipticICRS",d,
Earth
PLANET
,"Cartesian"["Data"]​​earthPos[d_]:={0,0,0};​​sunPos[d_]:=AstroPosition
Sun
STAR
,"EclipticICRS",d,
Earth
PLANET
,"Cartesian"["Data"]
Como anteriormente, são utilizadas algumas funções não documentadas para obter as rotações corretas dependentes do tempo dos elementos tridimensionais. O referencial “EclipticICRS” é independente do tempo, portanto não é necessário fornecer uma data:
In[]:=
moonRot[d_]:=Astronomy`AstroOrientationMatrix[{"IAU_MOON",d},"EclipticICRS"]​​earthRot[d_]:=Astronomy`AstroOrientationMatrix[{"ITRS",d},"EclipticICRS"]
São necessários também os tamanhos físicos dos corpos:
In[]:=
moonRad=QuantityMagnitude
Moon
PLANETARY MOON
["EquatorialRadius"],"AstronomicalUnit";​​earthRad=QuantityMagnitude
Earth
PLANET
["EquatorialRadius"],"AstronomicalUnit";​​sunRad=QuantityMagnitude
Sun
STAR
["EquatorialRadius"],"AstronomicalUnit";
Texturas e estilos são necessários para os corpos do sistema solar:
In[]:=
moon0={Texture[GeoImage[GeoModel->"Moon",GeoCenter->-90,GeoProjection->"Equirectangular",GeoZoomLevel->2]],Sphere[]};​​earth0=
Earth
PLANET
["TexturedSurface"][[1]];​​sun0={ColorData["BlackBodySpectrum"][5770],Sphere[]};
Em seguida, cada um dos corpos do sistema solar é rotacionado, escalado e transladado para suas posições apropriadas:
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]]
Alguma estilização para a marcação de data também é útil:
In[]:=
label[d_]:=Style[DateString[d,{"DayShort"," ","MonthNameShort"," ","Year"," ","Hour24",":","Minute",":","Second"," ","GMT"}],GrayLevel[.75],Bold,22]
Para tornar a visualização mais interessante, é útil “desacelerar o tempo” quando a visualização estiver próxima da Lua, permitindo maior atenção aos detalhes. Para isso, o intervalo de datas é amostrado em incrementos de 1 minuto quando a espaçonave está distante da Lua e em incrementos de 1 segundo quando está próxima dela.
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
Thu 2 Apr 2026 01:58:00GMT
,
Fri 10 Apr 2026 23:50:00GMT
->
1
min
,
Mon 6 Apr 2026 22:37:00GMT
,
Tue 7 Apr 2026 02:09:00GMT
->
1
s
;
Por fim, a cena pode ser montada. A funcionalidade principal aqui é o uso da opção ViewVector, que permite posicionar a câmera no local da espaçonave e apontar o alvo para a Lua. O resultado é uma visualização simulada do que a tripulação da Artemis II veria ao observar a Lua durante toda a missão.
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[]=
CloudObject[
https://www.wolframcloud.com/obj/jeffb/Video/Video-2026-04-03T11-31-41-337.m
p4
]

Revisitando a visualização orbital anterior

Esta seção é essencialmente uma versão abreviada do conteúdo da publicação anterior, com alterações no código para torná-lo consistente com esta nova abordagem. Reconstruir essa visualização pode ser útil caso se deseje combinar ambos os vídeos, mantendo-os sincronizados entre si.
In[]:=
datesFromData=Keys[Normal[horizonsEarth]];
In[]:=
xyzArtemisEarth=QuantityMagnitude[Values/@Values@Normal[horizonsEarth[[All,{"X","Y","Z"}]]],"AstronomicalUnit"];
In[]:=
artemisEarthTimeSeries=TimeSeries[Transpose[{datesFromData,xyzArtemisEarth}]]
Out[]=
TimeSeries
Time: Thu 2 Apr 2026 01:57:59 to Fri 10 Apr 2026 23:47:59 GMT+00:00
Length: 1284
Duration:
8
days
21
h
50
min
0
s
0.012
ms

In[]:=
artemisDataFromEarth[d_]:={StandardRed,AbsolutePointSize[10],Point[artemisEarthTimeSeries[d]],Opacity[.75],AbsoluteThickness[2],Line[xyzArtemisEarth]}
In[]:=
moonPath=LineAstroPosition
Moon
PLANETARY MOON
,"EclipticICRS",#,
Earth
PLANET
,"Cartesian"["Data"]&/@datesFromData;
In[]:=
moonDataFromEarth[d_]:=White,SphereAstroPosition
Moon
PLANETARY MOON
,"EclipticICRS",d,
Earth
PLANET
,"Cartesian"["Data"],moonRad,Opacity[.5],AbsoluteThickness[2],moonPath
flybyDate=
Minute: Mon 6 Apr 2026 22:00GMT
;
In[]:=
moonFlybyPos=AstroPosition
Moon
PLANETARY MOON
,"EclipticICRS",flybyDate,
Earth
PLANET
,"Cartesian"["Data"];
In[]:=
optionsFromEarth={ImageSize->{720,720},SphericalRegion->Sphere[moonFlybyPos/2,0.00054],ViewAngle->Pi/20,Boxed->False,ViewPoint->{-1.38,-3,.5},Background->Black};
In[]:=
orbitViewFrames=Graphics3D[​​{​​{White,Translate[Scale[Sphere[],moonRad,{0,0,0}],moonPos[#]],Opacity[.5],AbsoluteThickness[2],moonPath},​​earth[#],​​{StandardRed,AbsolutePointSize[10],Point[artemisEarthTimeSeries[#]],Opacity[.75],AbsoluteThickness[2],Line[xyzArtemisEarth]}​​},​​optionsFromEarth​​]&/@dates;
A combinação dos vídeos é deixada, em grande parte, como exercício para o leitor, mas funções como GridVideo podem ser uma maneira simples e eficaz de uni-los.

CITE ESTE NOTEBOOK

View of the Moon from Artemis II​
by Jeffrey Bryant​
Wolfram Community, STAFF PICKS, April 3, 2026
​https://community.wolfram.com/groups/-/m/t/3673962