} // static LDTriangleList exec(LDPointList form,LDIndexLineList limitedLines);//TODO ,LDProgress progress private static void triangulationFromPoint(LDPointList form, LDPoint p, LDTriangleList triangles) { // A2-1) piを含む三角形ABCを発見し, この三角形をAB pi, BC pi, CA pi の3個の三角形に分割. // この時, 辺AB, BC, CAをスタックSに積む (最初の一点のときには,super triangleが見つかる) for (int i = 0; i < triangles.length();) { LDTriangle t = triangles[i]; if (!TriangleUtil.containsPoint(t.toPolygon(form), p)) { //対象の三角形の外側なら次へ i++; continue; } // 古い三角形をリストから削除して、分割した三角形を追加 triangles.RemoveAll(item => item == t); int index = form.IndexOf(p); Debug.Assert(index >= 0); triangles.Add(new LDTriangle(index, t.getIndex1(), t.getIndex2())); triangles.Add(new LDTriangle(index, t.getIndex2(), t.getIndex3())); triangles.Add(new LDTriangle(index, t.getIndex3(), t.getIndex1())); //TODO すでにある線分で制限する機能が未移植 // if ( limitLineList.size() != 0 ) // { // flipCheckWithLimit( t.p1, t.p2, t.p3 , pg ); // } // else // { optimizePolygonSeparate(form, t, triangles); // } } }