Advertisement
Guest User

Untitled

a guest
Mar 22nd, 2017
1,461
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 1.38 KB | None | 0 0
  1. using System.Drawing;
  2. using System.Linq;
  3.  
  4. namespace func_rocket
  5. {
  6. public class ForcesTask
  7. {
  8. /// <summary>
  9. /// Создает делегат, возвращающий по ракете вектор силы тяги двигателей этой ракеты.
  10. /// Сила тяги направлена вдоль ракеты и равна по модулю forceValue.
  11. /// </summary>
  12. public static RocketForce GetThrustForce(double forceValue)
  13. {
  14. return r => new Vector(forceValue, 0).Rotate(r.Direction);
  15. }
  16.  
  17. /// <summary>
  18. /// Преобразует делегат силы гравитации, в делегат силы, действующей на ракету
  19. /// </summary>
  20. public static RocketForce ConvertGravityToForce(Gravity gravity, Size spaceSize)
  21. {
  22. return r => gravity(spaceSize, r.Location);
  23. }
  24.  
  25. /// <summary>
  26. /// Суммирует все переданные силы, действующие на ракету, и возвращает суммарную силу.
  27. /// </summary>
  28. public static RocketForce Sum(params RocketForce[] forces)
  29. {
  30. return r => forces.Select(force => force(r))
  31. .DefaultIfEmpty(Vector.Zero)
  32. .Aggregate((v1, v2) => v1 + v2);
  33. }
  34. }
  35. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement