END_TEST START_TEST(test_altaz_2) { // test 2, 2016-04-12T19:20:47 HST = 2016-4-13U20:23:47 struct ln_date test_t; test_t.years = 2016; test_t.months = 4; test_t.days = 13; test_t.hours = 20; test_t.minutes = 23; test_t.seconds = 47; double JD = ln_get_julian_day (&test_t); ck_assert_dbl_eq (JD, 2457492.34985, 10e-5); ck_assert_dbl_eq (ln_get_mean_sidereal_time (JD), ln_get_apparent_sidereal_time (JD) + 6.842610000035165e-05, 10e-10); }
double ln_get_apparent_sidereal_time (double JD) { double correction, sidereal; struct ln_nutation nutation; /* get the mean sidereal time */ sidereal = ln_get_mean_sidereal_time (JD); /* add corrections for nutation in longitude and for the true obliquity of the ecliptic */ ln_get_nutation (JD, &nutation); correction = (nutation.longitude / 15.0 * cos (ln_deg_to_rad(nutation.obliquity))); sidereal += correction; return sidereal; }
END_TEST START_TEST(test_altaz_1) { // test 1, 2016-01-12T19:20:47 HST = 2016-01-13U05:20:47 struct ln_date test_t; test_t.years = 2016; test_t.months = 1; test_t.days = 13; test_t.hours = 5; test_t.minutes = 20; test_t.seconds = 47; double JD = ln_get_julian_day (&test_t); ck_assert_dbl_eq (JD, 2457400.7227662038, 10e-10); struct ln_hrz_posn hrz, res_hrz; hrz.alt = 80; hrz.az = 20; struct ln_equ_posn pos; pos.ra = 20; pos.dec = 80; int32_t azc = -20000000; int32_t altc = 1000; int ret = altAzTest->test_hrz2counts (&hrz, azc, altc); ck_assert_int_eq (ret, 0); ck_assert_int_eq (azc, -13048946); ck_assert_int_eq (altc, 3169029); altAzTest->test_counts2hrz (azc, altc, &res_hrz); ck_assert_dbl_eq (res_hrz.az, hrz.az, 10e-5); ck_assert_dbl_eq (res_hrz.alt, hrz.alt, 10e-5); ck_assert_dbl_eq (ln_get_mean_sidereal_time (JD), ln_get_apparent_sidereal_time (JD) + 7.914799999397815e-06, 10e-10); altAzTest->modelOff (); ret = altAzTest->test_sky2counts (JD, 0, &pos, azc, altc); ck_assert_int_eq (ret, 0); #ifdef RTS2_LIBERFA ck_assert_int_eq (azc, 16135692); ck_assert_int_eq (altc, 27318632); #else ck_assert_int_eq (azc, 16147941); ck_assert_int_eq (altc, 27349158); #endif altAzTest->test_counts2sky (JD, azc, altc, pos.ra, pos.dec); #ifdef RTS2_LIBERFA ck_assert_dbl_eq (pos.ra, 20, 10e-1); ck_assert_dbl_eq (pos.dec, 80, 10e-1); #else ck_assert_dbl_eq (pos.ra, 20, 10e-4); ck_assert_dbl_eq (pos.dec, 80, 10e-4); #endif altAzTest->modelOn (); // origin pos.ra = 344.16613; pos.dec = -80.3703305; ret = altAzTest->test_sky2counts (JD, 0, &pos, azc, altc); ck_assert_int_eq (ret, 0); #ifdef RTS2_LIBERFA ck_assert_int_eq (azc, 49514704); ck_assert_int_eq (altc, 12305112); #else ck_assert_int_eq (azc, 49510278); ck_assert_int_eq (altc, 12292286); #endif // target pos.ra = 62.95859; pos.dec = -80.51601; float e = altAzTest->test_move (JD, &pos, azc, altc, 2.0, 200); ck_assert_msg (!std::isnan (e), "position %f %f not reached", pos.ra, pos.dec); struct ln_equ_posn curr; curr.ra = curr.dec = 0; altAzTest->test_counts2sky (JD, azc, altc, curr.ra, curr.dec); #ifdef RTS2_LIBERFA ck_assert_dbl_eq (pos.ra, curr.ra, 10e-1); ck_assert_dbl_eq (pos.dec, curr.dec, 10e-1); #else ck_assert_dbl_eq (pos.ra, curr.ra, 10e-3); ck_assert_dbl_eq (pos.dec, curr.dec, 10e-3); #endif altAzTest->test_counts2hrz (-70194687, -48165219, &hrz); ck_assert_dbl_eq (hrz.alt, -4.621631, 10e-3); ck_assert_dbl_eq (hrz.az, 73.446355, 10e-3); ret = altAzTest->test_hrz2counts (&hrz, azc, altc); ck_assert_int_eq (ret, 0); ck_assert_int_eq (azc, 64023041); ck_assert_int_eq (altc, 18943644); altAzTest->test_counts2hrz (-68591258, -68591258, &hrz); ck_assert_dbl_eq (hrz.alt, 75.047819, 10e-2); ck_assert_dbl_eq (hrz.az, 262.047819, 10e-2); ret = altAzTest->test_hrz2counts (&hrz, azc, altc); ck_assert_int_eq (ret, 0); ck_assert_int_eq (azc, 32072038); ck_assert_int_eq (altc, 4092184); }