イプシロン3号機の軌道KMLをWolframCloudで描画してみる。

2020-02-29

EPSILON KML Mathematica Wolfram WolframCloud

t f B! P L
2018/01/18 夜明け前の南打ちで壮観な姿と美しい夜光雲を見せてくれた
イプシロン3号機の(仮=借り)KMLに含まれる座標を
WolframCloudに読み込んで作図してみた。線の色は次の通り。

     第1段 燃焼中 
     第1段 燃焼終了・分離 
     第2段 燃焼中 
     第2段 燃焼終了・分離 
     第3段 燃焼中 



これを描くプログラムの処理部分はこんな感じ。たったこれだけで描ける。
右下で色が薄くなっているのは太陽があたっている部分。
NightHemisphere関数で一発描画可能。上図はリフトオフ時刻のもの。
時刻を進めるとこの境界はどんどん西に移動してくる。
背景は GeoBackground -> GeoStyling["StreetMap"] で指定する。
ReliefMapの方がきれいだけど日当たりの状況がわかりにくいので...

   画像を貼ってしまったが秒は13ではなく11だったので訂正必要 ↓

なお、表示している軌道は地球表面へ投影した状態。

自分でWolframCloud上で試したい人のためにKMLデータを代入するところも含んだ全てのソースを貼っておく。KMLには時刻情報も含めているのでアニメーションも作れるはず。少し加工すればKMLファイルに復元することも可能。

以下コピペ用ソースのすべて。貼り付けてShift+Enterで実行される。
慣れた人ならもっとエレガントに書けると思う。

というか、テレメータ等で取得した本物の軌道データ、欲しいなぁ...
森田先生お願いします。  m(..)m

