Здравствуйте, господа.
Собственно сабж. Обрабатываю поворот юнита. Стандартный метод .angleTo() в three.js возвращвет скорее какую-то длинну, нежели угол, при чем это число зависело скорее не от угла, а от длинны растояния от точки к юниту, поэтому пошел по школьной программе - теореме косинусов, чтобы его высчитать. Вроде бы и работает более-менее, но реально правильный угол получается вывести ближе к 0, 90 и 180 градусов (для простоты работаю по модулю 180 градусов). Для наглядности - вывожу стороны треугольника. В промежутках - появляются артефакты, при которых юнит смотрит куда-то в середину катета, при чем есть некая зависимость: эта середина ближе к нулю если угол меньше 45 и ближе к 90 если больше. Собственно это попытался показать на скринах (пардон за беспорядок).
По формуле узнаю косинус, который в промежутке от 0 до 1, далее вычитаю один прямой угол, так как он и так явно известен, и оставшиеся 90 умножаю на значение косинуса, таким образом к примеру с косинусом 0.5 угол выводится 90*0.5=45.
Возможно я что-то не так делаю, и из-за этого получается сей косяк. Кто что подскажет? Спасибо заранее.
UPD: я знаю про радианы, в градусы перевожу просто для удобства при расчетах.