lsst.astshim
gf5dcc679e7+7aca86229d
Toggle main menu visibility
Loading...
Searching...
No Matches
src
functional.cc
Go to the documentation of this file.
1
/*
2
* LSST Data Management System
3
* Copyright 2017 AURA/LSST.
4
*
5
* This product includes software developed by the
6
* LSST Project (http://www.lsst.org/).
7
*
8
* This program is free software: you can redistribute it and/or modify
9
* it under the terms of the GNU General Public License as published by
10
* the Free Software Foundation, either version 3 of the License, or
11
* (at your option) any later version.
12
*
13
* This program is distributed in the hope that it will be useful,
14
* but WITHOUT ANY WARRANTY; without even the implied warranty of
15
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
16
* GNU General Public License for more details.
17
*
18
* You should have received a copy of the LSST License Statement and
19
* the GNU General Public License along with this program. If not,
20
* see <https://www.lsstcorp.org/LegalNotices/>.
21
*/
22
#include <stdexcept>
23
#include <string>
24
25
#include "
astshim/functional.h
"
26
#include "
astshim/UnitMap.h
"
27
#include "
astshim/UnitNormMap.h
"
28
#include "
astshim/ParallelMap.h
"
29
#include "
astshim/SeriesMap.h
"
30
31
namespace
ast
{
32
33
std::shared_ptr<FrameSet>
append
(
FrameSet
const
& first,
FrameSet
const
& second) {
34
std::shared_ptr<FrameSet>
const
merged = first.
copy
();
35
std::shared_ptr<FrameSet>
const
newFrames = second.
copy
();
36
37
newFrames->setCurrent(
FrameSet::BASE
);
38
int
const
joinNAxes = first.
getFrame
(
FrameSet::CURRENT
)->getNAxes();
39
merged->addFrame(
FrameSet::CURRENT
,
UnitMap
(joinNAxes), *newFrames);
40
41
// All frame numbers from `second` have been offset in `merged` by number of frames in `first`
42
int
const
mergedCurrent = first.
getNFrame
() + second.
getCurrent
();
43
merged->setCurrent(mergedCurrent);
44
45
return
merged;
46
}
47
48
std::shared_ptr<Mapping>
makeRadialMapping
(
std::vector<double>
const
& center,
Mapping
const
& mapping1d) {
49
auto
naxes = center.
size
();
50
if
(mapping1d.
getNIn
() != 1) {
51
throw
std::invalid_argument
(
"mapping1d has "
+
std::to_string
(mapping1d.
getNIn
()) +
52
" inputs, instead of 1"
);
53
}
54
if
(mapping1d.
getNOut
() != 1) {
55
throw
std::invalid_argument
(
"mapping1d has "
+
std::to_string
(mapping1d.
getNOut
()) +
56
" outputs, instead of 1"
);
57
}
58
auto
unitNormMap =
UnitNormMap
(center);
59
return
std::make_shared<Mapping>
(
60
unitNormMap.then(
UnitMap
(naxes).
under
(mapping1d)).then(*unitNormMap.inverted()));
61
}
62
63
}
// namespace ast
ParallelMap.h
SeriesMap.h
UnitMap.h
UnitNormMap.h
ast::FrameSet
A FrameSet consists of a set of one or more Frames (which describe coordinate systems),...
Definition
FrameSet.h:99
ast::FrameSet::copy
std::shared_ptr< FrameSet > copy() const
Return a deep copy of this object.
Definition
FrameSet.h:147
ast::FrameSet::getFrame
std::shared_ptr< Frame > getFrame(int iframe, bool copy=true) const
Obtain a deep copy of the specified Frame.
Definition
FrameSet.h:270
ast::FrameSet::getCurrent
int getCurrent() const
Get Current: index of current Frame, starting from 1.
Definition
FrameSet.h:253
ast::FrameSet::CURRENT
static int constexpr CURRENT
index of current frame
Definition
FrameSet.h:105
ast::FrameSet::getNFrame
int getNFrame() const
Get FrameSet_NFrame "NFrame": number of Frames in the FrameSet, starting from 1.
Definition
FrameSet.h:316
ast::FrameSet::BASE
static int constexpr BASE
index of base frame
Definition
FrameSet.h:104
ast::Mapping
An abstract base class for objects which transform one set of coordinates to another.
Definition
Mapping.h:59
ast::Mapping::getNOut
int getNOut() const
Get NOut: the number of output axes.
Definition
Mapping.h:82
ast::Mapping::getNIn
int getNIn() const
Get NIn: the number of input axes.
Definition
Mapping.h:77
ast::UnitMap
A UnitMap is a unit (null) Mapping that has no effect on the coordinates supplied to it.
Definition
UnitMap.h:44
ast::UnitNormMap
The forward transformation of a UnitNormMap subtracts the specified centre and then transforms the re...
Definition
UnitNormMap.h:53
functional.h
std::invalid_argument
std::make_shared
T make_shared(T... args)
ast
AST wrapper classes and functions.
Definition
attributes_channel.dox:1
ast::append
std::shared_ptr< FrameSet > append(FrameSet const &first, FrameSet const &second)
Construct a FrameSet that performs two transformations in series.
Definition
functional.cc:33
ast::under
CmpFrame under(Frame const &next) const
Combine this frame with another to form a compound frame (CmpFrame), with the axes of this frame foll...
ast::makeRadialMapping
std::shared_ptr< Mapping > makeRadialMapping(std::vector< double > const ¢er, Mapping const &mapping1d)
Construct a radially symmetric mapping from a 1-dimensional mapping.
Definition
functional.cc:48
std::shared_ptr
std::vector::size
T size(T... args)
std::to_string
T to_string(T... args)
std::vector
Generated on
for lsst.astshim by
1.17.0