/* ============================================================================= * B05_Profile/logic/B05_Profile_UI_Profile_Alignment_Edit.ts * 종단 계획선 편집 도구 — 곡선 R 입력. `B05_Profile_UI_Profile_Alignment.ts` * 에서 나눔(700줄 · 511-B B-3) · 선형 짓기(`buildAlignment`)는 그 파일. * ========================================================================== */ import { chainageKey, type AlignmentCurve, type AlignmentEdits, } from "./B05_Profile_UI_Profile_Alignment"; /** * 곡선 행의 R 입력을 저장한다. R이 1차 값이므로 그대로 담고, 곡선길이는 * L = R × |대수차| 로 매 렌더마다 다시 계산된다(계획고를 편집해도 R은 유지된다). * 빈 값이면 키를 지워 정책 기본 반경으로 돌아간다. */ export function setCurveRadius( edits: AlignmentEdits, curve: AlignmentCurve, radiusM: number, ): AlignmentEdits { const key = chainageKey(curve.chainage_m); const curveRadii = { ...edits.curve_radii }; if (!Number.isFinite(radiusM) || radiusM <= 0) delete curveRadii[key]; else curveRadii[key] = Number(radiusM.toFixed(6)); return { ...edits, curve_radii: curveRadii }; }