Beispiel #1
0
        void SplitSegment(Segment2D s)
        {
            Vertex2D a = s.a, b = s.b;
            var      mv = new Vertex2D(s.Midpoint());

            // add mv to V
            // the index is between a and b.
            var idxA = V.IndexOf(a);
            var idxB = V.IndexOf(b);

            if (Mathf.Abs(idxA - idxB) == 1)
            {
                var idx = (idxA > idxB) ? idxA : idxB;
                V.Insert(idx, mv);
            }
            else
            {
                V.Add(mv);
            }

            UpdateTriangulation(mv.Coordinate);

            // Add two halves to S
            var sidx = S.IndexOf(s);

            S.RemoveAt(sidx);

            S.Add(new Segment2D(s.a, mv));
            S.Add(new Segment2D(mv, s.b));
        }
Beispiel #2
0
 bool ExternalPSLG(Segment2D s)
 {
     return(ExternalPSLG(s.Midpoint()));
 }