feat(B05): 세월교 접근선 구간을 3D 패치 리본에 포함

노견 → 벽 상단 접근선 구간이 패치에서 빠져 있어 좁은 좌측 패치 사이로 원지반이 드러나
보였다(2026-09-03 사용자 확정: 「패치로 덮기」). 접근선은 벽보다 위라 덮어도 관 구멍·L자
통로를 막지 않는다 — 벽 전면·유로는 종전대로 리본에 담지 않는다(2026-08-25 사용자 ②).

접근선 줄을 `patchPoints` 앞에 담고 `fillRuns` 에 한 장으로 실어 「구간 1줄 = 리본 1장」
규칙을 그대로 따른다.

검증 — typecheck·prettier 통과. 3D 육안 확인은 카메라 조작이 필요해 다음 화면 검증
묶음에서 함께 수행.

Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
This commit is contained in:
2026-09-03 13:29:29 +09:00
co-authored by Claude Opus 5
parent e83171b2b3
commit 2aaa0c594d
@@ -176,12 +176,18 @@ export function fordSilhouettes(section: CrossSection): StructureSilhouette[] {
points.push({ offset_m: side.top.offset, elevation_m: side.top.elevation }); points.push({ offset_m: side.top.offset, elevation_m: side.top.elevation });
} }
points.push({ offset_m: wall.points[2].offset, elevation_m: wall.points[2].elevation }); points.push({ offset_m: wall.points[2].offset, elevation_m: wall.points[2].elevation });
// 패치 리본(잘린 자리 다시 그리기)은 **성토부선** 담는다 — 벽 전면·유로 // 패치 리본(잘린 자리 다시 그리기)은 **성토부선과 접근선까지** 담는다 — 벽 전면·유로
// 리본으로 덮으면 관 구멍과 L자 통로가 막힌다(2026-08-25 사용자 ②). 벽·바닥은 // 여전히 담지 않는다(리본으로 덮으면 관 구멍과 L자 통로가 막힌다, 2026-08-25 사용자 ②).
// 구조물 솔리드가 그린다. // 접근선(노견 → 벽 상단)은 벽보다 위라 덮어도 구멍을 막지 않는데, 이 구간을 비워 두니
// 좁은 좌측 패치 사이로 원지반이 드러나 보였다(2026-09-03 사용자 확정: 「패치로 덮기」).
const patchPoints: OffsetPoint[] = []; const patchPoints: OffsetPoint[] = [];
// 성토 구간은 **구간별로도** 담는다 — 패치 리본이 한 장씩 낸다(2026-08-27 사용자). // 성토 구간은 **구간별로도** 담는다 — 패치 리본이 한 장씩 낸다(2026-08-27 사용자).
const fillRuns: OffsetPoint[][] = []; const fillRuns: OffsetPoint[][] = [];
const approachRun = points.slice();
if (approachRun.length >= 2) {
patchPoints.push(...approachRun);
fillRuns.push(approachRun);
}
// 유출측 다단과 달리 세월교는 단 나눔이 없다 — 접지 후 절토선(kind="cut")은 뺀다. // 유출측 다단과 달리 세월교는 단 나눔이 없다 — 접지 후 절토선(kind="cut")은 뺀다.
const fill = side.fillSegments.filter((segment) => segment.kind !== "cut"); const fill = side.fillSegments.filter((segment) => segment.kind !== "cut");
let kind: "cut" | "fill" = "fill"; let kind: "cut" | "fill" = "fill";