25 #ifndef LSST_JOINTCAL_ASTROMETRY_TRANSFORM_H 26 #define LSST_JOINTCAL_ASTROMETRY_TRANSFORM_H 48 class AstrometryTransformLinear;
68 virtual void apply(
const double xIn,
const double yIn,
double &xOut,
double &yOut)
const = 0;
78 return Point(xout, yout);
134 virtual double getJacobian(
const double x,
const double y)
const;
142 const double step = 0.01)
const;
165 virtual double paramRef(
const int i)
const;
168 virtual double &
paramRef(
const int i);
226 void apply(
const double xIn,
const double yIn,
double &xOut,
double &yOut)
const override {
233 "AstrometryTransformIdentity is the identity transformation: it cannot be fit to anything.");
238 return right.
clone();
250 const double step = 0.01)
const override;
254 const double step = 0.01)
const override;
292 unsigned nPoint = 1000);
304 unsigned const nSteps = 50);
307 void setOrder(
const unsigned order);
313 void apply(
const double xIn,
const double yIn,
double &xOut,
double &yOut)
const override;
317 const double step = 0.01)
const override;
323 int getNpar()
const override {
return 2 * _nterms; }
351 double coeff(
const unsigned powX,
const unsigned powY,
const unsigned whichCoord)
const;
354 double &
coeff(
const unsigned powX,
const unsigned powY,
const unsigned whichCoord);
357 double coeffOrZero(
const unsigned powX,
const unsigned powY,
const unsigned whichCoord)
const;
359 double determinant()
const;
362 double paramRef(
const int i)
const override;
365 double &
paramRef(
const int i)
override;
379 const bool useErrors);
395 void computeMonomials(
double xIn,
double yIn,
double *monomial)
const;
402 ndarray::Array<double, 2, 2> toAstPolyMapCoefficients()
const;
419 int const maxOrder = 9,
420 unsigned const nSteps = 50);
446 const double step = 0.01)
const;
456 const double aa21,
const double aa22);
487 void setOrder(
const unsigned order);
514 const double scaleFactor = 1.0);
553 void apply(
const double xIn,
const double yIn,
double &xOut,
double &yOut)
const override;
582 void apply(
const double xIn,
const double yIn,
double &xOut,
double &yOut)
const;
585 Point getTangentPoint()
const;
597 Point getCrPix()
const;
604 virtual void pixToTangentPlane(
double xPixel,
double yPixel,
double &xTangentPlane,
605 double &yTangentPlane)
const = 0;
635 virtual void pixToTangentPlane(
double xPixel,
double yPixel,
double &xTangentPlane,
636 double &yTangentPlane)
const;
679 virtual void pixToTangentPlane(
double xPixel,
double yPixel,
double &xTangentPlane,
680 double &yTangentPlane)
const;
717 void setTangentPoint(
Point const &tangentPoint);
720 Point getTangentPoint()
const;
723 void apply(
const double xIn,
const double yIn,
double &xOut,
double &yOut)
const;
763 void apply(
const double xIn,
const double yIn,
double &xOut,
double &yOut)
const;
773 const void *_userData;
783 #endif // LSST_JOINTCAL_ASTROMETRY_TRANSFORM_H
void() AstrometryTransformFun(const double, const double, double &, double &, const void *)
signature of the user-provided routine that actually does the coordinate transform for UserTransform...
The transformation that handles pixels to sideral transformations (Gnomonic, possibly with polynomial...
AstrometryTransformLinear linPixelToTan
bool isIntegerShift(const AstrometryTransform *transform)
Shorthand test to tell if a transform is a simple integer shift.
std::ostream & operator<<(std::ostream &stream, AstrometryTransform const &transform)
Delegates to transform.dump()
def scale(algorithm, min, max=None, frame=None)
std::shared_ptr< Image< PixelT > > operator+(Image< PixelT > const &img, ImageSlice< PixelT > const &slc)
Overload operator+()
Implements the (forward) SIP distorsion scheme.
A Point with uncertainties.
std::unique_ptr< AstrometryTransformPolynomial > corr
rectangle with sides parallel to axes.
AstrometryTransformLinear normalizeCoordinatesTransform(const Frame &frame)
Returns the transformation that maps the input frame along both axes to [-1,1].
A base class for image defects.
std::unique_ptr< AstrometryTransform > compose(AstrometryTransform const &left, AstrometryTransform const &right)
Returns a pointer to a composition of transforms, representing left(right()).
This one is the Tangent Plane (called gnomonic) projection (from celestial sphere to tangent plane) ...
std::shared_ptr< Image< PixelT > > operator-(Image< PixelT > const &img, ImageSlice< PixelT > const &slc)
Overload operator-()
std::unique_ptr< AstrometryTransform > astrometryTransformRead(const std::string &fileName)
The virtual constructor from a file.
std::shared_ptr< AstrometryTransformPolynomial > inversePolyTransform(AstrometryTransform const &forward, Frame const &domain, double const precision, int const maxOrder=9, unsigned const nSteps=50)
Approximate the inverse by a polynomial, to some precision.
table::Key< table::Array< double > > coeff
Reports errors from accepting an object of an unexpected or inappropriate type.
const AstrometryTransformPolynomial * getCorr() const
Get a non-owning pointer to the correction transform polynomial.