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)); }
bool ExternalPSLG(Segment2D s) { return(ExternalPSLG(s.Midpoint())); }