PK_ERROR_code_t PK_SURF_intersect_surf ( --- received arguments --- PK_SURF_t surf_1, --- surface_1 PK_SURF_t surf_2, --- surface_2 const PK_SURF_intersect_surf_o_t *options, --- options structure --- returned arguments --- int *const n_vectors, --- number of point intersections PK_VECTOR_t **const vectors, --- posns of point intersections int *const n_curves, --- number of intersection curves PK_CURVE_t **const curves, --- intersection basis curves PK_INTERVAL_t **const bounds, --- bounds of curves PK_intersect_curve_t **const types --- types of intersections ) PK_SURF_intersect_surf finds the intersections between two surfaces. Specific Errors: PK_ERROR_not_in_same_partition surfaces in different partitions PK_ERROR_not_on_curve given parameters not on curves PK_ERROR_bad_option_data bad option structure data PK_ERROR_bad_shared_entity face and surface from different bodies PK_ERROR_cant_do_intersect intersection cannot be done PK_SURF_intersect_surf finds the intersections between two surfaces (surf_1 and surf_2), returning intersection points (vectors) and curves of intersection (curves). The two surfaces must both be orphans or from the same body. In the second case any resulting curves will be created as construction geometry on the body. No attempt is made to define surface regions of partial coincidence, and if the surfaces are fully coincident no intersection data will be returned. The returned points (vectors) will be returned at points where the surfaces make point contact. n_vectors indicates the number of intersection points. The curves returned (curves) will be the basis curves of trimmed curves, and their corresponding bound in bounds, n_curves indicates the number of curves returned. types classifies curves as being either: PK_intersect_curve_simple_c : Simple intersection curves or PK_intersect_curve_tangent_c: Tangent intersection curves The available fields in the option structure PK_SURF_intersect_surf_o_t are as described below: The option have_box indicates whether a box has been specified (default = PK_LOGICAL_false) The option box enables a 3-space box of interest to be supplied. The box may be used to improve performance. The intersection curves returned are not guaranteed to lie within the bounds of the box. The option have_uvbox_1 indicates whether a uvbox_1 has been specified. The option have_uvbox_2 indicates whether a uvbox_2 has been specified. The options uvbox_1 and uvbox_2 enable the supplying of parameter boxes for the first and second surface respectively. Again these boxes are only used to constrain the region of interest for performance purposes. The intersection curves returned are not trimmed to lie within the boundaries of the parameter box/es. Four parameters should be supplied to define the parameter box, U-min, U-max, V-min and V-max. The option have_vector indicates whether a uvbox_2 has been specified. The option vector enables a point on a branch of the intersection to be specified (by supplying the x, y, and z coordinates). For this case only the branch of the intersection on which this point lies will be returned. No attempt is made to define surface regions of partial coincidence, and if the surfaces of faces are fully coincident no intersection data will be returned.