summaryrefslogtreecommitdiffstats
path: root/tksao
diff options
context:
space:
mode:
authorWilliam Joye <wjoye@cfa.harvard.edu>2017-12-16 21:15:11 (GMT)
committerWilliam Joye <wjoye@cfa.harvard.edu>2017-12-16 21:15:11 (GMT)
commit0b64f9f64a4ac72b608f14569eb7b08da83ab8d6 (patch)
tree28ebcb0f3fc3420349ad2359d8abab948ba56f26 /tksao
parent51f7c258ca12bfd0bc312db67fa4473b5c6a1fd6 (diff)
downloadblt-0b64f9f64a4ac72b608f14569eb7b08da83ab8d6.zip
blt-0b64f9f64a4ac72b608f14569eb7b08da83ab8d6.tar.gz
blt-0b64f9f64a4ac72b608f14569eb7b08da83ab8d6.tar.bz2
upgrade AST
Diffstat (limited to 'tksao')
-rw-r--r--tksao/frame/fitsimage.C51
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();