From 86d1d6ac135addce2f6e22da9e249cac6199a6d1 Mon Sep 17 00:00:00 2001 From: umsangdon Date: Thu, 27 Aug 2026 12:07:53 +0900 Subject: [PATCH] =?UTF-8?q?fix(B05):=20=EB=82=A0=EA=B0=9C=EB=B2=BD?= =?UTF-8?q?=EC=9D=B4=20=EC=9E=88=EB=8A=94=20=EC=B8=A1=EC=9D=80=20=EC=8A=A4?= =?UTF-8?q?=ED=8A=B8=EB=A6=BD=20=EB=81=9D=20=ED=9A=A1=EB=8B=A8=EC=84=A0=20?= =?UTF-8?q?=EB=B2=BD=EC=9D=84=20=EB=B9=BC=20=EC=A4=91=EB=B3=B5=EC=9D=84=20?= =?UTF-8?q?=EC=97=86=EC=95=A4=EB=8B=A4?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit 날개 사다리꼴 벽면이 이미 그 자리를 막는데 스트립 끝 횡단선 벽이 같은 자리에 한 장 더 서 있었다(2026-08-27 사용자). 날개벽을 낸 측은 끝 횡단선을 안 낸다. 날개가 없는 세트(파형강관 84.3·275.71)는 종전대로 끝 횡단선이 유일한 측벽이다. - Plan: 세트마다 `wingWallSides`를 모아, 그 측은 `cut-wall`에 끝 횡단선을 안 담는다. - BUILD_VERSION 58 → 59. 검증(실빌드 데이터): - 벽 판 20 → **16장**(삼각형 40 → 32), 좌·우 동일. - 세트별 벽 자리: 149.73·200.92는 날개 6마디만, 84.3·275.71은 끝 횡단선 2마디. - 끝선(노견·성토 끝단) 위 판 0 유지, 벽 최대 높이 3.18m 불변. - ISO 근접 캡처에서 구멍 없음 — 겹쳐 있던 판만 사라졌다. - npm run typecheck 통과, prettier 적용. Co-Authored-By: Claude Opus 5 (1M context) --- B05_Profile/B05_Profile_UI_Corridor.ts | 2 +- B05_Profile/B05_Profile_UI_Corridor_Plan.ts | 6 +++++- 2 files changed, 6 insertions(+), 2 deletions(-) diff --git a/B05_Profile/B05_Profile_UI_Corridor.ts b/B05_Profile/B05_Profile_UI_Corridor.ts index 18a98a20..c33a07f6 100644 --- a/B05_Profile/B05_Profile_UI_Corridor.ts +++ b/B05_Profile/B05_Profile_UI_Corridor.ts @@ -108,7 +108,7 @@ function fnv1a(text: string): string { // 복원되어 화면·데이터가 하나도 안 바뀌었다. 기하를 고치면 **반드시** 올릴 것. // 56 = 측벽에서 **노견 쪽·성토 끝단 쪽 리본 경계 벽을 뺀다** — 거기서 잘린 게 // 아니라 리본이 끝난 자리다(2026-08-27 사용자). -const BUILD_VERSION = 58; +const BUILD_VERSION = 59; /** 종횡단 정본에서 코리도에 영향을 주는 입력만 요약해 해시 — 갱신 감지 기준. */ export function corridorHash(detail: SectionDetailResponse, routePoints: RoutePoint[]): string { diff --git a/B05_Profile/B05_Profile_UI_Corridor_Plan.ts b/B05_Profile/B05_Profile_UI_Corridor_Plan.ts index 6ddd47d9..7aa2cfa8 100644 --- a/B05_Profile/B05_Profile_UI_Corridor_Plan.ts +++ b/B05_Profile/B05_Profile_UI_Corridor_Plan.ts @@ -387,6 +387,8 @@ export function buildPlanCurves( leftX: section.frame.left_xy[0], leftY: section.frame.left_xy[1], }; + /** 날개벽 벽면을 낸 측 — 그 측 스트립 끝 횡단선은 겹치므로 안 낸다(2026-08-27 사용자). */ + const wingWallSides = new Set(); (["left", "right"] as const).forEach((side) => { push("structure", side, structureFootprintLoops(set, side, roadEdgeOf(side), planZ, axis)); // 날개벽만 — 성토 끝선까지 이어진 사다리꼴(2026-08-26 사용자). 성토 끝선은 @@ -397,6 +399,7 @@ export function buildPlanCurves( push("wing-box", side, wing.loops); // 날개 사다리꼴의 벽 자리 — 성토 끝선 변은 빠져 있다(2026-08-27 사용자). push("cut-wall", side, wing.walls); + if (wing.walls.length) wingWallSides.add(side); }); for (const silhouette of structureSilhouettes(section)) { @@ -510,7 +513,8 @@ export function buildPlanCurves( const spans = projected.filter( (pair): pair is [[number, number, number], [number, number, number]] => pair !== null, ); - if (spans.length >= 2) { + // 날개벽이 있는 측은 그 벽면이 같은 자리를 이미 막는다 — 끝 횡단선은 중복이다. + if (spans.length >= 2 && !wingWallSides.has(side)) { push("cut-wall", side, [ [spans[0][0], spans[0][1]], [spans[spans.length - 1][0], spans[spans.length - 1][1]],