annotate extra/nurbs/src/basisfunder.cc @ 12672:59e8aae64812 octave-forge

prepare for release
author cdf
date Mon, 17 Aug 2015 10:23:44 +0000
parents 37d08939bb7b
children
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
5683
be2ec0458410 separate oct files for low level functions
cdf
parents:
diff changeset
1 /* Copyright (C) 2009 Carlo de Falco
6958
23ff23c91d06 Slight modifications in the help
rafavzqz
parents: 5683
diff changeset
2
23ff23c91d06 Slight modifications in the help
rafavzqz
parents: 5683
diff changeset
3 This program is free software: you can redistribute it and/or modify
5683
be2ec0458410 separate oct files for low level functions
cdf
parents:
diff changeset
4 it under the terms of the GNU General Public License as published by
11634
37d08939bb7b apply changes requested by David
cdf
parents: 6958
diff changeset
5 the Free Software Foundation, either version 3 of the License, or
5683
be2ec0458410 separate oct files for low level functions
cdf
parents:
diff changeset
6 (at your option) any later version.
6958
23ff23c91d06 Slight modifications in the help
rafavzqz
parents: 5683
diff changeset
7
5683
be2ec0458410 separate oct files for low level functions
cdf
parents:
diff changeset
8 This program is distributed in the hope that it will be useful,
be2ec0458410 separate oct files for low level functions
cdf
parents:
diff changeset
9 but WITHOUT ANY WARRANTY; without even the implied warranty of
be2ec0458410 separate oct files for low level functions
cdf
parents:
diff changeset
10 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
be2ec0458410 separate oct files for low level functions
cdf
parents:
diff changeset
11 GNU General Public License for more details.
be2ec0458410 separate oct files for low level functions
cdf
parents:
diff changeset
12
be2ec0458410 separate oct files for low level functions
cdf
parents:
diff changeset
13 You should have received a copy of the GNU General Public License
6958
23ff23c91d06 Slight modifications in the help
rafavzqz
parents: 5683
diff changeset
14 along with this program. If not, see <http://www.gnu.org/licenses/>.
5683
be2ec0458410 separate oct files for low level functions
cdf
parents:
diff changeset
15 */
be2ec0458410 separate oct files for low level functions
cdf
parents:
diff changeset
16
be2ec0458410 separate oct files for low level functions
cdf
parents:
diff changeset
17 #include <octave/oct.h>
be2ec0458410 separate oct files for low level functions
cdf
parents:
diff changeset
18 #include "low_level_functions.h"
be2ec0458410 separate oct files for low level functions
cdf
parents:
diff changeset
19
be2ec0458410 separate oct files for low level functions
cdf
parents:
diff changeset
20 DEFUN_DLD(basisfunder, args, nargout,"\n\
be2ec0458410 separate oct files for low level functions
cdf
parents:
diff changeset
21 BASISFUNDER: B-Spline Basis function derivatives\n\
be2ec0458410 separate oct files for low level functions
cdf
parents:
diff changeset
22 \n\
be2ec0458410 separate oct files for low level functions
cdf
parents:
diff changeset
23 Calling Sequence:\n\
be2ec0458410 separate oct files for low level functions
cdf
parents:
diff changeset
24 \n\
6958
23ff23c91d06 Slight modifications in the help
rafavzqz
parents: 5683
diff changeset
25 ders = basisfunder (ii, pl, uu, k, nd)\n\
5683
be2ec0458410 separate oct files for low level functions
cdf
parents:
diff changeset
26 \n\
be2ec0458410 separate oct files for low level functions
cdf
parents:
diff changeset
27 INPUT:\n\
be2ec0458410 separate oct files for low level functions
cdf
parents:
diff changeset
28 \n\
6958
23ff23c91d06 Slight modifications in the help
rafavzqz
parents: 5683
diff changeset
29 ii - knot span\n\
5683
be2ec0458410 separate oct files for low level functions
cdf
parents:
diff changeset
30 pl - degree of curve\n\
6958
23ff23c91d06 Slight modifications in the help
rafavzqz
parents: 5683
diff changeset
31 uu - parametric points\n\
5683
be2ec0458410 separate oct files for low level functions
cdf
parents:
diff changeset
32 k - knot vector\n\
be2ec0458410 separate oct files for low level functions
cdf
parents:
diff changeset
33 nd - number of derivatives to compute\n\
be2ec0458410 separate oct files for low level functions
cdf
parents:
diff changeset
34 \n\
be2ec0458410 separate oct files for low level functions
cdf
parents:
diff changeset
35 OUTPUT:\n\
be2ec0458410 separate oct files for low level functions
cdf
parents:
diff changeset
36 \n\
be2ec0458410 separate oct files for low level functions
cdf
parents:
diff changeset
37 ders - ders(n, i, :) (i-1)-th derivative at n-th point\n\
6958
23ff23c91d06 Slight modifications in the help
rafavzqz
parents: 5683
diff changeset
38 \n\
23ff23c91d06 Slight modifications in the help
rafavzqz
parents: 5683
diff changeset
39 Adapted from Algorithm A2.3 from 'The NURBS BOOK' pg72. \n\
23ff23c91d06 Slight modifications in the help
rafavzqz
parents: 5683
diff changeset
40 \n\
5683
be2ec0458410 separate oct files for low level functions
cdf
parents:
diff changeset
41 ")
be2ec0458410 separate oct files for low level functions
cdf
parents:
diff changeset
42 {
be2ec0458410 separate oct files for low level functions
cdf
parents:
diff changeset
43 octave_value_list retval;
be2ec0458410 separate oct files for low level functions
cdf
parents:
diff changeset
44
be2ec0458410 separate oct files for low level functions
cdf
parents:
diff changeset
45 const NDArray i = args(0).array_value ();
be2ec0458410 separate oct files for low level functions
cdf
parents:
diff changeset
46 int pl = args(1).int_value ();
be2ec0458410 separate oct files for low level functions
cdf
parents:
diff changeset
47 const NDArray u = args(2).array_value ();
be2ec0458410 separate oct files for low level functions
cdf
parents:
diff changeset
48 const RowVector U = args(3).row_vector_value ();
be2ec0458410 separate oct files for low level functions
cdf
parents:
diff changeset
49 int nd = args(4).int_value ();
be2ec0458410 separate oct files for low level functions
cdf
parents:
diff changeset
50
be2ec0458410 separate oct files for low level functions
cdf
parents:
diff changeset
51 if (!error_state)
be2ec0458410 separate oct files for low level functions
cdf
parents:
diff changeset
52 {
12672
59e8aae64812 prepare for release
cdf
parents: 11634
diff changeset
53 if (i.numel () != u.numel ())
5683
be2ec0458410 separate oct files for low level functions
cdf
parents:
diff changeset
54 print_usage ();
be2ec0458410 separate oct files for low level functions
cdf
parents:
diff changeset
55
12672
59e8aae64812 prepare for release
cdf
parents: 11634
diff changeset
56 NDArray dersv (dim_vector (i.numel (), nd+1, pl+1), 0.0);
5683
be2ec0458410 separate oct files for low level functions
cdf
parents:
diff changeset
57 NDArray ders(dim_vector(nd+1, pl+1), 0.0);
12672
59e8aae64812 prepare for release
cdf
parents: 11634
diff changeset
58 for ( octave_idx_type jj(0); jj < i.numel (); jj++)
5683
be2ec0458410 separate oct files for low level functions
cdf
parents:
diff changeset
59 {
be2ec0458410 separate oct files for low level functions
cdf
parents:
diff changeset
60 basisfunder (int (i(jj)), pl, u(jj), U, nd, ders);
be2ec0458410 separate oct files for low level functions
cdf
parents:
diff changeset
61
be2ec0458410 separate oct files for low level functions
cdf
parents:
diff changeset
62 for (octave_idx_type kk(0); kk < nd+1; kk++)
be2ec0458410 separate oct files for low level functions
cdf
parents:
diff changeset
63 for (octave_idx_type ll(0); ll < pl+1; ll++)
be2ec0458410 separate oct files for low level functions
cdf
parents:
diff changeset
64 {
be2ec0458410 separate oct files for low level functions
cdf
parents:
diff changeset
65 dersv(jj, kk, ll) = ders(kk, ll);
be2ec0458410 separate oct files for low level functions
cdf
parents:
diff changeset
66 }
be2ec0458410 separate oct files for low level functions
cdf
parents:
diff changeset
67 }
be2ec0458410 separate oct files for low level functions
cdf
parents:
diff changeset
68 retval(0) = dersv;
be2ec0458410 separate oct files for low level functions
cdf
parents:
diff changeset
69 }
be2ec0458410 separate oct files for low level functions
cdf
parents:
diff changeset
70 return retval;
be2ec0458410 separate oct files for low level functions
cdf
parents:
diff changeset
71 }