00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011 #ifndef PM_ASTROMETRY_WCS_H
00012 #define PM_ASTROMETRY_WCS_H
00013
00014
00015
00016
00017 #define PM_ASTROM_WCS_TYPE_SIZE 80
00018 typedef struct
00019 {
00020 char ctype1[PM_ASTROM_WCS_TYPE_SIZE];
00021 char ctype2[PM_ASTROM_WCS_TYPE_SIZE];
00022 double crval1, crval2;
00023 double crpix1, crpix2;
00024 double cdelt1, cdelt2;
00025 psProjection *toSky;
00026 psPlaneTransform *trans;
00027 }
00028 pmAstromWCS;
00029
00030
00031 pmAstromWCS *pmAstromWCSAlloc (int nXorder, int nYorder);
00032 bool pmAstromWCStoSky (psSphere *sky, pmAstromWCS *wcs, psPlane *chip);
00033 bool pmAstromWCStoChip (psPlane *chip, pmAstromWCS *wcs, psSphere *sky);
00034
00035
00036 bool pmAstromWCStoHeader (psMetadata *header, const pmAstromWCS *wcs);
00037 pmAstromWCS *pmAstromWCSfromHeader (const psMetadata *header);
00038
00039
00040 bool pmAstromWCSBileveltoChip (pmChip *chip, const pmAstromWCS *wcs);
00041 bool pmAstromWCSBileveltoFPA (pmFPA *fpa, const pmAstromWCS *wcs);
00042
00043
00044 pmAstromWCS *pmAstromWCSBilevelChipFromFPA (const pmChip *chip, double tol);
00045 pmAstromWCS *pmAstromWCSBilevelMosaicFromFPA (const pmFPA *fpa, double tol);
00046
00047
00048 bool pmAstromWCStoFPA (pmFPA *fpa, pmChip *chip, const pmAstromWCS *wcs, double plateScale);
00049 pmAstromWCS *pmAstromWCSfromFPA (const pmFPA *fpa, const pmChip *chip, double tol);
00050
00051
00052 bool pmAstromReadWCS (pmFPA *fpa, pmChip *chip, const psMetadata *header, double plateScale);
00053
00054
00055
00056 bool pmAstromWriteWCS (psMetadata *header, const pmFPA *fpa, const pmChip *chip, double tol);
00057
00058 bool pmAstromReadBilevelChip (pmChip *chip, const psMetadata *header);
00059 bool pmAstromReadBilevelMosaic (pmFPA *fpa, const psMetadata *header);
00060
00061 bool pmAstromWriteBilevelChip (psMetadata *header, const pmChip *chip, double tol);
00062 bool pmAstromWriteBilevelMosaic (psMetadata *header, const pmFPA *fpa, double tol);
00063
00064
00065 psPlaneDistort *psPlaneDistortIdentity (int order);
00066 bool psPlaneDistortIsDiagonal (psPlaneDistort *distort);
00067
00068 # define PM_DEG_RAD 57.295779513082322
00069 # define PM_RAD_DEG 0.017453292519943
00070
00071
00072 #endif // PM_ASTROMETRY_WCS_H
00073
00074
00075
00076
00077