Я пытаюсь повернуть прямоугольник вокруг его центра, но он не вращается так, как я ожидаю.
Вот пример:
https://jsfiddle.net/37ur8dfk/1/
let canvas = document.getElementById('canvas');
let ctx = canvas.getContext('2d');
let x = 100;
let y = 100;
let w = 100;
let h = 50;
// Draw a red dot to highlight the point I want to rotate the rectangle around
ctx.fillStyle = '#ff0000';
ctx.beginPath();
ctx.arc(x, y, 4, 0, 2 * Math.PI);
ctx.closePath();
ctx.fill();
// Attempt to rotate the rectangle aroumd x,y
ctx.save();
ctx.fillStyle = '#000000';
ctx.translate(-x, -y);
ctx.rotate(10 * Math.PI/180);
ctx.translate(x, y);
ctx.fillRect(x - w/2, y - h/2, w, h);
ctx.restore();
У меня есть центр прямоугольника в виде координат x, y. Затем я перевожу его на -x, -y, чтобы изменить его происхождение на 0,0. Затем я поворачиваю его на несколько градусов, но, похоже, он не вращается вокруг 0,0 координат. Насколько я понимаю, вращение должно вращать весь контекст о происхождении, или 0,0.
Пожалуйста, посмотрите на jsfiddle, чтобы понять, что я имею в виду.
Чего мне здесь не хватает?