fix(rebar): 상면 단 가로 간격을 d(H29, 28.6 mm)로 수정

- 단마다 양끝이 안으로 들어가는 양을 2d에서 d로 변경
- 상면 단 길이 12744 / 12686.8 / 12629.6 (기존 12744 / 12629.6 / 12515.2)
- 3D 상면 주철근의 굽힘 시작점도 같은 값을 쓴다

Co-Authored-By: Claude Haiku 5.5 <noreply@anthropic.com>
This commit is contained in:
ypshimandClaude Haiku 5.5 committed 2026-10-26 15:45:51 +09:00
1 parent 2acb427bab
commit d2c5f90092
5 files changed
+8 -8

No files matched your search

+2 -2
View File
@@ -11,8 +11,8 @@ export const MAIN = {
/** 기본 간격 s_m and minimum end gap g_min. */
spacing: 125,
endGapMin: 80,
/** 상면 단 가로 간격 = 2d (H29, mm). Fixed; the vertical step is the 상면 주철근 단 간격 input. */
layHorizontal: 2 * NOMINAL_DIAMETER.H29,
/** 상면 단 가로 간격 = d (H29, mm). Fixed; the vertical step is the 상면 주철근 단 간격 input. */
layHorizontal: NOMINAL_DIAMETER.H29,
/** 90° 갈고리 l_h (mm, as in the document). */
hook: 472,
/** 하면 경사 구간 수평 길이 (mm, each side) and Level width. */
+1 -1
View File
@@ -9,7 +9,7 @@ export interface CopingRebarSettings {
mainSpacing: number;
/** 주철근 끝단 최소 여유 (mm). */
mainEndGap: number;
/** 상면 주철근 단 간격 · 세로 (mm). The horizontal step is fixed at 2d (H29, 57.2 mm). */
/** 상면 주철근 단 간격 · 세로 (mm). The horizontal step is fixed at d (H29, 28.6 mm). */
mainLayerGap: number;
/** 첫 전단철근 최소 여유 (피복 다음, mm). */
firstShearGap: number;
+1 -1
View File
@@ -1079,7 +1079,7 @@ const COPING_REBAR_FIELDS: { key: keyof CopingRebarSettings; label: string }[] =
{ key: 'cover', label: '피복 (철근 중심, mm)' },
{ key: 'mainSpacing', label: '주철근 기본간격 (mm)' },
{ key: 'mainEndGap', label: '주철근 끝단 최소 여유 (mm)' },
{ key: 'mainLayerGap', label: '상면 주철근 단 간격 · 세로 (mm, 가로는 2d 고정)' },
{ key: 'mainLayerGap', label: '상면 주철근 단 간격 · 세로 (mm, 가로는 d 고정)' },
{ key: 'firstShearGap', label: '첫 전단철근 최소 여유 (피복 다음, mm)' },
{ key: 'shearLegs', label: '전단철근 다리 수' },
{ key: 'spacingS', label: '전단철근 간격 · 경사 (mm)' },
+1 -1
View File
@@ -146,7 +146,7 @@ export function buildRebar3D(m: PierModel, common: Material = DEFAULT_MATERIAL,
const cover = 0.1;
// Top rows C1–C6 (코핑철근.md §5.1, §5.3): counted from the left, the even (1-based) positions are cycle 1 (C1–C3),
// the odd cycle 2 (C4–C6). In 0-based j that is odd j → cycle 1. Each row turns down 472 at both ends, and the
// k-th row's ends sit (k − 1)·57.2 further in.
// k-th row's ends sit (k − 1)·d (H29, 28.6) further in.
const topEl = m.copingRefTop;
const hookTop = MAIN.hook / 1000;
for (let k = 1; k <= 3; k++) {
+3 -3
View File
@@ -25,10 +25,10 @@ describe('C1–C8 상·하면 주철근 (코핑철근.md §5, plan C3)', () => {
expect(topRowEl(43.284, 3)).toBe(43.084);
});
it('top bar lengths 12744 / 12629.6 / 12515.2 (path + 2 × 472 hook)', () => {
it('top bar lengths 12744 / 12686.8 / 12629.6 (path + 2 × 472 hook, 가로 단 간격 d = 28.6)', () => {
expect(topBarLength(12000, 1)).toBeCloseTo(12744, 0);
expect(topBarLength(12000, 2)).toBeCloseTo(12629.6, 0);
expect(topBarLength(12000, 3)).toBeCloseTo(12515.2, 0);
expect(topBarLength(12000, 2)).toBeCloseTo(12686.8, 1);
expect(topBarLength(12000, 3)).toBeCloseTo(12629.6, 1);
});
it('bottom piece ≈ 7448 with l_s = 1717.6 (1.3 × l_d of H29 at fck 27) — the document shows 1717', () => {