fix(B06): BOX암거 성토선을 박스 최상단 모서리에서 끝냄

모서리 밖은 구체 개구부·날개벽이라 성토가 아니다(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) <noreply@anthropic.com>
This commit is contained in:
2026-08-25 12:55:00 +09:00
co-authored by Claude Opus 5
parent 55e97b8925
commit 2fe8f617da
+5 -14
View File
@@ -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;
};