캔버스 크기 맞추기
CSS 표시 크기와 width/height 픽셀 버퍼를 맞추고 devicePixelRatio를 반영해야 흐릿함을 줄입니다.
해상도Canvas에 그린 도형은 DOM 노드로 남지 않습니다. 그리기 명령이 픽셀 버퍼를 바꾸고, 이후 상태 변경과 다시 그리기 루프를 직접 관리해야 애니메이션, 충돌, 고해상도 화면이 안정적입니다.
CSS 표시 크기와 width/height 픽셀 버퍼를 맞추고 devicePixelRatio를 반영해야 흐릿함을 줄입니다.
해상도색상, 선 굵기, 변환, clipping은 context 상태로 누적되므로 save와 restore로 범위를 관리합니다.
상태움직이는 장면은 clearRect 후 현재 모델 상태를 기준으로 전체 혹은 필요한 영역을 다시 그립니다.
렌더 루프도형이 DOM이 아니므로 클릭 좌표를 모델 좌표로 변환해 어떤 객체가 눌렸는지 직접 계산합니다.
상호작용const ratio = window.devicePixelRatio || 1;
canvas.width = canvas.clientWidth * ratio;
canvas.height = canvas.clientHeight * ratio;
ctx.scale(ratio, ratio);