оживить объект под заданным углом и скоростью - PullRequest
0 голосов
/ 30 ноября 2018

Мне нужна возможность анимировать объекты на определенных траекториях и устанавливать скорость при этом.Первоначально, чтобы рассчитать новые координаты для каждого кадра анимации, я написал функцию в соответствии с:

function getCoords(obj, angle, speed) {
  var curX = obj.left, curY = obj.top;
  var newX = curX + (Math.cos(angle) * speed);
  var newY = curY + (Math.sin(angle) * speed);

  return [newX, newY];
}

Это не дало ожидаемых результатов.В Googling вокруг и немного проб и ошибок, я изменил функцию, чтобы получить SIN и COS угла в радианах (а не сам угол), и все теперь работает.

function getCoords(obj, angle, speed) {
  var rdn = (angle * Math.PI) / 180;
  var curX = obj.left, curY = obj.top;
  var newX = curX + (Math.cos(rdn) * speed);
  var newY = curY + (Math.sin(rdn) * speed);

  return {x:newX, y:newY};
}

У меня естьОЧЕНЬ слабое понимание того, почему я думал , что это сработает с первого раза, как я пытался.Теперь с преобразованием в радианы я потерялся.

Может кто-нибудь объяснить (кому-то с ржавым - лучше всего - набором навыков триг-фу), почему преобразование было необходимо ... или почемуэто работает, а 1-й путь нет?

...