void generarAristas() { int ponderacion = 0; int j = 0; int generarID = 0; //Arista aux = new Arista(-1, null, null, 5000); List <Point> pList; for (int i = 0; i < grafo.getVertices().Count; i++) { for (j = i + 1; j < grafo.getVertices().Count; j++) { ponderacion = obtenerDistancia(grafo.getVertices()[i].getCentro(), grafo.getVertices()[j].getCentro()); pList = new List <Point>(detectarObstaculos(grafo.getVertices()[i].getCentro(), grafo.getVertices()[j].getCentro())); if (pList.Count != 0) { Arista arista = new Arista(generarID, grafo.getVertices()[i], grafo.getVertices()[j], ponderacion, pList); grafo.getVertices()[i].agregarArista(arista); generarID++; pList.Reverse(); Arista _arista = new Arista(generarID, grafo.getVertices()[j], grafo.getVertices()[i], ponderacion, pList); grafo.getVertices()[j].agregarArista(_arista); generarID++; // MessageBox.Show("Primero elemento X: "+arista.getListaPixeles()[0].X+" Y:"+arista.getListaPixeles()[0].Y); //MessageBox.Show("Primero elemento X: "+_arista.getListaPixeles()[0].X+" Y:"+_arista.getListaPixeles()[0].Y); pictureBox1.Refresh(); } } } pictureBox1.Refresh(); pintarAristas(); }
public void tomarDecision(Point dst) { double co = dst.Y - vActual.getCentro().Y; double ca = dst.X - vActual.getCentro().X; double tan = co / ca; double dg = Math.Atan2(co, ca) * (180 / Math.PI); double menor = 360; double menorAux = 360; //if(dg < 0) // dg = dg * -1; camino = null; Arista aux = null; int contador = 0; for (int i = 0; i < vActual.getLista().Count; i++) { double nuevo_angulo = calcularAngulo(dst, dg, i); if (!vActual.getLista()[i].getDestino().getRastros().Exists(x => x == (rastro * -1))) { if (!vActual.getLista()[i].getDestino().getRastros().Exists(x => x == rastro)) { if (nuevo_angulo < menor) { camino = vActual.getLista()[i]; menor = nuevo_angulo; } } else { if (vActual.getLista()[i].getDestino().getRastros().Count < menorAux) { aux = vActual.getLista()[i]; menorAux = vActual.getLista()[i].getDestino().getRastros().Count; } contador++; } } } //velocidad = 5+avanzar; if (camino != null) { vActual.getRastros().Add(rastro); } else { if (aux != null) { if (contador < 2) { vActual.getRastros().Add(rastro * -1); } camino = aux; vActual.getRastros().Add(rastro); //vActual.getRastros().Add(rastro*-1); } } }
public void setCamino(Arista p) { camino = p; }
public void agregarArista(Arista l) { this.aL.Add(l); }