Sprint 27/28 — Skew + 방호벽 + 관련 메타 갱신

Sprint 27: 경사각(Skew) 지원.
- SceneParams.skew_deg (-30°~30°) 추가.
- rotate_y_around_z(mesh, rad, pivot_z) 헬퍼: Y축 중심, 임의 Z pivot 회전.
  정점·법선 동시 회전.
- 적용 대상: 교대·교각·받침·신축이음 (각 지점 pivot_z 기준).
- 거더·데크는 직선 유지 (precast 거더 스큐 교량의 일반 관례).
- UI: "경사각(°)" 슬라이더.

Sprint 28: 방호벽(Parapet) MVP.
- 데크 양 엣지(half_w, -half_w) 에 1200mm×500mm RC 박스 전 구간 연속 배치.
- Y 기준: 데크 상면 (girder_h + slab_thickness).
- 색: COL_ABUTMENT 재사용 (콘크리트 브라운).
- build_bridge_scene / build_selectable_scene 양쪽 추가.
  선택 가능 씬에서는 "방호벽 (좌/우)" 라벨.

ProjectFile v2: skew_deg 필드 (default 0.0).
PROGRESS.md: Sprint 25~28 정리.

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
This commit is contained in:
minsung
2026-04-15 12:42:21 +09:00
parent b37a50c90c
commit 471fac53b3
5 changed files with 110 additions and 10 deletions

View File

@@ -35,6 +35,9 @@ pub struct ProjectFile {
pub span_count: usize,
#[serde(default = "default_pier_type")]
pub pier_type: String, // "single" | "multi"
/// Sprint 27: 경사각 [deg]
#[serde(default)]
pub skew_deg: f32,
}
fn default_true() -> bool { true }
@@ -65,6 +68,7 @@ impl ProjectFile {
cimery_core::PierType::MultiColumn => "multi".into(),
_ => "single".into(),
},
skew_deg: p.skew_deg,
}
}
@@ -88,6 +92,7 @@ impl ProjectFile {
"multi" => cimery_core::PierType::MultiColumn,
_ => cimery_core::PierType::SingleColumn,
},
skew_deg: self.skew_deg,
}
}