我需要能够以特定的轨迹为对象设置动画并在设置速度的同时进行设置。最初,为了计算动画每一帧的新坐标,我编写了以下函数:
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];
}
这没有产生预期的结果。在谷歌搜索和一点点反复试验中,我更改了功能,以弧度表示角度的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};
}
对于为什么我认为会以我尝试过的第一种方法起作用,我有一个非常脆弱的了解。现在转换为弧度,我迷路了。
任何人都可以(向那些生锈的人-充其量是-最好的-一套trig-fu skillz)解释为什么有必要进行转换...或者为什么这种转换有效而第一种方法却没有?