示例#1
0
 public NodeAET(int Ymax, double X, double d, NodeAET next)
 {
     this.Ymax = Ymax;
     this.X    = X;
     this.d    = d;
     this.next = next;
 }
示例#2
0
        public (List <NodeAET>[], int) createET()
        {
            int edgeCounter = 0;

            List <NodeAET>[] ET = new List <NodeAET> [MAX];
            foreach (Edge e in edges)
            {
                int     ind;
                double  m;
                int     Ymax;
                int     Xmin;
                NodeAET node;

                if (e.A.Y == e.B.Y)
                {
                    continue;
                }

                edgeCounter++;
                if (e.A.Y < e.B.Y)
                {
                    m    = (double)(e.B.X - e.A.X) / (double)(e.B.Y - e.A.Y);
                    Ymax = e.B.Y;
                    Xmin = e.A.X;
                    ind  = e.A.Y;
                }
                else
                {
                    m    = (double)(e.A.X - e.B.X) / (double)(e.A.Y - e.B.Y);
                    Ymax = e.A.Y;
                    Xmin = e.B.X;
                    ind  = e.B.Y;
                }

                node = new NodeAET(Ymax, Xmin, m, null);
                if (ET[ind] != null)
                {
                    ET[ind].Add(node);
                }
                else
                {
                    ET[ind] = new List <NodeAET> {
                        node
                    }
                };
            }
            return(ET, edgeCounter);
        }