fix(abut): 말뚝 머리를 저판 안으로 100 mm 넣어 바닥면 줄무늬(z-fighting) 제거
- 말뚝 윗면이 저판 바닥·버림 윗면과 같은 높이에 있어, 아래에서 보면 원 안에 줄무늬가 생겼음 - 그리는 말뚝 머리를 저판 안으로 0.1 m 넣어 윗면이 저판 속에 숨도록 함. 선단 EL은 그대로 - 테스트 1건 추가. 전체 662건 통과, 타입 검사 · 빌드 통과 Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
This commit is contained in:
1 parent
372d759eb7
commit
4eb92d381d
2 files changed
+12
-1
No files matched your search
@@ -21,6 +21,8 @@ const SLAB_LENGTH_M = 7;
|
||||
const SLAB_FALL = 0.04;
|
||||
/** 접속슬래브와 날개벽 안쪽면 사이 간격 (m), spec_abut §4.8 "날개벽 20". */
|
||||
const SLAB_CLEARANCE_M = 0.02;
|
||||
/** 말뚝 두부 매입 (m): the drawn pile head goes this far into the 저판 (drawing only). */
|
||||
const PILE_HEAD_EMBED_M = 0.1;
|
||||
|
||||
/** Eight-corner slab with its top sloping away from the wall. Indexed by (s end, t end, bottom/top). Double-sided: the winding is not critical. */
|
||||
function slabGeometry(plan: [number, number][], bottomEl: (s: number, t: number) => number): THREE.BufferGeometry {
|
||||
@@ -289,7 +291,9 @@ export function buildAbutGroup(
|
||||
|
||||
// 말뚝: 원기둥 (지름 입력, 기본 D600) at each row, from the 기초 하단 down to the 선단.
|
||||
if (members.pileBottomEl !== undefined && footingBottom !== undefined) {
|
||||
const height = footingBottom - members.pileBottomEl;
|
||||
// The pile head runs PILE_HEAD_EMBED_M into the 저판, so its top cap is hidden inside the slab and does not z-fight
|
||||
// with the 저판 bottom (the striped discs seen from below, 2026-11-04). The 선단 EL is unchanged.
|
||||
const height = footingBottom + PILE_HEAD_EMBED_M - members.pileBottomEl;
|
||||
for (const row of members.piles) {
|
||||
for (const s of row.s) {
|
||||
// 말뚝 지름은 입력값 (QA-5). Each row moves along s with the skew, like the 저판 (시안: 열마다 skew만큼 밀림).
|
||||
|
||||
@@ -56,4 +56,11 @@ describe('교대 확대기초 · 말뚝 (시안 ②, 3D)', () => {
|
||||
for (const s of ['1열 · 전면 · t +2150 · 6본', '2열 · t +850 · 6본', '3열 · 배면 · t −1150 · 6본', '4600 = 뒷굽쪽 650 · 2000 · 1300 · 650 전면', '교대축']) expect(svg).toContain(s);
|
||||
expect(svg.match(/<circle /g)).toHaveLength(18);
|
||||
});
|
||||
|
||||
it('the pile head sits 100 mm inside the 저판 (no top cap on the 저판 bottom face), the 선단 stays at the 선단 EL', () => {
|
||||
const { m, g } = group();
|
||||
const box = new THREE.Box3().setFromObject((g.getObjectByName('piles') as THREE.Group).children[0]);
|
||||
expect(box.max.y).toBeCloseTo(m.footingBottomEl! + 0.1, 4);
|
||||
expect(box.min.y).toBeCloseTo(m.pileBottomEl!, 4);
|
||||
});
|
||||
});
|
||||
Reference in new issue
Block a user