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)