public IEnumerable <Edge> AllEdges() { foreach (Edge e in OwnEdgesOnly()) { yield return(e); } for (int i = 0; i < holes.Count; ++i) { SimpleClosedPath hole = GetHole(i); foreach (Edge e in hole.OwnEdgesOnly()) { yield return(e); } } }
SimpleClosedPath Join(SimpleClosedPath exterior, SimpleClosedPath hole, Edge edge) { connector.Clear(); connector.Add(new Edge(edge.To, edge.From)); foreach (Edge e in exterior.OwnEdgesOnly()) { connector.Add(e); } foreach (Edge e in hole.OwnEdgesOnly()) { connector.Add(e); } connector.Add(edge); return(connector.CreatePolygon().GetPath(0)); }