lsst.astshim
gf5dcc679e7+7aca86229d
Toggle main menu visibility
Loading...
Searching...
No Matches
src
SplineMap.cc
Go to the documentation of this file.
1
/*
2
* This file is part of astshim.
3
*
4
* Developed for the LSST Data Management System.
5
* This product includes software developed by the LSST Project
6
* (https://www.lsst.org).
7
* See the COPYRIGHT file at the top-level directory of this distribution
8
* for details of code ownership.
9
*
10
* This program is free software: you can redistribute it and/or modify
11
* it under the terms of the GNU General Public License as published by
12
* the Free Software Foundation, either version 3 of the License, or
13
* (at your option) any later version.
14
*
15
* This program is distributed in the hope that it will be useful,
16
* but WITHOUT ANY WARRANTY; without even the implied warranty of
17
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
18
* GNU General Public License for more details.
19
*
20
* You should have received a copy of the GNU General Public License
21
* along with this program. If not, see <https://www.gnu.org/licenses/>.
22
*/
23
#include <sstream>
24
#include <stdexcept>
25
26
#include "
astshim/SplineMap.h
"
27
28
namespace
ast
{
29
30
SplineMap::SplineMap
(AstSplineMap *map) :
Mapping
(reinterpret_cast<AstMapping *>(map)) {
31
if
(!astIsASplineMap(
getRawPtr
())) {
32
std::ostringstream
os;
33
os <<
"this is a "
<<
getClassName
() <<
", which is not a SplineMap"
;
34
throw
std::invalid_argument
(os.
str
());
35
}
36
}
37
39
AstSplineMap *SplineMap::_makeRawSplineMap(
int
kx,
int
ky,
int
nx,
int
ny,
std::vector<double>
const
&tx,
40
std::vector<double>
const
&ty,
std::vector<double>
const
&cu,
std::vector<double>
const
&cv,
41
std::string
const
&options)
const
{
42
43
const
size_t
nTx = tx.
size
();
44
const
size_t
nTy = ty.
size
();
45
const
size_t
nCoeffsU = cu.
size
();
46
const
size_t
nCoeffsV = cv.
size
();
47
48
if
((kx < 0) || (ky < 0) || (nx < 0) || (ny < 0)) {
49
throw
std::invalid_argument
(
"The polynomial order and number of coefficients must not be negative."
);
50
}
51
if
(((
size_t
)(kx + nx) != nTx) || ((
size_t
)(ky + ny) != nTy)) {
52
throw
std::invalid_argument
(
"The length of the knot positions must equal the polynomial order plus "
53
"the number of coefficients."
);
54
}
55
if
(((
size_t
)(nx * ny) != nCoeffsU) || ((
size_t
)(nx * ny) != nCoeffsV)) {
56
throw
std::invalid_argument(
"The length of the coefficients must equal product of the arguments nx "
57
"and ny."
);
58
}
59
60
return
reinterpret_cast<
AstSplineMap *
>
(astSplineMap(kx, ky, nx, ny, tx.
data
(), ty.
data
(), cu.
data
(),
61
cv.
data
(), options.
c_str
()));
62
}
63
64
}
// namespace ast
SplineMap.h
std::ostringstream
std::string
std::string::c_str
T c_str(T... args)
ast::Mapping::Mapping
Mapping(Mapping const &)=default
Copy constructor: make a deep copy.
ast::Object::getClassName
std::string getClassName() const
Get Class: the name of the class (e.g.
Definition
Object.h:139
ast::Object::getRawPtr
AstObject const * getRawPtr() const
Get the raw AST pointer.
Definition
Object.h:292
ast::SplineMap::SplineMap
SplineMap(int kx, int ky, int nx, int ny, std::vector< double > const &tx, std::vector< double > const &ty, std::vector< double > const &cu, std::vector< double > const &cv, std::string const &options="")
Construct a SplineMap with the forward transform specified by the supplied b-splines and the inverse ...
Definition
SplineMap.h:76
std::vector::data
T data(T... args)
std::invalid_argument
ast
AST wrapper classes and functions.
Definition
attributes_channel.dox:1
std::vector::size
T size(T... args)
std::ostringstream::str
T str(T... args)
std::vector
Generated on
for lsst.astshim by
1.17.0