PK_ELLIPSE_sf_t   



struct PK_ELLIPSE_sf_s
    {
    PK_AXIS2_sf_t basis_set;    --- a centre, a major axis and an axis
    double        R1;           --- the larger radius of the ellipse(>0)
    double        R2;           --- the smaller radius of the ellipse(>0)
    };

typedef struct PK_ELLIPSE_sf_s PK_ELLIPSE_sf_t;



Specific Errors:
PK_ERROR_radius_le_0            radius less than or equal to zero
PK_ERROR_R1_R2_mismatch         R1 less than or equal to R2



The parameterisation of the ellipse is as follows:

    C = basis_set.location
    x = basis_set.ref_direction                  ( major axis )
    y = basis_set.axis X basis_set.ref_direction ( cross product )
    z = basis_set.axis
    R = R1
    r = R2

    P( t ) = C + (R cos t)x + (r sin t)y

                               where  ( 0 <= t < 2PI )

R1 MUST be larger than R2.  Both R1 and R2 must be larger than zero.