From 8bc5679afaf06ac8d3aba4ddf0dcd7e71f03d89d Mon Sep 17 00:00:00 2001 From: William Joye Date: Fri, 10 Nov 2017 16:37:27 -0500 Subject: update AST WCS --- tksao/frame/fitsimage.C | 186 +++++++++--------------------------------------- tksao/frame/fitsimage.h | 3 - 2 files changed, 33 insertions(+), 156 deletions(-) diff --git a/tksao/frame/fitsimage.C b/tksao/frame/fitsimage.C index ad969f7..f7a71a3 100644 --- a/tksao/frame/fitsimage.C +++ b/tksao/frame/fitsimage.C @@ -1437,6 +1437,18 @@ void FitsImage::match(const char* xxname1, const char* yyname1, if (nxx1 != nyy1 || nxx2 != nyy2) return; + int ss1 = sys1-Coord::WCS; + if (!(ss1>=0 && ast_ && ast_[ss1])) + return; + if (!astWCSIsASkyFrame(ast_[ss1])) + return; + + int ss2 = sys2-Coord::WCS; + if (!(ss2>=0 && ast_ && ast_[ss2])) + return; + if (!astWCSIsASkyFrame(ast_[ss2])) + return; + // get doubles double* ixx1 = new double[nxx1]; for (int ii=0 ; ii=0 && ast_ && ast_[ss])) - return; + setAstWCSSkyFrame(ast_[ss1],sky1); + wcsTran(ast_[ss1], nxx1, in1, 0, out1); - if (astWCSIsASkyFrame(ast_[ss])) { - setAstWCSSkyFrame(ast_[ss],sky1); - for (int ii=0; ii=0 && ast_ && ast_[ss])) - return; + Vector* in2 = new Vector[nxx2]; + Vector* out2 = new Vector[nxx2]; + for (int ii=0; ii=0 && ast_ && ast_[ss]) { - double xx =0; - double yy =0; if (astWCSIsASkyFrame(ast_[ss])) { setAstWCSSkyFrame(ast_[ss],sky); - Vector rr = in*M_PI/180.; - wcsTran(ast_[ss], 1, rr.v, &(rr[1]), 0, &xx, &yy); - if (astOK) - if (checkWCS(xx,yy)) - return Vector(xx,yy); + Vector out = wcsTran(ast_[ss], in.degToRad(), 0); + if (astOK && checkWCS(out)) + return out; } else { - wcsTran(ast_[ss], 1, in.v, in.v+1, 0, &xx, &yy); - if (astOK) - if (checkWCS(xx,yy)) - return Vector(xx,yy); + Vector out = wcsTran(ast_[ss], in, 0); + if (astOK || checkWCS(out)) + return out; } } @@ -3384,97 +3363,6 @@ Vector FitsImage::wcs2pix(Vector in, Coord::CoordSystem sys, #endif #ifndef NEWWCS -Vector* FitsImage::wcs2pix(Vector* in, int num, Coord::CoordSystem sys, - Coord::SkyFrame sky) -{ - astClearStatus; - double xin[num]; - double yin[num]; - double xout[num]; - double yout[num]; - - Vector* out = new Vector[num]; - for (int ii=0; ii=0 && ast_ && ast_[ss]) { - if (astWCSIsASkyFrame(ast_[ss])) { - setAstWCSSkyFrame(ast_[ss],sky); - for (int kk=0; kk