public ProjectileMotionPointsComputation(ProjectileMotionSettings settings)
        {
            if (settings is ProjectileMotionWithResistanceSettings)
            {
                throw new OnlySuperClassMethodException("This constructor cannot be used for motions with resistance");
            }

            Settings = settings;
        }
Beispiel #2
0
        internal ProjectileMotionPoint(ProjectileMotionWithResistanceComputation prevComputation)
        {
            Settings = new ProjectileMotionSettings(prevComputation.Settings.Quantities);

            X  = new Length(prevComputation.Point.X.GetBasicVal() + prevComputation.Point.Vx.GetBasicVal() * ProjectileMotionWithResistanceComputation.Dt, UnitLength.Basic);
            Y  = new Length(prevComputation.GetNewY() < 0 ? 0 : prevComputation.GetNewY(), UnitLength.Basic);
            T  = new Time(prevComputation.Point.T.GetBasicVal() + ProjectileMotionWithResistanceComputation.Dt, UnitTime.Basic);
            Vx = new Velocity(Math.Abs(prevComputation.GetNewVx()), UnitVelocity.Basic);
            Vy = new Velocity(Math.Abs(prevComputation.GetNewVy()), UnitVelocity.Basic);

            WasHighest = prevComputation.Point.WasHighest;

            if (Y < prevComputation.Point.Y && !prevComputation.Point.WasHighest)
            {
                prevComputation.Point.IsHighest = true;
                prevComputation.Point.Vy        = new Velocity(0, UnitVelocity.Basic);
                WasHighest = true;
            }

            InResultUnits();
        }
Beispiel #3
0
        internal ProjectileMotionPoint(ProjectileMotionSettings settings, Time t)
        {
            Settings  = settings;
            IsHighest = false;

            T = t;

            if (T == ProjectileMotionPointsComputation.GetTimeInitial() && Settings.Quantities.Α.Val == 0)
            {
                IsHighest  = true;
                WasHighest = true;
            }

            ProjectileMotionPointsComputation projectileMotionPointsComputation = new ProjectileMotionPointsComputation(Settings);

            Y  = projectileMotionPointsComputation.GetY(T);
            X  = projectileMotionPointsComputation.GetX(T);
            Vx = projectileMotionPointsComputation.GetVelocityX();
            Vy = projectileMotionPointsComputation.GetVelocityY(T);

            InResultUnits();
        }