private void RefreshEdgesBucket() { if (!polygon.GetEdges().Any()) { edgesBucket = new List <EdgeSummary> [1]; return; } int maxY = polygon.GetEdges().Max(v => Math.Max(v.v1.Y, v.v2.Y)); edgesBucket = new List <EdgeSummary> [maxY + 1]; foreach (var edge in polygon.GetEdges()) { EdgeSummary edgeSummary = new EdgeSummary(edge.Item1, edge.Item2); int y = Math.Min(edge.Item1.Y, edge.Item2.Y); if (edgesBucket[y] == null) { edgesBucket[y] = new List <EdgeSummary>(); } edgesBucket[y].Add(edgeSummary); } }
public EdgeSummary(EdgeSummary edgeSummary) { YMax = edgeSummary.YMax; X = edgeSummary.X; Factor = edgeSummary.Factor; }