X-Git-Url: https://git.creatis.insa-lyon.fr/pubgit/?p=CreaPhase.git;a=blobdiff_plain;f=octave_packages%2Fnurbs-1.3.6%2Fprivate%2Fonebasisfunder__.m;fp=octave_packages%2Fnurbs-1.3.6%2Fprivate%2Fonebasisfunder__.m;h=b397d108e34c4e743667365bbe479c43e8840539;hp=0000000000000000000000000000000000000000;hb=f5f7a74bd8a4900f0b797da6783be80e11a68d86;hpb=1705066eceaaea976f010f669ce8e972f3734b05 diff --git a/octave_packages/nurbs-1.3.6/private/onebasisfunder__.m b/octave_packages/nurbs-1.3.6/private/onebasisfunder__.m new file mode 100644 index 0000000..b397d10 --- /dev/null +++ b/octave_packages/nurbs-1.3.6/private/onebasisfunder__.m @@ -0,0 +1,39 @@ +function [N, Nder] = onebasisfunder__ (u, p, U) + +% __ONEBASISFUNDER__: Undocumented internal function +% +% Copyright (C) 2012 Rafael Vazquez +% This software comes with ABSOLUTELY NO WARRANTY; see the file +% COPYING for details. This is free software, and you are welcome +% to distribute it under the conditions laid out in COPYING. + + N = zeros (size (u)); + Nder = zeros (size (u)); + + for ii = 1:numel (u) + if (~ any (U <= u(ii))) || (~ any (U > u(ii))) + continue; + elseif (p == 0) + N(ii) = 1; + Nder(ii) = 0; + continue; + else + ln = u(ii) - U(1); + ld = U(end-1) - U(1); + if (ld ~= 0) + aux = onebasisfun__ (u(ii), p-1, U(1:end-1))/ ld; + N(ii) = N(ii) + ln * aux; + Nder(ii) = Nder(ii) + p * aux; + end + + dn = U(end) - u(ii); + dd = U(end) - U(2); + if (dd ~= 0) + aux = onebasisfun__ (u(ii), p-1, U(2:end))/ dd; + N(ii) = N(ii) + dn * aux; + Nder(ii) = Nder(ii) - p * aux; + end + end + end + +end