feat(B04,B05): 2D 지도 휠 줌 방향 반전 — 당기면 확대, 밀면 축소

B04 2D 지도와 B05 배수유역도의 휠 판정을 deltaY > 0 기준으로 바꿨다.
커서 아래 지점을 고정하는 offset 보정은 그대로다. 3D 뷰어는 손대지 않았다.

Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
This commit is contained in:
2026-08-02 01:13:24 +09:00
co-authored by Claude Opus 5
parent b3ab6028cd
commit 269ec3e213
2 changed files with 4 additions and 3 deletions
@@ -517,7 +517,8 @@ export function createSurfaceMapViewer(): SurfaceMapViewer {
(event) => {
event.preventDefault();
const prevScale = scale;
scale = Math.min(8, Math.max(0.5, scale * (event.deltaY < 0 ? 1.15 : 0.87)));
// 휠을 **당기면 확대**, 밀면 축소한다(2026-08-02 사용자 지시). 일반 스크롤과 반대 방향이다.
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).
@@ -336,7 +336,6 @@ export function createDrainagePanel(callbacks: DrainagePanelCallbacks = {}): Dra
});
}
/** 유역 제원 목록을 다시 그린다. 항목을 누르면 해당 유역만 진하게 강조한다. */
/** 유역 제원 목록. 항목을 누르면 그 유역만 진하게 강조한다. */
const renderBasinList = (): void =>
renderBasinRows(basinList, basins, selectedBasin, (index) =>
@@ -504,7 +503,8 @@ export function createDrainagePanel(callbacks: DrainagePanelCallbacks = {}): Dra
(event) => {
event.preventDefault();
const prevScale = scale;
scale = Math.min(16, Math.max(0.5, scale * (event.deltaY < 0 ? 1.15 : 0.87)));
// 휠을 **당기면 확대**, 밀면 축소한다(2026-08-02 사용자 지시). B04 2D 지도와 같은 방향이다.
scale = Math.min(16, Math.max(0.5, scale * (event.deltaY > 0 ? 1.15 : 0.87)));
// 커서 아래 지점을 고정한 채 확대/축소 (B04 지도와 동일 동작).
const ratio = scale / prevScale;
const rect = viewport.getBoundingClientRect();