[このノートブックは以下のcommunity postをLLMツールにより日本語に翻訳したものです:
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]
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]
Artemis IIから見た月の眺め
Artemis IIから見た月の眺め
Artemis II は首尾よく打上げられ,現在,地球周回軌道を離脱して月に向かう途中であり,新たな目標は月の周囲を飛行することである.予想される軌道については前回の投稿 (https://community.wolfram.com/groups/-/m/t/3672762) で取り上げた.ここでは,乗組員が月へ接近する際に何を目にし,その後どのように地球へ帰還するのかを考察する.
前回と同様に,このミッションの最新の軌道データについて JPL Horizons に問い合わせる必要がある.まず日付と時刻の範囲を定義する必要があり,この場合は JPLが提供するデータの範囲と10分のサンプリング増分を定義する.
In[]:=
date0=;date1=;dt=;
これで JPL Horizons に問い合わせできる.
In[]:=
horizonsEarth="State","@-1024",<|"Frame"->"EclipticJ2000","Center"->,"Dates"->{date0,date1,dt}|>,"Position","Dataset";
次に,照会したデータからTimeSeriesを構成できる.
In[]:=
artemisEarthTS=TimeSeries@QuantityMagnitude[Normal@horizonsEarth,"AstronomicalUnit"];
次に,地球の中心を原点とし,"EclipticICRS" 座標フレーム(これはNASAの "EclipticJ2000" と同一である)を用いて,最終シーンのさまざまな要素の位置を取得するためのいくつかの便利な関数を作成する.
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"]
前回と同様に,まだ文書化されていない関数をいくつか使って,3D 要素の正しい時間依存回転を取得する."EclipticICRS" 座標フレームは時間非依存であるため,これに日付を与える必要はない:
In[]:=
moonRot[d_]:=Astronomy`AstroOrientationMatrix[{"IAU_MOON",d},"EclipticICRS"]earthRot[d_]:=Astronomy`AstroOrientationMatrix[{"ITRS",d},"EclipticICRS"]
天体の物理的な大きさが必要となる.
In[]:=
moonRad=QuantityMagnitude["EquatorialRadius"],"AstronomicalUnit";earthRad=QuantityMagnitude["EquatorialRadius"],"AstronomicalUnit";sunRad=QuantityMagnitude["EquatorialRadius"],"AstronomicalUnit";
太陽系の天体にはテクスチャおよびスタイルが必要となる.
In[]:=
moon0={Texture[GeoImage[GeoModel->"Moon",GeoCenter->-90,GeoProjection->"Equirectangular",GeoZoomLevel->2]],Sphere[]};earth0=["TexturedSurface"][[1]];sun0={ColorData["BlackBodySpectrum"][5770],Sphere[]};
次に,太陽系の各天体をそれぞれ適切な位置へ回転,スケール,および平行移動する.
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]]
日付スタンプにいくつかスタイルを付けると有用である.
In[]:=
label[d_]:=Style[DateString[d,{"DayShort"," ","MonthNameShort"," ","Year"," ","Hour24",":","Minute",":","Second"," ","GMT"}],GrayLevel[.75],Bold,22]
より面白いものにするために,視点が月の近くにあるときに「時計を遅くして」,より一層細部に注意を払うことができるようにすると有用である.これを行うため,月から遠いときには日付範囲を1分刻みでサンプリングする一方,月に近いときには1秒刻みでサンプリングする.
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,->,,->;
最後に,シーンを組み立てることができる.ここでの主要な機能は,ViewVector オプションの使用にある.このオプションを使うと,カメラを宇宙船の位置に配置し,標的を月に向けることが可能になる.結果として,Artemis II の乗組員がミッション全体を通して月を見た場合に目にするであろうものをシミュレートした眺めが得られる.
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[]=
前の軌道ビューを再訪する
前の軌道ビューを再訪する
以下は,前回の投稿の内容の縮小版であり,この新しい投稿との整合性を保つためにコードが変更されている.両方の動画を互いに同期させた状態で結合したい場合には,以下を再構築するとよい.
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
In[]:=
artemisDataFromEarth[d_]:={StandardRed,AbsolutePointSize[10],Point[artemisEarthTimeSeries[d]],Opacity[.75],AbsoluteThickness[2],Line[xyzArtemisEarth]}
In[]:=
moonPath=LineAstroPosition,"EclipticICRS",#,,"Cartesian"["Data"]&/@datesFromData;
In[]:=
moonDataFromEarth[d_]:=White,SphereAstroPosition,"EclipticICRS",d,,"Cartesian"["Data"],moonRad,Opacity[.5],AbsoluteThickness[2],moonPath
flybyDate=;
In[]:=
moonFlybyPos=AstroPosition,"EclipticICRS",flybyDate,,"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};
動画を組み合せる作業の大部分は読者に委ねられているが,GridVideo のような関数を使うと,動画を簡単な方法で組み合せることが容易になる.
このノートブックを引用
このノートブックを引用
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
by Jeffrey Bryant
Wolfram Community, STAFF PICKS, April 3, 2026
https://community.wolfram.com/groups/-/m/t/3673962