feat(771-1·771-2): B05 예정노선 수정 — 중간 노드에서 긋기 · 닿은 노드 사이 갈음 · 지움 뒤 긋기 Esc = 지움 전
- 771-2: 한 선 페이지(B05) 중간 노드 누름 = 그 노드에서 긋기 · 같은 선 다른 노드에 닿으면 그 사이 갈음(rejoinSpan · 거꾸로 됨 · 한 줄) · 같은 노드 · 안 닿고 끝냄 = 꼴 그대로 + 안내 · 되돌리기 한 걸음 · D03 는 중간 꺾임점 = 갈래 그대로 - 771-1: 긋기 Esc = 긋기 직전 꼴 · 지움(노드 · 토막 · 구역 · 전체 · 잇단 지움) 바로 뒤 긋기면 지움 전 꼴(D03 같은 부품) - 시험: test_771_2_rejoin_span 새로 · test_626_3 의 lineLimitBlock 줄 문자열 대조를 새 꼴(branches 변수)로 고침 Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
This commit is contained in:
@@ -1,6 +1,7 @@
|
||||
/* =============================================================================
|
||||
* D03_PlanAnalysis_Span.ts
|
||||
* D 예정노선 다시 긋기(PLAN 599-3 · 요구 463-12) — 선 하나의 두 꺾임점 사이를 새로 그은 점들로 바꿈.
|
||||
* 중간 노드에서 긋기(771-2 · 요구 613) = `rejoinSpan` — 닿은 노드가 앞이면 거꾸로 · 같은 노드 = 까닭 글.
|
||||
* 끝 두 점(앞 노드 · 뒤 노드) 그대로 · 속 꺾임점에 갈래가 붙었으면 막음(까닭 글) · 뒤 갈래 차례 밈 ·
|
||||
* 마크(조각 경계) = 바뀐 구간 안은 길이 비율 · 뒤는 길이 차만큼 · 조각 id 그대로(업체 열쇠).
|
||||
* 노드 기록(599-2) — 그리기 칸 값 → 기록 · 옮긴 노드 어긋남(⚠) · 다시 그은 속 노드 = 그때 기록 · 뒤 노드 = 자유.
|
||||
@@ -103,3 +104,26 @@ export function replaceSpan(
|
||||
),
|
||||
};
|
||||
}
|
||||
|
||||
export const REJOIN_SAME =
|
||||
"같은 노드에 닿아 반영하지 않았습니다 — 다른 노드에 닿으면 그 사이가 바뀝니다.";
|
||||
|
||||
/** 중간 노드에서 긋기(771-2) — `start` 노드에서 그은 `through` 가 `end` 노드에 닿음 = 두 노드 사이 갈음.
|
||||
* 거꾸로 닿음(`end` < `start`) = 점 차례를 뒤집어 넣음(속 점 기록 = 선 차례 앞 토막 몫으로 밈) ·
|
||||
* 같은 노드 = 까닭 글 · 그 밖 = `replaceSpan` 과 같음. */
|
||||
export function rejoinSpan(
|
||||
network: PlanNetwork,
|
||||
line: number,
|
||||
start: number,
|
||||
end: number,
|
||||
through: ReadonlyArray<Vertex>,
|
||||
records: ReadonlyArray<NodeRecord | null> = [],
|
||||
): PlanNetwork | string {
|
||||
if (start === end) return REJOIN_SAME;
|
||||
if (start < end) return replaceSpan(network, line, start, end, through, records);
|
||||
const back = [...records].reverse();
|
||||
return replaceSpan(network, line, end, start, [...through].reverse(), [
|
||||
null,
|
||||
...back.slice(0, -1),
|
||||
]);
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user