ep3path = {
   {
    {31.250833, 131.082222,      0.00, "2018-01-18T15:06:13", 1},
    {31.242458, 131.090243,   1457.75, "2018-01-18T15:06:18", 1},
    {31.234081, 131.098228,   2905.01, "2018-01-18T15:06:22", 1},
    {31.225705, 131.106177,   4341.83, "2018-01-18T15:06:26", 1},
    {31.217327, 131.114091,   5768.29, "2018-01-18T15:06:30", 1},
    {31.208949, 131.121969,   7184.45, "2018-01-18T15:06:33", 1},
    {31.200570, 131.129812,   8590.39, "2018-01-18T15:06:37", 1},
    {31.192191, 131.137620,   9986.18, "2018-01-18T15:06:40", 1},
    {31.183811, 131.145392,  11371.87, "2018-01-18T15:06:43", 1},
    {31.175431, 131.153129,  12747.55, "2018-01-18T15:06:46", 1},
    {31.167049, 131.160831,  14113.27, "2018-01-18T15:06:49", 1},
    {31.150285, 131.176131,  16815.12, "2018-01-18T15:06:54", 1},
    {31.133519, 131.191292,  19477.96, "2018-01-18T15:06:58", 1},
    {31.116749, 131.206315,  22102.31, "2018-01-18T15:07:03", 1},
    {31.099978, 131.221200,  24688.70, "2018-01-18T15:07:07", 1},
    {31.083204, 131.235949,  27237.64, "2018-01-18T15:07:11", 1},
    {31.066427, 131.250563,  29749.64, "2018-01-18T15:07:14", 1},
    {31.049648, 131.265041,  32225.21, "2018-01-18T15:07:18", 1},
    {31.032867, 131.279385,  34664.85, "2018-01-18T15:07:21", 1},
    {31.016083, 131.293595,  37069.05, "2018-01-18T15:07:24", 1},
    {30.999296, 131.307673,  39438.30, "2018-01-18T15:07:27", 1},
    {30.982508, 131.321618,  41773.09, "2018-01-18T15:07:29", 1},
    {30.965716, 131.335433,  44073.90, "2018-01-18T15:07:32", 1},
    {30.948922, 131.349117,  46341.21, "2018-01-18T15:07:35", 1},
    {30.932126, 131.362671,  48575.48, "2018-01-18T15:07:37", 1},
    {30.915327, 131.376096,  50777.18, "2018-01-18T15:07:39", 1},
    {30.898526, 131.389393,  52946.76, "2018-01-18T15:07:42", 1},
    {30.881722, 131.402562,  55084.69, "2018-01-18T15:07:44", 1},
    {30.864916, 131.415604,  57191.42, "2018-01-18T15:07:46", 1},
    {30.848108, 131.428521,  59267.39, "2018-01-18T15:07:48", 1},
    {30.831297, 131.441312,  61313.03, "2018-01-18T15:07:50", 1},
    {30.814483, 131.453978,  63328.80, "2018-01-18T15:07:52", 1},
    {30.797667, 131.466521,  65315.11, "2018-01-18T15:07:53", 1},
    {30.780848, 131.478940,  67272.40, "2018-01-18T15:07:55", 1},
    {30.764028, 131.491237,  69201.09, "2018-01-18T15:07:57", 1},
    {30.747204, 131.503412,  71101.59, "2018-01-18T15:07:59", 1},
    {30.730378, 131.515466,  72974.31, "2018-01-18T15:08:00", 1},
    {30.721964, 131.521448,  73900.39, "2018-01-18T15:08:01", 1}
 },{
    {30.721964, 131.521448,  73900.39, "2018-01-18T15:08:01", 2},
    {30.705135, 131.533322,  75732.22, "2018-01-18T15:08:02", 2},
    {30.663050, 131.562486,  80195.59, "2018-01-18T15:08:05", 2},
    {30.620950, 131.590915,  84497.84, "2018-01-18T15:08:09", 2},
    {30.578834, 131.618621,  88644.95, "2018-01-18T15:08:12", 2},
    {30.536703, 131.645614,  92642.73, "2018-01-18T15:08:15", 2},
    {30.494556, 131.671904,  96496.83, "2018-01-18T15:08:18", 2},
    {30.452394, 131.697503, 100212.72, "2018-01-18T15:08:21", 2},
    {30.410217, 131.722420, 103795.72, "2018-01-18T15:08:24", 2},
    {30.368024, 131.746666, 107250.99, "2018-01-18T15:08:28", 2},
    {30.325815, 131.770251, 110583.55, "2018-01-18T15:08:31", 2},
    {30.283592, 131.793185, 113798.25, "2018-01-18T15:08:34", 2},
    {30.241353, 131.815479, 116899.81, "2018-01-18T15:08:37", 2},
    {30.199098, 131.837141, 119892.78, "2018-01-18T15:08:40", 2},
    {30.156828, 131.858183, 122781.58, "2018-01-18T15:08:43", 2},
    {30.148372, 131.862318, 123347.23, "2018-01-18T15:08:44", 2},
    {30.114543, 131.878613, 125570.51, "2018-01-18T15:08:47", 2},
    {30.072242, 131.898442, 128263.70, "2018-01-18T15:08:50", 2},
    {30.029925, 131.917678, 130865.15, "2018-01-18T15:08:53", 2},
    {30.012994, 131.925209, 131880.93, "2018-01-18T15:08:54", 2},
    {29.987594, 131.936332, 133378.76, "2018-01-18T15:08:56", 2},
    {29.962187, 131.947249, 134846.33, "2018-01-18T15:08:58", 2}
 },{
    {29.962187, 131.947249, 134846.33, "2018-01-18T15:08:58", 3},
    {29.945246, 131.954413, 135808.27, "2018-01-18T15:08:59", 3},
    {29.902884, 131.971929, 138157.31, "2018-01-18T15:09:02", 3},
    {29.818112, 132.005306, 142627.82, "2018-01-18T15:09:07", 3},
    {29.733279, 132.036534, 146816.86, "2018-01-18T15:09:12", 3},
    {29.648384, 132.065685, 150749.13, "2018-01-18T15:09:17", 3},
    {29.563427, 132.092827, 154447.57, "2018-01-18T15:09:22", 3},
    {29.137718, 132.200719, 170120.71, "2018-01-18T15:09:44", 3},
    {28.710465, 132.267906, 182502.72, "2018-01-18T15:10:04", 3},
    {28.281669, 132.301415, 192911.11, "2018-01-18T15:10:23", 3},
    {27.851330, 132.307452, 202077.67, "2018-01-18T15:10:40", 3},
    {27.419448, 132.291448, 210324.00, "2018-01-18T15:10:57", 3},
    {27.150906, 132.272550, 215008.36, "2018-01-18T15:11:07", 3}
 },{
    {27.150906, 132.272550, 215008.36, "2018-01-18T15:11:07", 4},
    {26.986022, 132.258110, 217711.32, "2018-01-18T15:11:11", 4},
    {26.551054, 132.211469, 224164.51, "2018-01-18T15:11:22", 4},
    {26.114542, 132.154931, 229570.45, "2018-01-18T15:11:33", 4},
    {25.676487, 132.091326, 233850.56, "2018-01-18T15:11:44", 4},
    {25.236888, 132.022957, 237007.68, "2018-01-18T15:11:55", 4},
    {24.795747, 131.951649, 239147.11, "2018-01-18T15:12:06", 4},
    {24.353062, 131.878803, 240471.98, "2018-01-18T15:12:17", 4},
    {24.157792, 131.846539, 240865.38, "2018-01-18T15:12:22", 4},
    {23.962223, 131.814244, 241178.26, "2018-01-18T15:12:27", 4},
    {23.908834, 131.805438, 241252.85, "2018-01-18T15:12:29", 4},
    {23.463063, 131.732239, 241771.55, "2018-01-18T15:12:40", 4},
    {23.346910, 131.713290, 241892.65, "2018-01-18T15:12:43", 4},
    {23.185910, 131.687127, 242060.16, "2018-01-18T15:12:47", 4}
 },{
    {23.185910, 131.687127, 242060.16, "2018-01-18T15:12:47", 5},
    {23.015749, 131.659609, 241756.30, "2018-01-18T15:12:51", 5},
    {22.566892, 131.587709, 240956.68, "2018-01-18T15:13:00", 5},
    {21.664547, 131.445800, 239357.45, "2018-01-18T15:13:18", 5},
    {20.756030, 131.304606, 237758.21, "2018-01-18T15:13:35", 5},
    {19.841340, 131.160970, 236158.97, "2018-01-18T15:13:52", 5},
    {18.920477, 131.011559, 234559.73, "2018-01-18T15:14:09", 5},
    {18.596717, 130.957380, 234000.00, "2018-01-18T15:14:15", 5}
  }
};

