gleSpiral(3GLE)

NAME
gleSpiral - Sweep an arbitrary contour along a helical path.

SYNTAX

void gleSpiral (int ncp,
                gleDouble contour[][2],
                gleDouble cont_normal[][2],
                gleDouble up[3],
                gleDouble startRadius,     /* spiral starts in x-y plane */
                gleDouble drdTheta,        /* change in radius per revolution */
                gleDouble startZ,          /* starting z value */
                gleDouble dzdTheta,        /* change in Z per revolution */
                gleDouble startXform[2][3], /* starting contour affine xform */
                gleDouble dXformdTheta[2][3], /* tangent change xform per revoln */
                gleDouble startTheta,      /* start angle in x-y plane */
                gleDouble sweepTheta);     /* degrees to spiral around */

ARGUMENTS

ncp number of contour points

contour
    2D contour

cont_normal
    2D contour normals

up  up vector for contour

startRadius
    spiral starts in x-y plane

drdTheta
    change in radius per revolution

startZ
    starting z value

dzdTheta
    change in Z per revolution

startXform
    starting contour affine transformation

dXformdTheta
    tangent change xform per revolution

startTheta
    start angle in x-y plane

sweepTheta
    degrees to spiral around

DESCRIPTION

Sweep an arbitrary contour along a helical path.

The axis of the helix lies along the modeling coordinate z-axis.

An affine transform can be applied as the contour is swept. For most ordinary usage, the affines should be given as NULL.

The "startXform[][]" is an affine matrix applied to the contour to deform the contour. Thus, "startXform" of the form

     | cos sin 0 |
     | -sin cos 0 |

will rotate the contour (in the plane of the contour), while

     | 1 0 tx |
     | 0 1 ty |

will translate the contour, and

     | sx 0 0 |
     | 0 sy 0 |

scales along the two axes of the contour. In particular, note that

     | 1 0 0 |
     | 0 1 0 |

is the identity matrix.

The "dXformdTheta[][]" is a differential affine matrix that is integrated while the contour is extruded. Note that this affine matrix lives in the tangent space, and so it should have the form of a generator. Thus, dx/dt's of the form

     | 0 r 0 |
     | -r 0 0 |

rotate the the contour as it is extruded (r == 0 implies no rotation, r == 2*PI implies that the contour is rotated once, etc.), while

     | 0 0 tx |
     | 0 0 ty |

translates the contour, and

     | sx 0 0 |
     | 0 sy 0 |

scales it. In particular, note that

     | 0 0 0 |
     | 0 0 0 |

is the identity matrix -- i.e. the derivatives are zero, and therefore the integral is a constant.

SEE ALSO
gleLathe

AUTHOR
Linas Vepstas (linas@linas.org)