Skip to main content

revolve_at_oriented

Function revolve_at_oriented 

Source
pub fn revolve_at_oriented<S: Scalar>(
    part: &mut Part<S>,
    namer: &Namer,
    solid: &str,
    profile: &Profile<S>,
    coordinate_system: &CoordinateSystem<S>,
) -> GeopResult<SolidId>
Expand description

Like revolve_at, but revolves around coordinate_system’s own w axis instead of always the ambient z-axis: a profile point (r, z) maps to coordinate_system.to_xyz([r cos, r sin, z]) — u/v span the equatorial plane (the angle-0 direction and its 90-degree-around-w follower, respectively) and w is the revolution axis, exactly the same role extrude’s own coordinate system’s w plays as its sweep direction. Every position this builds still ultimately comes from this one pos/centers pair — the rest of the function (euler operations, pcurves) has no notion of x/y/z at all, so generalizing the axis needed no changes anywhere else.

Everything built is named after the profile’s curves X and joints P (see Profile), the angles a0..a3 at which the meridians lie (a0 along u, a1 along v, …), and the quadrants q0..q3 between them (q0 from a0 to a1, …), following geop_core_part’s scheme:

entityname
the solidsolid (usually N itself)
face swept by X through quadrant qN(X,q)
meridian edge: X at angle aN(X,a)
circular edge swept by P through qN(P,q)
vertex of P at angle aN(P,a)
vertex of P on the axis (a pole)N(P)