As a homeowner, I want to define ceiling shapes beyond flat so that I can document vaulted, sloped, and custom ceiling geometries.
Parent Epic : #752 (EPIC-16: Floor Plans & Utility Tracking)
Priority : Could Have
Phase : 5 — Multi-Floor & Special Structures
Acceptance Criteria
1. The ceiling surface page includes a "Shape" editor section above the layer stack
2. Shape types are selectable: flat, barrel_vault, groin_vault, sloped, polygon, custom
3. barrel_vault shape has adjustable parameters: apex_height_mm, span direction (reference wall)
4. groin_vault shape has adjustable parameters: apex_height_mm (vault peak above spring line)
5. sloped shape has adjustable parameters: min_height_mm, max_height_mm, slope_angle_degrees, reference_wall_id
6. polygon shape allows defining an arbitrary cross-section profile via vertex editing
7. custom shape allows free-form profile path editing using bezier curves
8. Each shape renders an SVG profile curve in the cross-section view showing the ceiling shape above the layer stack
9. Reference wall selection is available for sloped and vaulted shapes (dropdown of walls on the current floor)
10. Shape parameters are stored via the PUT /api/floor-plans/floors/:floorId/ceiling-shape endpoint as JSON
11. Preset shapes (barrel_vault, groin_vault, sloped) show a preview with reasonable defaults before parameter adjustment
12. Switching shape type resets parameters to defaults for the new type (with confirmation if parameters were customized)
Notes
Dependencies: FP-12 (FP-12: Ceiling & Floor Surface Layers #764 ) — ceiling surface view must exist
This extends the basic ceiling shape rendering from FP-12 with full editing capabilities
The profile curve is 2D (cross-section), not 3D — it shows the ceiling shape as seen from a side view
As a homeowner, I want to define ceiling shapes beyond flat so that I can document vaulted, sloped, and custom ceiling geometries.
Parent Epic: #752 (EPIC-16: Floor Plans & Utility Tracking)
Priority: Could Have
Phase: 5 — Multi-Floor & Special Structures
Acceptance Criteria
barrel_vaultshape has adjustable parameters: apex_height_mm, span direction (reference wall)groin_vaultshape has adjustable parameters: apex_height_mm (vault peak above spring line)slopedshape has adjustable parameters: min_height_mm, max_height_mm, slope_angle_degrees, reference_wall_idpolygonshape allows defining an arbitrary cross-section profile via vertex editingcustomshape allows free-form profile path editing using bezier curvesPUT /api/floor-plans/floors/:floorId/ceiling-shapeendpoint as JSONNotes