build_helix Subroutine

pure subroutine build_helix(this, c, rh, p, n)

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.

Arguments

Type IntentOptional 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.


Calls

proc~~build_helix~~CallsGraph proc~build_helix build_helix none~get_knot nurbs_volume%get_knot proc~build_helix->none~get_knot none~get_nc nurbs_volume%get_nc proc~build_helix->none~get_nc none~get_wc nurbs_volume%get_Wc proc~build_helix->none~get_wc none~get_xc nurbs_volume%get_Xc proc~build_helix->none~get_xc none~set nurbs_volume%set proc~build_helix->none~set proc~is_rational nurbs_volume%is_rational proc~build_helix->proc~is_rational proc~get_knot_all nurbs_volume%get_knot_all none~get_knot->proc~get_knot_all proc~get_knoti nurbs_volume%get_knoti none~get_knot->proc~get_knoti proc~get_nc_all nurbs_volume%get_nc_all none~get_nc->proc~get_nc_all proc~get_nc_dir nurbs_volume%get_nc_dir none~get_nc->proc~get_nc_dir proc~get_wc_all nurbs_volume%get_Wc_all none~get_wc->proc~get_wc_all proc~get_wci nurbs_volume%get_Wci none~get_wc->proc~get_wci proc~get_xc_all nurbs_volume%get_Xc_all none~get_xc->proc~get_xc_all proc~get_xci nurbs_volume%get_Xci none~get_xc->proc~get_xci proc~get_xcid nurbs_volume%get_Xcid none~get_xc->proc~get_xcid proc~set1 nurbs_volume%set1 none~set->proc~set1 proc~set2 nurbs_volume%set2 none~set->proc~set2 proc~set3 nurbs_volume%set3 none~set->proc~set3 proc~set4 nurbs_volume%set4 none~set->proc~set4 interface~compute_multiplicity compute_multiplicity proc~get_nc_dir->interface~compute_multiplicity proc~cmp_degree nurbs_volume%cmp_degree proc~set1->proc~cmp_degree proc~cmp_nc nurbs_volume%cmp_nc proc~set1->proc~cmp_nc set set proc~set1->set proc~set2->proc~cmp_nc proc~compute_knot_vector compute_knot_vector proc~set2->proc~compute_knot_vector proc~set2->set proc~set3->proc~cmp_degree proc~set3->set proc~set4->set proc~compute_multiplicity1 compute_multiplicity1 interface~compute_multiplicity->proc~compute_multiplicity1 proc~compute_multiplicity2 compute_multiplicity2 interface~compute_multiplicity->proc~compute_multiplicity2 proc~cmp_degree->set proc~get_multiplicity nurbs_volume%get_multiplicity proc~cmp_degree->proc~get_multiplicity proc~cmp_nc->interface~compute_multiplicity proc~cmp_nc->set proc~repelem repelem proc~compute_knot_vector->proc~repelem proc~get_multiplicity->interface~compute_multiplicity

Called by

proc~~build_helix~~CalledByGraph proc~build_helix build_helix program~example_helix_pipe example_helix_pipe program~example_helix_pipe->proc~build_helix