我有以下内容:
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。
为什么会这样?
答案 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);
}
您的函数也使用了错误的公式,这些公式在我发布的函数中。