diff options
author | William Joye <wjoye@cfa.harvard.edu> | 2017-12-16 21:15:11 (GMT) |
---|---|---|
committer | William Joye <wjoye@cfa.harvard.edu> | 2017-12-16 21:15:11 (GMT) |
commit | 0b64f9f64a4ac72b608f14569eb7b08da83ab8d6 (patch) | |
tree | 28ebcb0f3fc3420349ad2359d8abab948ba56f26 /tksao | |
parent | 51f7c258ca12bfd0bc312db67fa4473b5c6a1fd6 (diff) | |
download | blt-0b64f9f64a4ac72b608f14569eb7b08da83ab8d6.zip blt-0b64f9f64a4ac72b608f14569eb7b08da83ab8d6.tar.gz blt-0b64f9f64a4ac72b608f14569eb7b08da83ab8d6.tar.bz2 |
upgrade AST
Diffstat (limited to 'tksao')
-rw-r--r-- | tksao/frame/fitsimage.C | 51 |
1 files changed, 28 insertions, 23 deletions
diff --git a/tksao/frame/fitsimage.C b/tksao/frame/fitsimage.C index 5602f7a..090b8d7 100644 --- a/tksao/frame/fitsimage.C +++ b/tksao/frame/fitsimage.C @@ -3126,34 +3126,39 @@ double FitsImage::getWCSRotation(Coord::CoordSystem sys, Coord::SkyFrame sky) setWCSSkyFrame(sys, sky); if (!hasWCSHPX(sys)) { - Vector in[2]; - Vector out[2]; - in[0] = center(); - in[1] = center()+Vector(0,1); - wcsTran(2, in, 1, out); - double ang = wcsAxAngle(out[0], out[1]); - + double old =0; { - Vector in[3]; - Vector out[3]; + Vector in[2]; + Vector out[2]; in[0] = center(); in[1] = center()+Vector(0,1); - in[2] = center()+Vector(1,0); - wcsTran(3, in, 1, out); - double ang = wcsAngle(out[0],out[1],out[2]); - - Coord::Orientation rr = Coord::NORMAL; - if (!(isnan(ang)||isinf(ang)||(ang == -DBL_MAX)||(ang == DBL_MAX))) { - if (hasWCSCel(sys)) - rr = (ang>=0 ? Coord::NORMAL : Coord::XX); - else - rr = (ang<=0 ? Coord::NORMAL : Coord::XX); - } - cerr << rr << '=' << getWCSOrientation(sys,sky) << endl; + wcsTran(2, in, 1, out); + double ang = wcsAxAngle(out[0], out[1]); + + if (!(isnan(ang)||isinf(ang)||(ang == -DBL_MAX)||(ang == DBL_MAX))) + old = getWCSOrientation(sys,sky) == Coord::NORMAL ? ang : -ang; } - if (!(isnan(ang)||isinf(ang)||(ang == -DBL_MAX)||(ang == DBL_MAX))) - return getWCSOrientation(sys,sky) == Coord::NORMAL ? ang : -ang; + Vector in[3]; + Vector out[3]; + in[0] = center(); + in[1] = center()+Vector(0,1); + in[2] = center()+Vector(1,0); + wcsTran(3, in, 1, out); + double ang = wcsAxAngle(out[0], out[1]); + double ang3 = wcsAngle(out[1],out[0],out[2]); + + if ((!(isnan(ang )||isinf(ang) ||(ang ==-DBL_MAX)||(ang ==DBL_MAX))) && + (!(isnan(ang3)||isinf(ang3)||(ang3==-DBL_MAX)||(ang3==DBL_MAX)))) { + if ((hasWCSCel(sys) && ang3>0) || (!hasWCSCel(sys) && ang3<0)) + ang = -ang; + + if (ang != old) + cerr << "***BOOM*** " << radToDeg(ang) << '=' << radToDeg(old) << endl; + return ang; + } + else + return 0; } else { // special case for HPX Vector cc = center(); |