Показать сообщение отдельно
  #24 (permalink)  
Старый 25.02.2015, 06:32
Аватар для danik.js
Профессор
Отправить личное сообщение для danik.js Посмотреть профиль Найти все сообщения от danik.js
 
Регистрация: 11.09.2010
Сообщений: 8,804

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, значит поворачиваться надо в противоположную сторону - минусуем оборот.
__________________
В личку только с интересными предложениями
Ответить с цитированием