k--
, а в какой этого делать не нужно вовсе. 1. Если нужен ближайший разворот: то изначально зеркалируем углы относительно оси максимального расстояния: OX (т.е., все углы станут <180 градусов; 180 - это 0!).
2. Градусы переводим в проценты и делим сумму процентов на общее количество значений.Перевод в проценты и обратно из процентов в градусы – какую проблему решает?
Math.atan2(y, x)
const d2r = d => d * Math.PI / 180;
const r2d = r => r * 180 / Math.PI;
const vec = arr => {
const sum = arr.map(
a => [Math.cos(d2r(a)), Math.sin(d2r(a))]
)
.reduce((p,c) => [p[0]+c[0], p[1]+c[1]], [0,0]);
return r2d( Math.atan2(sum[1], sum[0]));
}
vec([84, 276, 180]); // 180
Запускали каждый вариант по 1 млн. раз и сравнивали суммарное время?