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.