Javascript矢量旋转

时间:2014-10-17 01:25:23

标签: javascript vector

我有以下内容:

function Vec2(x, y) {
this.x = x;
this.y = y;
}

Vec2.prototype.rotate = function(d) {
var x = this.x;
var y = this.y;
this.x = x * Math.cos(d) + y * Math.sin(d);
this.y = y * Math.cos(d) - x * Math.sin(d);
}

var v = new Vec2(0, 1);

之后:

v.rotate(90);

向量应为1,0(或-1,0?),但这将返回0.8939966636005579,-0.4480736161291702。

为什么会这样?

1 个答案:

答案 0 :(得分:1)

创建一个toRad功能,然后在' d'。

上使用它
function toRad(Value) {
    return Value * Math.PI / 180;
}

Vec2.prototype.rotate = function(d) {
d = toRad(d);
var x = this.x;
var y = this.y;
this.x = x * Math.cos(d) - y * Math.sin(d);
this.y = y * Math.cos(d) + x * Math.sin(d);
}

您的函数也使用了错误的公式,这些公式在我发布的函数中。