//Constructor copia public FlightPlan(FlightPlan fp) { this.ID = fp.GetID(); this.compañia = fp.GetCompañia(); this.velocidad = fp.GetVelocidad(); this.IX = fp.GetIX(); this.FX = fp.GetFX(); this.AX = fp.GetAX(); this.IY = fp.GetIY(); this.FY = fp.GetFY(); this.AY = fp.GetAY(); this.incrementov = fp.GetIncrementoV(); }
public Boolean Estaranenconflicto(FlightPlan plan, double ds) //dice si habrá, en un futuro, conflicto entre el fp y el fp dado omo parametro { //Parámetros fp clase double Hthis = Math.Sqrt((this.FX - this.AX) * (this.FX - this.AX) + (this.FY - this.AY) * (this.FY - this.AY)); //H: distancia que hay desde donde está hasta su posición final double Cthis = (this.FX - this.AX) / Hthis; //C: coseno double Sthis = (this.FY - this.AY) / Hthis; //S: seno //Parámetros fp plan double Hplan = Math.Sqrt((plan.FX - plan.AX) * (plan.FX - plan.AX) + (plan.FY - plan.AY) * (plan.FY - plan.AY)); //H: distancia que hay desde donde está hasta su posición final double Cplan = (plan.FX - plan.AX) / Hplan; //C: coseno double Splan = (plan.FY - plan.AY) / Hplan; //S: seno double OX = this.GetIX() - plan.GetIX(); double OY = this.GetIY() - plan.GetIY(); double CV = (this.GetVelocidad() * Cthis - plan.GetVelocidad() * Cplan) / 3600; double SV = (this.GetVelocidad() * Sthis - plan.GetVelocidad() * Splan) / 3600; //Definimos el parámetro distancia double distancia; //Caso particular: los dos aviones vuelan en la misma dirección, en el mismo sentido y a la misma velocidad --> la distancia será siempre la misma if (SV == 0 && CV == 0) { distancia = this.Distance(plan); //me da igual en la posición que estén } //Todos los demás casos: //Las fórmulas que usamos las hemos obtenido manualmente optimizando la distancia y con las ecuaciones del movimiento else { //Momento en el que la distancia será mínima double t = -(OY * SV + OX * CV) / (CV * CV + SV * SV); //Distancia mínima distancia = Math.Sqrt((OX + t * CV) * (OX + t * CV) + (OY + t * SV) * (OY + t * SV)); } if (distancia < ds) { return(true); } else { return(false); } }
public void GuardarVuelos(string fichero) //escribe fichero con los datos actuales de los vuelos { StreamWriter W = new StreamWriter(fichero); //escribir fichero int i = 0; while (i < ListFP.Count) { FlightPlan f = ListFP[i]; W.WriteLine(f.GetID() + " " + f.GetCompañia() + " " + Convert.ToString(f.GetVelocidad()) + " " + Convert.ToString(f.GetIX()) + " " + Convert.ToString(f.GetIY()) + " " + Convert.ToString(f.GetAX()) + " " + Convert.ToString(f.GetAY()) + " " + Convert.ToString(f.GetFX()) + " " + Convert.ToString(f.GetFY())); i++; } W.Close(); //cerrar fichero }