1991-2006 Silicon Graphics, Inc.

gluNurbsCurve

3G

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

## 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 `GLU_MAP1_VERTEX_3` or `GLU_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 `GLU_MAP1_VERTEX_3` or `GLU_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 that stitch well, use

gluPwlCurve

.

## See Also

gluBeginCurve

,

gluBeginTrim

,

gluNewNurbsRenderer

,

gluPwlCurve

## Copyright

Copyright 1991-2006 Silicon Graphics, Inc. This document is licensed under the SGI Free Software B License. For details, see http://oss.sgi.com/projects/FreeB/.