public LDPolygon getPolygon() { LDPolygon p = new LDPolygon(); p.Add(m_topLeft); p.Add(m_topRight); p.Add(m_bottomRight); p.Add(m_bottomLeft); return p; }
public void getOutlinePolygonTest_simple() { LDTriangleList triangles = simpleTriangle(); LDPointList points=new LDPointList(); points.Add(new LDPoint(0, 0)); points.Add(new LDPoint(0, 100)); points.Add(new LDPoint(100, 100)); LDPolygon compare=new LDPolygon(); compare.Add(new LDPoint(0, 0)); compare.Add(new LDPoint(0, 100)); compare.Add(new LDPoint(100, 100)); LDPolygon result = triangles.getOutlinePolygon(points); TestUtil.COMPARE(result, compare); }
public static LDTriangleList exec(LDPointList form)//TODO ,LDProgress progress { //Debug.Assert(form.length() == form.toList().toSet().size()); LDTriangleList result = new LDTriangleList(); int formSize = form.size(); if (formSize < 2) { return(result); } //A1) 点群を包含する十分大きな三角形(super triangle)を追加する LDPolygon hugeTriangle = TriangleUtil.getHugeTriangle(form); int index1 = form.length(); int index2 = index1 + 1; int index3 = index2 + 1; form.Add(hugeTriangle[0]); form.Add(hugeTriangle[1]); form.Add(hugeTriangle[2]); LDTriangle t = new LDTriangle(index1, index2, index3); result.Add(t); //A2) i番目の頂点piを三角形分割図形に追加 for (int i = 0; i < formSize; i++) { LDPoint pi = form[i]; // A2-1) piを含む三角形ABCを発見し, この三角形をAB pi, BC pi, CA pi の3個の三角形に分割. triangulationFromPoint(form, pi, result); } // 最後に、外部三角形の頂点を削除 result.removePoint(index1); result.removePoint(index2); result.removePoint(index3); return(result); } // static LDTriangleList exec(LDPointList form,LDIndexLineList limitedLines);//TODO ,LDProgress progress
public static bool containsPoint(LDPolygon t, LDPoint p, bool onLine = false) { Debug.Assert(t.size() == 3); return(containsPoint(t[0], t[1], t[2], p, onLine)); }
public static bool containsPoint(LDPolygon t, LDPoint p, bool onLine = false) { Debug.Assert(t.size() == 3); return containsPoint(t[0], t[1], t[2], p, onLine); }
public LDPolygon getOutlinePolygon() { List<int> indices = getOutlinePointIndices(); LDPolygon result = new LDPolygon(); foreach (var index in indices) { result.Add(getPoint(index)); } return result; }
public LDPolygon toPolygon(LDPointList points) { Debug.Assert((points.length() > m_index1)); Debug.Assert(points.length() > m_index2); Debug.Assert(points.length() > m_index3); LDPolygon v = new LDPolygon(); v.Add(points.at(m_index1)); v.Add(points.at(m_index2)); v.Add(points.at(m_index3)); return new LDPolygon(v); }