陰影図の光源を指定する

 GMTでは任意の「光源」を設定して陰影図を描くことができます.つまりある方角・ある仰角に設置した無限遠の「太陽」が3次元の曲面を照らしている様子を描くことができるのです.曲面のうち,光源に向かっている部分は明るく,そうでない部分は暗く描かれます.ただし,曲面の凸凹が大きいときでも,曲面自体の「影」が他の部分に投影されるわけではありません.

 陰影の計算には傾斜と光源の位置(向き)を用いますが,データが標高データのようなものでない場合,その計算の意味は不明瞭になります.たとえば,熱輸送量のアノマリーをプロットしているとき,「光源の方に向いた面」とは一体何を意味するのでしょうか.現実にはいろいろな意味を付与することができ,またその意味するところを可視化するのにもいろいろな方法が考えられます.GMTでは,どちらかといえば簡単な方法を採用しています:まず曲面各部分の光源方向への傾斜を計算し,明るさを±1の範囲で算出します.ここで+1は最も明るい面,-1は完全に影となっている部分を表します..このチュートリアルでは示しませんが,GMTでは陰影の強度(各部分の明るさ)を独立したデータセットとして取り扱います.このデータは本来起伏面データから算出されることが多いのですが,私たちはこのデータを(後方散乱データのように)独立して観測されたデータのように考えたくなるのです.

 GMTにおける色の指定は,コンピュータ画面で一般的に使用されるRGBシステムに従っています.つまり,赤・緑・青の輝度を重ね合わせて任意の色を作成します.RGBシステムは3次元のデカルト座標系とみなすことができ,その空間内でカラー立方体を構成します.

 RGBの値自体を用いた場合,その色を明るくしたり暗くしたりすることは簡単ではありません(その理由はリファレンスブックの付録Iに詳述されています).このため,代わりに他の色指定システムを使用することが必要ですが,GMTではHSVシステムを採用しています.

 RGBシステムにおけるカラーキューブにおいて,黒(0,0,0)と白(255,255,255)を結ぶ対角線を考えます.座標変換によってキューブを「傾け」,この対角線が垂直の軸に重なるなるようにします.そうすると,もとのキューブのほかの頂点(赤(255,0,0),黄(255,255,0),緑(0,255,0),シアン(0,255,255),青(0,0,255),マゼンタ(255,0,255).座標はRGBシステムによるもの)を水平面に投影した点は六角形を構成します.CMY(シアン・マゼンタ・イエロー)はそれぞれ補完的なもので,これら3色を用いて任意の色を合成することができます(これはカラープリンタが行っているものです.ただしプリンタの場合は灰色系の色をわざわざCMYから合成することを避けてるためにさらに黒(K)インクも用いています).カラーキューブにおける任意の点をHSVシステムの水平面に投影した点は,まずその位置を角度(0〜360o)で指定できます.これが色合い(Hue)です.

 さて,他の値,つまり彩度(Saturation)と明度(Value)は多少説明がやっかいです.HSV座標系において,純色(キューブの面上の点)を暗くするには,Hの値を一定に保ったまま黒を加えればよく,逆に明るくするには白を加えればよい(点をHSV座標系の垂直軸に平行移動する),ということは了解していただけるでしょう.さらに,任意の色(キューブ内の任意の点)についても灰色を「足し」たり「引い」たりすることにより(点をHSV座標系の垂直軸に近づけたり遠ざけたりする)色の鮮やかさ(彩度)の調整ができると言ってよいでしょう.この「黒」ないし「白」の足し引きは,HSV座標系で考えれば簡単に実行できることはお分かりだと思います.

 したがって,GMTでは陰影の計算に,まずRGBをHSV色に変換し,つぎに陰影の効果を付け加え,そしてHSV色をRGB色に戻すという作業を行っています.

Original Text by Dr. Paul Wessel
Translated by AGATASHI.