Home > freetb4matlab > nurbs > nrbmak.m




function nurbs = nrbmak(coefs,knots)


 NRBMAK: Construct the NURBS structure given the control points
            and the knots.
 Calling Sequence:
   nurbs   = nrbmak(cntrl,knots);
   cntrl       : Control points, these can be either Cartesian or
         homogeneous coordinates.
         For a curve the control points are represented by a
         matrix of size (dim,nu) and for a surface a multidimensional
         array of size (dim,nu,nv). Where nu is number of points along
         the parametric U direction, and nv the number of points
               along the V direction. Dim is the dimension valid options
         2 .... (x,y)        2D Cartesian coordinates
         3 .... (x,y,z)      3D Cartesian coordinates
         4 .... (wx,wy,wz,w) 4D homogeneous coordinates
   knots    : Non-decreasing knot sequence spanning the interval
               [0.0,1.0]. It's assumed that the curves and surfaces
               are clamped to the start and end control points by knot
               multiplicities equal to the spline order.
               For curve knots form a vector and for a surface the knot
               are stored by two vectors for U and V in a cell structure.
               {uknots vknots}
   nurbs     : Data structure for representing a NURBS curve.
 NURBS Structure:
   Both curves and surfaces are represented by a structure that is
   compatible with the Spline Toolbox from Mathworks
     nurbs.form   .... Type name 'B-NURBS'
     nurbs.dim    .... Dimension of the control points
     nurbs.number .... Number of Control points
       nurbs.coefs  .... Control Points
       nurbs.order  .... Order of the spline
       nurbs.knots  .... Knot sequence
   Note: the control points are always converted and stored within the
   NURBS structure as 4D homogeneous coordinates. A curve is always stored 
   along the U direction, and the vknots element is an empty matrix. For
   a surface the spline degree is a vector [du,dv] containing the degree
   along the U and V directions respectively.
   This function is used as a convenient means of constructing the NURBS
   data structure. Many of the other functions in the toolbox rely on the 
   NURBS structure been correctly defined as shown above. The nrbmak not
   only constructs the proper structure, but also checks for consistency.
   The user is still free to build his own structure, in fact a few
   functions in the toolbox do this for convenience.
   Construct a 2D line from (0.0,0.0) to (1.5,3.0).
   For a straight line a spline of order 2 is required.
   Note that the knot sequence has a multiplicity of 2 at the
   start (0.0,0.0) and end (1.0 1.0) in order to clamp the ends.
   line = nrbmak([0.0 1.5; 0.0 3.0],[0.0 0.0 1.0 1.0]);
   nrbplot(line, 2);
   Construct a surface in the x-y plane i.e
     ^  (0.0,1.0) ------------ (1.0,1.0)
     |      |                      |
     | V    |                      |
     |      |      Surface         |
     |      |                      |
     |      |                      |
     |  (0.0,0.0) ------------ (1.0,0.0)

   coefs = cat(3,[0 0; 0 1],[1 1; 0 1]);
   knots = {[0 0 1 1]  [0 0 1 1]}
   plane = nrbmak(coefs,knots);
   nrbplot(plane, [2 2]);


This function calls: This function is called by:
Generated on Sat 16-May-2009 00:04:49 by m2html © 2003