Advertisement
mikhailemv

Untitled

Mar 16th, 2023
574
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C# 0.74 KB | None | 0 0
  1. using System;
  2.  
  3. namespace func_rocket
  4. {
  5.     public class ControlTask
  6.     {
  7.         public static Turn ControlRocket(Rocket rocket, Vector target)
  8.         {
  9.             var currentAngle = CalculateAngle(rocket, target);
  10.  
  11.             if (currentAngle == 0)
  12.                 return Turn.None;
  13.  
  14.             return currentAngle > 0 ? Turn.Right : Turn.Left;
  15.         }
  16.  
  17.         private static double CalculateAngle(Rocket rocket, Vector target)
  18.         {
  19.             var distance = target - rocket.Location;
  20.  
  21.             var littleAngleDifference = Math.Abs(
  22.                 distance.Angle - rocket.Direction) < 0.5||
  23.                 Math.Abs(distance.Angle - rocket.Velocity.Angle) < 0.5;
  24.  
  25.             return littleAngleDifference ?
  26.                 (2 * distance.Angle - rocket.Velocity.Angle - rocket.Direction) / 2 :
  27.                 distance.Angle - rocket.Direction;
  28.         }
  29.     }
  30. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement