void SkyPoint::findEcliptic( const dms *Obliquity, dms &EcLong, dms &EcLat ) { double sinRA, cosRA, sinOb, cosOb, sinDec, cosDec, tanDec; ra().SinCos( sinRA, cosRA ); dec().SinCos( sinDec, cosDec ); Obliquity->SinCos( sinOb, cosOb ); tanDec = sinDec/cosDec; // FIXME: -jbb div by zero? double y = sinRA*cosOb + tanDec*sinOb; double ELongRad = atan2( y, cosRA ); EcLong.setRadians( ELongRad ); EcLong.reduce(); EcLat.setRadians( asin( sinDec*cosOb - cosDec*sinOb*sinRA ) ); }
void SkyPoint::Equatorial1950ToGalactic(dms &galLong, dms &galLat) { double a = 192.25; double sinb, cosb, sina_RA, cosa_RA, sinDEC, cosDEC, tanDEC; dms c(303.0); dms b(27.4); tanDEC = tan( Dec.radians() ); b.SinCos(sinb,cosb); dms( a - RA.Degrees() ).SinCos(sina_RA,cosa_RA); Dec.SinCos(sinDEC,cosDEC); galLong.setRadians( c.radians() - atan2( sina_RA, cosa_RA*sinb-tanDEC*cosb) ); galLong = galLong.reduce(); galLat.setRadians( asin(sinDEC*sinb+cosDEC*cosb*cosa_RA) ); }