PK_ERROR_code_t PK_CURVE_intersect_curve ( --- received arguments --- PK_CURVE_t curve_1, --- first curve PK_INTERVAL_t interval_1, --- first interval PK_CURVE_t curve_2, --- second curve PK_INTERVAL_t interval_2, --- second interval const PK_CURVE_intersect_curve_o_t *options, --- options structure --- returned arguments --- int *const n_vectors, --- number of intersections PK_VECTOR_t **const vectors, --- positions of intersections double **const ts_1, --- parameters on curve_1 double **const ts_2, --- parameters on curve_2 PK_intersect_vector_t **const types --- types of intersections ) PK_CURVE_intersect_curve finds the intersections between specified regions of two curves. Specific Errors: PK_ERROR_invalid_geometry invalid geometry PK_ERROR_not_on_curve given parameters not on curves PK_ERROR_bad_end_points bad end points PK_ERROR_bad_parameter bad parameter given PK_ERROR_not_on_surface curve does not lie on surface PK_ERROR_cant_do_intersect intersection cannot be done PK_CURVE_intersect_curve finds the intersections between specified regions of two curves. It returns an array of intersection vectors vectors, arrays of parameters of the two input curves, and an array of tokens classifying the intersections. The intersections are ordered along the first curve, curve_1, and are classified according to the direction of this curve. If there are no iintersections of the curves within the bounds, n_vectors is returned as zero. The parameters of curve_1 at the intersections are returned as an array ts_1 of length n_vectors and the parameters of curve_2 in ts_2. The intersection types are returned in an array of length n_vectors. These can be one of: PK_intersect_vector_simple_c: : A simple intersection not adjoining a region of coincidence. PK_intersect_vector_tangent_c : A tangent intersection. PK_intersect_vector_start_c: : An intersection at the start of a region of coincidence. PK_intersect_vector_end_c : An intersection at the end of a region of coincidence. Whether an intersection is at the start or end of a region of coincidence is determined by the direction of the first curve, curve_1. Coincident intersections are returned for all points lying at the bounds of regions of coincidence, including the ends of fully coincident curves (or regions of curves). In the case where two closed curves are coincident, but the bounds of curve_1 are not coincident with those of curve_2, the intersections returned will be at the bounds of curve_1. The regions of the curves which are to be intersected are specified by giving an interval for each curve. These are given in the arguments interval_1 and interval_2. A surface may be supplied in the options structure which contains both the curves, the function will work without this surface but it may be more efficient to supply it. box describes the box that contains the area of interest. All intersections inside this box will be returned, but ones outside it may not be. The box may be used for efficiency. The box must be of type PK_BOX_t. Any B-curve, B-surface or offset surface must be capable of passing the full checks imposed by PK_GEOM_check.