void modCalcAzel::showHorCoords ( SkyPoint sp ) { azBox->show( sp.az() ); elBox->show( sp.alt() ); }
QTime SkyObject::riseSetTime( const KStarsDateTime &dt, const GeoLocation *geo, bool rst ) { //this object does not rise or set; return an invalid time if ( checkCircumpolar(geo->lat()) ) return QTime( 25, 0, 0 ); //First of all, if the object is below the horizon at date/time dt, adjust the time //to bring it above the horizon KStarsDateTime dt2 = dt; SkyPoint p = recomputeCoords( dt, geo ); p.EquatorialToHorizontal( &(geo->GSTtoLST( dt.gst() )), geo->lat() ); if ( p.alt()->Degrees() < 0.0 ) { if ( p.az()->Degrees() < 180.0 ) { //object has not risen yet dt2 = dt.addSecs( 12.*3600. ); } else { //object has already set dt2 = dt.addSecs( -12.*3600. ); } } return geo->UTtoLT( KStarsDateTime( dt2.date(), riseSetTimeUT( dt2, geo, rst ) ) ).time(); }
void SkyObjItem::setPosition(SkyObject* so) { KStarsData *data = KStarsData::Instance(); KStarsDateTime ut = data->geo()->LTtoUT(KStarsDateTime(KDateTime::currentLocalDateTime())); SkyPoint sp = so->recomputeCoords(ut, data->geo()); //check altitude of object at this time. sp.EquatorialToHorizontal(data->lst(), data->geo()->lat()); double rounded_altitude = (int)(sp.alt().Degrees()/5.0)*5.0; m_Position = i18n("Now visible: About %1 degrees above the %2 horizon", rounded_altitude, KSUtils::toDirectionString( sp.az() ) ); }
void modCalcAzel::processLines( QTextStream &istream ) { // we open the output file // QTextStream istream(&fIn); QString outputFileName; outputFileName = OutputLineEditBatch->text(); QFile fOut( outputFileName ); fOut.open(IO_WriteOnly); QTextStream ostream(&fOut); QString line; QString space = " "; int i = 0; long double jd0, jdf; dms LST; SkyPoint sp; dms raB, decB, latB, longB, azB, elB; double epoch0B; QTime utB; ExtDate dtB; while ( ! istream.eof() ) { line = istream.readLine(); line.stripWhiteSpace(); //Go through the line, looking for parameters QStringList fields = QStringList::split( " ", line ); i = 0; // Read Ut and write in ostream if corresponds if(utCheckBatch->isChecked() ) { utB = QTime::fromString( fields[i] ); i++; } else utB = utBoxBatch->time(); if ( allRadioBatch->isChecked() ) ostream << utB.toString() << space; else if(utCheckBatch->isChecked() ) ostream << utB.toString() << space; // Read date and write in ostream if corresponds if(dateCheckBatch->isChecked() ) { dtB = ExtDate::fromString( fields[i] ); i++; } else dtB = dateBoxBatch->date(); if ( allRadioBatch->isChecked() ) ostream << dtB.toString().append(space); else if(dateCheckBatch->isChecked() ) ostream << dtB.toString().append(space); // Read Longitude and write in ostream if corresponds if (longCheckBatch->isChecked() ) { longB = dms::fromString( fields[i],TRUE); i++; } else longB = longBoxBatch->createDms(TRUE); if ( allRadioBatch->isChecked() ) ostream << longB.toDMSString() << space; else if (longCheckBatch->isChecked() ) ostream << longB.toDMSString() << space; // Read Latitude if (latCheckBatch->isChecked() ) { latB = dms::fromString( fields[i], TRUE); i++; } else latB = latBoxBatch->createDms(TRUE); if ( allRadioBatch->isChecked() ) ostream << latB.toDMSString() << space; else if (latCheckBatch->isChecked() ) ostream << latB.toDMSString() << space; // Read Epoch and write in ostream if corresponds if(epochCheckBatch->isChecked() ) { epoch0B = fields[i].toDouble(); i++; } else epoch0B = getEpoch( epochBoxBatch->text() ); if ( allRadioBatch->isChecked() ) ostream << epoch0B << space; else if(epochCheckBatch->isChecked() ) ostream << epoch0B << space; // We make the first calculations KStarsDateTime dt; dt.setFromEpoch( epoch0B ); jdf = KStarsDateTime(dtB,utB).djd(); jd0 = dt.djd(); LST = KStarsDateTime(dtB,utB).gst().Degrees() + longB.Degrees(); // Equatorial coordinates are the input coords. if (!horInputCoords) { // Read RA and write in ostream if corresponds if(raCheckBatch->isChecked() ) { raB = dms::fromString( fields[i],FALSE); i++; } else raB = raBoxBatch->createDms(FALSE); if ( allRadioBatch->isChecked() ) ostream << raB.toHMSString() << space; else if(raCheckBatch->isChecked() ) ostream << raB.toHMSString() << space; // Read DEC and write in ostream if corresponds if(decCheckBatch->isChecked() ) { decB = dms::fromString( fields[i], TRUE); i++; } else decB = decBoxBatch->createDms(); if ( allRadioBatch->isChecked() ) ostream << decB.toDMSString() << space; else if(decCheckBatch->isChecked() ) ostream << decB.toDMSString() << space; sp = SkyPoint (raB, decB); sp.apparentCoord(jd0, jdf); sp.EquatorialToHorizontal( &LST, &latB ); ostream << sp.az()->toDMSString() << space << sp.alt()->toDMSString() << endl; // Input coords are horizontal coordinates } else { if(azCheckBatch->isChecked() ) { azB = dms::fromString( fields[i],FALSE); i++; } else azB = azBoxBatch->createDms(); if ( allRadioBatch->isChecked() ) ostream << azB.toHMSString() << space; else if(raCheckBatch->isChecked() ) ostream << azB.toHMSString() << space; // Read DEC and write in ostream if corresponds if(elCheckBatch->isChecked() ) { elB = dms::fromString( fields[i], TRUE); i++; } else elB = decBoxBatch->createDms(); if ( allRadioBatch->isChecked() ) ostream << elB.toDMSString() << space; else if(elCheckBatch->isChecked() ) ostream << elB.toDMSString() << space; sp.setAz(azB); sp.setAlt(elB); sp.HorizontalToEquatorial( &LST, &latB ); ostream << sp.ra()->toHMSString() << space << sp.dec()->toDMSString() << endl; } } fOut.close(); }
void ObservingList::slotAddObject( SkyObject *obj, bool session, bool update ) { bool addToWishList=true; if( ! obj ) obj = ks->map()->clickedObject(); if( obj->name() == "star" ) { KMessageBox::sorry(0, i18n( "Unnamed stars are not supported in the observing lists")); return; } //First, make sure object is not already in the list if ( obsList().contains( obj ) ) { addToWishList = false; if( ! session ) { ks->statusBar()->changeItem( i18n( "%1 is already in your wishlist.", obj->name() ), 0 ); return; } } if ( session && sessionList().contains( obj ) ) { ks->statusBar()->changeItem( i18n( "%1 is already in the session plan.", obj->name() ), 0 ); return; } QString smag = "--"; if ( - 30.0 < obj->mag() && obj->mag() < 90.0 ) smag = QString::number( obj->mag(), 'g', 2 ); // The lower limit to avoid display of unrealistic comet magnitudes SkyPoint p = obj->recomputeCoords( dt, geo ); //Insert object in the Wish List if( addToWishList ) { m_ObservingList.append( obj ); m_CurrentObject = obj; QList<QStandardItem*> itemList; QString ra, dec; if(obj->name() == "star" ) { ra = obj->ra0().toHMSString(); dec = obj->dec0().toDMSString(); } else { ra = p.ra().toHMSString(); dec = p.dec().toDMSString(); } itemList << new QStandardItem( obj->translatedName() ) << new QStandardItem( ra ) << new QStandardItem( dec ) << new QStandardItem( smag ) << new QStandardItem( obj->typeName() ); m_Model->appendRow( itemList ); //Note addition in statusbar ks->statusBar()->changeItem( i18n( "Added %1 to observing list.", obj->name() ), 0 ); ui->TableView->resizeColumnsToContents(); if( ! update ) slotSaveList(); } //Insert object in the Session List if( session ){ m_SessionList.append(obj); dt.setTime( TimeHash.value( obj->name(), obj->transitTime( dt, geo ) ) ); dms lst(geo->GSTtoLST( dt.gst() )); p.EquatorialToHorizontal( &lst, geo->lat() ); QList<QStandardItem*> itemList; QString ra, dec, time = "--", alt = "--", az = "--"; QStandardItem *BestTime = new QStandardItem(); if(obj->name() == "star" ) { ra = obj->ra0().toHMSString(); dec = obj->dec0().toDMSString(); BestTime->setData( QString( "--" ), Qt::DisplayRole ); } else { ra = p.ra().toHMSString(); dec = p.dec().toDMSString(); BestTime->setData( TimeHash.value( obj->name(), obj->transitTime( dt, geo ) ), Qt::DisplayRole ); alt = p.alt().toDMSString(); az = p.az().toDMSString(); } // TODO: Change the rest of the parameters to their appropriate datatypes. itemList << new QStandardItem( obj->translatedName() ) << new QStandardItem( ra ) << new QStandardItem( dec ) << new QStandardItem( smag ) << new QStandardItem( obj->typeName() ) << BestTime << new QStandardItem( alt ) << new QStandardItem( az ); m_Session->appendRow( itemList ); //Adding an object should trigger the modified flag isModified = true; ui->SessionView->resizeColumnsToContents(); //Note addition in statusbar ks->statusBar()->changeItem( i18n( "Added %1 to session list.", obj->name() ), 0 ); } setSaveImagesButton(); }