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_alignmentrefuses: a wrong entity type, noIfcAlignmentCantor several (SemanticViolation), a malformed or discontinuous cant layout. - Everything the gradient curve refuses.
AlignmentError::Unsupportedfor 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::SemanticViolationfor 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.