X-Git-Url: https://git.creatis.insa-lyon.fr/pubgit/?p=CreaPhase.git;a=blobdiff_plain;f=octave_packages%2Fnurbs-1.3.6%2Fnumbasisfun.m;fp=octave_packages%2Fnurbs-1.3.6%2Fnumbasisfun.m;h=a33a070c07fa9b9a3159cf8b5ff29178aace89f4;hp=0000000000000000000000000000000000000000;hb=f5f7a74bd8a4900f0b797da6783be80e11a68d86;hpb=1705066eceaaea976f010f669ce8e972f3734b05 diff --git a/octave_packages/nurbs-1.3.6/numbasisfun.m b/octave_packages/nurbs-1.3.6/numbasisfun.m new file mode 100644 index 0000000..a33a070 --- /dev/null +++ b/octave_packages/nurbs-1.3.6/numbasisfun.m @@ -0,0 +1,49 @@ +function B = numbasisfun (iv, uv, p, U) + +% NUMBASISFUN: List non-zero Basis functions for B-Spline in a given knot-span +% +% Calling Sequence: +% +% N = numbasisfun(i,u,p,U) +% +% INPUT: +% +% i - knot span ( from FindSpan() ) +% u - parametric point +% p - spline degree +% U - knot sequence +% +% OUTPUT: +% +% N - Basis functions (numel(u)x(p+1)) +% +% Copyright (C) 2009 Carlo de Falco +% +% 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 2 of the License, or +% (at your option) any later version. + +% This program is distributed in the hope that it will be useful, +% but WITHOUT ANY WARRANTY; without even the implied warranty of +% MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +% GNU General Public License for more details. +% +% You should have received a copy of the GNU General Public License +% along with this program. If not, see . + +B = bsxfun (@(a, b) a+b,iv-p, (0:p).').'; + +end + +%!test +%! n = 3; +%! U = [0 0 0 1/2 1 1 1]; +%! p = 2; +%! u = linspace (0, 1, 10); +%! s = findspan (n, p, u, U); +%! Bref = [0 0 0 0 0 1 1 1 1 1; ... +%! 1 1 1 1 1 2 2 2 2 2; ... +%! 2 2 2 2 2 3 3 3 3 3].'; +%! B = numbasisfun (s, u, p, U); +%! assert (B, Bref) \ No newline at end of file