Skip to main content

revolve_arc_ring

Function revolve_arc_ring 

Source
pub fn revolve_arc_ring(
    ring: &ArcRing,
    axis_origin: DVec3,
    tolerance: Tolerance,
) -> Result<ExactBRep, GeomError>
Expand description

Revolve a lowered section a full turn about the profile’s local y axis.

The section may touch the axis (#379), classified with the exact side_of_axis sign, no tolerance: an edge lying on the axis sweeps no face, and a straight edge ending on it exactly perpendicularly (equal heights) sweeps a disc cap, so a solid cylinder and a stepped shaft revolve. A section with vertices on both sides of the axis is refused as crossing it. A vertex on the axis is admitted when one of its two edges lies on the axis and the other is another axis edge, a disc cap, a straight edge to a cone’s apex or an arc to a sphere’s pole. The apex or pole is a vertex of the B-rep, not a degenerate edge: the wall’s loop runs [rim circle], seam, [rim circle], seam reversed and leaves a gap along the pole line in its parameters, which consumers close (ADR 0059). An arc with exactly one end on the axis is a sphere when its circle is centred on the axis to rounding (64 ulps of the coordinates it is computed from); otherwise it is a spindle or horn torus and is refused by name, as is an arc with both ends on the axis. A vertex on the axis with no axis edge (a pinch point) is refused by name, and so is a vertex off the axis by no more than the tolerance, as neither on it nor clear of it, or a straight edge ending on the axis within the tolerance of perpendicular to it but not exactly. Several separate contacts (a cavity along the axis) give one solid per outermost shell with the nested shells as its voids.