summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authortom.s.morris <tom.s.morris@googlemail.com>2013-08-22 23:47:54 +0100
committertom.s.morris <tom.s.morris@googlemail.com>2013-08-22 23:47:54 +0100
commit4c656f7050c49bb947542ddb5dbf9114ed850d1e (patch)
treedeb5eb77336d903599dd84212bd62146d10afc6c
parentb63db48746f091aea27b401e0726be7dbeea10f1 (diff)
Fix rotation angle of galaxies.new-ngc-catalog
-rw-r--r--src/core/modules/Nebula.cpp17
-rw-r--r--src/core/modules/NebulaMgr.cpp6
2 files changed, 13 insertions, 10 deletions
diff --git a/src/core/modules/Nebula.cpp b/src/core/modules/Nebula.cpp
index 7445cca654..1478ff472e 100644
--- a/src/core/modules/Nebula.cpp
+++ b/src/core/modules/Nebula.cpp
@@ -182,6 +182,7 @@ QString Nebula::getInfoString(const StelCore *core, const InfoStringGroup& flags
oss << q_("Size: %1 x %2").arg(StelUtils::radToDmsStr(sizeX/60. * M_PI/180.)).arg(StelUtils::radToDmsStr(sizeY/60. * M_PI/180.)) << "<br>";
else
oss << q_("Size: %1").arg(StelUtils::radToDmsStr(sizeX/60. * M_PI/180.)) << "<br>";
+ oss << q_("Principl angle: %1 deg").arg(PAdeg) << "<br>";
}
postProcessInfoString(str, flags);
@@ -242,7 +243,10 @@ void Nebula::drawHints(StelRenderer* renderer, StelProjectorP projector, float m
float lum = 1.f;//qMin(1,4.f/getOnScreenSize(core))*0.8;
// local direction towards N on screen
- float angleNorth = 180./M_PI * atan2(-XY2[0] + XY[0], XY2[1] - XY[1]);
+ Vec3d dir = XY2 - XY;
+ dir.normalize();
+
+ double angleNorth = 180.0/M_PI * std::atan2(dir[1], dir[0]);
float pixelPerDegree = M_PI/180. * projector->getPixelPerRadAtCenter();
@@ -266,9 +270,9 @@ void Nebula::drawHints(StelRenderer* renderer, StelProjectorP projector, float m
//qDebug("x=%f y=%f sizeX=%f sizeY=%f", XY[0], XY[1], sizeX*pixelPerDegree/60., sizeY*pixelPerDegree/60.);
//sPainter.setShadeModel(StelPainter::ShadeModelFlat);
if(sizeY < 1e-3)
- renderer->drawEllipse(XY[0], XY[1], sizeX*pixelPerDegree/60, sizeX*pixelPerDegree/60, PAdeg);
+ renderer->drawEllipse(XY[0], XY[1], sizeX*pixelPerDegree/60, sizeX*pixelPerDegree/60, 0.);
else
- renderer->drawEllipse(XY[0], XY[1], sizeX*pixelPerDegree/60., sizeY*pixelPerDegree/60., PAdeg);
+ renderer->drawEllipse(XY[0], XY[1], sizeX*pixelPerDegree/60., sizeY*pixelPerDegree/60., PAdeg +angleNorth);
//hintTextures.texGalaxy->bind();
break;
@@ -447,7 +451,7 @@ void Nebula::parseRecord(const QString& record, int idx)
#endif
// Calc the Cartesian coord with RA and DE
StelUtils::spheToRect(ra, dec, XYZ);
- StelUtils::spheToRect(ra-0.01,dec,XYZ2); // FIXME: used to calculate direction of North
+ StelUtils::spheToRect(ra, dec-0.05,XYZ2); // FIXME: used to calculate direction of North
// Read the blue (photographic) and visual magnitude
magB = record.mid(56, 4).toFloat();
@@ -518,7 +522,7 @@ void Nebula::readNGC(QDataStream& in)
}
StelUtils::spheToRect(ra,dec,XYZ);
Q_ASSERT(fabs(XYZ.lengthSquared()-1.)<0.000000001);
- nType = (Nebula::NebulaType)type;
+ nType = (Nebula::NebulaType)type;
// GZ: Trace the undefined entries...
//if (type >= 5) {
// qDebug()<< (isIc?"IC" : "NGC") << nb << " type " << type ;
@@ -576,7 +580,8 @@ void Nebula::readExtendedNGC(QDataStream& in)
StelUtils::spheToRect(ra,dec,XYZ);
Q_ASSERT(fabs(XYZ.lengthSquared()-1.)<0.000000001);
- nType = (Nebula::NebulaType)type;
+ StelUtils::spheToRect(ra,dec-0.01,XYZ2); // used to calculate direction of North
+ nType = (Nebula::NebulaType)type;
pointRegion = SphericalRegionP(new SphericalPoint(getJ2000EquatorialPos(NULL)));
}
diff --git a/src/core/modules/NebulaMgr.cpp b/src/core/modules/NebulaMgr.cpp
index 6c151e1c54..0efd0c118a 100644
--- a/src/core/modules/NebulaMgr.cpp
+++ b/src/core/modules/NebulaMgr.cpp
@@ -136,11 +136,9 @@ struct DrawNebulaFuncObject
if (n->angularSize>angularSizeLimit || (checkMaxMagHints && n->mag <= maxMagHints))
{
float refmag_add=0; // value to adjust hints visibility threshold.
- //sPainter->getProjector()->project(n->XYZ,n->XY);
- // sPainter->getProjector()->project(n->XYZ2,n->XY2); //FIXME
- // n->drawLabel(*sPainter, maxMagLabels-refmag_add);
projector->project(n->XYZ,n->XY);
- n->drawLabel(renderer, projector, maxMagLabels-refmag_add);
+ projector->project(n->XYZ2,n->XY2);
+ n->drawLabel(renderer, projector, maxMagLabels-refmag_add);
n->drawHints(renderer, projector, maxMagHints -refmag_add, nebulaHintTextures);
}
}