Canvas: Obracanie obiektu wokół jego środka

Opublikowano: 20.05.2023 - tagi: Canvas JavaScript Obrót

Jak obrócić obiekt?

Pod tym linkiem znajdziesz demo przykładu opisanego w tym wpisie.

HTML:

<canvas id="canvas" width="800" height="600"></canvas>

JavaScript:

let angle = 0;

const context = document.getElementById("canvas").getContext("2d");
const rect = {
		width: 50,
		height: 50,
		x: context.canvas.width / 2,
		y: context.canvas.height / 2
}

const degreesToRadians = (degrees) => {
		return degrees * (Math.PI / 180);
};

const render = () => {
		context.fillStyle = '#000';

		context.fillRect(0, 0, context.canvas.width, context.canvas.height);
		context.fillStyle = '#ff0000';
		context.save();
		context.translate(rect.x, rect.y)
		context.rotate(degreesToRadians(angle));
		context.fillRect(-rect.width / 2, -rect.height / 2, rect.width, rect.height);
		context.restore();
		angle += 0.5;
		requestAnimationFrame(render);
}
render();

Za obrót obiektu wokół jego środka odpowiadają dwie linijki.

Pierwsza:

context.rotate(rotate);

Jest to kąt, o jaki ma być obrócony obiekt. Podany w radianach. Stopnie obliczane są w radiany za pomocą funkcji: degreesToRadians.

Druga linijka:

context.fillRect(-rect.width / 2, -rect.height / 2, rect.width, rect.height);

Odpowiedzialna jest za ustawienie osi obrotu obiektu. Na jego środku.