eomsangdon and Claude Opus 5
8dca4bbfb3
perf(B05): 종단 세로 맞춤을 다시 그리기에서 변환으로 — 스크롤 중 실시간
...
사용자 지시(2026-09-04) — 「화면을 리프레시하는 느낌. 가장 강한 지연은 멈춘 뒤 끊김.
실시간처럼 되려면 근본적으로 표현을 바꿔야 하지 않나」. 확정: 변환 방식.
원인 — 세로 위치가 선 하나하나의 좌표에 박혀 있어, 세로 창이 바뀌면 그래프를 통째로
다시 만들 수밖에 없었음(SVG 요소 457개, 실측 34ms = 60Hz 두 프레임 누락).
- 세로에 딸린 도형(눈금선·절성토 음영·지반선·계획선)을 `b06-chart__ywindow` 한 겹으로
묶고, 세로 창을 `translate`+`scale` 한 줄로 표현. 두 창의 대응이 1차식이라 정확히 겹침.
- 자를 영역(clip)은 변환 밖, 글자는 변환 밖에서 자리만 옮김(늘어남 방지).
글자 내림 4px 은 변환 뒤에 더함 — 배율과 함께 커지면 선에서 떨어짐(실측 6.4px).
- 선 굵기·점선 간격은 `vector-effect: non-scaling-stroke`(변환이 걸렸을 때만 적용해
B06 은 예전 그대로).
- 눈금 간격이 어긋나면(배율 0.8~1.25 밖) **눈금층만** 다시 만듦(요소 20개 안팎).
눈금은 그릴 때의 좌표계에 놓아 같은 변환이 그대로 먹음.
- 눈금 계산을 `yWindowTickValues` 로 빼 그리는 쪽과 갱신 쪽이 같은 눈금을 씀.
- 패널은 스크롤마다 변환 갱신만 부름. 전체 재구성은 눈금으로도 못 살릴 때만 남김.
자체검증(공용 브라우저 임시 탭, 휠 20칸 4,800px):
① 전체 재구성 **0회**(고침 전 다회) ② 최대 프레임 **59.9 → 20.0ms**, 20ms 초과 0건
③ 눈금 글자와 눈금선 간격 6.4 → **0.5px** ④ 지반선의 한 점을 변환으로 놓은 자리와
눈금이 말하는 자리가 **0.000px** 일치(배율 2.715 상태) ⑤ B06 종단은 변환 겹 3개 모두
변환 없음(항등) — 화면 불변 ⑥ 전체 시험 381 통과·17 건너뜀.
Co-Authored-By: Claude Opus 5 <noreply@anthropic.com >
2026-09-04 21:56:25 +09:00
..
2026-09-02 18:03:18 +09:00
2026-08-29 11:15:29 +09:00
2026-09-04 21:22:27 +09:00
2026-09-04 21:22:27 +09:00
2026-08-08 10:03:11 +09:00
2026-08-08 10:03:11 +09:00
2026-09-02 19:30:16 +09:00
2026-09-03 19:02:03 +09:00
2026-08-08 10:03:11 +09:00
2026-09-02 19:30:16 +09:00
2026-09-02 16:15:25 +09:00
2026-09-02 16:15:25 +09:00
2026-08-28 08:38:58 +09:00
2026-09-04 18:26:17 +09:00
2026-08-08 10:03:11 +09:00
2026-08-30 19:38:24 +09:00
2026-08-08 10:03:11 +09:00
2026-08-08 10:03:11 +09:00
2026-08-30 12:54:29 +09:00
2026-09-04 21:22:27 +09:00
2026-09-04 21:22:27 +09:00
2026-09-02 16:20:17 +09:00
2026-09-02 19:30:16 +09:00
2026-08-28 19:09:28 +09:00
2026-09-01 20:18:33 +09:00
2026-08-24 19:56:40 +09:00
2026-09-01 20:18:33 +09:00
2026-08-28 12:54:45 +09:00
2026-09-02 16:52:38 +09:00
2026-09-02 16:52:38 +09:00
2026-09-02 10:50:10 +09:00
2026-09-02 11:27:25 +09:00
2026-08-27 22:32:01 +09:00
2026-09-02 12:06:54 +09:00
2026-09-04 21:22:27 +09:00
2026-08-25 20:03:42 +09:00
2026-09-04 15:04:38 +09:00
2026-08-27 22:13:26 +09:00
2026-08-27 22:13:26 +09:00
2026-08-27 18:42:15 +09:00
2026-08-27 18:42:15 +09:00
2026-08-23 13:58:00 +09:00
2026-09-03 13:29:29 +09:00
2026-08-28 12:54:45 +09:00
2026-09-04 15:32:10 +09:00
2026-09-02 16:52:38 +09:00
2026-08-29 12:01:22 +09:00
2026-09-04 15:32:10 +09:00
2026-09-04 15:32:10 +09:00
2026-08-23 13:11:49 +09:00
2026-08-26 17:18:47 +09:00
2026-09-04 21:22:27 +09:00
2026-08-19 19:46:03 +09:00
2026-08-30 12:05:22 +09:00
2026-08-30 12:23:38 +09:00
2026-09-04 19:08:11 +09:00
2026-09-02 16:52:38 +09:00
2026-09-04 19:08:11 +09:00
2026-09-04 19:08:11 +09:00
2026-08-19 18:32:55 +09:00
2026-09-04 19:08:11 +09:00
2026-08-17 17:09:05 +09:00
2026-09-04 18:34:05 +09:00
2026-09-04 17:02:07 +09:00
2026-09-04 16:27:35 +09:00
2026-08-29 11:15:29 +09:00
2026-09-04 19:13:46 +09:00
2026-09-04 19:13:46 +09:00
2026-09-02 19:30:16 +09:00
2026-09-04 07:23:34 +09:00
2026-08-17 14:05:32 +09:00
2026-09-04 17:02:07 +09:00
2026-08-17 18:51:21 +09:00
2026-09-04 07:11:41 +09:00
2026-09-04 07:23:34 +09:00
2026-09-04 21:56:25 +09:00
2026-09-02 20:34:18 +09:00
2026-09-04 07:11:41 +09:00
2026-09-04 11:12:05 +09:00
2026-09-04 21:56:25 +09:00
2026-09-03 09:50:14 +09:00
2026-09-04 21:56:25 +09:00
2026-09-03 20:42:23 +09:00
2026-09-03 20:32:46 +09:00
2026-09-02 19:30:16 +09:00
2026-09-04 16:27:35 +09:00
2026-09-04 21:07:55 +09:00
2026-09-04 07:11:41 +09:00
2026-09-04 21:31:16 +09:00
2026-09-04 21:56:25 +09:00
2026-09-04 18:14:59 +09:00
2026-09-04 15:04:38 +09:00
2026-09-04 16:27:35 +09:00
2026-08-18 19:51:08 +09:00
2026-09-03 15:47:16 +09:00
2026-09-04 16:27:35 +09:00
2026-08-19 18:56:06 +09:00
2026-09-04 11:37:46 +09:00
2026-09-04 11:37:46 +09:00
2026-09-04 16:27:35 +09:00
2026-09-04 16:27:35 +09:00
2026-08-28 12:16:38 +09:00
2026-09-04 10:07:17 +09:00
2026-09-04 21:07:55 +09:00
2026-08-30 12:05:22 +09:00
2026-09-04 18:14:59 +09:00
2026-09-04 10:07:17 +09:00
2026-09-04 19:13:46 +09:00
2026-09-04 15:04:38 +09:00
2026-09-04 19:13:46 +09:00
2026-08-19 18:32:55 +09:00
2026-09-04 19:13:46 +09:00
2026-09-04 19:13:46 +09:00
2026-08-17 09:06:19 +09:00