У меня есть круг, разделенный на четверти. Мне нужен алгоритм, который может вращать круг из одной позиции в другую наиболее эффективным способом.
"Лотки" имеют названия от 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);
Полагаю, есть лучший способ сделать это с помощью какой-либо модификации мода.