TLEをインプットすると軌道を計算してくれる理論をまとめたものと理解。それを仕様としてライブラリがいくつか作られている。C++、Java、JavaScriptやほかの言語で提供されている。[1][2] |
どうも計算結果がおかしい。算出される位置が既存のページ[4]と全然違う。静止衛星ばかりやっていたから気づかなかった。←Day of Yearを正しく設定すると近づいてきた。 |
ちょっとじぶんのSpace-vehicle-orbitがちゃんとあっているか、動いていそうな別のライブラリ[1]で確かめよう。 |
rectangular Coordinatesというのは直交座標系でたぶんSGP4の結果な気がする。では、xyzという関数がそれを出力できるみたいなので、確かめてみよう。RectangularToGeographicが直交座標系から緯度経度系に変換する関数なのだろう。その中でGMSTを使っている。GSTとは違うのだろうか。 |
pg | svo | orb.js | |
---|---|---|---|
date | 2021.5.11_0230(UTC) | Tue, 11 May 2021 02:30:00 GMT | |
line1 | "1 25544U 98067A 21130.82534197 .00000540 00000-0 17959-4 0 9990" | same | |
line2 | "2 25544 51.6449 167.5222 0002900 345.0941 184.7772 15.48989745282809" | same | |
sgp4 | Sgp4Unit.sgp4()というメソッドのソースの中に書いてある解説に、単位はerと書いてある。おそらくEarth Radiusのことではなかろうか。地球の半径(m)をかけた場合(-811768.1824673276, 4387202.958816512, -5133456.789354173) sgp4のstartDaysの扱いいにちょっと間違えがあったようで、Day of Yearで、1月1日は、0ではなく、1で扱う必要があった[3]。また、秒単位で合わせていかないと結構ずれるので注意[5]。 | -809.6198440053449, 4387.052506580514, -5133.922768224091 equatorial rectangular coordinates 赤道直交座標とでも訳すのか。単位は何か?変数の付け方(例xkm、ykm、zkmのように)kmのように見える。結構近くなってきた。 | |
llh | -49.183193876075975, -166.12265385519103, 435458.6657492025 | -49.189183376294665, -166.14557523524613, 435.4613638113824 |
ここにきて、初歩的なバグを発見。GroundTrackResource.javaでsgp4.runSgp4()メソッドの最後の引数には、stepあたりの長さをdouble型で分単位でインプットしないといけないのだが、整数割る整数、つまり整数をインプットしていた。具体的な数字としては、100/60で、1.66666666というdoubleのはずが、1というintが入っていた。なので、1分のStepとなり、90回の結果がでていたけど、プログラム側は、ステップは100秒なので、54回だった。 |
[2]をVisual Studio Codeで動かすには、GitHubからクローンして、VSCでそのjavaフォルダを開らくだけでは、javax.vecmath.Vector3dがインポートできない。左下のJAVA PROJECTSのReferenced Librariesというところで、libフォルダの中にあるvecmath-1.3.1.jarを追加しよう。 |