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