next up previous
Next: About this document ... Up: 連続した等高線を求めるアルゴリズムの概要 Previous: セグメントが頂点の場合の三角形領域を調べる順番

マスク領域

対象としている2次元格子空間内に, 実験などで値が測定できなかったり 数値計算が発散したりして等高線が描けない格子点がある場合, その点のまわりの領域をマスクすることを考える. ng2d では格子点(i,j)に対してマスク用の配列 msk(i,j) を宣言し, 4つの頂点のいずれかが $msk(i,j)\neq0$ となる 四角形格子内の等高線を描かないこととする. 実現方法は単純で, 対応する四角形格子内の三角形のフラグ Tm,i,j,m=1,2,3,4 を true にすれば, この領域に等高線が入り込めなくなる. 等高線はマスク領域に到達すると途切れるので, その端点は等高線を描く領域とマスク領域との境界上に存在することになる. したがって, 連続した等高線を得るためには, 外部境界と同様にこの境界 をイニシャルセグメントととする等高線を求める必要がある. この場合は, 3.2と同様の考察により, Figure: 13のようにマスク領域の外周を左回りする順番で イニシャルセグメントを決定すればよい. このような順番で並んだイニシャルセグメントは, 左側がマスク領域となるような格子線を次々とたどっていくことより得ることができる. マスク領域との境界のイニシャルセグメントの決定はサブルーチン ngc0s の中で 行っている. また枠線や境界線を求めるサブルーチン ngfrms では イニシャルセグメントの決定方法と同様の方法でマスク領域境界線を求めている.


  
Figure 13: マスク領域
\begin{figure}
\begin{center}
\begin{picture}
(200,200)
\put(0,0){\line(1,0){...
...,j)=0$ }
\put(85,100){$msk(i,j) \ne 0$ }
\end{picture} \end{center}\end{figure}



Amane TANAKA
2000-04-23