/// <summary> /// hareket direktifi ile oluşacak koordinat değişikliği birim çember üzerindeki açısal durumdan /// koordinat bazlı ayrı yarı hesaplanır /// </summary> /// <param name="position"></param> /// <param name="coordinat"></param> /// <returns></returns> private static int CalculateNextStepMoveCoordinat(int position, Coordinats coordinat) { var result = 0; switch (coordinat) { case Coordinats.X: result = (int)Math.Cos(RoverUtils.ConvertDegreeToRadian(position)); break; case Coordinats.Y: result = (int)Math.Sin(RoverUtils.ConvertDegreeToRadian(position)); break; default: break; } return(result); }
/// <summary> /// Yön değiştirme direktifi birim çember esas alınıp açısal hesaplanmıştır /// 360 derece döndüğünde aynı yöne geldiğinden bu aralıkla sınırlandırılır /// </summary> /// <param name="position"></param> /// <param name="letter"></param> /// <returns></returns> public static int CalculateDirectionPositionViaUnitCircle(int position, char letter) { position += RoverUtils.ConvertCompassCharToPositon(letter); // gelen direktifin yaratacağı açı değişikliği hesaplanır position = position % 360; return(position); }