summaryrefslogtreecommitdiffstats
path: root/tksao/frame/base.C
diff options
context:
space:
mode:
authorWilliam Joye <wjoye@cfa.harvard.edu>2017-08-31 19:48:36 (GMT)
committerWilliam Joye <wjoye@cfa.harvard.edu>2017-08-31 19:48:36 (GMT)
commit6aa5684aa8722a09f7ccbf0025c2cabeca5c51a2 (patch)
treefcf3c0a882664f1268ba8a35bbd3861823973697 /tksao/frame/base.C
parent42df44fe70135c5af8258a089c18f3377c76db8a (diff)
downloadblt-6aa5684aa8722a09f7ccbf0025c2cabeca5c51a2.zip
blt-6aa5684aa8722a09f7ccbf0025c2cabeca5c51a2.tar.gz
blt-6aa5684aa8722a09f7ccbf0025c2cabeca5c51a2.tar.bz2
new AST support
Diffstat (limited to 'tksao/frame/base.C')
-rw-r--r--tksao/frame/base.C37
1 files changed, 22 insertions, 15 deletions
diff --git a/tksao/frame/base.C b/tksao/frame/base.C
index 7a56b3a..da1f527 100644
--- a/tksao/frame/base.C
+++ b/tksao/frame/base.C
@@ -629,8 +629,7 @@ Matrix Base::calcAlignWCS(FitsImage* fits1, FitsImage* fits2,
Vector orpix2 = fits2->wcs2pix(orval2,sys2,sky) * imageToData;
- return
- Translate(-orpix2) *
+ return Translate(-orpix2) *
flip *
Scale(zoom) *
Rotate(rotation) *
@@ -652,31 +651,39 @@ Matrix Base::calcAlignWCS(FitsImage* fits1, FitsImage* fits2,
astClearStatus; // just to make sure
astBegin; // start memory management
- int s1 = sys1-Coord::WCS;
- int s2 = sys2-Coord::WCS;
+ int ss1 = sys1-Coord::WCS;
+ int ss2 = sys2-Coord::WCS;
Matrix rr;
- if ((s1>=0 && fits1->ast_ && fits1->ast_[s1]) &&
- (s2>=0 && fits2->ast_ && fits2->ast_[s2])) {
- AstFrameSet* wcs1 = (AstFrameSet*)astCopy(fits1->ast_[s1]);
- AstFrameSet* wcs2 = (AstFrameSet*)astCopy(fits2->ast_[s2]);
+ 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, "SKY");
+ AstFrameSet* cvt = (AstFrameSet*)astConvert(wcs1, wcs2, "");
if (cvt != AST__NULL) {
astInvert(cvt);
-
Vector ll;
Vector cc1 = fits1->center();
- astTran2(fits1->ast_[s1], 1, cc1.v, cc1.v+1, 1, ll.v, ll.v+1);
+ astTran2(fits1->ast_[ss1], 1, cc1.v, cc1.v+1, 1, ll.v, ll.v+1);
Vector ur;
Vector cc2 = fits2->center();
- astTran2(fits2->ast_[s2], 1, cc2.v, cc2.v+1, 1, ur.v, ur.v+1);
+ astTran2(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)
- if (fit[2] != 0 && fit[5] !=0)
- rr = Matrix(fit[2],fit[4],fit[3],fit[5],fit[0],fit[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]);
+ }
}
}