Example #1
0
        public void ChooseEdge(Point bait)
        {
            List <Arista> list_temp = new List <Arista>();

            Arista edge_temp = actualVertex.eL[0];

            double angleBait = CalculateAngleBait(bait);
            double angleEdge;
            double angleMin = 360;

            foreach (Arista e in actualVertex.eL)
            {
                if (e.Destino.findRastrosById(id) <= edge_temp.Destino.findRastrosById(id))
                {
                    edge_temp = e;
                }
            }

            list_temp.Add(edge_temp);

            foreach (Arista e in actualVertex.eL)
            {
                if (edge_temp.Destino.findRastrosById(id) == e.Destino.findRastrosById(id))
                {
                    list_temp.Add(e);
                }
            }

            foreach (Arista e in list_temp)
            {
                angleEdge = CalculateAngleVertex(e.Destino);

                if ((angleEdge > angleBait ? angleEdge : angleBait) - (angleEdge < angleBait ? angleEdge : angleBait) >= 180)
                {
                    if ((angleEdge > angleBait ? angleEdge : angleBait) - (angleEdge < angleBait ? angleEdge : angleBait) < angleMin)
                    {
                        angleMin   = Math.Min(angleEdge, angleBait) + Math.Abs(Math.Max(angleEdge, angleBait) - 360);
                        actualEdge = e;
                    }
                }
                else if ((angleEdge > angleBait ? angleEdge : angleBait) - (angleEdge < angleBait ? angleEdge : angleBait) < angleMin)
                {
                    angleMin   = Math.Max(angleEdge, angleBait) - Math.Min(angleEdge, angleBait);
                    actualEdge = e;
                }
            }
            actualVertex = null;
        }
Example #2
0
        public void Walk(Point bait)
        {
            if (actualVertex != null)
            {
                ChooseEdge(bait);
            }

            if (walkingIndex + vel < actualEdge.linea.Count)
            {
                walkingIndex += vel;
            }
            else
            {
                actualVertex = actualEdge.Destino;
                actualVertex.flag.Add(id);
                walkingIndex = 0;
                actualEdge   = null;
            }
        }
 public void addArista(Vertice Destino, Vertice Origen, List<Point> linea)
 {
     Arista e = new Arista(Destino, Origen, linea);
     eL.Add(e);
 }