diff --git a/resources/views/rd/fire-shutter-drawing/index.blade.php b/resources/views/rd/fire-shutter-drawing/index.blade.php index 331edb4a..8e39c41d 100644 --- a/resources/views/rd/fire-shutter-drawing/index.blade.php +++ b/resources/views/rd/fire-shutter-drawing/index.blade.php @@ -2244,19 +2244,23 @@ function createRailGroup() { const railPosX = W1 / 2 - railDepth; // front face 위치 (중심에서) // Left rail — Ry(-PI/2): 개구부(립) → +X (중심), 백월 → -X (벽) + // Z방향: Ry(-PI/2)에서 z'=x(원본), 폭 0→70이 z' 0→70으로 매핑 + // 레일 전면을 벽면(Z=0)에 맞추기: wrapper Z = -rw → 레일 Z범위 -rw~0 const railGroupL = createRailGroup(); const wrapperL = new THREE.Group(); wrapperL.add(railGroupL); wrapperL.rotation.y = -Math.PI / 2; - wrapperL.position.set(-railPosX, 0, -rw / 2); + wrapperL.position.set(-railPosX, 0, -rw); meshes.rails.add(wrapperL); // Right rail — Ry(+PI/2): 개구부(립) → -X (중심), 백월 → +X (벽) + // Z방향: Ry(+PI/2)에서 z'=-x(원본), 폭 0→70이 z' 0→-70으로 매핑 + // 레일 전면을 벽면(Z=0)에 맞추기: wrapper Z = 0 → 레일 Z범위 0~-rw const railGroupR = createRailGroup(); const wrapperR = new THREE.Group(); wrapperR.add(railGroupR); wrapperR.rotation.y = Math.PI / 2; - wrapperR.position.set(railPosX, 0, rw / 2); + wrapperR.position.set(railPosX, 0, 0); meshes.rails.add(wrapperR); } else { // ====== 철재형: 기존 C채널 방식 (슬랫이 Z방향 슬롯 통과) ======