等高線の描画方法


等高線描画のアルゴリズム

 等高線の求め方を考える時に,“線”という言葉のイメージから求める領域全体に対して一度に処理を行い,“連続した曲線”を得ようという気持ちになります。しかし,実際には最小の要素に対して等高線を求める処理を行い,それを全ての要素に対して行います。従って,連続した曲線ではなく微小な直線の集合を求めることになります。
 等高線を求めるアルゴリズムを考える時に最も簡単でわかり易いのは,3点で決められる三角形を考え,そこを通る等高線を求める方法です。今2次元のx-y座標の空間において3点の座標と各点における値(高さ,圧力,温度e.t.c.)が与えられたとします。x-y座標にさらにその値の軸をz軸方向に取ると,等高線を求めるという問題は以下の図に示したように,3点p1(x1,y1,d1),p2(x2,y2,d2),p3(x3,y3,d3)で決まる三角形と平面z=dとの交線を求めるという問題になります。この交線を求める方法は非常に簡単です。

 それでは,最小の要素として四角形を考えた場合にはどうなるでしょうか?この時は,非常に面倒くさくなります。四角形では一つの平面が決まらないからです。そこで,一般的には四角形(四角形以上の多角形でも同じだが)いくつかの三角形に分割してそのそれぞれの三角形に対して前に述べた方法で等高線を求めていきます。
 しかし,実際にはこの三角形への分割が非常に厄介な問題となります。例えば,四角形を2つの三角形に分割する場合を考えます。このとき,対角線の取り方に2つの任意性があり,どちらを取るかで結果は全く異なってきます。例として以下に図を示します。

 図はd1=d3,d2=d4でd1 < d2というシチュエーションをイメージしています。この場合,左側に示したように点2−4を通る対角線で分割した場合には“尾根”が生じます。一方,点1−3を通る対角線の時には“谷”が生じることになります。それぞれの場合について等高線は対角線に平行な方向に引かれるため,得られる結果は全く異なることになります。(図に示した4点のみデータを与えられた場合には,四角形の内部の曲率(凹凸)に関する情報はないのでどちらが正しいとも言えない)
 そこで,ある程度妥当な結果を得るために四角形を4つの三角形に分割する。四角形の内部に適当な点の座標と値を決めることになる。このとき最も単純な方法として座標も値も4点の平均値を取るという方法がある。
 この内部の点の取り方で結果が大きく変わってくるので,より良い等高線を求める人はこの点の座標と値の推定の方法を検討したほうが良い。ただし,この等高線描画ルーチンは各要素に対して検索をかけねばならないのであまり時間のかかる方法を取るのは得策ではない。(Contourは簡易的な可視化ソフトという立場から最も簡単で時間のかからない平均を取る方法を採用した)
 以上簡単にまとめると等高線描画アルゴリズムは以下の様になる。
 @各座標点のデータから三角形の要素を生成する
 Aその三角形に対して等高線を探す
 B等高線を描画する,もしくはデータを格納する
これらのステップを全ての三角形要素に対して行う。


戻る