public ProjectileMotionPointsComputation(ProjectileMotionSettings settings) { if (settings is ProjectileMotionWithResistanceSettings) { throw new OnlySuperClassMethodException("This constructor cannot be used for motions with resistance"); } Settings = settings; }
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(); }
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(); }