fix(B06): I형 집수정 배관 끝단이 마감면에 접혀 삼각형이 되던 결함 수정

관 끝단 두 꼭짓점을 마감면(I형 벽 안쪽 변) 선분 안으로 자를 때, 원지반이 벽 상단
위라 관 시작점이 벽 상단에 붙으면 위·아래 교점이 같은 끝점으로 접혀 관 단면이
삼각형으로 그려짐. 비스듬히 자른 끝단 길이는 항상 관경 이상이므로, 그보다 짧으면
접힌 것으로 보고 축 직각 마감으로 되돌림.

검증 — 공용 브라우저 B06 단면 8개 실측: 유입측 끝단 길이 0.0px → 18.7~58.4px.

Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
This commit is contained in:
2026-09-03 07:19:32 +09:00
co-authored by Claude Opus 5
parent e065e5701e
commit 8daadf2d4f
@@ -561,7 +561,17 @@ export function pipeAxisSolver(
Math.hypot(top.offset - fallback.top.offset, top.elevation - fallback.top.elevation) > Math.hypot(top.offset - fallback.top.offset, top.elevation - fallback.top.elevation) >
STRAY_LIMIT_M; STRAY_LIMIT_M;
if (strayed) return fallback; if (strayed) return fallback;
return { bottom: clampToFace(bottom, face), top: clampToFace(top, face) }; const cutBottom = clampToFace(bottom, face);
const cutTop = clampToFace(top, face);
// 마감면을 비스듬히 자르면 끝단 길이는 관경 이상이다. 그보다 짧으면 선분 밖으로
// 나간 교점이 한 끝점으로 접힌 것 — I형 벽이 원지반에 묻혀 관 시작점이 벽 상단에
// 붙으면 두 꼭짓점이 한 점이 되어 관이 삼각형으로 그려진다. 그럴 땐 축 직각 마감으로.
const cutSpan = Math.hypot(
cutTop.offset - cutBottom.offset,
cutTop.elevation - cutBottom.elevation,
);
if (cutSpan < diameter - 1e-6) return fallback;
return { bottom: cutBottom, top: cutTop };
}; };
solver.derive(); solver.derive();
return solver; return solver;