feat(rebar): add downward 90° hooks (135 mm) to P6 crossties in 3D rebar model

This commit is contained in:
ypshim committed 2026-10-22 17:45:22 +09:00
1 parent 4aa8dbb3cb
commit a2317caf6c
15 files changed
+740 -133

No files matched your search

+12 -1
View File
@@ -1,5 +1,5 @@
import { describe, expect, it } from 'vitest';
import { c14Total, COPING_END_GAP, sideRows, shearBars, STEP_BAR_COUNTS } from '../src/core/rebar/coping';
import { c14Total, COPING_END_GAP, copingSideBars, sideRows, shearBars, STEP_BAR_COUNTS } from '../src/core/rebar/coping';
// P1 coping: L 12000, one column at the centre (T형).
const L = 12000;
@@ -43,6 +43,17 @@ describe('코핑 철근 (코핑철근.md, plan C3)', () => {
expect(r.c13).toEqual([42.538, 42.788]);
});
it('C12 일자 lengths 3717 / 5333 / 6950 / 8567 / 10183 and C13 11746 for L 12000 (코핑철근.md §6.2 table)', () => {
const s = copingSideBars(12000, 41.288, 42.538);
const expected = [3717, 5333, 6950, 8567, 10183];
s.c12.forEach((r, i) => expect(r.straight).toBeCloseTo(expected[i], 0));
expect(s.c12[0].xw).toBeCloseTo(4141.7, 1);
s.c13.forEach((r) => {
expect(r.xw).toBe(127);
expect(r.straight).toBe(11746);
});
});
it('C14: 38 bars = 2 × 11 upper + 5 + 6 + 3 + 2 lower', () => {
expect(c14Total()).toBe(38);
});