PK_CYL_sf_t   



struct PK_CYL_sf_s
    {
    PK_AXIS2_sf_t   basis_set;  --- a point, reference direction and an axis
    double          radius;     --- the radius of the cylinder
    };

typedef struct PK_CYL_sf_s PK_CYL_sf_t;


Specific Errors:
    PK_ERROR_radius_le_0        The radius for the cylinder was less than or
                                equal to zero



See documentation for PK_AXIS2_sf_t.

The parameterisation of a cylinder is as follows:

    P = basis_set.location
    x = basis_set.ref_direction
    y = basis_set.axis X basis_set.ref_direction ( cross product )
    z = basis_set.axis
    R = radius(>0)

    S(u, v) = P + R( (cos u)x + (sin u)y ) + vz    ( 0 <= u < 2PI )