fix(bearing): C4 and C5 are the 교각축 distances from the bearing to the block edges (승인 2026-10-26)
- bearingEdgeDistances measures along the 교각축: 분리 600 / 600; 일체 from the pair block centred on the mean 교각축 position (P1 outer margins 557). - Table headings updated; C1 · C2 · C3 on the plan are measured on the 교축 from the drawn positions. Co-Authored-By: Claude Haiku 5.5 <noreply@anthropic.com>
This commit is contained in:
1 parent
29acfba1e1
commit
2f67efd449
4 files changed
+31
-36
No files matched your search
+13
-22
@@ -2,7 +2,7 @@ import type { BlockModel, PierModel } from './geometry';
|
||||
|
||||
/**
|
||||
* 받침 배치 규칙 (승인 2026-10-26).
|
||||
* - C4·C5: 교축 방향, 받침 중심과 받침블럭 연단 사이 거리 (승인 2026-10-26). 블록 형상에서 계산하고 도면값과 비교한다.
|
||||
* - C4·C5: 교각축 방향, 받침 중심과 받침블럭 연단 사이 거리 (승인 2026-10-26, 교각축 방향으로 확정). 블록 형상에서 계산하고 도면값과 비교한다.
|
||||
* - 일체: 같은 순서끼리 (전열 1 · 후열 1, 전열 2 · 후열 2 …, 각 열의 번호 순) 두 받침의 편심거리가 100 mm를 넘으면 분리를 우선한다.
|
||||
* (P1 은 전열 1–5, 후열 6–10 으로 번호가 매겨져 있어서 번호 자체가 아니라 열 안의 순서로 짝짓는다.)
|
||||
* 편심거리 = 두 받침 중심의 교각축 방향 차이 |s(전열) − s(후열)|.
|
||||
@@ -12,10 +12,10 @@ export const PAIR_ECCENTRICITY_LIMIT_MM = 100;
|
||||
export interface EdgeDistance {
|
||||
no: number;
|
||||
row: BlockModel['row'];
|
||||
/** 교축 방향: 받침 중심에서 블록의 낮은 쪽(−n) 연단까지 (mm) = C4. null = 쌍 안쪽 (C4·C5 아님). */
|
||||
leftMm: number | null;
|
||||
/** 교축 방향: 받침 중심에서 블록의 높은 쪽(+n) 연단까지 (mm) = C5. null = 쌍 안쪽 (C4·C5 아님). */
|
||||
rightMm: number | null;
|
||||
/** 교각축 방향: 받침 중심에서 블록의 낮은 쪽(−s) 연단까지 (mm) = C4. */
|
||||
leftMm: number;
|
||||
/** 교각축 방향: 받침 중심에서 블록의 높은 쪽(+s) 연단까지 (mm) = C5. */
|
||||
rightMm: number;
|
||||
}
|
||||
|
||||
export interface PairEccentricity {
|
||||
@@ -28,27 +28,18 @@ export interface PairEccentricity {
|
||||
}
|
||||
|
||||
/**
|
||||
* C4·C5 from the block geometry: distances along the 교축 from each bearing centre to the block edges (mm).
|
||||
* 분리: the 1200 block is centred on its bearing, so both are 600. 일체: the pair's 2500 block, so the outer
|
||||
* margins are 600 (C1) and the inner ones run to the other bearing.
|
||||
* C4·C5 from the block geometry: distances along the 교각축 from each bearing centre to the block edges (mm).
|
||||
* 분리: the 1200 block is centred on its bearing, so both are 600. 일체: the pair's block is centred on the pair's mean
|
||||
* 교각축 position, so each bearing's margins follow its own offset (P1: the outer margins 557).
|
||||
*/
|
||||
export function bearingEdgeDistances(m: PierModel): EdgeDistance[] {
|
||||
const HALF_SEPARATE = 0.6; // 1200 / 2, m
|
||||
const HALF_INTEGRATED = 1.25; // 2500 / 2, m
|
||||
const HALF_DEPTH = 0.6; // 1200 / 2 along the 교각축, m
|
||||
return m.blocks.map((b) => {
|
||||
const host = m.integratedBlocks.find((x) => (b.row === '전열' ? x.frontNo : x.backNo) === b.no);
|
||||
if (!host) {
|
||||
return { no: b.no, row: b.row, leftMm: (HALF_SEPARATE) * 1000, rightMm: HALF_SEPARATE * 1000 };
|
||||
}
|
||||
// 일체: only the outer edges are C4 (front, low side) and C5 (back, high side); the inner side faces the other bearing.
|
||||
const low = host.n - HALF_INTEGRATED;
|
||||
const high = host.n + HALF_INTEGRATED;
|
||||
return {
|
||||
no: b.no,
|
||||
row: b.row,
|
||||
leftMm: b.row === '전열' ? (b.n - low) * 1000 : null,
|
||||
rightMm: b.row === '후열' ? (high - b.n) * 1000 : null,
|
||||
};
|
||||
const centre = host ? host.s : b.s;
|
||||
const low = centre - HALF_DEPTH;
|
||||
const high = centre + HALF_DEPTH;
|
||||
return { no: b.no, row: b.row, leftMm: (b.s - low) * 1000, rightMm: (high - b.s) * 1000 };
|
||||
});
|
||||
}
|
||||
|
||||
|
||||
Reference in new issue
Block a user