public static Params Evaluate(this Data data1, OldData data2) { double time = (data1.Time - data2.Prevtime).TotalSeconds; double acc = 2 * (Math.Sqrt(Math.Pow(data1.X - data2.Prevx, 2) + Math.Pow(data1.Y - data2.Prevy, 2)) - data2.Prevspeed * time) / Math.Pow(time, 2); return(new Params() { Speed = Math.Abs(data2.Prevspeed + acc * time), Height = data1.Height, Direction = data1.Y > data2.Prevy ? "Up" : "Down" }); }
public void Flight() { Console.WriteLine("Самолет {0} запущен", Name); OldData prevdata = new OldData(); Params para = new Params(); for (int i = 0; i < FlightProgram.Count; i++) { para = FlightProgram[i].Evaluate(prevdata); Thread.Sleep(FlightProgram[i].Time - prevdata.Prevtime); Console.WriteLine("{0}\t{1}\t{2:###.###} м\\с\tВысота - {3}м\tНаправление - {4}", Name, FlightProgram[i].Time, para.Speed, para.Height, para.Direction); // сохраняем текущие данные для вычислений prevdata.Prevspeed = para.Speed; prevdata.Prevx = FlightProgram[i].X; prevdata.Prevy = FlightProgram[i].Y; prevdata.Prevtime = FlightProgram[i].Time; } Console.WriteLine("Самолет {0} полет завершил", Name); }