Skip to main content

Module revolve_exact

Module revolve_exact 

Source
Expand description

Exact revolution for the profile families exact extrusion already covers.

§What is exactly representable

Revolving a rectangle a full turn about an axis it does not cross produces an annular tube: two cylinders (inner and outer radius) capped by two annular planes. Every one of those is an elementary surface the kernel already carries, so the result is exact – no tessellation, no sampled approximation.

§Partial turns

A PARTIAL turn is not this shape. It has two extra planar walls at the start and end angles, its walls are bounded by circular arcs rather than closed by seams, and nothing closes round the axis. That different topology lives in crate::revolve_partial (#172); every profile that revolves a full turn through the contour path also revolves partially, and a partial turn may additionally touch the axis along straight segments or at vertices.

§What is refused, and why that is the honest answer

A turn beyond a full turn sweeps through itself and is refused by name; a zero or non-finite angle is invalid input.

A FULL turn of a profile touching or crossing the axis degenerates: the inner wall collapses to the axis line and the caps stop being annuli. Refused for the same reason. A partial turn crossing the axis sweeps through itself and is refused too.

The mesh path in revolve.rs handles all of these. Refusing here means a caller asking for exactness gets a typed refusal naming the gap instead of a silently tessellated substitute.

Functions§

fixed_reference_sweep_exact
Sweep a supported profile along a straight path with a fixed reference.
revolve_profile_exact
Revolve a supported profile into an exact, closed analytic B-rep.