# FreeBSD Manual Pages

```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

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  de-
form 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 inte-
grated while the	contour	is extruded.  Note  that  this	affine	matrix
lives in	the tangent space, and so it should have the form of a genera-
tor.  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.