**gluNurbsCurve**

### NAME

**gluNurbsCurve** -- define the shape of a NURBS curve
### C SPECIFICATION

void **gluNurbsCurve**(GLUnurbsObj **nobj*,
GLint *nknots*,
GLfloat **knot*,
GLint *stride*,
GLfloat **ctlarray*,
GLint *order*,
GLenum *type*)

### PARAMETERS

*nobj*-
Specifies the NURBS object (created with
**gluNewNurbsRenderer**).

*nknots*-
Specifies the number of knots in
*knot*. *nknots* equals the
number of control points plus the order.

*knot*-
Specifies an array of
*nknots* nondecreasing knot values.

*stride*-
Specifies the offset (as a number of single-precision floating-point
values) between successive curve control points.

*ctlarray*-
Specifies a pointer to an array of control points. The coordinates must
agree with
*type*, specified below.

*order*-
Specifies the order of the NURBS curve.
*order* equals degree + 1,
hence a cubic curve has an order of 4.

*type*-
Specifies the type of the curve. If this curve is defined within a
**gluBeginCurve** /
**gluEndCurve** pair, then the type
can be any of the valid one-dimensional evaluator types (such as
**GL_MAP1_VERTEX_3** or **GL_MAP1_COLOR_4**). Between a
**gluBeginTrim** /
**gluEndTrim** pair, the only valid
types are **GLU_MAP1_TRIM_2** and **GLU_MAP1_TRIM_3**.

### DESCRIPTION

Use **gluNurbsCurve** to describe a NURBS curve.
When **gluNurbsCurve** appears between a
**gluBeginCurve** /
**gluEndCurve** pair, it is used to
describe a curve to be rendered. Positional, texture, and color coordinates are
associated by presenting each as a separate **gluNurbsCurve** between a
**gluBeginCurve** /
**gluEndCurve** pair. No more than one
call to **gluNurbsCurve** for each of color, position, and texture data can
be made within a single
**gluBeginCurve** /
**gluEndCurve** pair. Exactly one call
must be made to describe the position of the curve (a type of
**GL_MAP1_VERTEX_3** or **GL_MAP1_VERTEX_4)**.

When **gluNurbsCurve** appears between a
**gluBeginCurve** /
**gluEndCurve** pair, it is used to
describe a trimming curve on a NURBS surface. If type is
**GLU_MAP1_TRIM_2**, then it describes a curve in two-dimensional
(*u* and *v*) parameter space. If it is **GLU_MAP1_TRIM_3**,
then it describes a curve in two-dimensional homogeneous (*u*, *v*,
and *w*) parameter space. See the
**gluBeginTrim** reference page for more
discussion about trimming curves.

### EXAMPLE

The following commands render a textured NURBS curve with normals:
gluBeginCurve(nobj);
gluNurbsCurve(nobj, ..., GL_MAP1_TEXTURE_COORD_2);
gluNurbsCurve(nobj, ..., GL_MAP1_NORMAL);
gluNurbsCurve(nobj, ..., GL_MAP1_VERTEX_4);
gluEndCurve(nobj);

### NOTES

To define trim curves which stitch well use
**gluPwlCurve**.
### SEE ALSO

**gluBeginCurve**,
**gluBeginTrim**,
**gluNewNurbsRenderer**,
**gluPwlCurve**

back to the **OpenGL index page**

© *1995 Uwe Behrens All rights reserved*