ここ何日か画像処理ゴリゴリ。はやいPCほしい…… あいないん…… じーおん……
プログラム書いてるときは気が付かなくても、思いも寄らないところで時間かかってることがある。今回は結果をFFmpegで動画にしたが、パイプの転送処理は思いの外時間がかかる。それにFFmpegは明示してやらないとCPUで圧縮するので、CPU使用率がそっちに食われる(明示すればGPUのハードウェアエンコーダを使ってくれる)。パイプ転送は時間がかかるが、かといってソースをPNGで圧縮すると、圧縮のほうが時間がかかって余計遅くなったりする。
最初2時間以上かかっていた処理が、FFmpeg周り書き換えるだけで5倍位早くなったり、という感じ。
***
ついでに衛星の日照の計算とかもやり直してる。といっても、以前書いたコード(レンダリングエンジンのときのやつ)をコピペしてインターフェース書き直した程度だけど。
衛星軌道はタイミングによって白夜みたいな軌道があって、ちょうどISSがその時期。なので、日照判定では常に日照状態として判定される。「あれれぇ? 日照計算壊れてるぞぉ~~」とか思ったら、白夜だから常に日照になるのが正しい、というオチ。
衛星軌道は地球上の地図に表示すると結構わけわからんことになる。慣性空間で考えたほうが楽そう。地球固定から慣性空間への座標変換で頭爆発しそうだけど。
レンダリングエンジンのときも思ったけど、CGとか画像処理とかってゴリゴリの座標変換なので、このあたりの勘所が無いと辛い。無いので辛い。。。
オレンジ・緑の点が衛星。衛星の周りの白・緑の円は可視範囲。オレンジであれば地上局から非可視、緑であれば可視。外枠も白・緑でそれに対応。衛星の点の周りが赤なら日照有り、黒なら日照無し。
大西洋の赤一色の点が太陽の位置。オーストラリアを囲む赤丸は、内側が高度500kmの日照範囲、外側が1000kmの日照範囲。太陽から見た内側・外側である点に注意。
実際のところ、日照の有無は地表の日照範囲に衛星の可視範囲が重なっていれば日照があると判断できるので、衛星のマーカーで日照の有無を表現する必要性は、あまりないかな、という感じ。とはいえ、もっと衛星が密集してくるといちいち可視範囲を表示したり見分けたりできないだろうから、マーカーで表現する意味もあるか。まぁ、その際にいちいち衛星の日照の有無の判断が必要なシチュエーションってあんまり思い浮かばないけど。
衛星運用ではなく、広角の動画撮影とかであれば、日照のある衛星を表示できると便利かな、とも思う反面、地図上に表示してもおおよその方向がわかるだけで、結局別の画面で見ないとどこにいるかはわからないから、平面の地図上で日照の有無を確認する必要は、やはりないんじゃないかな。
衛星の可視範囲を半透明の白で塗りつぶしたりすると、通信衛星のカバレッジマップみたいな感じで面白いけど、C#のGraphicsのFillPolygonでやろうとすると、日付変更線をまたぐ部分の処理がとてつもなく面倒。気が向いたらなんとかする。
***
ここ何日かあまり天気が良くない。あと寒い。
天気は、SCWで真っ黒に表示されてても、星1つ見えない曇り空、ってこともある。肉眼で星が見えていても、いざ撮影しようと思うと雲で拡散して全然ダメ、ってこともある。まさに「運を天に任せて」って感じ。
晴れろ~~!!
0 件のコメント:
コメントを投稿