Skip to content

mesh-compile: sweep along an elevated directrix (Elevated3) with a certified deviation #252

Description

@GeneralPawz

Reported by a consumer (axioval), seen in axiolid-mesh-compile 0.3.10–0.3.12. The reference mesh compiler can't sweep along an elevated directrix (`Curve3::Elevated`, which a gradient curve lowers to): it returns `GeomError::Unsupported { operation: CurveEvaluation }`, even for a constant grade. `evaluate3` has no `Elevated` arm (noted as open in #239), and sweep directrix resolution classifies elevated curves as an unsupported family. Example: a pipe whose swept disk follows a gradient curve with a vertical circular sag (R = 1000) is unmeasured.

The building blocks exist: `elevated_point`/`elevated_tangent` (#238 `elevation_height`/`elevation_grade`, #239 chains as plans), `elevation_chord_bound` (#238), the plan's chord bounds (#232/#239), and the banked section frames (#240).

Proposal

  • Add `Curve3::Elevated` to `evaluate3`/`derivative3`/`domain3`.
  • Accept elevated (and banked) directrices for swept disks and swept areas. Sample the directrix by plan distance with a certified 3D chord bound composed from the plan's bound and the elevation's `elevation_chord_bound`; plan and elevation chord errors combine, so derive the 3D bound and split the budget. Sweep with frames along the 3D tangent; for `Banked3`, use its section frames.
  • Report the deviation as `Certified`/`Proven` through `compile_mesh_with_deviation`, or as `Unbounded` by name where a piece can't be bounded.

Done when

  • A swept disk and a swept area along `Elevated3` directrices with line, circular-arc (curve: exact vertical circular-arc and clothoid elevation laws #238) and parabolic vertical profiles, over straight, arc and clothoid plans, compile to watertight meshes.
  • Dense sampling stays within the reported certified deviation.
  • Volume matches the closed form for a straight plan with a constant grade.
  • A banked directrix sweeps with the rolled frames.

Activity

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

Labels

needs-triageFiled but not yet accepted, sized, or scheduled

Type

Projects

No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions