Example #1
0
 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;
 }
Example #2
0
        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);
        }
Example #3
0
        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
Example #4
0
 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));
 }
Example #5
0
 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);
 }
Example #6
0
        public LDPolygon getOutlinePolygon()
        {
            List<int> indices = getOutlinePointIndices();

            LDPolygon result = new LDPolygon();

            foreach (var index in indices)
            {
                result.Add(getPoint(index));
            }
            return result;
        }
Example #7
0
        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);
        }