Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- using System.Drawing;
- using System.Linq;
- namespace func_rocket
- {
- public class ForcesTask
- {
- /// <summary>
- /// Создает делегат, возвращающий по ракете вектор силы тяги двигателей этой ракеты.
- /// Сила тяги направлена вдоль ракеты и равна по модулю forceValue.
- /// </summary>
- public static RocketForce GetThrustForce(double forceValue)
- {
- return r => new Vector(forceValue, 0).Rotate(r.Direction);
- }
- /// <summary>
- /// Преобразует делегат силы гравитации, в делегат силы, действующей на ракету
- /// </summary>
- public static RocketForce ConvertGravityToForce(Gravity gravity, Size spaceSize)
- {
- return r => gravity(spaceSize, r.Location);
- }
- /// <summary>
- /// Суммирует все переданные силы, действующие на ракету, и возвращает суммарную силу.
- /// </summary>
- public static RocketForce Sum(params RocketForce[] forces)
- {
- return r => forces.Select(force => force(r))
- .DefaultIfEmpty(Vector.Zero)
- .Aggregate((v1, v2) => v1 + v2);
- }
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement