Skip to main content

lower_segmented_reference_curve

Function lower_segmented_reference_curve 

Source
pub fn lower_segmented_reference_curve(
    model: &Model,
    alignment: EntityId,
    units: AlignmentUnits,
) -> AlignmentResult<LoweredAlignmentCurve>
Expand description

Lower an IfcAlignment with cant to its exact cant-carrying centreline, a Curve3::Banked.

The graph holds one Curve3::Banked node: the centreline lower_gradient_curve builds, the cant and pivot laws, and the rail-head distance, under BankConvention::TangentRotation (see the module documentation). sources lists the horizontal, vertical and cant layouts, then the vertical and cant segments; seams are the plan’s.

§Errors

  • Everything CantLayout::for_alignment refuses: a wrong entity type, no IfcAlignmentCant or several (SemanticViolation), a malformed or discontinuous cant layout.
  • Everything the gradient curve refuses.
  • AlignmentError::Unsupported for a cant layout that does not cover the whole plan, a cant segment type with no law, and a Viennese bend whose pivot moves.
  • AlignmentError::SemanticViolation for a cant beyond the rail-head distance (|D| > b) at a segment end; every form is monotone between its ends, so none exceeds it inside.