Exemple #1
0
        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"
            });
        }
Exemple #2
0
        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);
        }