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:
| entity | name |
|---|---|
| the solid | solid (usually N itself) |
face swept by X through quadrant q | N(X,q) |
meridian edge: X at angle a | N(X,a) |
circular edge swept by P through q | N(P,q) |
vertex of P at angle a | N(P,a) |
vertex of P on the axis (a pole) | N(P) |