gleSpiral.3gle

Langue: en

Autres versions - même langue

Version: 3.0 (debian - 07/07/09)

Section: 3 (Bibliothèques de fonctions)

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)