関空をぐるぐる回す

関空をぐるぐる回す

 今回のお題は関空をぐるぐる回すです。
飛行機を表裏表現してぐるぐる回したのだから2Dだし簡単だとは思うのですが、最初のデータの作り方だけです。

関空の島の形のところどころを取り出して、その各点を線でつないで島の形を表現します。
各点は緯度経度のデータを取り出して使うことにします。
緯度経度のデータは、原始的ですが、ググルマップなどで関空を表示させて、島の境界にマウスを持っていって、マウスの位置から緯度経度を求めることにします。緯度経度のデータが少ないので、まだ我慢してできることですね。
こんなやり方なので、位置の精度はありません。
フォーマットは見てのとおりです。ちと適当です。
#はコメント行です。最初は、線の色と塗りつぶしをするかの指定です。
次は、各点データの個数と、表示するときの拡大縮小の係数です。
面倒ですがデータの個数は指定しています。
そして各点の経度緯度のデータです。


#Color,,,stroke,FillSw
150,150,255,3,1
#Vertex Num ,scale
118,0.1
#Coment
#Center Pos
135.2390219,34.43380778
#Coast Line,,,,
135.3021222,34.41578889
135.2945889,34.41497222
135.2942111,34.414675
135.2918389,34.41639167
135.2699639,34.43276389
135.2648056,34.43730278
135.2651222,34.43750833
135.2650917,34.43778056
135.2629333,34.43996667
135.2664694,34.44233889
135.2629333,34.43996667
135.2595528,34.44345
・・・・・・・・・・・・・・・

 これらの各点のデータは、緯度経度ですので、直交座標に直さないと表示できません。
緯度経度から直交座標に直すなら、国土地理院にも紹介されている平面直交座標の計算がありますが、私は、ECEF座標からENU座標というローカルな座標に直す方法にしてみました。

plane

 プログラムは、関空のCSVデータを読み込んで、ENU座標に変換したデータを、マウスが動くたびに回転して表示しています。
プログラムは、前回のプログラムに、ECEFやENUを計算するクラスを設けました。ENUを計算するときにベクトルの積とかを求めなければいけませんので、よく使うベクトルの関数などはライブラリとして作りました。
これらのライブラリは、appli/geo というフォルダの中に保存しています。







今回のプログラム一式を添付しておきましょう。
最初はデフォルトパーッケージの中です。


 次はライブラリの中です。appli/geoというフォルダの中に入れます。
※ appli/geoというフォルダをどうやって作るかは、Eclipseのファイル-新規-パッケージで、パッケージの名前をappli.geoとして作る。
あるいは、mainやGFrameといったjavaファイルをデフォルトパッケージにそれぞれコピペして、リフレッシュするとappli.geoがないというアラームが出る。アラームがいうとおりに、パッケージを作るとかしたら良いと思います。