auto: 2026-07-28 18:28 (EOMSANGDON-HOME)

This commit is contained in:
2026-07-28 18:28:02 +09:00
parent 5ee3b7e2cb
commit 0c51aef49e
@@ -381,7 +381,17 @@ export function createSurfaceMapViewer(): SurfaceMapViewer {
"wheel",
(event) => {
event.preventDefault();
const prevScale = scale;
scale = Math.min(8, Math.max(0.5, scale * (event.deltaY < 0 ? 1.15 : 0.87)));
// 마우스 커서 아래 지점이 줌 전후로 같은 화면 위치에 머물도록 offset 보정.
// screen = center + (base - center)·scale + offset 이므로,
// 커서 고정 조건을 풀면 offset' = (cursor - center)·(1 - r) + offset·r (r = scale'/scale).
const ratio = scale / prevScale;
const rect = viewport.getBoundingClientRect();
const cursorX = event.clientX - rect.left - rect.width / 2;
const cursorY = event.clientY - rect.top - rect.height / 2;
offsetX = cursorX * (1 - ratio) + offsetX * ratio;
offsetY = cursorY * (1 - ratio) + offsetY * ratio;
scheduleDraw();
},
{ passive: false },