Exemplo n.º 1
0
        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);
            }
        }
Exemplo n.º 2
0
 public EdgeSummary(EdgeSummary edgeSummary)
 {
     YMax   = edgeSummary.YMax;
     X      = edgeSummary.X;
     Factor = edgeSummary.Factor;
 }