auto: 2026-08-23 19:34 (ESD_LAPTOP)

This commit is contained in:
2026-08-23 19:34:26 +09:00
parent eb41202bf4
commit 7217747e81
4 changed files with 18 additions and 3 deletions
+1 -1
View File
@@ -73,7 +73,7 @@ function fnv1a(text: string): string {
* (2026-08-23 사용자 보고: "원복이 안 된 것 같다가 갑자기 반영됨"). 판번호를 해시에
* 섞어 두면 배포와 동시에 저장본이 만료된다.
*/
const BUILD_VERSION = 5; // 절성토 완전 분리(행 지반 트림) — 저장본 만료.
const BUILD_VERSION = 7; // 측구 지형 스냅 오염 저장본 만료(뷰어 in-place 변형 수정).
/** 종횡단 정본에서 코리도에 영향을 주는 입력만 요약해 해시 — 갱신 감지 기준. */
export function corridorHash(detail: SectionDetailResponse, routePoints: RoutePoint[]): string {
@@ -244,6 +244,16 @@ export function classifyStation(section: CrossSection): StationPieces | null {
put("ditch", "right", roadR - ditchWidth, roadR);
slopeStartR = roadR - ditchWidth;
}
// 측구 바깥(노견 반대측) 상단은 **노견과 같은 Z**로 맞춘다 — 설계선 표본이
// 모서리를 비껴가거나 L형처럼 바닥에서 끝나면 그 자리가 노견보다 낮게(또는
// 지반을 따라) 그려진다(2026-08-23 사용자 지시).
const ditchKey = pieceKey("ditch", ditchSide);
const ditchPiece = pieces.get(ditchKey);
if (ditchPiece && ditchPiece.length >= 2) {
const edgeZ = design.road_edges[ditchSide].elevation_m;
const outer = ditchSide === "left" ? ditchPiece[ditchPiece.length - 1] : ditchPiece[0];
outer.elevation_m = edgeZ;
}
}
// 비탈 끝 = catch point(설계선-지반 교차) — 그 밖은 설계선이 지반을 따라갈 뿐
// 절·성토 점유가 아니므로 코리도·클리핑에서 제외한다(2026-08-23 화면 검증 수정).
+3 -1
View File
@@ -532,7 +532,9 @@ export function createRouteViewer(): RouteViewer {
const oy = (bounds.y[0] + bounds.y[1]) / 2;
const oz = (bounds.z[0] + bounds.z[1]) / 2;
build.ribbons.forEach((ribbon) => {
if (ribbon.kind !== "cut" && ribbon.kind !== "fill" && ribbon.kind !== "ditch") return;
// 측구는 제외 — 바깥 상단은 노견과 같은 Z가 규칙(2026-08-23 사용자 지시).
// 지형 스냅하면 측구 바깥벽이 원지반까지 끌려 올라가 U형이 깨진다.
if (ribbon.kind !== "cut" && ribbon.kind !== "fill") return;
const cols = ribbon.colCount;
const outerCol = ribbon.side === "right" ? 0 : cols - 1;
const innerCol = ribbon.side === "right" ? cols - 1 : 0;
+4 -1
View File
@@ -206,12 +206,15 @@ class _SectionGeometry:
edge_z = self.road_z(edge_offset)
if self.has_ditch:
if ditch_type == "l_type":
# L형: 노면 끝에서 폭 W 동안 깊이 D로 내려가는 경사 바닥 한 조각.
# L형: 노면 끝에서 폭 W 동안 깊이 D로 내려가는 경사 바닥 + 바깥 수직벽.
# 바깥(노견 반대측) 상단은 **노견과 같은 표고**로 닫는다 — 사면 시작점이
# 측구 바닥 높이로 내려가면 안 된다(2026-08-23 사용자 지시).
width = group["l_ditch_width_m"]
depth = group["l_ditch_depth_m"]
self.ditch_points = [
(edge_offset, edge_z),
(edge_offset + outward * width, edge_z - depth),
(edge_offset + outward * width, edge_z),
]
else:
# 일반: 상단폭/저폭/깊이 사다리꼴.