feat(rebar): P3 and P6 end at the coping middle level; e_top computed from it

The coping middle level is (Level underside + step top)/2. P3's top and P6's upper limit are this level, and e_top is the
step top minus it (P1: 1322, replacing the 1623 reverse-engineered value). On P1 P3 goes from 38 to 39 ties and P6 stays at
8 levels. With taper h2 = 3000 the middle level is 13275: P3 37 ties, P6 8 levels (32 bars), e_top 2072.

Co-Authored-By: Claude Haiku 5.5 <noreply@anthropic.com>
This commit is contained in:
ypshimandClaude Haiku 5.5 committed 2026-10-23 13:30:28 +09:00
1 parent f989315e02
commit 4d5e3cc04e
4 files changed
+24 -9

No files matched your search

+7 -3
View File
@@ -52,7 +52,9 @@ export function columnInputFor(model: PierModel, base: ColumnInput = COLUMN_P1):
// P1 top = C3 − 100 (계산 2026-10-23), so e_P1 = step top − (C3 − 0.1) = 485 on P1.
const c3 = model.copingRefTop - 0.127 - 2 * 0.0572;
const eP1 = Math.round((seg.top - (c3 - 0.1)) * 1000);
return { ...base, Hc, hcop, eP1 };
// e_top: the coping middle level (Level 하면 + 계단 상면)/2 is the top of P3 and P6 (승인 2026-10-23).
const eTop = Math.round((seg.top - (model.levelBottom + seg.top) / 2) * 1000);
return { ...base, Hc, hcop, eP1, eTop };
}
export const COLUMN_P1: ColumnInput = {
@@ -61,7 +63,8 @@ export const COLUMN_P1: ColumnInput = {
hcop: 2644,
c: 125,
eP1: 485,
eTop: 1623,
// Coping middle level: (Level 하면 + 계단 상면)/2 on P1 = 42.233 → e_top 1322 (승인 2026-10-23, Q-C3 대체).
eTop: 1322,
Hf: 2000,
nDiv: 46,
ctcCoupler: 3000,
@@ -154,7 +157,8 @@ export function columnRebar(x: ColumnInput = COLUMN_P1, m: Material = DEFAULT_MA
// P6 crossties (기둥철근.md §7): 4 bars per 단, from the first kept P4
const z4first = p4.length ? p4[0] : z5last;
const p6Levels: number[] = [];
for (let z = z4first; z <= x.Hc; z += x.ctcP6) p6Levels.push(z);
// P6 runs up to the same top as P3, the coping middle level (승인 2026-10-23).
for (let z = z4first; z <= zTopT; z += x.ctcP6) p6Levels.push(z);
const p6Straight = 2 * tieRadius;
const p6Hook = hookLength('tie90', dH16);
const p6Length = p6Straight + 2 * Math.round(p6Hook); // 135 mm per hook, as in the document