public static void crear_boids() { grilla.limpiar_boids(); grilla.resetVisitas(); Random r = new Random(); objects.Clear(); cantidad_parcial = nro_boids / Constantes.lapsos; cantidad_total = 0; lapso_temporal = 1; Boid b; b = new Mouse(); b.Location = new Vector(1, mapeo(1)); b.LocationNueva = new Vector(1, mapeo(1)); b.Velocity = new Vector(0, 0); objects.Add(b); }
private void play_simulacion_continua(DrawingArea area, Cairo.Context cr) { int n = 0; TimeSpan temp = new TimeSpan(0); if (Logica.play) { if (Constantes.iteraciones_total >= 2000000000) { Constantes.iteraciones_total = 0; } Constantes.iteraciones_total++; a1 = DateTime.Now; if (Constantes.iteraciones_lapso != 0 && Constantes.tiempo % Constantes.iteraciones_lapso == 0) { Logica.add_boids_iteracion(); } else if (Constantes.iteraciones_lapso == 0) { Logica.add_boids_iteracion(); } Constantes.tiempo++; if (Constantes.tiempo > 2000000000) { Constantes.tiempo = 0; Logica.reset_trayectorias(); } } //PARA DETENER LA SIMULACION EN LA ITERACION 10.000 if (Constantes.tiempo == 10000) { Logica.play = false; } foreach (Boid s in Logica.objects) { u = Logica.grilla.ubicacion_boid(s); coleccion.Clear(); rectangulos.Clear(); lineas.Clear(); circulos.Clear(); for (int x = u.X; x <= u.Width; x++) { for (int y = u.Y; y <= u.Height; y++) { coleccion.Add(Logica.objects [0]); coleccion.AddBoids(Logica.grilla.get_casillero(x, y).boids); Constantes.addObstacles(Logica.grilla.get_casillero(x, y).circulos, circulos); Constantes.addObstacles(Logica.grilla.get_casillero(x, y).lineas, lineas); Constantes.addObstacles(Logica.grilla.get_casillero(x, y).rectangulos, rectangulos); } } // TimeSpan total = new TimeSpan (r2.Ticks - r1.Ticks); // System.Console.WriteLine (total); if (Logica.play) { if (n == 0 && Logica.mouse) { s.calculateVelocity(Logica.objects, area); } else if (n != 0) { rot = s.calculateRotation(); r1 = DateTime.Now; if (ventana.contorno.Active) { triangulo_contorno(cr, s.Location, rot); } else { triangulo(cr, s, rot); } r2 = DateTime.Now; temp += new TimeSpan(r2.Ticks - r1.Ticks); Constantes.r_acum += new TimeSpan(r2.Ticks - r1.Ticks); s.calculateVelocity(coleccion, circulos, rectangulos, lineas); } } else { if (n != 0) { rot = s.calculateRotation(); if (ventana.contorno.Active) { triangulo_contorno(cr, s.Location, rot); } else { triangulo(cr, s, rot); } } } n++; } Logica.actualizar_posicion_boids(); Logica.grilla.reclasificar(Logica.objects); if (Logica.play) { a2 = DateTime.Now; Constantes.a_acum += new TimeSpan(a2.Ticks - a1.Ticks) - temp; ventana.render.Text = "Tiempo de rendering: " + Constantes.r_acum.ToString() + " "; ventana.algorithm.Text = "Tiempo de algoritmo: " + Constantes.a_acum.ToString(); ventana.etiquetaIteraciones.Text = " Cantidad de iteraciones: " + Constantes.iteraciones_total.ToString(); } }