00001
00002
00003 #include "astro/SolarSystem.h"
00004 #include "astro/EarthCoordinate.h"
00005 #include "astro/EarthOrbit.h"
00006 #include "astro/JulianDate.h"
00007 #include "astro/SkyDir.h"
00008
00009 bool testSkyDir(){
00010 using namespace astro;
00011 bool ok = true;
00012 for(double l = -175 ; l < 175 ; l += 5.){
00013 for(double b = -85 ; b < 85 ; b +=5.){
00014 SkyDir sd4(l,b,SkyDir::GALACTIC);
00015 double test = fabs(l-sd4.l()) + fabs(b - sd4.b());
00016
00017
00018
00019
00020 if(test > 1E-3){ std::cout << "error - l,b output does not match input" << std::endl;
00021 ok =false;}
00022 }
00023 }
00024 for(double ra = 5 ; l < 355 ; l += 5.){
00025 for(double dec = -85 ; dec < 85 ; dec +=5.){
00026 SkyDir sd4(ra,dec);
00027 double test = fabs(ra-sd4.ra()) + fabs(dec - sd4.dec());
00028
00029
00030
00031
00032 if(test > 1E-3){
00033 std::cout << "error - ra,dec output does not match input" << std::endl;
00034 ok=false;
00035 }
00036 }
00037 }
00038
00039 SkyDir sd5(0.,0.,SkyDir::GALACTIC);
00040
00041
00042 std::cout << "galactic center corresponds to Ra = " << sd5.ra() << " , Dec = " << sd5.dec() << std::endl;
00043 return ok;
00044 }
00045
00046
00047 int main(){
00048
00049 using namespace astro;
00050 using namespace std;
00051
00052 if( !testSkyDir() )return 1;
00053
00054 JulianDate JD2000 = JulianDate(2000,1,1,12.);
00055
00056 double test=0;
00057
00058 test += fabs(JD2000 -2451545);
00059
00060 double ra=30,dec=50;
00061 SkyDir sd(ra, dec);
00062
00063 double l=-10.,b=-10.;
00064 SkyDir sd3(l,b,SkyDir::GALACTIC);
00065
00066 test += fabs(l-sd3.l()) + fabs(b - sd3.b());
00067 test += fabs(ra-sd.ra()) +fabs(dec-sd.dec());
00068
00069 double lat=40, lon=45;
00070
00071 EarthCoordinate ec(lat, lon);
00072
00073 test += fabs(lat-ec.latitude()) + fabs(lon-ec.longitude());
00074
00075
00076 SkyDir sd2(ra+1,dec);
00077 double
00078 diff = sd2.difference(sd);
00079 test+= fabs( diff/cos(dec*M_PI/180) - M_PI/180. );
00080
00081 if( test < 1e-3 ) {
00082 cout << "tests ok " << endl;
00083 return 0;
00084 }
00085 cout << "failed a test" << endl;
00086 cout << "JD2000" << JD2000 << endl;
00087 cout << "SkyDir("<<ra<<","<<dec<<") " << sd.ra() << ", " << sd.dec() << endl;
00088 cout << "SkyDir3("<<l<<","<<b<<") " << sd3.l() << ", " << sd3.b() << endl;
00089 cout << "EarthCoordinate("<<lat<<","<<lon<<") " << ec.latitude() << ", " << ec.longitude() << endl;
00090
00091
00092 return 1;
00093 }
00094