private static EdgeTable PrepareEdgeTable(Polygon polygon) { EdgeTable edgeTable = new EdgeTable((int)polygon.GetMaxY() + 1); foreach (Edge e in polygon.Edges) { if (e.Vertices[0].GetY() == e.Vertices[1].GetY()) { continue; } EdgeNode node = new EdgeNode(e); int index = (int)e.GetMinY(); edgeTable.AddAtIndex(index, node); } return(edgeTable); }