feat(rebar,view): coping end height h1, taper h2 and Level width as inputs on ② (1단계)

The three values are inputs on the coping card, with the P1 values (1000 · 1500 · 2100) when absent, and they are tracked
like the other shape inputs. The geometry and the coping rebar read them from one CopingGeom: the U heights follow the
closed form (h1 − 2c) + h2·min(x_s, x_L0)/x_L0, which reproduces the P1 values. The side rows are assumed to keep their
position relative to the Level underside (명세 확인 필요). P1 results are unchanged; the full suite passes.

Co-Authored-By: Claude Haiku 5.5 <noreply@anthropic.com>
This commit is contained in:
ypshimandClaude Haiku 5.5 committed 2026-10-23 11:44:44 +09:00
1 parent 5b5db60657
commit 0a5edfb152
9 files changed
+169 -45

No files matched your search

+24
View File
@@ -0,0 +1,24 @@
/**
* Coping heights and Level width (mm) that the coping geometry and the coping rebar depend on (1단계, 승인 2026-10-23).
* Dependency-free so that both the model and the rebar modules can import it.
*/
export interface CopingGeom {
/** 끝단 높이 h1 (mm). */
h1: number;
/** 테이퍼 높이 h2 (mm). */
h2: number;
/** Level 폭 W_L (mm). */
levelWidth: number;
}
/** P1 values: 끝단 높이 1000, 테이퍼 높이 1500, Level 폭 2100. Used when the input does not give them. */
export const P1_COPING_GEOM: CopingGeom = { h1: 1000, h2: 1500, levelWidth: 2100 };
/**
* Side-row levels (EL m) of C12 / C13 from the Level underside: the lowest row and the row where the sloped underside breaks.
* P1: 40.911 + 0.377 = 41.288 and 40.911 + 1.627 = 42.538. ASSUMPTION: the side rows keep this position relative to the
* Level underside when h1 or h2 changes (명세 확인 필요).
*/
export function sideRowLevels(levelBottom: number): { zBottom: number; zBreak: number } {
return { zBottom: levelBottom + 0.377, zBreak: levelBottom + 1.627 };
}