これは何なのか
gts_surface
クラスにはgts_sufrace_traverse_**
という関数群があります。
これは何かというと、隣接する三角形を次々と取り出すというものです。
例として、まず下のように最初の三角形があったとします(level 1)。
これに対して、隣接する三角形を抽出します(level 2)。
さらに、この三角形群に隣接する三角形を抽出します(level 3)。
こうして順次隣接する三角形を抽出していきます。
levelは、最初の三角形から見て何面隣にあるかの値になります。
使い方
トラバース自体は簡単にできるようで、gtsの付属サンプルのtraverse.cを見ると大体様子がわかります。
抜粋すると以下のようになります。
GtsFace *first, *f; GtsSurfaceTraverse *t; guint level; GtsSurface *s; // sに三角形網が格納されているとする // 何らかの方法でfirstに最初の三角形を取り出しているとする t = gts_surface_traverse_new( s, first ); while ( f = gts_surface_traverse_next( t, &level ) ) { // 取り出した三角形fに対して何らかの処理 } gts_surface_traverse_destroy();
gts_surface_traverse_next()
が最初に呼ばれたときはfirst
が帰ってきます。
変数level
に、最初の三角形から何面隣になるかの値が格納されます。