我正在为HTML5中的画布设计一些坐标函数,我想创建一个可以按度数移动对象的函数。
我的梦想是制作一个这样的功能:
box.x=10;
box.y=10;
// now the box has the coordinates (10,10)
moveTheBoxWithThisAmountOfDistance=10;
degreesToMoveTheBox=90;
box.moveByDegrees(moveTheBoxWithThisAmountOfDistance,degreesToMoveTheBox);
// now the box.x would be 20 and box.y wouldn't be changed because
// we only move it to the right (directional 90 degrees)
我希望这有任何意义!
所以我的问题是:
当我必须将度数转换为坐标时,数学表达式如何?
答案 0 :(得分:3)
您使用sin
和cos
将角度和距离转换为坐标:
function moveByDegrees(distance, angle) {
var rad = angle * Math.pi / 180;
this.x += Math.cos(rad) * distance;
this.y += Math.sin(rad) * distance;
}
答案 1 :(得分:1)
就是这样:http://en.wikipedia.org/wiki/Rotation_matrix,所有数学都被描述:)
还要注意,如果你需要多次连续旋转(即你进行连续动画),最好从初始旋转中重新计算x'和y',而不仅仅是前一次。不这样做会导致舍入错误累积,并且在几千次旋转之后结果将变得太粗糙。