PK_ERROR_code_t PK_SURF_eval_with_normal
(
--- received arguments ---
PK_SURF_t surf, --- surf
PK_UV_t uv, --- surf u and v parameter pair
int n_u_derivs, --- number of u derivatives
int n_v_derivs, --- number of v derivatives
PK_LOGICAL_t triangular, --- triangular derivative array required
--- returned arguments ---
PK_VECTOR_t p[], --- point and derivatives
PK_VECTOR_t *const normal --- surface normal
)
This function evaluates a point, derivatives and normal at a parameter pair
on the given surface.
Specific Errors:
PK_ERROR_bad_parameter cannot evaluate out of range
PK_ERROR_at_singularity failed to evaluate normal at singularity
PK_ERROR_too_many_derivatives too many derivatives requested
PK_ERROR_num_derivs_not_equal where triangular format requested
PK_ERROR_eval_failure internal evaluator failure
This function provides an extension to the functionality of PK_SURF_eval;
all the documentation for that function also applies here.
The normalised surface normal at uv is also calculated. This normal will be
parallel to the cross product of the the derivative with respect to u and the
derivative with respect to v (unless this cross-product is zero).
A value may be returned for normal even at a singular point of the surface.
Note that a singular point may have an ambiguous parameterisation, and
different uv pairs at the same point may give different normals.