public override void Build(Graph g, out S2Error error)
            {
                var degeneracies = PolygonDegeneracy.FindPolygonDegeneracies(g, out error);
                // Convert the output into a human-readable format.
                List <TestDegeneracy> actual = new();

                foreach (var degeneracy in degeneracies)
                {
                    var edge   = g.GetEdge((int)degeneracy.EdgeId);
                    var points = new S2Point[] { g.Vertex(edge.ShapeId), g.Vertex(edge.EdgeId) };
                    actual.Add(new TestDegeneracy(S2TextFormat.ToDebugString(points), degeneracy.IsHole));
                }
                actual = new SortedSet <TestDegeneracy>(actual).ToList();
                Assert.True(expected_.SequenceEqual(actual));
                Assert.Equal(PolygonDegeneracy.IsFullyDegenerate(g), degeneracies.Count == g.NumEdges);
            }
Esempio n. 2
0
 // Assembles a graph of snapped edges into the geometry type implemented by
 // this layer.  If an error is encountered, sets "error" appropriately.
 //
 // Note that when there are multiple layers, the Graph objects passed to all
 // layers are guaranteed to be valid until the last Build() method returns.
 // This makes it easier to write algorithms that gather the output graphs
 // from several layers and process them all at once (such as
 // s2builderutil.ClosedSetNormalizer).
 public abstract void Build(Graph g, out S2Error error);