NB: Я представляю этот вопрос в градусах исключительно для простоты, радиан, градусов, разных нулевых значений, проблема в основном одна и та же.
Есть ли у кого-нибудь идеи относительно кода, лежащего в основе вращательной интерполяции? Для функции линейной интерполяции: Lerp (from, to, amount), где сумма равна 0... 1, которая возвращает значение между от и до, по сумме. Как я могу применить эту же функцию к вращательной интерполяции между 0 и 360 градусами? Учитывая, что градусы не должны возвращаться за пределами 0 и 360.
Учитывая этот единичный круг для градусов:
где от = 45 и до = 315, алгоритм должен принимать кратчайший путь к углу, т.е. он должен пройти через ноль, до 360, а затем до 315 - и не весь путь 90, 180, от 270 до 315.
Есть ли хороший способ достичь этого? Или это будет просто ужасный беспорядок if() блоков? Я пропустил какой-то хорошо понятый стандартный способ сделать это? Любая помощь будет оценена.