# GLUNURBSCURVE

Section: Misc. Reference Manual Pages (3G)

Page Index

## NAME

**gluNurbsCurve**
- define the shape of a NURBS curve

## C SPECIFICATION

void

**gluNurbsCurve**(
GLUnurbs*

*nurb*,

GLint *knotCount*,
GLfloat **knots*,
GLint *stride*,
GLfloat **control*,
GLint *order*,
GLenum *type* )

delim $$

## PARAMETERS

*nurb*-
Specifies the NURBS object (created with
**gluNewNurbsRenderer**).
*knotCount*-
Specifies the number of knots in
*knots*.
*knotCount* equals the number of control points plus the order.
*knots*-
Specifies an array of
*knotCount* nondecreasing knot values.
*stride*-
Specifies the offset (as a number of single-precision floating-point values)
between successive curve control points.
*control*-
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 **gluBeginTrim**/**gluEndTrim** 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(3G)**,

**gluBeginTrim(3G)**,

**gluNewNurbsRenderer(3G)**,

**gluPwlCurve(3G)**