path1 = Flatten[ep3path, 0][[1]];
path2 = Flatten[ep3path, 0][[2]];
path3 = Flatten[ep3path, 0][[3]];
path4 = Flatten[ep3path, 0][[4]];
path5 = Flatten[ep3path, 0][[5]];

geopath1 = Transpose[Take[Transpose[path1], 3]];
geopath2 = Transpose[Take[Transpose[path2], 3]];
geopath3 = Transpose[Take[Transpose[path3], 3]];
geopath4 = Transpose[Take[Transpose[path4], 3]];
geopath5 = Transpose[Take[Transpose[path5], 3]];

launchtime = DateObject[{2018, 1, 17, 15, 6, 11}];

GeoGraphics[{
  NightHemisphere[launchtime],
  Red, Line[GeoPosition[geopath1]],
  Green, Line[GeoPosition[geopath2]],
  Orange, Line[GeoPosition[geopath3]],
  Blue, Line[GeoPosition[geopath4]],
  Yellow, Line[GeoPosition[geopath5]]
  }, { 
  GeoRange -> {{20, 35}, {125, 150}},
  GeoProjection -> {"Orthographic", "Centering" -> {42, 150}}, 
  GeoGridLines -> Quantity[5, "AngularDegrees"], 
  GeoGridLinesStyle -> Directive[Opacity[0.5], GrayLevel[1]], 
  GeoRangePadding -> Full, 
  GeoBackground -> GeoStyling["StreetMap"],
  Background -> Hue[0.6, 1, 0.2], 
  PlotRangePadding -> {{0.03, 0}, {0.05, 0}}
}]

QooQ