いま,DCL グラフィクスで精力的に開発・整備されているパッケージに,地図 投影と3次元グラフィクスがあります.これらのサブルーチンはこれから変更 されていく可能性があるので,ここではいくつかの出力結果を紹介するに留め, 具体的な解説はいつか将来に致しましょう.
さっそく使ってみたいという人は,GRPH1, GRPH2 のマニュアルの該当すると ころをお読み下さい.また,この章で示す図は, dcl-x.x/demo/rakuraku/map3d/ にサンプルプログラムがあります.また, dcl-x.x/demo/grph2/umpack と dcl-x.x/demo/grph1/scpack のディレクトリ にあるテストプログラムなども覗いてみて下さい.
GRPH1 で扱える座標系としては,直角直線座標系などのほかに14種類の地図投 影座標系があります.U-座標系からV-座標系への正規化変換でこれらの座標系 を設定するれば,それぞれの地図座標系で描画が可能となります.
これらの地図投影変換を用いて,全球(いくつかの例外あり)を表示した結果を map3d1.f の出力図に示します.変換関数番号(ITR)が10から33までの14 種類の投影法で海岸線情報と緯度・経度線を描きます.第1フレームは円筒図 法(6種), 第2フレームは円錐図法(4種), 第3フレーム方位図法(4種)の地図投 影法です.
DCL で指定できる地図情報としては,海岸線, 国境,米国の州境,日本の県境, プレート境界などがあります.
map3d1.f: frame1
map3d1.f: frame2
map3d1.f: frame3
地図情報や緯線・経線を描くのと同時に,等高線図やトーンによる塗りわけを おこなったり,ベクトル場を描いたりすることが可能です. 等高線図作画パッ ケージ UDPACK とトーンによる塗りわけパッケージ UEPACK はともにU-座標系 で作画するルーチン群ですから,正規化変換で地図投影変換を指定していても これまでと全く同じように利用できます.
プログラム map3d2.f では,これまで描いてきた球面調和関数の重ね合わせを 正射図法で描きます.第[here]章のプログラム U2D5 と同じよう に等高線とハッチが地図上で作画され,地球の裏側の部分は描かれないように なっています.
map3d2.f: frame1
ベクトル場作画パッケージ UGPACK はV-座標系上で作画しますから,残念なが ら,現在のところ地図投影には対応していません.しかしながら,SGPACK の アローサブプリミティブを使って,緯度・経度の単位を持った矢印を地図上に 描くことは簡単にできます.map3d3.f の例のように,限られた地域だけでベ クトル場を描くならば,緯度・経度の単位で矢印をスケーリングしてもそれほ ど気にならないでしょう.
map3d3.f: frame1
3次元透視変換とは,3次元空間内に置かれた3次元図形を任意の視点から眺め て2次元平面に投影する変換で,遠近感が出る変換です.3次元グラフィクスを うまく使うと,これまでに見てこなかった新しい表現法が可能となります.
まず,3次元空間内で三軸に平行に置かれた立方体の表面に,2次元の作図をし てみましょう(map3d4.f). 作画する2次元平面をちゃんと指定すれば,これま での描画サブルーチンがそのまま使えます.
map3d4.f: frame1
また,GRPH2 のパッケージもそのまま使えます.map3d5.f のプログラムでは, 第[here]節で描いた等高線とベクトル場を2段重ねにして表現してみ ました.
map3d5.f: frame1
さらに,3次元空間内で線を引いたり,面を定義してトーンをつけたりするこ とも可能です.map3d6.f の図は,これまで何度も描いてきた球面調和関数を ワイヤフレームで表現するものです.この2次元スカラー場を図示するのに, 縦横に張ったワイヤの凹凸として3次元的に表現しています.データの値の大 小がワイヤを張った面の高低となって,視覚的にデータを把握しやすくなりま す.
map3d6.f: frame1
NUMAGUTI Atusi <a1n@gfdl.gov> Last Modified: Thu Aug 31 13:11:33 EDT 1995