/// <summary> /// 10. Constructor for a projectile motion Quantities. Computes an elevation angle based on the maximal height. /// </summary> /// <param name="v">An initial velocity.</param> /// <param name="dur">The maximal height.</param> /// <param name="h">An initial height.</param> /// <param name="g">A gravitation acceleration of the planet.</param> /// <param name="units">The units of Quantities. By default metre per second, radian, metre and metre per square second.</param> public ProjectileMotionQuantities(MaximalHeight maxHeight, InitialVelocity v, InitialHeight h, GravAcceleration g, ProjectileMotionResultsUnits units = null) { Units = units ?? new ProjectileMotionResultsUnits(); V = v; H = h; G = g; Α = new ElevationAngle( GetResultWithComputeExpection( maxHeight.GetBasicVal() == 0 && H.GetBasicVal() == 0 ? double.NaN : Math.Asin(Math.Sqrt( 2.0 * G.GetBasicVal() * (maxHeight.GetBasicVal() - H.GetBasicVal()) / Math.Pow(V.GetBasicVal(), 2) )) ), UnitAngle.Basic ).Convert(Units.Angle); UsedAssignmentType = AssignmentsTypes.ElevationAngleByMaxHeight; }
/// <summary> /// 8. Constructor for a projectile motion Quantities. Computes an initial velocity based on the maximal height. /// </summary> /// <param name="α">An elevation angle.</param> /// <param name="maxHeight">The maximal height.</param> /// <param name="h">An initial height.</param> /// <param name="g">A gravitation acceleration of the planet.</param> /// <param name="units">The units of Quantities. By default metre per second, radian, metre and metre per square second.</param> public ProjectileMotionQuantities(MaximalHeight maxHeight, ElevationAngle α, InitialHeight h, GravAcceleration g, ProjectileMotionResultsUnits units = null) { Units = units ?? new ProjectileMotionResultsUnits(); Α = α; H = h; G = g; V = new InitialVelocity( GetResultWithComputeExpection( maxHeight.GetBasicVal() == 0 && H.GetBasicVal() == 0 ? Α.GetBasicVal() == 0 ? double.NaN : 0 : Math.Sqrt( 2.0 * G.GetBasicVal() * (maxHeight.GetBasicVal() - H.GetBasicVal()) / Math.Pow(Math.Sin(Α.GetBasicVal()), 2.0) ) ), UnitVelocity.Basic ).Convert(Units.Velocity); UsedAssignmentType = AssignmentsTypes.InitialVelocityByMaxHeight; }
/// <summary> /// 9. Constructor for a projectile motion Quantities. Computes an initial height based on the maximal height. /// </summary> /// <param name="α">An elevation angle.</param> /// <param name="maxHeight">The maximal height.</param> /// <param name="v">An initial velocity.</param> /// <param name="g">A gravitation acceleration of the planet.</param> /// <param name="units">The units of Quantities. By default metre per second, radian, metre and metre per square second.</param> public ProjectileMotionQuantities(MaximalHeight maxHeight, ElevationAngle α, InitialVelocity v, GravAcceleration g, ProjectileMotionResultsUnits units = null) { Units = units ?? new ProjectileMotionResultsUnits(); V = v; Α = α; G = g; H = new InitialHeight( GetResultWithComputeExpection( maxHeight.GetBasicVal() - Math.Pow(V.GetBasicVal() * Math.Sin(Α.GetBasicVal()), 2.0) / (2.0 * G.GetBasicVal()) ), UnitLength.Basic ).Convert(Units.Length); UsedAssignmentType = AssignmentsTypes.InitialHeightByMaxHeight; }