DeepSkyObject::DeepSkyObject( const CatalogEntryData &data, CatalogComponent *cat ) { // FIXME: This assumes that CatalogEntryData coordinates have // J2000.0 as epoch as opposed to the catalog's epoch!!! -- asimha qWarning() << "Creating a DeepSkyObject from CatalogEntryData assumes that coordinates are J2000.0"; setType( data.type ); setRA0( data.ra/15.0 ); // NOTE: CatalogEntryData stores RA in degrees, whereas setRA0() wants it in hours. setDec0( data.dec ); setLongName( data.long_name ); if( ! data.catalog_name.isEmpty() ) setName( data.catalog_name + ' ' + QString::number( data.ID ) ); else { setName( data.long_name ); setLongName( QString() ); } MajorAxis = data.major_axis; MinorAxis = data.minor_axis; PositionAngle = data.position_angle; setMag( data.magnitude ); PGC = 0; UGC = 0; setCatalog( data.catalog_name ); updateID = updateNumID = 0; customCat = cat; Flux = data.flux; // Disable image loading on init //loadImage(); }
void StarObject::updateCoords( KSNumbers *num, bool , const dms*, const dms*, bool ) { //Correct for proper motion of stars. Determine RA and Dec offsets. //Proper motion is given im milliarcsec per year by the pmRA() and pmDec() functions. //That is numerically identical to the number of arcsec per millenium, so multiply by //KSNumbers::julianMillenia() to find the offsets in arcsec. // Correction: The method below computes the proper motion before the // precession. If we precessed first then the direction of the proper // motion correction would depend on how far we've precessed. -jbb double saveRA = ra0().Hours(); double saveDec = dec0().Degrees(); double newRA, newDec; getIndexCoords( num, &newRA, &newDec ); newRA /= 15.0; // getIndexCoords returns in Degrees, while we want the RA in Hours setRA0( newRA ); setDec0( newDec ); SkyPoint::updateCoords( num ); setRA0( saveRA ); setDec0( saveDec ); }
void StarObject::init( const starData *stardata ) { double ra, dec; ra = stardata->RA / 1000000.0; dec = stardata->Dec / 100000.0; setType( SkyObject::STAR ); setMag( stardata->mag / 100.0 ); setRA0( ra ); setDec0( dec ); setRA( ra ); setDec( dec ); SpType[0] = stardata->spec_type[0]; SpType[1] = stardata->spec_type[1]; PM_RA = stardata->dRA / 10.0; PM_Dec = stardata->dDec / 10.0; Parallax = stardata->parallax / 10.0; Multiplicity = stardata->flags & 0x02; Variability = stardata->flags & 0x04 ; updateID = updateNumID = 0; HD = stardata->HD; B = V = 99.9; // DEBUG Edit. For testing proper motion. Uncomment all related blocks to test. // WARNING: You can debug only ONE STAR AT A TIME, because // the StarObject::Trail is static. It has to be // static, because otherwise, we can run into segfaults // due to the memcpy() that we do to create stars /* testStar = false; if( stardata->HD == 103095 && Trail.size() == 0 ) { // Populate Trail with various positions kDebug() << "TEST STAR FOUND!"; testStar = true; KSNumbers num( J2000 ); // Some estimate, doesn't matter. long double jy; for( jy = -10000.0; jy <= 10000.0; jy += 500.0 ) { num.updateValues( J2000 + jy * 365.238 ); double ra, dec; getIndexCoords( &num, &ra, &dec ); Trail.append( new SkyPoint( ra / 15.0, dec ) ); } kDebug() << "Populated the star's trail with " << Trail.size() << " entries."; } */ // END DEBUG. }
void StarObject::init( const deepStarData *stardata ) { double ra, dec, BV_Index; ra = stardata->RA / 1000000.0; dec = stardata->Dec / 100000.0; setType( SkyObject::STAR ); if( stardata->V == 30000 && stardata->B != 30000 ) setMag( ( stardata->B - 1600 ) / 1000.0 ); // FIXME: Is it okay to make up stuff like this? else setMag( stardata->V / 1000.0 ); setRA0( ra ); setDec0( dec ); setRA( ra ); setDec( dec ); SpType[1] = '?'; SpType[0] = 'B'; if( stardata->B == 30000 || stardata->V == 30000 ) { BV_Index = -100; SpType[0] = '?'; } else { BV_Index = ( stardata->B - stardata->V ) / 1000.0; ( BV_Index > 0.0 ) && ( SpType[0] = 'A' ); ( BV_Index > 0.325 ) && ( SpType[0] = 'F' ); ( BV_Index > 0.575 ) && ( SpType[0] = 'G' ); ( BV_Index > 0.975 ) && ( SpType[0] = 'K' ); ( BV_Index > 1.6 ) && ( SpType[0] = 'M' ); } PM_RA = stardata->dRA / 100.0; PM_Dec = stardata->dDec / 100.0; Parallax = 0.0; Multiplicity = 0; Variability = 0; updateID = updateNumID = 0; B = stardata->B / 1000.0; V = stardata->V / 1000.0; }