NRBBASISFUN: Basis functions for NURBS

 Calling Sequence:
 
    B     = nrbbasisfun (u, crv)
    B     = nrbbasisfun ({u, v}, srf)
   [B, N] = nrbbasisfun ({u, v}, srf)
   [B, N] = nrbbasisfun (pts, srf)
   [B, N] = nrbbasisfun ({u, v, w}, vol)
   [B, N] = nrbbasisfun (pts, vol)

    INPUT:
   
      u   - parametric coordinates along u direction
      v   - parametric coordinates along v direction
      w   - parametric coordinates along w direction
      pts - array of scattered points in parametric domain, array size: (ndim,num_points)
      crv - NURBS curve
      srf - NURBS surface
      vol - NURBS volume
   
    If the parametric coordinates are given in a cell-array, the values
     are computed in a tensor product set of points

    OUTPUT:
   
      B - Value of the basis functions at the points
          size(B)=[npts, prod(nrb.order)]

      N - Indices of the basis functions that are nonvanishing at each
          point. size(N) == size(B)
   

    Copyright (C) 2009 Carlo de Falco
    Copyright (C) 2015 Jacopo Corno
    Copyright (C) 2016 Rafael Vazquez

    This program is free software: you can redistribute it and/or modify
    it under the terms of the GNU General Public License as published by
    the Free Software Foundation, either version 3 of the License, or
    (at your option) any later version.

Demonstration 1

The following code

 U = [0 0 0 0 1 1 1 1];
 x = [0 1/3 2/3 1] ;
 y = [0 0 0 0];
 w = [1 1 1 1];
 nrb = nrbmak ([x;y;y;w], U);
 u = linspace(0, 1, 30);
 B = nrbbasisfun (u, nrb);
 xplot = sum(bsxfun(@(x,y) x.*y, B, x),2);
 plot(xplot, B)
 title('Cubic Bernstein polynomials')
 hold off

Produces the following figure

Figure 1

Package: nurbs