From ee49754b466511bd374b12281ace1a8f8b2d57bc Mon Sep 17 00:00:00 2001 From: umsangdon Date: Thu, 29 Oct 2026 13:31:03 +0900 Subject: [PATCH] =?UTF-8?q?fix(=ED=8F=89=EB=A9=B4):=20=EB=B2=BD=20?= =?UTF-8?q?=EC=B8=A1=EC=A0=90=20=EB=B9=84=ED=83=88=20=EB=81=9D=20=EC=9C=A4?= =?UTF-8?q?=EA=B3=BD=EC=97=90=20=EB=B2=BD=20=EC=9C=97=EB=A9=B4=20=C2=B7=20?= =?UTF-8?q?=EC=95=9E=EB=A9=B4=20=EA=B7=B8=EB=8C=80=EB=A1=9C=20=E2=80=94=20?= =?UTF-8?q?3D=20=EB=B2=BD=20=EB=8F=84=ED=98=95=20=EB=95=85=20=EB=A7=8C?= =?UTF-8?q?=EB=82=A8=EA=B3=BC=200=20=EC=B0=A8=20(PLAN=20578-2)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit - 성토 위 이음 → 전면 발끝 대각선 대신 벽 도형 앞 위 → 앞 밑(buildRevetWallGeometry 차례) · 이음 안쪽 0.1 m 만큼 갈리던 것 Co-Authored-By: Claude Opus 5.5 --- B06_Section/logic/B06_Section_Structure_Layouts.ts | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/B06_Section/logic/B06_Section_Structure_Layouts.ts b/B06_Section/logic/B06_Section_Structure_Layouts.ts index 21d073dfa..7677b3505 100644 --- a/B06_Section/logic/B06_Section_Structure_Layouts.ts +++ b/B06_Section/logic/B06_Section_Structure_Layouts.ts @@ -196,7 +196,7 @@ function fordPipeLengthM(ford: FordLayout): number | null { } /** 벽(옹벽 · 흙막이 · 돌쌓기)이 선 쪽 — 구조물 처리 뒤 횡단이 땅과 만나는 오프셋(578-2). - * 윤곽 = 트림 사면(노견 → 벽 이음) → 단마다 벽 앞(성토 위 이음 → 전면 발끝) · 사이 성토부선(3D 실루엣 차례). + * 윤곽 = 트림 사면(노견 → 벽 이음) → 단마다 벽 윗면 · 앞면(→ 전면 발끝) · 사이 성토부선(3D 실루엣 차례). * 위에서 내려와 처음 땅에 닿는 자리 · 끝까지 안 닿으면(뜬 벽) 마지막 발끝 · 노견부터 땅 밑이면 null. */ function wallSlopeEnd(section: CrossSection, own: RevetmentLayout): number | null { const groundAt = groundInterpolator(section.samples); @@ -204,7 +204,8 @@ function wallSlopeEnd(section: CrossSection, own: RevetmentLayout): number | nul const chain = [...((own.side === "left" ? trim.maxSlope : trim.minSlope)?.points ?? [])]; const segments = own.fillSegments.filter((segment) => segment.kind !== "cut"); own.walls.forEach((wall, index) => { - chain.push(wall.fillTop, wall.bottomFront, ...(segments[index]?.points ?? [])); + // 벽 도형 = [뒤 밑, 뒤 위, 앞 위, 앞 밑](`buildRevetWallGeometry`) — 앞면이 그려지는 모양 그대로 + chain.push(wall.fillTop, ...wall.points.slice(2), ...(segments[index]?.points ?? [])); }); if (!groundAt || chain.length < 2) return null; let [prev, above] = [chain[0], chain[0].elevation - groundAt(chain[0].offset)];