gluNurbsSurface.3gl




Name

  gluNurbsSurface - define the shape of	a NURBS	surface


C Specification

  void gluNurbsSurface(	GLUnurbsObj *nobj,
			GLint uknot_count,
			GLfloat	*uknot,
			GLint vknot_count,
			GLfloat	*vknot,
			GLint u_stride,
			GLint v_stride,
			GLfloat	*ctlarray,
			GLint uorder,
			GLint vorder,
			GLenum type )


Parameters


  nobj	       Specifies the NURBS object (created with	gluNewNurbsRenderer).

  uknot_count  Specifies the number of knots in	the parametric u direction.

  uknot	       Specifies an array of uknot_count nondecreasing knot values in
	       the parametric u	direction.

  vknot_count  Specifies the number of knots in	the parametric v direction.

  vknot	       Specifies an array of vknot_count nondecreasing knot values in
	       the parametric v	direction.

  u_stride     Specifies the offset (as	a number of  single-precision
	       floating	point values) between successive control points	in
	       the parametric u	direction in ctlarray.

  v_stride     Specifies the offset (in	single-precision floating-point
	       values) between successive control points in the	parametric v
	       direction in ctlarray.

  ctlarray     Specifies an array containing control points for	the NURBS
	       surface.	 The offsets between successive	control	points in the
	       parametric u and	v directions are given by u_stride and
	       v_stride.

  uorder       Specifies the order of the NURBS	surface	in the parametric u
	       direction.  The order is	one more than the degree, hence	a
	       surface that is cubic in	u has a	u order	of 4.

  vorder       Specifies the order of the NURBS	surface	in the parametric v
	       direction.  The order is	one more than the degree, hence	a
	       surface that is cubic in	v has a	v order	of 4.

  type	       Specifies type of the surface. type can be any of the valid
	       two-dimensional evaluator types (such as	GL_MAP2_VERTEX_3 or
	       GL_MAP2_COLOR_4).



Description

  Use gluNurbsSurface within a NURBS (Non-Uniform Rational B-Spline) surface
  definition to	describe the shape of a	NURBS surface (before any trimming).
  To mark the beginning	of a NURBS surface definition, use the
  gluBeginSurface command.  To mark the	end of a NURBS surface definition,
  use the gluEndSurface	command.  Call gluNurbsSurface within a	NURBS surface
  definition only.

  Positional, texture, and color coordinates are associated with a surface by
  presenting each as a separate	gluNurbsSurface	between	a
  gluBeginSurface/gluEndSurface	pair.  No more than one	call to
  gluNurbsSurface for each of color, position, and texture data	can be made
  within a single gluBeginSurface/gluEndSurface	pair.  Exactly one call	must
  be made to describe the position of the surface (a type of GL_MAP2_VERTEX_3
  or GL_MAP2_VERTEX_4).

  A NURBS surface can be trimmed by using the commands gluNurbsCurve and
  gluPwlCurve between calls to gluBeginTrim and	gluEndTrim.

  Note that a gluNurbsSurface with uknot_count knots in	the u direction	and
  vknot_count knots in the v direction with orders uorder and vorder must
  have (uknot_count - uorder) x	(vknot_count - vorder) control points.


Example

  The following	commands render	a textured NURBS surface with normals; the
  texture coordinates and normals are also NURBS surfaces:

  gluBeginSurface(nobj);
     gluNurbsSurface(nobj, ...,	GL_MAP2_TEXTURE_COORD_2);
     gluNurbsSurface(nobj, ...,	GL_MAP2_NORMAL);
     gluNurbsSurface(nobj, ...,	GL_MAP2_VERTEX_4); gluEndSurface(nobj);


See Also

  gluBeginSurface, gluBeginTrim, gluNewNurbsRenderer, gluNurbsCurve,
  gluPwlCurve




Introduction | Alphabetic | Specification

Last Edited: Mon, May 22, 1995

AFV