From 2fe8f617da9208611dc2ad8b2a1084c2c3816cdd Mon Sep 17 00:00:00 2001 From: umsangdon Date: Tue, 25 Aug 2026 12:55:00 +0900 Subject: [PATCH] =?UTF-8?q?fix(B06):=20BOX=EC=95=94=EA=B1=B0=20=EC=84=B1?= =?UTF-8?q?=ED=86=A0=EC=84=A0=EC=9D=84=20=EB=B0=95=EC=8A=A4=20=EC=B5=9C?= =?UTF-8?q?=EC=83=81=EB=8B=A8=20=EB=AA=A8=EC=84=9C=EB=A6=AC=EC=97=90?= =?UTF-8?q?=EC=84=9C=20=EB=81=9D=EB=83=84?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit 모서리 밖은 구체 개구부·날개벽이라 성토가 아니다(2026-08-25 사용자). 원지반까지 잇던 구간을 지운다 — 성토선은 노견 → (수평 연장) → 박스 최상단까지만이다. 검증(10+0.9): 좌 [(2, 535.821) → (2.744, 535.201)], 우 [(−2, 535.701) → 수평 → (−2.744, 535.201)] — 두 선 모두 상단 표고에서 종료. Co-Authored-By: Claude Opus 5 (1M context) --- B06_Section/B06_Section_UI_Cross_Box_Geom.ts | 19 +++++-------------- 1 file changed, 5 insertions(+), 14 deletions(-) diff --git a/B06_Section/B06_Section_UI_Cross_Box_Geom.ts b/B06_Section/B06_Section_UI_Cross_Box_Geom.ts index 610138cb..9f47aeae 100644 --- a/B06_Section/B06_Section_UI_Cross_Box_Geom.ts +++ b/B06_Section/B06_Section_UI_Cross_Box_Geom.ts @@ -8,7 +8,7 @@ * · 상판 윗면 = **노면 − 복토 0.5m**(별표2 교차 참조), 구체는 수평 설치(교본 3장). * · 저판은 **날개벽 투영**(길이×cos각)만큼 계류 상·하류로 길어진다 — 세월교와 같은 산식. * · 내공(유로)은 비워 둔다 — 관 위 성토 채움처럼 면을 칠하지 않는다. - * · **성토선은 박스 최상단 모서리를 지난다**(2026-08-25 사용자). 물매 1:1.2 고정이라 + * · **성토선은 박스 최상단 모서리에서 끝난다**(2026-08-25 사용자). 물매 1:1.2 고정이라 * 박스가 노견 밖으로 나간 만큼 노견을 수평 연장하고 거기서 사면을 시작한다 — * 기슭막이 "벽이 밖으로 나간 만큼 노폭 연장" 규칙과 같다. 그래서 박스 길이를 * 늘리면 노견부가 저절로 길어지고 사면 각도는 그대로다. @@ -36,8 +36,8 @@ export interface BoxLayout { /** 구체 바닥과 계류 하상(원지반 최저)의 고저차(m). +면 구체가 하상 위로 떠 있다. */ bedGapM: number; /** - * 양측 성토선 — 노견 → (박스가 나간 만큼 수평 연장) → 박스 최상단 모서리 → - * 1:1.2로 원지반까지. 물매는 고정이고 길이만 지형이 정한다. + * 양측 성토선 — 노견 → (박스가 나간 만큼 수평 연장) → 박스 최상단 모서리에서 끝. + * 물매 1:1.2 고정이며, 모서리 밖은 구체 개구부라 선을 잇지 않는다. */ fillLines: OffsetPoint[][]; label: { at: OffsetPoint; text: string }; @@ -128,18 +128,9 @@ export function computeBoxLayout( const points: OffsetPoint[] = [{ offset: edgeOffset, elevation: roadZ }]; // 박스가 더 길면 노견을 수평으로 늘린다(각도 불변 — 2026-08-25 사용자). if ((start - edgeOffset) * outward > 0.01) points.push({ offset: start, elevation: roadZ }); + // 모서리에서 끝난다 — 그 밖은 구체 개구부·날개벽이라 성토가 아니다 + // (2026-08-25 사용자: 박스와 만난 뒤의 성토선은 필요 없다). points.push(corner); - // 모서리 밖은 같은 물매로 원지반과 만날 때까지. - let toe = corner; - for (let drop = 0.05; drop <= 30; drop += 0.05) { - const probe: OffsetPoint = { - offset: corner.offset + outward * drop * FILL_SLOPE_RATIO_MIN, - elevation: corner.elevation - drop, - }; - toe = probe; - if (probe.elevation <= groundAt(probe.offset)) break; - } - points.push(toe); return points; };