OpenGL de プログラミング - 基本編13::穴のあるポリゴン
現在地 >> メニュー >> 基本編13 >> 基本編13::穴のあるポリゴン
関連:基本編13::単純な再分割基本編13::辺の交差


穴のあるポリゴン


ポリゴンの輪郭を指定し、その中に穴の輪郭を指定すると、
テセレータによって穴のあいたポリゴンを作成する事が出来る。


//頂点座標
double vdata[8][3]={
	{0.1, 0.1, 0},  {0.6, 0.1, 0},  {0.6, 0.5, 0},  {0.1, 0.5, 0},
	{0.2, 0.2, 0},  {0.5, 0.2, 0},  {0.5, 0.4, 0},  {0.2, 0.4, 0}
};

//テセレータオブジェクト
GLUtesselator *tess;
... ...

	gluTessBeginPolygon(tess, 0);
		gluTessBeginContour(tess); //ポリゴンの輪郭
			gluTessVertex(tess, vdata[0], vdata[0]);
			gluTessVertex(tess, vdata[1], vdata[1]);
			gluTessVertex(tess, vdata[2], vdata[2]);
			gluTessVertex(tess, vdata[3], vdata[3]);
		gluTessEndContour(tess);

		gluTessBeginContour(tess); //ポリゴンの中の穴の輪郭
			gluTessVertex(tess, vdata[4], vdata[4]);
			gluTessVertex(tess, vdata[5], vdata[5]);
			gluTessVertex(tess, vdata[6], vdata[6]);
			gluTessVertex(tess, vdata[7], vdata[7]);
		gluTessEndContour(tess);
	gluTessEndPolygon(tess);
... ...


サンプルコード >> 基本編13::まとめコード2

穴の検出


テセレータは「winding 規則」に従って穴を見つける。