Ejemplo n.º 1
0
        protected override bool InternalRun()
        {
            time = 0;
            trajectory.Clear();
            var task = new AngryBirdsTask();

            angle = task.FindSightAngle(v, distance);
            double x = 0;
            double y = 0;

            trajectory.Add(Tuple.Create(x, y));
            double vx = v * Math.Cos(angle);
            double dt = distance / v / 1000;
            double g  = 9.8;
            double vy = v * Math.Sin(angle);

            if (vx < 0.00001)
            {
                return(false);
            }
            while (x < distance)
            {
                time += dt;
                vy   -= g * dt;
                x    += vx * dt;
                y    += vy * dt;
                trajectory.Add(Tuple.Create(x, y));
            }
            return(Math.Abs(y) < distance / 100);
        }
Ejemplo n.º 2
0
        protected override bool InternalRun()
        {
            time = 0;
            trajectory.Clear();
            angle = AngryBirdsTask.FindSightAngle(v, distance);
            if (double.IsInfinity(angle))
            {
                return(false);
            }
            if (double.IsNaN(angle))
            {
                return(!hasSolution);
            }
            double x = 0;
            double y = 0;

            trajectory.Add(Tuple.Create(x, y));
            var vx = v * Math.Cos(angle);
            var dt = distance / v / 1000;
            var g  = 9.8;
            var vy = v * Math.Sin(angle);

            if (vx < 0.00001)
            {
                return(false);
            }
            while (x < distance)
            {
                time += dt;
                vy   -= g * dt;
                x    += vx * dt;
                y    += vy * dt;
                trajectory.Add(Tuple.Create(x, y));
            }

            return(Math.Abs(y) <= distance / 100);
        }
Ejemplo n.º 3
0
 protected override bool InternalRun()
 {
     time = 0;
     trajectory.Clear();
     var task = new AngryBirdsTask();
     angle = task.FindSightAngle(v, distance);
     double x = 0;
     double y = 0;
     trajectory.Add(Tuple.Create(x, y));
     double vx = v*Math.Cos(angle);
     double dt = distance/v/1000;
     double g = 9.8;
     double vy = v*Math.Sin(angle);
     if (vx < 0.00001) return false;
     while (x < distance)
     {
         time += dt;
         vy -= g*dt;
         x += vx*dt;
         y += vy*dt;
         trajectory.Add(Tuple.Create(x, y));
     }
     return Math.Abs(y) < distance/100;
 }