]> Creatis software - CreaPhase.git/blob - octave_packages/nurbs-1.3.6/private/onebasisfunder__.m
Add a useful package (from Source forge) for octave
[CreaPhase.git] / octave_packages / nurbs-1.3.6 / private / onebasisfunder__.m
1 function [N, Nder] = onebasisfunder__ (u, p, U)
2
3 %  __ONEBASISFUNDER__: Undocumented internal function
4 %
5 %   Copyright (C) 2012 Rafael Vazquez
6 %   This software comes with ABSOLUTELY NO WARRANTY; see the file
7 %   COPYING for details.  This is free software, and you are welcome
8 %   to distribute it under the conditions laid out in COPYING.
9
10   N = zeros (size (u));
11   Nder = zeros (size (u));
12
13   for ii = 1:numel (u)
14     if (~ any (U <= u(ii))) || (~ any (U > u(ii)))
15       continue;
16     elseif (p == 0)
17       N(ii) = 1;
18       Nder(ii) = 0;
19       continue;
20     else
21       ln = u(ii) - U(1);
22       ld = U(end-1) - U(1);
23       if (ld ~= 0)
24         aux = onebasisfun__ (u(ii), p-1, U(1:end-1))/ ld;
25         N(ii) = N(ii) + ln * aux;
26         Nder(ii) = Nder(ii) + p * aux;
27       end
28
29       dn = U(end) - u(ii);
30       dd = U(end) - U(2);
31       if (dd ~= 0)
32         aux = onebasisfun__ (u(ii), p-1, U(2:end))/ dd;
33         N(ii) = N(ii) + dn * aux;
34         Nder(ii) = Nder(ii) - p * aux;
35       end
36     end
37   end
38   
39 end