static double wcslib_pixel_scale(const anwcslib_t* anwcslib) { struct wcsprm* wcs = anwcslib->wcs; //double* cd = wcs->m_cd; double* cd = wcs->cd; double ps; //printf("WCSlib pixel scale: cd %g,%g,%g,%g\n", cd[0], cd[1], cd[2], cd[3]); // HACK -- assume "cd" elements are set... ps = deg2arcsec(sqrt(fabs(cd[0]*cd[3] - cd[1]*cd[2]))); if (ps == 0.0) { // Try CDELT //printf("WCSlib pixel scale: cdelt %g,%g\n", wcs->cdelt[0], wcs->cdelt[1]); ps = deg2arcsec(sqrt(fabs(wcs->cdelt[0] * wcs->cdelt[1]))); } assert(ps > 0.0); return ps; }
static void check_supp1(CuTest* tc, const tycho2_entry* e) { CuAssertIntEquals(tc, 2, e->tyc1); CuAssertIntEquals(tc, 1127, e->tyc2); CuAssertIntEquals(tc, 2, e->tyc3); CuAssertIntEquals(tc, 0, e->photo_center); CuAssertIntEquals(tc, 0, e->no_motion); CuAssertIntEquals(tc, FALSE, e->tycho1_star); CuAssertDblEquals(tc, 0.0, e->mean_ra, 1e-8); CuAssertDblEquals(tc, 0.0, e->mean_dec, 1e-8); CuAssertDblEquals(tc, 4.36837051, e->ra, 1e-8); CuAssertDblEquals(tc, 0.31948829, e->dec, 1e-8); CuAssertDblEquals(tc, -32.1, e->pm_ra * 1000.0, 1e-1); CuAssertDblEquals(tc, -9.1, e->pm_dec * 1000.0, 1e-1); CuAssertDblEquals(tc, 13.6, deg2mas(e->sigma_ra), 1e-1); CuAssertDblEquals(tc, 8.3, deg2mas(e->sigma_dec), 1e-1); CuAssertDblEquals(tc, 8.2, e->sigma_pm_ra * 1000.0, 1e-1); CuAssertDblEquals(tc, 5.0, e->sigma_pm_dec * 1000.0, 1e-1); CuAssertDblEquals(tc, 10.279, e->mag_HP, 1e-3); CuAssertDblEquals(tc, 0.041, e->sigma_HP, 1e-3); CuAssertDblEquals(tc, 75.0, deg2arcsec(e->prox) * 10.0, 1e-1); CuAssertIntEquals(tc, 1397, e->hipparcos_id); CuAssertIntEquals(tc, 1, strlen(e->hip_ccdm)); CuAssertIntEquals(tc, 0, strcmp(e->hip_ccdm, "B")); CuAssertDblEquals(tc, 0.0, deg2mas(e->sigma_mean_ra), 1e-1); CuAssertDblEquals(tc, 0.0, deg2mas(e->sigma_mean_dec), 1e-1); CuAssertDblEquals(tc, 0.0, e->epoch_mean_ra, 1e-2); CuAssertDblEquals(tc, 0.0, e->epoch_mean_dec, 1e-2); CuAssertIntEquals(tc, 0, e->nobs); CuAssertDblEquals(tc, 0.0, e->goodness_mean_ra, 1e-1); CuAssertDblEquals(tc, 0.0, e->goodness_mean_dec, 1e-1); CuAssertDblEquals(tc, 0.0, e->goodness_pm_ra, 1e-1); CuAssertDblEquals(tc, 0.0, e->goodness_pm_dec, 1e-1); CuAssertDblEquals(tc, 0.0, e->mag_BT, 1e-3); CuAssertDblEquals(tc, 0.0, e->sigma_BT, 1e-3); CuAssertDblEquals(tc, 0.0, e->mag_VT, 1e-3); CuAssertDblEquals(tc, 0.0, e->sigma_VT, 1e-3); CuAssertDblEquals(tc, 0.0, e->epoch_ra, 1e-2); CuAssertDblEquals(tc, 0.0, e->epoch_dec, 1e-2); CuAssertIntEquals(tc, FALSE, e->double_star); CuAssertIntEquals(tc, FALSE, e->photo_center_treatment); CuAssertDblEquals(tc, 0.0, e->correlation, 1e-1); }
static void plot_hd(cairo_t* cairo, plot_args_t* pargs, plotann_t* ann) { int i, N; hd_catalog_t* hdcat = NULL; double ra,dec,rad; bl* hdlist = NULL; if (!ann->hd_catalog) return; hdcat = henry_draper_open(ann->hd_catalog); if (!hdcat) { ERROR("Failed to open Henry Draper catalog file \"%s\"", ann->hd_catalog); return; } if (plotstuff_get_radec_center_and_radius(pargs, &ra, &dec, &rad)) { ERROR("Failed to get RA,Dec,radius from plotstuff"); return; } hdlist = henry_draper_get(hdcat, ra, dec, deg2arcsec(rad)); logverb("Got %zu Henry Draper stars\n", bl_size(hdlist)); N = bl_size(hdlist); for (i=0; i<N; i++) { hd_entry_t* entry = bl_access(hdlist, i); double px, py; char label[16]; if (!plotstuff_radec2xy(pargs, entry->ra, entry->dec, &px, &py)) continue; px -= 1; py -= 1; if (px < 1 || py < 1 || px > pargs->W || py > pargs->H) continue; logverb("HD %i at RA,Dec (%g,%g) -> xy (%g, %g)\n", entry->hd, entry->ra, entry->dec, px, py); plotstuff_stack_marker(pargs, px, py); if (ann->HD_labels) { sprintf(label, "HD %i", entry->hd); plotstuff_stack_text(pargs, cairo, label, px, py); } } bl_free(hdlist); henry_draper_close(hdcat); }
static double deg2mas(double x) { return 1000.0 * deg2arcsec(x); }
double tan_pixel_scale(const tan_t* tan) { double scale = deg2arcsec(sqrt(fabs(tan_det_cd(tan)))); return scale; }