From c3a6bf8ce0f3ebf1399ddbb6ee14615b0cb0ae34 Mon Sep 17 00:00:00 2001 From: Chris Laurel Date: Fri, 4 Apr 2008 18:11:37 +0000 Subject: [PATCH] Fixed display of apparent magnitude and distance in Qt4 star browser. The current time was not being used to compute star positions, so calculations for stars in multiple systems were incorrect at dates other than J2000.0 --- src/celestia/qt/qtcelestialbrowser.cpp | 16 +++++++++++----- 1 file changed, 11 insertions(+), 5 deletions(-) diff --git a/src/celestia/qt/qtcelestialbrowser.cpp b/src/celestia/qt/qtcelestialbrowser.cpp index 385303ff9..dcd74041c 100644 --- a/src/celestia/qt/qtcelestialbrowser.cpp +++ b/src/celestia/qt/qtcelestialbrowser.cpp @@ -103,6 +103,7 @@ public: }; void populate(const UniversalCoord& _observerPos, + double _now, StarFilterPredicate& filterPred, StarPredicate::Criterion criterion, unsigned int nStars); @@ -112,13 +113,15 @@ public: private: const Universe* universe; UniversalCoord observerPos; + double now; vector stars; }; StarTableModel::StarTableModel(const Universe* _universe) : universe(_universe), - observerPos(0.0, 0.0, 0.0) + observerPos(0.0, 0.0, 0.0), + now(astro::J2000) { } @@ -160,13 +163,13 @@ QVariant StarTableModel::data(const QModelIndex& index, int role) const } case DistanceColumn: { - UniversalCoord pos = star->getPosition(astro::J2000); + UniversalCoord pos = star->getPosition(now); Vec3d v = pos - observerPos; return QVariant(v.length() * 1.0e-6); } case AppMagColumn: { - UniversalCoord pos = star->getPosition(astro::J2000); + UniversalCoord pos = star->getPosition(now); Vec3d v = pos - observerPos; double distance = v.length() * 1.0e-6; return QString("%1").arg((double) star->getApparentMagnitude((float) distance), 0, 'f', 2); @@ -205,7 +208,7 @@ QVariant StarTableModel::data(const QModelIndex& index, int role) const // Override QAbstractDataModel::headerData() -QVariant StarTableModel::headerData(int section, Qt::Orientation orientation, int role) const +QVariant StarTableModel::headerData(int section, Qt::Orientation /* orientation */, int role) const { if (role != Qt::DisplayRole) return QVariant(); @@ -374,6 +377,7 @@ void StarTableModel::sort(int column, Qt::SortOrder order) void StarTableModel::populate(const UniversalCoord& _observerPos, + double _now, StarFilterPredicate& filterPred, StarPredicate::Criterion criterion, unsigned int nStars) @@ -381,6 +385,7 @@ void StarTableModel::populate(const UniversalCoord& _observerPos, const StarDatabase& stardb = *universe->getStarCatalog(); observerPos = _observerPos; + now = _now; typedef multiset StarSet; StarPredicate pred(criterion, observerPos); @@ -583,6 +588,7 @@ CelestialBrowser::~CelestialBrowser() void CelestialBrowser::slotRefreshTable() { UniversalCoord observerPos = appCore->getSimulation()->getActiveObserver()->getPosition(); + double now = appCore->getSimulation()->getTime(); StarPredicate::Criterion criterion = StarPredicate::Distance; if (brightestButton->isChecked()) @@ -609,7 +615,7 @@ void CelestialBrowser::slotRefreshTable() filterPred.spectralTypeFilterEnabled = false; } - starModel->populate(observerPos, filterPred, criterion, 1000); + starModel->populate(observerPos, now, filterPred, criterion, 1000); treeView->resizeColumnToContents(StarTableModel::DistanceColumn); treeView->resizeColumnToContents(StarTableModel::AppMagColumn);