[prev in list] [next in list] [prev in thread] [next in thread]
List: kstars-devel
Subject: [Kstars-devel] [PATCH] Show Magellanic Clouds
From: Jérôme_SONRIER <jsid () emor3j ! fr ! eu ! org>
Date: 2008-08-17 21:31:28
Message-ID: 200808172331.29344.jsid () emor3j ! fr ! eu ! org
[Download RAW message or body]
Hello,
I have made a patch to show Magellanic Clouds :
http://bugs.kde.org/show_bug.cgi?id=77748 (bugs.kde.org is temporarily
offline so I put the patch in attachment)
I don't know the best way to implement it.
Here's what I did :
-MagellanicClouds is a copy of MilkyWay that has been modified to load
lmc.dat and smc.dat instead of milkyway.dat
-SkyMapComposite has been modifed to handle MagellanicClouds object
-CMakeLists.txt files have been modified to build magellanicclouds.cpp
and install lmc.dat and smc.dat
I did my best to get precise coordinates of contour, but it's not easy,
so please tell me if you have any good data about it.
--
Jérôme SONRIER
["kstars-magellanicclouds.diff" (text/x-diff)]
Index: kstars/skycomponents/magellanicclouds.cpp
===================================================================
--- kstars/skycomponents/magellanicclouds.cpp (révision 0)
+++ kstars/skycomponents/magellanicclouds.cpp (révision 0)
@@ -0,0 +1,182 @@
+/***************************************************************************
+ magellanicclouds.cpp - K Desktop Planetarium
+ -------------------
+ begin : 12 Nov. 2005
+ copyright : (C) 2005 by Jason Harris
+ email : kstars@30doradus.org
+ ***************************************************************************/
+
+/***************************************************************************
+ * *
+ * This program is free software; you can redistribute it and/or modify *
+ * it under the terms of the GNU General Public License as published by *
+ * the Free Software Foundation; either version 2 of the License, or *
+ * (at your option) any later version. *
+ * *
+ ***************************************************************************/
+
+#include "magellanicclouds.h"
+
+#include <QList>
+#include <QPointF>
+#include <QPolygonF>
+#include <QPainter>
+
+#include <klocale.h>
+
+#include "kstarsdata.h"
+#include "skymap.h"
+#include "skypoint.h"
+#include "dms.h"
+#include "Options.h"
+#include "ksfilereader.h"
+
+#include "skymesh.h"
+
+
+MagellanicClouds::MagellanicClouds( SkyComponent *parent ) :
+ SkipListIndex( parent, i18n("Magellanic Clouds") )
+{}
+
+void MagellanicClouds::init( KStarsData *data )
+{
+ Q_UNUSED(data)
+
+ intro();
+
+ char* fname = "lmc.dat";
+ QString line;
+ double ra, dec, lastRa, lastDec;
+ SkipList *skipList = 0;
+ bool ok;
+ int iSkip = 0;
+
+ lastRa = lastDec = -1000.0;
+
+ KSFileReader fileReader;
+ if ( ! fileReader.open( fname ) ) return;
+
+ fileReader.setProgress( i18n("Loading Large Magellanic Clouds"), 2136, 5 );
+
+ while ( fileReader.hasMoreLines() ) {
+ line = fileReader.readLine();
+
+ fileReader.showProgress();
+
+ QChar firstChar = line.at( 0 );
+ if ( firstChar == '#' ) continue;
+
+ ra = line.mid( 2, 8 ).toDouble(&ok);
+ if ( ok ) dec = line.mid( 11, 8 ).toDouble(&ok);
+ if ( !ok ) {
+ fprintf(stderr, "%s: conversion error on line: %d\n",
+ fname, fileReader.lineNumber());
+ continue;
+ }
+
+ if ( firstChar == 'M' ) {
+ if ( skipList ) appendBoth( skipList );
+ skipList = 0;
+ iSkip = 0;
+ lastRa = lastDec = -1000.0;
+ }
+
+ if ( ! skipList ) skipList = new SkipList();
+
+ if ( ra == lastRa && dec == lastDec ) {
+ fprintf(stderr, "%s: tossing dupe on line %4d: (%f, %f)\n",
+ fname, fileReader.lineNumber(), ra, dec);
+ continue;
+ }
+
+ skipList->append( new SkyPoint(ra, dec) );
+ lastRa = ra;
+ lastDec = dec;
+ if ( firstChar == 'S' ) skipList->setSkip( iSkip );
+ iSkip++;
+ }
+ if ( skipList ) appendBoth( skipList );
+
+ fname = "smc.dat";
+ skipList = 0;
+ iSkip = 0;
+
+ lastRa = lastDec = -1000.0;
+
+ if ( ! fileReader.open( fname ) ) return;
+
+ fileReader.setProgress( i18n("Loading Small Magellanic Clouds"), 2136, 5 );
+
+ while ( fileReader.hasMoreLines() ) {
+ line = fileReader.readLine();
+
+ fileReader.showProgress();
+
+ QChar firstChar = line.at( 0 );
+ if ( firstChar == '#' ) continue;
+
+ ra = line.mid( 2, 8 ).toDouble(&ok);
+ if ( ok ) dec = line.mid( 11, 8 ).toDouble(&ok);
+ if ( !ok ) {
+ fprintf(stderr, "%s: conversion error on line: %d\n",
+ fname, fileReader.lineNumber());
+ continue;
+ }
+
+ if ( firstChar == 'M' ) {
+ if ( skipList ) appendBoth( skipList );
+ skipList = 0;
+ iSkip = 0;
+ lastRa = lastDec = -1000.0;
+ }
+
+ if ( ! skipList ) skipList = new SkipList();
+
+ if ( ra == lastRa && dec == lastDec ) {
+ fprintf(stderr, "%s: tossing dupe on line %4d: (%f, %f)\n",
+ fname, fileReader.lineNumber(), ra, dec);
+ continue;
+ }
+
+ skipList->append( new SkyPoint(ra, dec) );
+ lastRa = ra;
+ lastDec = dec;
+ if ( firstChar == 'S' ) skipList->setSkip( iSkip );
+ iSkip++;
+ }
+ if ( skipList ) appendBoth( skipList );
+
+ summary();
+ //printf("Done.\n");
+}
+
+bool MagellanicClouds::selected()
+{
+ return Options::showMilkyWay() &&
+ ! ( Options::hideOnSlew() && Options::hideMilkyWay() && SkyMap::IsSlewing() );
+}
+
+void MagellanicClouds::draw( QPainter& psky )
+{
+ if ( !selected() ) return;
+
+ KStarsData *data = KStarsData::Instance();
+
+ QColor color = QColor( data->colorScheme()->colorNamed( "MWColor" ) );
+
+ psky.setPen( QPen( color, 3, Qt::SolidLine ) );
+ psky.setBrush( QBrush( color ) );
+
+ // Uncomment these two lines to get more visible images for debugging. -jbb
+ //
+ //psky.setPen( QPen( QColor( "red" ), 1, Qt::SolidLine ) );
+ //psky.setBrush( QBrush( QColor("green" ) ) );
+
+ if ( Options::fillMilkyWay() ) {
+ drawFilled( psky );
+ }
+ else {
+ drawLines( psky );
+ }
+}
+
Index: kstars/skycomponents/magellanicclouds.h
===================================================================
--- kstars/skycomponents/magellanicclouds.h (révision 0)
+++ kstars/skycomponents/magellanicclouds.h (révision 0)
@@ -0,0 +1,49 @@
+/***************************************************************************
+ magellanicclouds.h - K Desktop Planetarium
+ -------------------
+ begin : 2005/07/08
+ copyright : (C) 2005 by Jason Harris
+ email : kstars@30doradus.org
+ ***************************************************************************/
+
+/***************************************************************************
+ * *
+ * This program is free software; you can redistribute it and/or modify *
+ * it under the terms of the GNU General Public License as published by *
+ * the Free Software Foundation; either version 2 of the License, or *
+ * (at your option) any later version. *
+ * *
+ ***************************************************************************/
+
+#ifndef MAGELLANICCLOUDS
+#define MAGELLANICCLOUDS
+
+#include "skiplistindex.h"
+
+/**
+ *@class MlkyWay
+ *This stores a SkipList for each chunk.
+ *
+ *@author James B. Bowlin
+ *@version 0.1
+ */
+class MagellanicClouds : public SkipListIndex
+{
+public:
+ /**
+ *@short Constructor
+ *@p parent pointer to the parent SkyComponent
+ */
+ MagellanicClouds( SkyComponent *parent );
+
+ void init( KStarsData *data );
+
+ /**
+ *@short Draw the Magellanic Clouds on the sky map
+ *@p psky Reference to the QPainter on which to paint
+ */
+ void draw( QPainter& psky );
+
+ bool selected();
+};
+#endif
Index: kstars/skycomponents/skymapcomposite.h
===================================================================
--- kstars/skycomponents/skymapcomposite.h (révision 843335)
+++ kstars/skycomponents/skymapcomposite.h (copie de travail)
@@ -39,6 +39,7 @@ class Ecliptic;
class Equator;
class HorizonComponent;
class MilkyWay;
+class MagellanicClouds;
class SolarSystemComposite;
class StarComponent;
class SatelliteComposite;
@@ -204,6 +205,7 @@ private:
Ecliptic *m_Ecliptic;
HorizonComponent *m_Horizon;
MilkyWay *m_MilkyWay;
+ MagellanicClouds *m_MagellanicClouds;
SolarSystemComposite *m_SolarSystem;
SkyComposite *m_CustomCatalogs;
StarComponent *m_Stars;
Index: kstars/skycomponents/skymapcomposite.cpp
===================================================================
--- kstars/skycomponents/skymapcomposite.cpp (révision 843335)
+++ kstars/skycomponents/skymapcomposite.cpp (copie de travail)
@@ -39,6 +39,7 @@
#include "horizoncomponent.h"
#include "jupitermoonscomponent.h"
#include "milkyway.h"
+#include "magellanicclouds.h"
#include "solarsystemcomposite.h"
#include "starcomponent.h"
#include "satellitecomposite.h"
@@ -62,6 +63,8 @@ SkyMapComposite::SkyMapComposite(SkyComp
//Add all components
m_MilkyWay = new MilkyWay( this );
addComponent( m_MilkyWay );
+ m_MagellanicClouds = new MagellanicClouds( this );
+ addComponent( m_MagellanicClouds );
//Stars must come before constellation lines
m_Stars = new StarComponent( this );
addComponent( m_Stars );
@@ -214,6 +217,8 @@ void SkyMapComposite::draw( QPainter& ps
m_MilkyWay->draw( psky );
+ m_MagellanicClouds->draw( psky );
+
m_CoordinateGrid->draw( psky );
m_CBoundLines->draw( psky );
Index: kstars/data/lmc.dat
===================================================================
--- kstars/data/lmc.dat (révision 0)
+++ kstars/data/lmc.dat (révision 0)
@@ -0,0 +1,33 @@
+M 4.93333 -66.0000
+D 4.86666 -66.3500
+D 4.83333 -66.7500
+D 4.83333 -67.2500
+D 4.88333 -68.0000
+D 4.86666 -68.8000
+D 4.91666 -69.5000
+D 4.90833 -69.7500
+D 4.91666 -70.2500
+D 5.00000 -70.8000
+D 5.15000 -71.1000
+D 5.33333 -71.0000
+D 5.41666 -71.0700
+D 5.53333 -71.1000
+D 5.66666 -70.8000
+D 5.75000 -70.4000
+D 5.86666 -69.7500
+D 5.88333 -69.1000
+D 5.88333 -68.5000
+D 5.85000 -68.0000
+D 5.80000 -67.6000
+D 5.81666 -67.2000
+D 5.80000 -66.7500
+D 5.75000 -66.4000
+D 5.68333 -66.3000
+D 5.51666 -66.5000
+D 5.36666 -66.2000
+D 5.31666 -66.2000
+D 5.26666 -66.4000
+D 5.25000 -66.8500
+D 5.18333 -67.0000
+D 5.15000 -66.9500
+D 5.00000 -66.1000
Index: kstars/data/CMakeLists.txt
===================================================================
--- kstars/data/CMakeLists.txt (révision 843335)
+++ kstars/data/CMakeLists.txt (copie de travail)
@@ -9,6 +9,8 @@ install( FILES kstars.png geomap.png
clines.dat
cnames.dat
milkyway.dat
+ lmc.dat
+ smc.dat
cbounds.dat
cbounds-3.idx cbounds-4.idx cbounds-5.idx cbounds-6.idx
image_url.dat info_url.dat
Index: kstars/data/smc.dat
===================================================================
--- kstars/data/smc.dat (révision 0)
+++ kstars/data/smc.dat (révision 0)
@@ -0,0 +1,44 @@
+M 0.81666 -71.7000
+D 0.81666 -71.9200
+D 0.83333 -72.0500
+D 0.83333 -72.1800
+D 0.80000 -72.2850
+D 0.83333 -72.4650
+D 0.81666 -72.5150
+D 0.76666 -72.6250
+D 0.71666 -72.8333
+D 0.71666 -73.1500
+D 0.75000 -73.1900
+D 0.85000 -73.3750
+D 0.90000 -73.3750
+D 0.95000 -73.1400
+D 0.98333 -73.1400
+D 1.00000 -73.0600
+D 0.96666 -72.9400
+D 1.03333 -72.6250
+D 1.11666 -72.7400
+D 1.20000 -72.6700
+D 1.23333 -72.6900
+D 1.26666 -72.5800
+D 1.28333 -72.6200
+D 1.33333 -72.5000
+D 1.31666 -72.3100
+D 1.35000 -72.1900
+D 1.33333 -71.9800
+D 1.30000 -72.0200
+D 1.28333 -71.9200
+D 1.30000 -71.8300
+D 1.30000 -71.6250
+D 1.28333 -71.6600
+D 1.23333 -71.6250
+D 1.20000 -71.4700
+D 1.16666 -71.4500
+D 1.15000 -71.3400
+D 1.13333 -71.1950
+D 1.10000 -71.1500
+D 1.05000 -71.2250
+D 1.05000 -71.3300
+D 1.03333 -71.4200
+D 0.93333 -71.5000
+D 0.90000 -71.6250
+D 0.83333 -71.6550
Index: kstars/CMakeLists.txt
===================================================================
--- kstars/CMakeLists.txt (révision 843335)
+++ kstars/CMakeLists.txt (copie de travail)
@@ -166,6 +166,7 @@ set(libkstarscomponents_SRCS
skycomponents/equator.cpp
skycomponents/horizoncomponent.cpp
skycomponents/milkyway.cpp
+ skycomponents/magellanicclouds.cpp
skycomponents/skycomponent.cpp
skycomponents/skycomposite.cpp
skycomponents/starblock.cpp
_______________________________________________
Kstars-devel mailing list
Kstars-devel@kde.org
https://mail.kde.org/mailman/listinfo/kstars-devel
[prev in list] [next in list] [prev in thread] [next in thread]
Configure |
About |
News |
Add a list |
Sponsored by KoreLogic