gleSpiral

gleSpiral(3GLE)                       GLE                      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)



GLE                                   3.0                      gleSpiral(3GLE)