Math.atan2() возвращает угол в радианах. Их же можно потом использовать в
transform: rotate( 123rad);
Потом, не забывайте, что изначально ваш угол больше на 1/8 оборота, поэтому из полученного угла надо вычесть PI/4.
Сделал по-своему
пример.
Хотел было добавить
transition: transform 0.08
для плавности, но появляется проблема перескок при пересечении нуля. Когда угол вдруг меняется с минус-Пи на плюс-Пи,
глупый transition проводит крутилку через полный оборот.