void Ecliptic::drawCompassLabels() { const Projector* proj = SkyMap::Instance()->projector(); KStarsData* data = KStarsData::Instance(); SkyLabeler* skyLabeler = SkyLabeler::Instance(); // Set proper color for labels QColor color( data->colorScheme()->colorNamed( "CompassColor" ) ); skyLabeler->setPen( QPen( QBrush(color), 1, Qt::SolidLine) ); KSNumbers num( data->ut().djd() ); dms elat(0.0), elng(0.0); QString label; for( int ra = 0; ra < 23; ra += 6 ) { elng.setH( ra ); SkyPoint o; o.setFromEcliptic( num.obliquity(), elng, elat ); o.setRA0( o.ra() ); o.setDec0( o.dec() ); o.EquatorialToHorizontal( data->lst(), data->geo()->lat() ); bool visible; QPointF cpoint = proj->toScreen( &o, false, &visible ); if( visible && proj->checkVisibility( &o ) ) { label.setNum( o.ra().reduce().Degrees() ); skyLabeler->drawGuideLabel( cpoint, label, 0.0 ); } } }
Ecliptic::Ecliptic(SkyComposite *parent ) : LineListIndex( parent, i18n("Ecliptic") ), m_label( name() ) { KStarsData *data = KStarsData::Instance(); KSNumbers num( data->ut().djd() ); dms elat(0.0), elng(0.0); const double eps = 0.1; const double minRa = 0.0; const double maxRa = 23.0; const double dRa = 2.0; const double dRa2 = 2. / 5.; for(double ra = minRa; ra < maxRa; ra += dRa ) { LineList* lineList = new LineList(); for(double ra2 = ra; ra2 <= ra + dRa + eps; ra2 += dRa2 ) { elng.setH( ra2 ); SkyPoint* o = new SkyPoint(); o->setFromEcliptic( num.obliquity(), elng, elat ); o->setRA0( o->ra().Hours() ); o->setDec0( o->dec().Degrees() ); o->EquatorialToHorizontal( data->lst(), data->geo()->lat() ); lineList->append( o ); } appendLine( lineList ); } }
void KSPlanetBase::findPA( const KSNumbers *num ) { //Determine position angle of planet (assuming that it is aligned with //the Ecliptic, which is only roughly correct). //Displace a point along +Ecliptic Latitude by 1 degree SkyPoint test; dms newELat( ecLat().Degrees() + 1.0 ); test.setFromEcliptic( num->obliquity(), ecLong(), newELat ); double dx = ra().Degrees() - test.ra().Degrees(); double dy = test.dec().Degrees() - dec().Degrees(); double pa; if ( dy ) { pa = atan2( dx, dy )*180.0/dms::PI; } else { pa = dx < 0 ? 90.0 : -90.0; } setPA( pa ); }