gts: 指定範囲に重複する三角形を抽出

三角形網を作成した後で、必要な部分だけ取り出して処理を行いたい場合もあるかと思われます。
例えば、指定範囲内に、三角形網を使ってDEMを発生させるなどの処理があるかと思います。

この場合も、三角形網内の任意の点の高さを求めるにはと同様に
まずBBTree(BoundingBoxTree)を作成して、それを元に指定範囲に重複する三角形を抽出します。

検索はあくまでBouning boxに対して行われるので、
検索の結果抽出される三角形には不足はありませんが、余分は生じる可能性があります。

抽出は簡単で、以下のようにします。
surfaceに三角形網が入っているものとします。

	GNode *tree = gts_bb_tree_surface( surface );

	GtsBBox *bbox = gts_bbox_new
		( gts_bbox_class(), NULL,
		 "左下X座標", "左下Y座標", "左下Z座標",
		 "右上X座標", "右上Z座標", "右上Z座標" );

	GSList *overlap = gts_bb_tree_overlap( tree, bbox );

変数overlapにはGtsBBoxオブジェクトのリストが帰ってきます。
これから三角形を取り出す方法は
三角形網内の任意の点の高さを求めるにはを参照してください。

実行例

実行例(左上に余分な三角形がある)
アーカイブ