typedefstruct
    {
    doubleqi[3]; // the initial configuration
    doubleparam[3]; // the lengths of the three segments
    doublerho; // model forward velocity / model angular velocity
    inttype; // path type. one of LSL, LSR, …
    } DubinsPath;

    doublefmodr( doublex, doubley)
    doublemod2pi( doubletheta )
    intdubins_init_normalised( doublealpha, doublebeta, doubled, DubinsPath*path)
    intdubins_init( doubleq0[3], doubleq1[3], doublerho, DubinsPath*path )
    intdubins_LSL( doublealpha, doublebeta, doubled, doubleoutputs );
    intdubins_RSR( doublealpha, doublebeta, doubled, double
    outputs );
    intdubins_LSR( doublealpha, doublebeta, doubled, doubleoutputs );
    intdubins_RSL( doublealpha, doublebeta, doubled, double
    outputs );
    intdubins_LRL( doublealpha, doublebeta, doubled, doubleoutputs );
    intdubins_RLR( doublealpha, doublebeta, doubled, double
    outputs );
    doubledubins_path_length( DubinsPath*path )
    intdubins_path_type( DubinsPath*path )
    voiddubins_segment( doublet, doubleqi[3], doubleqt[3], inttype)
    intdubins_path_sample( DubinsPath*path, doublet, doubleq[3] )
    intdubins_path_sample_many( DubinsPathpath, DubinsPathSamplingCallbackcb, doublestepSize, voiduser_data )