Bond, можешь при повороте по часовой стрелке минусовать 90deg, против часовой - плюсовать. Правда, если крутиться на месте число будет возрастать.
this.rotation = 0;
moveTo(dir) {
dir = {top: 0, left: 90, right: 270, bottom: 180}[dir];
var diff = dir - (this.rotation % 360);
if (diff > 180) {
diff -= 360;
this.rotation += diff;
}
rotation - угол поворота. Может быть больше 360.
rotation % 360 - отбросили лишние обороты, получили 0 <= x <= 360
diff - разница в градусах на сколько нужно повернуться из текущего положения. Если больше 180, значит поворачиваться надо в противоположную сторону - минусуем оборот.