JSFiddle - React, Tailwind, and code Playground
HTML
<canvas id="canvas"></canvas>
JavaScript
function rotatePointAround(pointX,pointY,originX,originY,angle) {
var angle = dToR(angle);
return {
x: Math.cos(angle) * (pointX-originX) - Math.sin(angle) * (pointY-originY) + originX,
y: Math.sin(angle) * (pointX-originX) + Math.cos(angle) * (pointY-originY) + originY
};
}
function dToR( degrees ){
return degrees * (Math.PI / 180.0);
}
var canvas = document.getElementById("canvas");
var c = canvas.getContext("2d");
var originX = 50,
originY = 50,
terminalArmEndX = originX+50,
terminalArmEndY = originX+50,
currentRotation = 0;
setInterval(function reDraw() {
c.beginPath();
c.moveTo(originX,originY);
terminalArmEndX = rotatePointAround(terminalArmEndX,terminalArmEndY,originX,originY,currentRotation).x;
terminalArmEndY = rotatePointAround(terminalArmEndX,terminalArmEndY,originX,originY,currentRotation).y;
c.lineTo(terminalArmEndX,terminalArmEndY);
c.strokeStyle = "black";
c.stroke();
currentRotation += 1; // 1 degree resolution
currentRotation = currentRotation % 360;
},20);