struct PK_SPHERE_sf_s { PK_AXIS2_sf_t basis_set; ---a cartesian point, a ref_direction and a normal double radius; ---the radius of the sphere(>0) }; typedef struct PK_SPHERE_sf_s PK_SPHERE_sf_t; Specific Errors: PK_ERROR_radius_le_0 radius less than or equal to zero The parameterisation of the sphere is as follows: C = basis_set.location x = basis_set.ref_direction y = basis_set.axis X basis_set.ref_direction ( cross product ) z = basis_set.axis R = radius S( u, v) = C + R( cos v )( ( cos u )x + ( sin u )y ) + R( sin v )z where ( 0 <= u < 2PI; -PI/2 <= v < PI/2 ) Radius must be larger than zero. The surface normal points away from the centre.