Files
Aislo/docs/raw/plans/2026-08-29_plan_B07_CAD_zoom_pan.md
T
eomsangdonandClaude Opus 5 eb30b774f8 chore(docs): docs 폴더 git 추적 전환 · PLAN·OWNERS 최상위 이관
- `docs/` 를 .gitignore 에서 빼 git 추적 대상으로 전환 (위키·완료 이력·검증 기록)
- `docs/raw/PLAN.md` · `docs/raw/OWNERS.md` 를 저장소 최상위로 이동 후 .gitignore 에 등록
  — 창끼리 공유하되 저장소에는 안 올리는 장부
- 살아 있는 경로 참조 7개 파일 정정 (아카이브 107건은 그때 사실이라 그대로 둠)
- graphify 날짜별 산출물(`docs/wiki/graphify-out/20*/`) 제외 — `graphify update` 가 다시 만듦

Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
2026-09-09 18:19:07 +09:00

3.7 KiB
Raw Blame History

B07 CAD 확대·트랙패드 입력 완료 아카이브

  • 완료일: 2026-08-29
  • 상태: 사용자 검증 완료
  • 검증: docs/raw/verification/2026-08-29_verify_B07_CAD_zoom_pan.md
  • 검증 방식: 사용자 실무 검증 채택, Codex 2차 교차검증 생략

완료 범위

B07 CAD 확대 조작 — 트랙패드 핀치가 브라우저까지 확대 (2026-08-29 구현 완료, 검증 대기)

증상(사용자 2026-08-29): 노트북 트랙패드로 B07 도면을 확대하면 CAD뿐 아니라 브라우저 화면 전체가 같이 확대된다.

원인: 트랙패드 핀치는 ctrl+wheel 이벤트다. CAD의 휠 처리 (input-controller.ts:handleMouseWheel)가 preventDefault()를 한 번도 부르지 않아 브라우저 기본 동작(페이지 확대)이 그대로 실행됐다. 캔버스 밖(리본·패널) 위에서는 휠 핸들러조차 없었다.

조치(요청 범위 그대로 — 확대 감각·방향은 손대지 않음):

  • 캔버스 휠 리스너를 {passive:false}로 등록하고 handleMouseWheel 첫 줄에서 preventDefault().
  • document에 ctrl+wheel만 막는 리스너 추가 — 리본·도면층 패널 위 핀치도 브라우저를 확대시키지 않는다. ctrl 없는 휠은 그대로 둬 패널 스크롤 유지.

자체검증(공용 브라우저, 신뢰 입력 + 합성 이벤트):

  • Ctrl 누른 채 실제 휠 4회 → devicePixelRatio 1.25 불변(브라우저 확대 없음), CAD 확대율만 228%→134%로 변함.
  • 합성 wheel defaultPrevented: 캔버스·리본·도면층 핀치 True, ctrl 없는 패널 스크롤만 False(스크롤 살아 있음).

2차 조치(2026-08-29 사용자 승인: "트랙패드는 천천히, 마우스는 알아서 맞춰라" + "두 손가락 이동은 팬"):

  • 확대를 델타 비례 지수식으로 — exp(-delta * 지수). 마우스 휠 한 칸(deltaY 100)은 종전과 같은 10%, 트랙패드의 잔 델타는 그 크기만큼만 움직인다. 상수: WHEEL_ZOOM_EXPONENT=0.000953(=ln(1.1)/100), PINCH_ZOOM_EXPONENT=0.003 (2026-08-29 사용자 "너무 느림"으로 0.0015에서 2배. 핀치 5회에 228%→264%). deltaMode가 줄·쪽 단위로 오는 브라우저를 위해 픽셀 환산도 넣었다.
  • 트랙패드 두 손가락 이동 = 팬. 기기 판별(isMouseWheel)은 마우스 휠은 한 칸이 100/120px로 딱 떨어지고 가로 델타가 없다는 성질로 가른다. 트랙패드는 손가락이 움직인 만큼 잔 델타를 보내므로 panScreen(-deltaX, deltaY)로 넘긴다 (문서 스크롤 방향 — 손가락 반대로 화면이 간다).
  • 핀치(ctrl+휠)는 기기와 무관하게 확대 유지.

자체검증(공용 브라우저 신뢰 입력, 440_pan_zoom.png):

입력 결과
마우스 휠 한 칸(deltaY 120) 228% → 255%(≈12%) → 되돌리면 228%
트랙패드 세로(deltaY 16 ×4) 확대율 불변, 화면 픽셀 이동 = 팬
트랙패드 가로(deltaX 24 ×4) 확대율 불변, 화면 픽셀 이동 = 팬
핀치(ctrl, deltaY 10 ×5) 228% → 211%, devicePixelRatio 1.25 불변

보류 — 사용자 승인 후 진행할 후속 제안:

  • 핀치 방향 — 지금은 손가락을 벌리면 축소된다(일반 휠의 반전 규칙, 2026-08-02 결정을 그대로 탄다). OS 관행은 벌리면 확대. 휠 규칙과 얽혀 있어 사용자 확정 필요.
  • 트랙패드 팬 방향 — 지금은 문서 스크롤 방향(손가락 내리면 화면이 위로). 손가락을 따라오는 "쥐고 끌기" 방향을 원하면 부호 한 줄.
  • setScreenScale의 매 호출 console.log — 확대할 때마다 콘솔에 한 줄씩, 핀치 중에는 초당 수십 줄. 제거 여부 확인 필요.