pub fn revolve(
rings: &Rings,
axis_origin: DVec3,
axis_direction: DVec3,
angle: f64,
tolerance: Tolerance,
) -> Result<TriMesh, GeomError>Expand description
Revolve a profile about an axis into a closed solid.
A full turn wraps its rings by index, so the seam shares vertices by
construction rather than by two samplings agreeing numerically. That is
the same structure tessellate_primitive uses for a cylinder, and it
avoids the trim-based path recorded as broken in issue #2.
Every point of the surface the rings sweep lies within
tolerance.linear() of the mesh (see the module notes for the proof);
the rings’ own distance from a curved profile is the caller’s to add.
A budget that needs more than 4096 steps round the axis is refused with
BudgetExceeded. A profile with vertices on both sides of an in-plane
axis is InvalidInput. A vertex on the axis is meshed once, the point
being fixed under the rotation (see the module notes).