Эффективный вращающийся лоток с 4 слотами - PullRequest
1 голос
/ 07 января 2011

У меня есть круг, разделенный на четверти. Мне нужен алгоритм, который может вращать круг из одной позиции в другую наиболее эффективным способом.

"Лотки" имеют названия от 1 до 4.

Я сейчас использую алгоритм:

int degrees = (currentPos - newPos) * 90;

используя алгоритм, я получаю, на сколько градусов мне нужно повернуть круг, чтобы добраться до новой позиции. Однако, если я нахожусь в положении 4 и мне нужно перейти к 1, результат будет 4 - 1 * 90 = 270. В этом случае наиболее эффективным будет повернуть -90 вместо 270. (то же самое касается перехода от до 4).

Кто-нибудь получил хорошее представление о том, как это сделать? Конечно, я могу использовать оператор if:

       if(degrees >= -180 && degrees <= 180) 
       sortingTrayMotor.rotate(degrees);
    else if(degrees == -270)
       sortingTrayMotor.rotate(90);
    else
        sortingTrayMotor.rotate(-90);

Полагаю, есть лучший способ сделать это с помощью какой-либо модификации мода.

1 Ответ

2 голосов
/ 07 января 2011

Именно то, что вы делаете, только если результат> 180 градусов, вычтите 360 градусов.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...