Мне нужна возможность анимировать объекты на определенных траекториях и устанавливать скорость при этом.Первоначально, чтобы рассчитать новые координаты для каждого кадра анимации, я написал функцию в соответствии с:
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-й путь нет?