Map a straight pipe-like NURBS volume onto a cylindrical helix.
Each control point is first expressed relative to the input center . For the axial (k) index, define a normalized parameter which runs from 0 (start) to 1 (end) along the volume.
The helix angle as a function of is
where n
is the number of turns. For a point at polar coordinates
and ,
the mapping is:
where is the helix radius and is the pitch (axial rise per turn).
Knots are preserved; only the control points are updated.
Type | Intent | Optional | Attributes | Name | ||
---|---|---|---|---|---|---|
type(nurbs_volume), | intent(inout) | :: | this |
NURBS volume to be helicalized. |
||
real(kind=rk), | intent(in) | :: | c(3) |
Center , helix radius , pitch . |
||
real(kind=rk), | intent(in) | :: | rh |
Center , helix radius , pitch . |
||
real(kind=rk), | intent(in) | :: | p |
Center , helix radius , pitch . |
||
integer, | intent(in) | :: | n |
Number of turns. |