Files
Pier_v1/src/core/coping-geom.ts
T
ypshimandClaude Haiku 5.5 df6aeb5c46 fix(rebar): side rows on the 250 grid up to the 400 mm top margin, not a fixed count of seven
C12 and C13 come from one grid from the Level underside + 127 at 250 mm, up to top − 400 mm (상면 여유). The fixed count of
seven rows is kept only for callers that give no top. P1 is unchanged (C12 5, C13 2); a taper of 3000 mm now gives C12 11
and C13 2, and the C13 first row is always the last C12 row plus 250.

Co-Authored-By: Claude Haiku 5.5 <noreply@anthropic.com>
2026-10-23 12:31:58 +09:00

35 lines
1.7 KiB
TypeScript
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
/**
* 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 };
/** Bar centre to the face of the coping, 127 mm (코핑철근.md §6.1, y_e). */
export const SIDE_COVER_M = 0.127;
/**
* Side-row levels (EL m) of C12 / C13 (코핑철근.md §6.1). z_0 = Level underside + 127 (the lowest bottom bar's Level
* height, 41.038 on P1), z_k = z_0 + k·250. The split is by height band:
* C12 rows lie in the taper band (Level underside … end underside, height h2);
* C13 rows lie in the end band (end underside … top, height h1).
* zBreak = end underside + 127 is where the taper line starts at the end face (P1: 42.538).
*/
export function sideRowLevels(levelBottom: number, endBottom: number, top?: number): { zBottom: number; zBreak: number; zTop?: number } {
// Top margin (상면 여유) at least 400 mm (코핑철근.md §6.1): the highest side row lies at or below top − 0.4.
return { zBottom: levelBottom + SIDE_COVER_M + 0.25, zBreak: endBottom + SIDE_COVER_M, zTop: top === undefined ? undefined : top - SIDE_TOP_MARGIN_M };
}
/** Pitch of the side-row grid (m), and the top margin 400 mm (상면 여유). */
export const SIDE_PITCH_M = 0.25;
export const SIDE_TOP_MARGIN_M = 0.4;