fix(shape): 전·후열 나눔선을 교각 전체에서 하나로 둔다
횡방향 단차 코핑의 전·후열 나눔선을 구간마다 계산해, 꺾인 교각에서 두 구간의 판이 꺾임점에서 옆으로 어긋났다 (산외교 P11: −0.05 / +0.11). 두 열 전체 받침의 평균 n 하나를 쓰고, 어느 받침이든 그 선에서 블럭 반폭(0.6 m)보다 가까우면 지금처럼 구간별 선을 쓴다. Co-Authored-By: Claude Haiku 5.5 <noreply@anthropic.com>
This commit is contained in:
1 parent
9777938aa8
commit
a39a1ba8d2
2 files changed
+43
-3
No files matched your search
@@ -409,12 +409,16 @@ export function buildPier(input: PierInput, ctx: PierContext = {}): PierModel {
|
||||
const meanN = (rows: { n: number }[]) => rows.reduce((sum, r) => sum + r.n, 0) / rows.length;
|
||||
const copingParts: CopingPart[] = [];
|
||||
const stretchCount = kinkG === null ? 1 : 2;
|
||||
// One front/back line for the whole pier (2026-11-10), so the parts of the two stretches meet at the kink without a
|
||||
// sideways jog; per stretch only when some bearing would be closer than half a block to that line.
|
||||
const nAll = (meanN(frontPlaced) + meanN(backPlaced)) / 2;
|
||||
const oneLine = [...frontPlaced, ...backPlaced].every((b) => Math.abs(b.n - nAll) >= halfBlock);
|
||||
for (let k = 0; k < stretchCount; k++) {
|
||||
const fRows = frontPlaced.filter((b) => b.k === k);
|
||||
const bRows = backPlaced.filter((b) => b.k === k);
|
||||
const fRows = oneLine ? frontPlaced : frontPlaced.filter((b) => b.k === k);
|
||||
const bRows = oneLine ? backPlaced : backPlaced.filter((b) => b.k === k);
|
||||
const nStep = fRows.length && bRows.length
|
||||
? (meanN(fRows) + meanN(bRows)) / 2
|
||||
: (meanN(frontPlaced) + meanN(backPlaced)) / 2;
|
||||
: nAll;
|
||||
if (lateralStep) {
|
||||
// The front row may lie on either side of the axis (it depends on the IP1 → IP3 direction), so each part takes the
|
||||
// side of its own row; the order stays [front, back].
|
||||
|
||||
Reference in new issue
Block a user