---
name: "gleSpiral"
section: "3xgle"
platform: "linux"
package: "glut-doc"
version: "3.7-5"
release: "Debian 2.2 (Potato)"
platforms: ["linux"]
url: "https://new.carta.tech/gleSpiral/3xgle"
---

# gleSpiral(3xgle)

Sweep an arbitrary contour along a helical path.

## 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@fc.net)
