23#ifndef LSST_AFW_GEOM_SipApproximation_h_INCLUDED
24#define LSST_AFW_GEOM_SipApproximation_h_INCLUDED
121 std::optional<lsst::geom::Point2D>
const & pixelOrigin = std::nullopt,
122 double svdThreshold=-1
147 double getA(
int p,
int q) const;
156 double getB(
int p,
int q) const;
159 Eigen::MatrixXd
getA() const;
162 Eigen::MatrixXd
getB() const;
195 struct ValidationGrid;
201 std::unique_ptr<FitGrid const> _fitGrid;
202 std::unique_ptr<ValidationGrid const> _validationGrid;
203 std::unique_ptr<Solution const> _solution;
lsst::geom::Box2D getBBox() const noexcept
Return the pixel-coordinate bounding box over which the approximation should be valid.
SipApproximation(SkyWcs const &target, lsst::geom::Box2D const &bbox, lsst::geom::Extent2I const &gridShape, int order=5, std::optional< lsst::geom::Point2D > const &pixelOrigin=std::nullopt, double svdThreshold=-1)
Construct a new approximation by fitting on a grid of points.
lsst::geom::SpherePoint getSkyOrigin() const noexcept
Return the sky-coordinate origin of the WCS.
SipApproximation(SipApproximation const &)=delete
std::shared_ptr< SkyWcs > getWcs() const noexcept
Return a TAN-SIP WCS object that evaluates the approximation.
SipApproximation(SipApproximation &&) noexcept=default
double getB(int p, int q) const
Return a coefficient of the forward transform polynomial.
int getOrder() const noexcept
Return the polynomial order of the current solution (same for forward and reverse).
Eigen::Matrix2d getCdMatrix() const noexcept
Return the CD matrix of the WCS (in degrees).
double getA(int p, int q) const
Return a coefficient of the forward transform polynomial.
SipApproximation & operator=(SipApproximation const &)=delete
std::pair< lsst::geom::Angle, double > computeDeltas() const
Return the maximum deviations of the solution from the exact transform on a grid offset from the one ...
lsst::geom::Point2D getPixelOrigin() const noexcept
Return the pixel origin of the WCS.
A 2-dimensional celestial WCS that transform pixels to ICRS RA/Dec, using the LSST standard for pixel...
Point< double, 2 > Point2D
Extent< int, 2 > Extent2I