Вышеупомянутое выражение взято из метода ниже. Я знаю, что для поворота точки вокруг центра нам нужно
- Переместить точку в начало координат
- Сделать поворот и
- Переместить точку назад
Но части, которые я не могу понять:
r[0] = x * Math.cos(angle) - y * Math.sin(angle);
^
|
why we use the minus sign here?
r[1] = x * Math.sin(angle) + y * Math.cos(angle);
^
|
And why here we use plus sign instead of minus?
Vec2.prototype.rotate = function (center, angle) {
//rotate in counterclockwise
var r = [];
var x = this.x - center.x;
var y = this.y - center.y;
r[0] = x * Math.cos(angle) - y * Math.sin(angle);
r[1] = x * Math.sin(angle) + y * Math.cos(angle);
r[0] += center.x;
r[1] += center.y;
return new Vec2(r[0], r[1]);
};
Книга должна была быть великолепной, но она не объясняет большую часть кода, она просто выплевывает.