diff options
author | William Joye <wjoye@cfa.harvard.edu> | 2017-11-07 18:42:55 (GMT) |
---|---|---|
committer | William Joye <wjoye@cfa.harvard.edu> | 2017-11-07 18:42:55 (GMT) |
commit | 5da75b18160dd950e2692d56a71dacfa7956a41b (patch) | |
tree | 0354f11eeaae2691ab32e06be9651c9169f5e26b /tksao/frame/base.C | |
parent | e52851afb6697d6111cef6beab36e0dd88dc4785 (diff) | |
download | blt-5da75b18160dd950e2692d56a71dacfa7956a41b.zip blt-5da75b18160dd950e2692d56a71dacfa7956a41b.tar.gz blt-5da75b18160dd950e2692d56a71dacfa7956a41b.tar.bz2 |
update AST WCS
Diffstat (limited to 'tksao/frame/base.C')
-rw-r--r-- | tksao/frame/base.C | 67 |
1 files changed, 32 insertions, 35 deletions
diff --git a/tksao/frame/base.C b/tksao/frame/base.C index bd54ed6..1c87af8 100644 --- a/tksao/frame/base.C +++ b/tksao/frame/base.C @@ -642,48 +642,45 @@ Matrix Base::calcAlignWCS(FitsImage* fits1, FitsImage* fits2, Coord::CoordSystem sys1, Coord::CoordSystem sys2, Coord::SkyFrame sky) { - if ((!fits1 || !fits2) || - (fits1 == fits2) || - !(fits1->hasWCS(sys1)) || - !(fits2->hasWCS(sys2))) + cerr << '*'; + if ((!fits1 || !fits2) || (fits1 == fits2) || + !(fits1->hasWCS(sys1)) || !(fits2->hasWCS(sys2))) return Matrix(); astClearStatus; // just to make sure astBegin; // start memory management - int ss1 = sys1-Coord::WCS; - int ss2 = sys2-Coord::WCS; + fits1->setAstWCSSystem(fits1->newast_, sys1); + fits2->setAstWCSSystem(fits2->newast_, sys2); + + AstFrameSet* wcs1 = (AstFrameSet*)astCopy(fits1->newast_); + AstFrameSet* wcs2 = (AstFrameSet*)astCopy(fits2->newast_); + astInvert(wcs1); + astInvert(wcs2); + AstFrameSet* cvt = (AstFrameSet*)astConvert(wcs1, wcs2, ""); Matrix rr; - if ((ss1>=0 && fits1->ast_ && fits1->ast_[ss1]) && - (ss2>=0 && fits2->ast_ && fits2->ast_[ss2])) { - AstFrameSet* wcs1 = (AstFrameSet*)astCopy(fits1->ast_[ss1]); - AstFrameSet* wcs2 = (AstFrameSet*)astCopy(fits2->ast_[ss2]); - astInvert(wcs1); - astInvert(wcs2); - AstFrameSet* cvt = (AstFrameSet*)astConvert(wcs1, wcs2, ""); - if (cvt != AST__NULL) { - astInvert(cvt); - Vector ll; - Vector cc1 = fits1->center(); - fits1->astWCSTran(fits1->ast_[ss1], 1, cc1.v, cc1.v+1, 1, ll.v, ll.v+1); - Vector ur; - Vector cc2 = fits2->center(); - fits2->astWCSTran(fits2->ast_[ss2], 1, cc2.v, cc2.v+1, 1, ur.v, ur.v+1); - - double fit[6]; - double tol = 1; - if (astLinearApprox(cvt, ll.v, ur.v, tol, fit) != AST__BAD) { - // fix the fit from AST - if (fit[2] == 0) { - fit[2] =1; - fit[0] =0; - } - if (fit[5] ==0) { - fit[5] =1; - fit[1] =0; - } - rr = Matrix(fit[2],fit[4],fit[3],fit[5],fit[0],fit[1]); + if (cvt != AST__NULL) { + astInvert(cvt); + Vector ll; + Vector cc1 = fits1->center(); + fits1->astWCSTran(fits1->newast_, 1, cc1.v, cc1.v+1, 1, ll.v, ll.v+1); + Vector ur; + Vector cc2 = fits2->center(); + fits2->astWCSTran(fits2->newast_, 1, cc2.v, cc2.v+1, 1, ur.v, ur.v+1); + + double fit[6]; + double tol = 1; + if (astLinearApprox(cvt, ll.v, ur.v, tol, fit) != AST__BAD) { + // fix the fit from AST + if (fit[2] == 0) { + fit[2] =1; + fit[0] =0; + } + if (fit[5] ==0) { + fit[5] =1; + fit[1] =0; } + rr = Matrix(fit[2],fit[4],fit[3],fit[5],fit[0],fit[1]); } } |