Skip to main content

revolve

Function revolve 

Source
pub fn revolve(
    rings: &Rings,
    axis_origin: Point3,
    axis_direction: Vec3,
    angle: Scalar,
    tolerance: Tolerance,
) -> GeomResult<TriMesh>
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).