void ButtonCaminoCortoClick(object sender, EventArgs e) { int menor = int.MaxValue; int distanciaX; int distanciaY; int distanciaTotal; Vertice origen = null; Vertice destino = null; foreach (Vertice inicio in grafoImagen.Vertices) { foreach (Vertice fin in grafoImagen.Vertices) { if (inicio != fin) { distanciaX = fin.Circulo.Centro.X - inicio.Circulo.Centro.X; distanciaY = fin.Circulo.Centro.Y - inicio.Circulo.Centro.Y; distanciaTotal = (int)Math.Sqrt((distanciaX * distanciaX) + (distanciaY * distanciaY)); if (distanciaTotal < menor) { menor = distanciaTotal; origen = inicio; destino = fin; } } } } drawCircleCenter(destino.Circulo.Centro.X, destino.Circulo.Centro.Y, imagenAnalizar); drawCircleCenter(origen.Circulo.Centro.X, origen.Circulo.Centro.Y, imagenAnalizar); PictureBox_Circulos.Refresh(); }
void ButtonInsertarAgentesClick(object sender, EventArgs e) { comboBoxAgentes.Items.Clear(); listaAgentes.Clear(); PictureBox_Circulos.Image = animacion; Random rand = new Random(); Vertice punto; for (int x = 0; x < numeroDeAgentes.Value; x++) { while (true) { punto = grafo.Vertices[rand.Next(0, grafo.Vertices.Count)]; if ((listaAgentes.Find(delegate(Agente buscar){ return(buscar.Origen == punto); })) == null) { break; } } listaAgentes.Add(new Agente(punto, x)); movimiento.FillEllipse(new SolidBrush(Color.Black), punto.Circulo.Centro.X - 10, punto.Circulo.Centro.Y - 10, 10 * 2, 10 * 2); PictureBox_Circulos.Refresh(); } for (int i = 0; i < listaAgentes.Count; i++) { comboBoxAgentes.Items.Add(i.ToString()); } }
void Button1Click(object sender, EventArgs e) { treeViewConexiones.Nodes.Clear(); //cargar2(nombre2); //analizar(); int[] a = new int[listaCirculos.Count]; int[] dia = new int[listaCirculos.Count]; int temp = 0; int temp2 = 0; int tempo = 0; gra = Graphics.FromImage(imagenAnalizar); SolidBrush centro = new SolidBrush(Color.Transparent); for (int write = 0; write < listaCirculos.Count; write++) { for (int sort = 0; sort < listaCirculos.Count - 1; sort++) { if (listaCirculos[sort].getDiametro > listaCirculos[sort + 1].getDiametro) { temp = listaCirculos[sort + 1].getDiametro; temp2 = listaCirculos[sort + 1].getID2; listaCirculos[sort + 1].setDiametro = listaCirculos[sort].getDiametro; listaCirculos[sort + 1].setID2 = listaCirculos[sort].getID2; listaCirculos[sort].setDiametro = temp; listaCirculos[sort].setID2 = temp2; } } } for (int x = 0; x < listaCirculos.Count; x++) { for (int y = 0; y < listaCirculos.Count; y++) { if (listaCirculos[x].getID == listaCirculos[y].getID2) { a[x] = listaCirculos[y].getID; } } } for (int x = 0; x < listaCirculos.Count; x++) { listaCirculos[x].setID2 = a[x]; } for (int x = 0; x < grafoImagen.Vertices.Count; x++) { treeViewConexiones.Nodes.Add(grafoImagen.Vertices[x].Circulo.getID2.ToString()); for (int y = 0; y < grafoImagen.Vertices[x].Aristas.Count; y++) { treeViewConexiones.Nodes[x].Nodes.Add(grafoImagen.Vertices[x].Aristas[y].Destino.Circulo.getID2.ToString()); } } listBoxCoordenadas.Refresh(); grafoImagen.dibujar(listaCirculos); PictureBox_Circulos.Refresh(); }
void Grafo_buttonClick(object sender, EventArgs e) { grafo = new Grafo(listaCirculos, imagenAnalizar); PictureBox_Circulos.Refresh(); for (int x = 0; x < grafo.Vertices.Count; x++) { treeViewConexiones.Nodes.Add(grafo.Vertices[x].Etiqueta.ToString()); for (int y = 0; y < grafo.Vertices[x].Aristas.Count; y++) { treeViewConexiones.Nodes[x].Nodes.Add(grafo.Vertices[x].Aristas[y].Destino.Etiqueta.ToString()); } } numeroDeAgentes.Maximum = grafo.Vertices.Count; PictureBox_Circulos.BackgroundImage = imagenAnalizar; //listBoxAristas.Items.Add("Arista " + List<Vertice> + " se conecta con " + List<Vertice> "\n"); }
void grafo() { int i = 0; treeViewConexiones.Nodes.Clear(); grafoImagen = new Grafo(listaCirculos, imagenAnalizar); PictureBox_Circulos.Refresh(); for (int x = 0; x < grafoImagen.Vertices.Count; x++) { treeViewConexiones.Nodes.Add(grafoImagen.Vertices[x].Etiqueta.ToString()); for (int y = 0; y < grafoImagen.Vertices[x].Aristas.Count; y++) { treeViewConexiones.Nodes[x].Nodes.Add(grafoImagen.Vertices[x].Aristas[y].Destino.Etiqueta.ToString()); } } i = grafoImagen.getContador; i++; grafoImagen.setContador = i; }
void ButtonCaminoCortoClick(object sender, EventArgs e) { int menor = int.MaxValue; int distanciaX; int distanciaY; int distancia; Vertice verticeOrigen = null; Vertice verticeDestino = null; try{ foreach (Vertice puntoA in grafo.Vertices) { foreach (Vertice puntoB in grafo.Vertices) { if (puntoA != puntoB) { distanciaX = puntoB.Circulo.Centro.X - puntoA.Circulo.Centro.X; distanciaY = puntoB.Circulo.Centro.Y - puntoA.Circulo.Centro.Y; distancia = (int)Math.Sqrt((distanciaX * distanciaX) + (distanciaY * distanciaY)); if (distancia < menor) { menor = distancia; verticeOrigen = puntoA; verticeDestino = puntoB; } } } } centroide.FillEllipse(new SolidBrush(Color.Yellow), verticeOrigen.Circulo.Centro.X - verticeOrigen.Circulo.Radio, verticeOrigen.Circulo.Centro.Y - verticeOrigen.Circulo.Radio, verticeOrigen.Circulo.Radio * 2, verticeOrigen.Circulo.Radio * 2); centroide.FillEllipse(new SolidBrush(Color.Yellow), verticeDestino.Circulo.Centro.X - verticeDestino.Circulo.Radio, verticeDestino.Circulo.Centro.Y - verticeDestino.Circulo.Radio, verticeDestino.Circulo.Radio * 2, verticeDestino.Circulo.Radio * 2); PictureBox_Circulos.Refresh(); } catch { MessageBox.Show("No se cumplen con los requerimientos minimos para los vertices"); } }
void ButtonAgenteClick(object sender, EventArgs e) { treeViewAgentes.Nodes.Clear(); int menorDistancia = int.MaxValue; agentesTerminaron.Clear(); try{ if (listaAgentes.Count >= 0) { List <Agente> listaAgentesVertices = new List <Agente>(); Agente agenteMayor = listaAgentes[0]; Point mover; while (agentesTerminaron.Count < listaAgentes.Count) { movimiento.Clear(Color.Transparent); foreach (Agente a in listaAgentes) { if (!a.FinalizoCaminoArista()) { mover = a.Mover(); movimiento.FillEllipse(new SolidBrush(Color.Black), mover.X - 10, mover.Y - 10, 10 * 2, 10 * 2); } else if (a.ExistenCaminos()) { a.ProximoCamino(); } else { if (!agentesTerminaron.Contains(a)) { agentesTerminaron.Add(a); } } } PictureBox_Circulos.Refresh(); } foreach (Agente A in listaAgentes) { if (agenteMayor.VerticesTotales.Count < A.VerticesTotales.Count) { agenteMayor = A; listaAgentesVertices.Clear(); listaAgentesVertices.Add(A); } else if (agenteMayor.VerticesTotales.Count == A.VerticesTotales.Count) { listaAgentesVertices.Add(A); } } foreach (Agente B in listaAgentesVertices) { if (B.RecorridoTota < menorDistancia) { menorDistancia = B.RecorridoTota; agenteMayor = B; } } labelMayorDistancia.Text = (agenteMayor.Id + " : " + agenteMayor.RecorridoTota + " , Vertices: " + agenteMayor.VerticesTotales.Count.ToString()); for (int x = 0; x < listaAgentes.Count; x++) { treeViewAgentes.Nodes.Add(listaAgentes[x].Id.ToString()); for (int y = 0; y < listaAgentes[x].CaminosRecorridos.Count; y = y + 2) { if (y == listaAgentes[x].CaminosRecorridos.Count - 2) { treeViewAgentes.Nodes[x].Nodes.Add(listaAgentes[x].CaminosRecorridos[y++].Origen.Etiqueta.ToString()); } treeViewAgentes.Nodes[x].Nodes.Add(listaAgentes[x].CaminosRecorridos[y].Origen.Etiqueta.ToString()); } } } } catch { MessageBox.Show("No hay agentes para mover"); } }