From ec514a4560bb7f6ff6b988f29ebe05f5c8da6aef Mon Sep 17 00:00:00 2001 From: umsangdon Date: Sun, 23 Aug 2026 17:53:52 +0900 Subject: [PATCH] =?UTF-8?q?fix(B06):=20=ED=9A=A1=EB=8B=A8=20Y=EC=B6=95=20?= =?UTF-8?q?=EB=88=88=EA=B8=88=EC=9D=B4=20X=EC=B6=95=20=EC=95=84=EB=9E=98?= =?UTF-8?q?=EB=A1=9C=20=EC=82=90=EC=A0=B8=EB=82=98=EC=98=A4=EB=8D=98=20?= =?UTF-8?q?=EB=AC=B8=EC=A0=9C?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit 눈금 범위를 elevationMid 중심(±displaySpan/2)으로 잡아, displayMax에 들어간 면적표 여유(AREA_OVERLAY_HEADROOM_PX/2)만큼 아래로 밀려 최하단 격자선·라벨이 X축 라벨 줄 아래에 그려졌다. 범위를 실제 표시 상·하단(displayMax 기준)에서 역산해 플롯 안에만 눈금이 오게 한다. Co-Authored-By: Claude Opus 5 (1M context) --- B06_Section/B06_Section_UI_Cross_View.ts | 7 +++++-- 1 file changed, 5 insertions(+), 2 deletions(-) diff --git a/B06_Section/B06_Section_UI_Cross_View.ts b/B06_Section/B06_Section_UI_Cross_View.ts index a3a3ec08..84b15c98 100644 --- a/B06_Section/B06_Section_UI_Cross_View.ts +++ b/B06_Section/B06_Section_UI_Cross_View.ts @@ -321,9 +321,12 @@ export function createCrossSectionCard( // Y축 눈금: 표고 범위를 10칸 안팎으로 나누되 눈금값이 1·2·5 계열로 딱 떨어지게 한다 // (종단면도와 같은 규칙). 5등분 고정은 눈금값이 소수로 흘러 표고를 못 읽었다 // (2026-08-23 사용자 지시). 라벨 겹침 방지로 눈금 간격은 14px 이상 띄운다. + // 눈금 범위는 **실제로 보이는 플롯 상·하단**(y() 기준)에서 뽑는다 — elevationMid를 + // 중심으로 잡으면 displayMax의 면적표 여유(headroom)만큼 아래로 밀려 X축 라벨 줄 + // 아래에 격자선이 삐져나왔다(2026-08-23 사용자 보고). const rawDisplaySpan = displaySpan / exaggeration; - const rawBottom = elevationMid - rawDisplaySpan / 2; - const rawTop = elevationMid + rawDisplaySpan / 2; + const rawTop = elevationMid + (displayMax - elevationMid) / exaggeration; + const rawBottom = rawTop - rawDisplaySpan; const plotHeightPx = heightPx - CROSS_PAD.top - CROSS_PAD.bottom; const tickStep = niceTickStep(rawDisplaySpan, 10, Math.floor(plotHeightPx / 14)); const tickDecimals = Math.max(0, Math.ceil(-Math.log10(tickStep) - 1e-9));