struct PK_FACE_contains_vectors_o_s { int o_t_version; --- version number of options structure int n_uvs; --- number of uv positions (0) PK_UV_t *uvs; --- uv positions (NULL) int n_vectors; --- number of xyz positions (0) PK_VECTOR_t *vectors; --- xyz positions (NULL) int n_loops; --- number of loops (0) PK_LOOP_t *loops; --- loops (NULL) PK_LOGICAL_t is_on_surf; --- whether position vector is assumed --- to be on face's surface --- (PK_LOGICAL_true) }; typedef struct PK_FACE_contains_vectors_o_s PK_FACE_contains_vectors_o_t; Specific Errors: PK_ERROR_nitems_le_0 n_uvs and n_vectors are both zero. There are no points to test. PK_ERROR_not_same_length n_uvs and n_vectors are both non-zero but not the same This option structure provides variable form input to PK_FACE_contains_vectors. Positions for testing may be supplied as parametric positions on the surface of the face, or as position vectors in 3D space, or both. Where both are supplied, corresponding elements of each array must represent the same position, and the number of elements in each array must be the same. What is used as the boundary of the face may be restricted to a given set of loops. EG if just the outer loop of a face is given then any holes in the face will not be taken into account. is_on_surf indicates whether vectors are known to be on the face's surface. If is_on_surf is PK_LOGICAL_true then it is assumed that any given vectors lie on the face's surface. If a vector is given off the surface then spurious results may be returned. If is_on_surf is PK_LOGICAL_false, then any given vector which does not lie on the face's surface will always be classified as being outside the face.