Доброго времени суток. Существует простенький алгоритм нахождения угла поворота вектора в сторону заданных координат:
// class Unit
lookTo(x, y) {
return Math.atan2(y - this.position.y, x - this.position.x);
}
Высчитывается всё верно, но проблема в том, что требуется находить угол минимальный между текущим и конечным. Например дельта угла поворота между 3.14 (налево) и -3.14 (так же налево) - PI * 2, хотя по факту между PI и -PI дельта нулевая - это один и тот же угол поворота. Так же как между PI и -2.14 дельта 5.14, хотя в реальности она равна 1.
Из-за этой проблемы объекты при повороте к заданным координатам (в случае анимации, например) делают полный оборот вокруг своей оси, вместо небольшого поворота.
Гуглёж помог лишь в получении информации в какую сторону нужно вращать объект:
ccw(x, y) {
return this.position.x * y - this.position.y * x;
}
Но как то это не слишком помогает в решении проблемы.
Можете пожалуйста предложить решение этой задачи или ключевые слова в гугле, с помощью которых я могу найти способ решения или мысль для решения задачи? Спасибо.