Skip to main content

Module elevated

Module elevated 

Source
Expand description

Derivatives, certified bounds and corners of elevated and banked curves in plan distance (#252), re-exported on the same footing as curve and surface. Derivatives, certified bounds and seams of elevated and banked curves in plan distance (#252).

An Elevated3 is c(d) = (p(d), z(d)): a plan p read by its own arc length d and a height z written against that same d. Its parameter is plan distance (ADR 0082), so its derivatives are taken in d: c' = (p', z') with |p'| = 1 (not a unit vector in 3D: its length is sqrt(1 + g^2), g the grade), c'' = (k n, z'') with k the plan curvature and n the plan’s left normal, c''' = (k' n - k^2 p', z'''). A Banked3’s point is its centreline raised by the pivot e(d), so it adds e^(j) to every z^(j).

§The certified 3D chord bound

Over a span [a, b] of width h, let l be the linear interpolant of the ends, l(d) = c(a) + (d - a) / h (c(b) - c(a)). It lies on the 3D chord. Componentwise, c - l = -int G(d, s) c''(s) ds with the non-negative Green’s function of -d^2/dd^2 on [a, b], whose integral is at most h^2 / 8 (crate::bound’s chord argument). Applied to the horizontal and the vertical part separately, at the SAME d:

  • |p(d) - l_p(d)| <= P = h^2 / 8 sup |p''| = h^2 / 8 sup |k|, the plan’s own chord bound read at equal plan distance;
  • |z(d) - l_z(d)| <= Z, the profile’s chord bound (elevation_chord_bound), which is the same Taylor argument on z;

and the two parts are orthogonal (p horizontal, z vertical), so

|c(d) - l(d)| <= sqrt(P^2 + Z^2).

Every point of the curve is within that of the chord. The bound only needs c to be C^1 with a bounded second derivative on the span: a curvature seam of the plan (a clothoid meeting an arc) does not stop it, a join of a chain or a seam of the profile (where the grade may jump) does, and those are cut first (elevated_breaks). A flattener that accepts a span once sqrt(P^2 + Z^2) <= tol has split the budget between plan and profile in quadrature: P <= tol cos(a), Z <= tol sin(a) for the angle a = atan(Z / P) the span itself sets. A banked curve’s vertical part is z + e, bounded by Z + h^2 / 8 sup |e''|.

The plan’s chord bound is NOT the plan’s own chord_bound2: that bounds the distance from the plan arc to the plan chord, which for a circle is the exact sagitta at the arc’s own nearest chord point, not at equal plan distance, and the vertical part could then be read at a different d. The Taylor bound at equal d is what composes.

§Derivative bounds

For a sweep’s certificate (the tube wall of axiolid-mesh-compile’s deviation report) the first three derivatives are bounded the same way: |c^(j)| <= sqrt(P_j^2 + Z_j^2), with P_1 the plan frame’s stretch, P_2 = sup |k|, P_3 = sup |k'| + sup k^2 (in arc length p''' = k' n - k^2 t; a chain’s parametric piece is bounded through its own derivative suprema), and Z_j from crate::elevation’s per-law closed forms. They need C^2 within the span, so curvature seams of the plan are named as breaks for k >= 2.

Functions§

banked_breaks
elevated_breaks of a banked curve’s point path, plus the seams of its pivot law (its rate may jump there). The cant law moves only the section frame, not the point, so its seams are not named – except where a held-rail pivot piece derives the point from the cant (#279): the cant’s seams there are the pivot’s.
banked_chord_bound
elevated_chord_bound of a banked curve’s point path: the vertical part is z + e, bounded by Z + h^2 / 8 sup |e''|.
banked_derivative_bounds
elevated_derivative_bounds of a banked curve’s point path, the pivot’s derivatives added to the profile’s.
elevated_breaks
Where an elevated curve may fail to be C^k (k >= 1), ascending: a chain plan’s joins and every seam of the elevation law (the grade may jump there), and for k >= 2 the curvature seams of an intrinsic plan or of a chain’s intrinsic pieces.
elevated_chord_bound
Certified 3D chord bound of an elevated curve over plan distances [a, b]: sqrt(P^2 + Z^2), P = h^2 / 8 sup |k| the plan’s and Z the profile’s chord bound at equal plan distance (see the module documentation for the derivation).
elevated_derivative
Derivative of an elevated curve in plan distance: (p', z'). Not unit: its length is sqrt(1 + g^2) on an orthonormal plan frame.
elevated_derivative_bounds
Certified suprema of |c'|, |c''|, |c'''| of an elevated curve in plan distance over [a, b]: sqrt(P_j^2 + Z_j^2) (module documentation). None where the curve may not be C^2 strictly inside the span, or where either half is not bounded.
elevated_second_derivative
Second derivative of an elevated curve in plan distance: (k n, z''), the plan’s curvature vector and the profile’s z''.
elevated_span
Plan length an elevated curve’s parameter runs over: unbounded for a line, one full turn for a circle, the stored length of an intrinsic curve or a chain; None for a plan that cannot carry an elevation law or has no positive finite length.
grade_corners3
Where an elevated or banked curve turns a corner: the seams (of its profile, and of a banked curve’s pivot) across which the grade of its point path jumps by more than angle radians, ascending.