Exemple #1
0
 public void SetWeights()
 {
     for (int i = 0; i < IVertexList.Count; ++i)
     {
         for (int j = 0; j < IVertexList[i].GetEdgesListCount(); ++j)
         {
             IVertexList[i][j].SetWeight(ToolFunction.Distance(IVertexList[i].GetCirclePoint(), IVertexList[i][j].Destination.GetCirclePoint()));
         }
     }
 }
        private void CreateGraph()
        {
            if (ICircleList.Count > 0)
            {
                this.IGraph = new Graph();
                ICircleList = SortedCircleList();

                foreach (Circle circle in ICircleList)
                {
                    IGraph.AddVertex(new Vertex(circle, IGraph.GetVertexCount() + 1));
                }

                for (int i = 0; i < ICircleList.Count - 1; ++i)
                {
                    for (int j = i + 1; j < ICircleList.Count; ++j)
                    {
                        if (IsObstacleFree(IGraph[i].Circle, IGraph[j].Circle))
                        {
                            double distance = ToolFunction.Distance(IGraph[j].GetCirclePoint(), IGraph[i].GetCirclePoint());

                            IGraph[i].AddEdge(new Edge(distance, IGraph[j], new List <Point>(this.Coords)));

                            this.Coords.Reverse();

                            IGraph[j].AddEdge(new Edge(distance, IGraph[i], new List <Point>(this.Coords)));

                            Coords.Clear();
                        }
                    }
                }

                ModifyBitmapFromGraph();

                this.IMessage = "Grafo creado exitosamente.";
            }
            else
            {
                this.IMessage = "No existen elementos para crear un grafo.";
                this.IStatus  = false;
            }
        }