Beispiel #1
0
        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);
        }
Beispiel #2
0
        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);
            }
        }
Beispiel #3
0
        private void Turn(TurningDirections td, int times)
        {
            var currentHeadingInt = ((((int)td * times) + (int)CurrentHeading + 4) % 4);

            CurrentHeading = (CardinalDirections)currentHeadingInt;
        }