PK_SURF_eval_handed   

PK_ERROR_code_t PK_SURF_eval_handed
(
--- received arguments ---
PK_SURF_t       surf,       --- surface
PK_UV_t         uv,         --- u and v parameter pair
int             n_u_derivs, --- number of u derivatives [NF]
int             n_v_derivs, --- number of v derivatives [NF]
PK_LOGICAL_t    triangular, --- triangular derivative array required
PK_HAND_t       u_hand_dir, --- evaluate u as limit from left or right
PK_HAND_t       v_hand_dir, --- evaluate v as limit from left or right

--- returned arguments ---
PK_VECTOR_t     p[]         --- point and derivatives
)


This function behaves like PK_SURF_eval, but takes additional arguments
( 'u_hand_dir' and 'v_hand_dir' ) as input.

This function offers partial support for facet geometry [PF]


Specific Errors:
    PK_ERROR_bad_parameter            not permitted to evaluate outside of
                                      range (MILD)
    PK_ERROR_too_many_derivatives     too many derivatives requested (MILD)
    PK_ERROR_num_derivs_not_equal     where triangular format was requested
                                      (MILD)
    PK_ERROR_eval_failure             internal evaluator failure (MILD)


This is the handed version of PK_SURF_eval which evaluates a point and
derivatives at a parameter pair on a surface patch indicated by an additional
pair of direction arguments.

In the case of mesh surfaces (PK_CLASS_mesh),
no derivatives can be returned. 'n_u_derivs' and 'n_v_derivs' must be set to 0.

The 'u_hand_dir' and 'v_hand_dir' arguments allow evaluation from both the left
and right at patch boundaries. Usually these arguments should be set to
PK_HAND_right_c which results in evaluation approaching from the right. This
means that if the parameter t lies on a patch boundary then the derivatives
will be calculated using the next patch and the starting local parameter. If
the arguments are set to PK_HAND_left_c (evaluate from left) then the
derivatives will be calculated using the previous patch and the end local
parameter.

The following examples show how the direction arguments affect the evaluation
at the given parameter position (shown as *), where straight lines represent
surface patch boundaries:

                ^ U                                   ^ U
                |                                     |
   u_on_right   |  u_on_right        u_on_right/left  *  u_on_right/left
    v_on_left   |  v_on_right              v_on_left  |  v_on_right
 ---------------*--------------> V   -----------------+------------------> V
    u_on_left   | u_on_left                           |
    v_on_left   | v_on_right

The derivatives obtained from left and right evaluation may be different if
there is a discontinuity at the patch boundary.

If a parameter (u or v) is at the beginning / end of a global parameter
boundary and in non-periodic direction, PK_HAND_left_c / PK_HAND_right_c
means the evaluation will use the surface extended from the boundary.