private void RotateWaypoint(TurningDirections td, int degrees) { var rotateDegrees = td == TurningDirections.Right ? degrees : -degrees; var rotateRadians = rotateDegrees * Math.PI / 180; var newX = (int)Math.Round(CurrentWaypoint.X * Math.Cos(rotateRadians) + CurrentWaypoint.Y * Math.Sin(rotateRadians)); var newY = (int)Math.Round(-CurrentWaypoint.X * Math.Sin(rotateRadians) + CurrentWaypoint.Y * Math.Cos(rotateRadians)); CurrentWaypoint = new Point(newX, newY); }
private CardinalDirections TurnRight(CardinalDirections roverDirection, TurningDirections turnToDirection) { switch (roverDirection) { case CardinalDirections.N: return(CardinalDirections.E); case CardinalDirections.S: return(CardinalDirections.W); case CardinalDirections.W: return(CardinalDirections.N); case CardinalDirections.E: return(CardinalDirections.S); default: return(CardinalDirections.W); } }
private void Turn(TurningDirections td, int times) { var currentHeadingInt = ((((int)td * times) + (int)CurrentHeading + 4) % 4); CurrentHeading = (CardinalDirections)currentHeadingInt; }