Rotate a vector by given degrees (errors when value over 90)
- by Ivan
I created a function to rotate a vector by a given number of degrees. It seems to work fine when given values in the range -90 to +90. Beyond this, the amount of rotation decreases, i.e., I think objects are rotating the same amount for 80 and 100 degrees.
I think this diagram might be a clue to my problem, but I don't quite understand what it's showing. Must I use a different trig function depending on the radians value? The programming examples I've been able to find look similar to mine (not varying the trig functions).
Vector2D.prototype.rotate = function(angleDegrees) {
var radians = angleDegrees * (Math.PI / 180);
var ca = Math.cos(radians);
var sa = Math.sin(radians);
var rx = this.x*ca - this.y*sa;
var ry = this.x*sa + this.y*ca;
this.x = rx;
this.y = ry;
};