Changeset 10688 for trunk/psModules/test/astrom
- Timestamp:
- Dec 12, 2006, 6:44:46 PM (19 years ago)
- Location:
- trunk/psModules/test/astrom
- Files:
-
- 3 edited
-
. (modified) (1 prop)
-
.cvsignore (modified) (1 diff)
-
tap_pmAstrometryWCS_DVO2.c (modified) (4 diffs)
Legend:
- Unmodified
- Added
- Removed
-
trunk/psModules/test/astrom
- Property svn:ignore
-
old new 7 7 tst_pmAstrometry01 8 8 tap_pmAstrometryWCS 9 tap_pmAstrometryWCS_DVO2
-
- Property svn:ignore
-
trunk/psModules/test/astrom/.cvsignore
r10606 r10688 7 7 tst_pmAstrometry01 8 8 tap_pmAstrometryWCS 9 tap_pmAstrometryWCS_DVO2 -
trunk/psModules/test/astrom/tap_pmAstrometryWCS_DVO2.c
r10645 r10688 17 17 void test2(); // small rotation 18 18 void test3(); // 2nd order term 19 void test1x(); // basic TAN projection with central offset 20 void test2x(); // small rotation with central offset 21 void test3x(); // 2nd order term with central offset 19 22 20 23 int main (void) 21 24 { 22 plan_tests( 240);25 plan_tests(984); 23 26 24 27 diag("pmAstromReadWCS tests compared with DVO coords routines"); 25 28 26 29 test1(); 27 // test2(); 28 // test3(); 30 test2(); 31 test3(); 32 test1x(); 33 test2x(); 34 test3x(); 29 35 return exit_status(); 36 } 37 38 void test3x() 39 { 40 diag("test pmAstromReadWCS"); 41 psMemId id = psMemGetId(); 42 43 // build a DVO-style coordinate system 44 Coords coords; 45 strcpy (coords.ctype, "RA---TAN"); 46 coords.crval1 = 0.0; 47 coords.crval2 = 0.0; 48 coords.crpix1 = +50.0; 49 coords.crpix2 = -20.0; 50 coords.cdelt1 = 1.0/3600; 51 coords.cdelt2 = 1.0/3600; 52 coords.pc1_1 = 1.0; 53 coords.pc1_2 = 0.0; 54 coords.pc2_1 = 0.0; 55 coords.pc2_2 = 1.0; 56 coords.Npolyterms = 2; 57 for (int i = 0; i < 7; i++) { 58 coords.polyterms[i][0] = 0.0; 59 coords.polyterms[i][1] = 0.0; 60 } 61 coords.polyterms[0][0] = 0.01; // L vs X^2 62 coords.polyterms[2][1] = 0.01; // M vs Y^2 63 64 65 psMetadata *header = WriteCoordsToHeader (&coords); 66 pmFPA *fpa = pmFPAAlloc (NULL); 67 pmChip *chip = pmChipAlloc (fpa, NULL); 68 69 bool status = pmAstromReadWCS (fpa, chip, header, PM_RAD_DEG*10.0/3600.0, false); 70 ok (status, "converted WCS keywords to WCS astrometry"); 71 skip_start (!status, 1, "*** WCS Conversion FAILS *** : skipping related tests"); 72 73 psPlane *onChip = psPlaneAlloc(); 74 psPlane *onFPA = psPlaneAlloc(); 75 psPlane *onTPA = psPlaneAlloc(); 76 psSphere *onSky = psSphereAlloc(); 77 78 double rDVO, dDVO; 79 for (double x = -2000; x <= +2000; x+= 500.0) { 80 for (double y = -2000; y <= +2000; y+= 500.0) { 81 XY_to_RD (&rDVO, &dDVO, x, y, &coords); 82 83 onChip->x = x; 84 onChip->y = y; 85 86 psPlaneTransformApply (onFPA, chip->toFPA, onChip); 87 psPlaneDistortApply (onTPA, fpa->toTPA, onFPA, 0.0, 0.0); 88 psDeproject (onSky, onTPA, fpa->toSky); 89 90 while (onSky->r > 2*M_PI) 91 onSky->r -= 2*M_PI; 92 while (onSky->r < 0) 93 onSky->r += 2*M_PI; 94 95 ok_float(rDVO, onSky->r*PM_DEG_RAD, "coordinate match: %f vs %f (delta = %f)", rDVO, onSky->r*PM_DEG_RAD, rDVO - onSky->r*PM_DEG_RAD); 96 ok_float(dDVO, onSky->d*PM_DEG_RAD, "coordinate match: %f vs %f (delta = %f)", dDVO, onSky->d*PM_DEG_RAD, dDVO - onSky->d*PM_DEG_RAD); 97 } 98 } 99 psFree (onSky); 100 psFree (onTPA); 101 psFree (onFPA); 102 psFree (onChip); 103 104 skip_end(); 105 psFree (fpa); 106 psFree (chip); 107 psFree (header); 108 109 ok(!psMemCheckLeaks (id, NULL, stderr, false), "no memory leaks"); 110 } 111 112 void test2x() 113 { 114 diag("test pmAstromReadWCS"); 115 psMemId id = psMemGetId(); 116 117 // build a DVO-style coordinate system 118 Coords coords; 119 strcpy (coords.ctype, "RA---TAN"); 120 coords.crval1 = 0.0; 121 coords.crval2 = 0.0; 122 coords.crpix1 = +50.0; 123 coords.crpix2 = -20.0; 124 coords.cdelt1 = 1.0/3600; 125 coords.cdelt2 = 1.0/3600; 126 coords.pc1_1 = 0.9; 127 coords.pc1_2 = 0.1; 128 coords.pc2_1 =-0.1; 129 coords.pc2_2 = 0.9; 130 coords.Npolyterms = 0; 131 for (int i = 0; i < 7; i++) { 132 coords.polyterms[i][0] = 0.0; 133 coords.polyterms[i][1] = 0.0; 134 } 135 136 psMetadata *header = WriteCoordsToHeader (&coords); 137 pmFPA *fpa = pmFPAAlloc (NULL); 138 pmChip *chip = pmChipAlloc (fpa, NULL); 139 140 bool status = pmAstromReadWCS (fpa, chip, header, PM_RAD_DEG*10.0/3600.0, false); 141 ok (status, "converted WCS keywords to WCS astrometry"); 142 skip_start (!status, 1, "*** WCS Conversion FAILS *** : skipping related tests"); 143 144 psPlane *onChip = psPlaneAlloc(); 145 psPlane *onFPA = psPlaneAlloc(); 146 psPlane *onTPA = psPlaneAlloc(); 147 psSphere *onSky = psSphereAlloc(); 148 149 double rDVO, dDVO; 150 for (double x = -2000; x <= +2000; x+= 500.0) { 151 for (double y = -2000; y <= +2000; y+= 500.0) { 152 XY_to_RD (&rDVO, &dDVO, x, y, &coords); 153 154 onChip->x = x; 155 onChip->y = y; 156 157 psPlaneTransformApply (onFPA, chip->toFPA, onChip); 158 psPlaneDistortApply (onTPA, fpa->toTPA, onFPA, 0.0, 0.0); 159 psDeproject (onSky, onTPA, fpa->toSky); 160 161 while (onSky->r > 2*M_PI) 162 onSky->r -= 2*M_PI; 163 while (onSky->r < 0) 164 onSky->r += 2*M_PI; 165 166 ok_float(rDVO, onSky->r*PM_DEG_RAD, "coordinate match: %f vs %f (delta = %f)", rDVO, onSky->r*PM_DEG_RAD, rDVO - onSky->r*PM_DEG_RAD); 167 ok_float(dDVO, onSky->d*PM_DEG_RAD, "coordinate match: %f vs %f (delta = %f)", dDVO, onSky->d*PM_DEG_RAD, dDVO - onSky->d*PM_DEG_RAD); 168 } 169 } 170 psFree (onSky); 171 psFree (onTPA); 172 psFree (onFPA); 173 psFree (onChip); 174 175 skip_end(); 176 psFree (fpa); 177 psFree (chip); 178 psFree (header); 179 180 ok(!psMemCheckLeaks (id, NULL, stderr, false), "no memory leaks"); 181 } 182 183 void test1x() 184 { 185 diag("test pmAstromReadWCS"); 186 psMemId id = psMemGetId(); 187 188 // build a DVO-style coordinate system 189 Coords coords; 190 strcpy (coords.ctype, "RA---TAN"); 191 coords.crval1 = 0.0; 192 coords.crval2 = 0.0; 193 coords.crpix1 = +50.0; 194 coords.crpix2 = -20.0; 195 coords.cdelt1 = 1.0/3600; 196 coords.cdelt2 = 1.0/3600; 197 coords.pc1_1 = 1.0; 198 coords.pc1_2 = 0.0; 199 coords.pc2_1 = 0.0; 200 coords.pc2_2 = 1.0; 201 coords.Npolyterms = 0; 202 for (int i = 0; i < 7; i++) { 203 coords.polyterms[i][0] = 0.0; 204 coords.polyterms[i][1] = 0.0; 205 } 206 207 psMetadata *header = WriteCoordsToHeader (&coords); 208 pmFPA *fpa = pmFPAAlloc (NULL); 209 pmChip *chip = pmChipAlloc (fpa, NULL); 210 211 bool status = pmAstromReadWCS (fpa, chip, header, PM_RAD_DEG*10.0/3600.0, false); 212 ok (status, "converted WCS keywords to WCS astrometry"); 213 skip_start (!status, 1, "*** WCS Conversion FAILS *** : skipping related tests"); 214 215 psPlane *onChip = psPlaneAlloc(); 216 psPlane *onFPA = psPlaneAlloc(); 217 psPlane *onTPA = psPlaneAlloc(); 218 psSphere *onSky = psSphereAlloc(); 219 220 double rDVO, dDVO; 221 for (double x = -2000; x <= +2000; x+= 500.0) { 222 for (double y = -2000; y <= +2000; y+= 500.0) { 223 XY_to_RD (&rDVO, &dDVO, x, y, &coords); 224 225 onChip->x = x; 226 onChip->y = y; 227 228 psPlaneTransformApply (onFPA, chip->toFPA, onChip); 229 psPlaneDistortApply (onTPA, fpa->toTPA, onFPA, 0.0, 0.0); 230 psDeproject (onSky, onTPA, fpa->toSky); 231 232 while (onSky->r > 2*M_PI) 233 onSky->r -= 2*M_PI; 234 while (onSky->r < 0) 235 onSky->r += 2*M_PI; 236 237 ok_float(rDVO, onSky->r*PM_DEG_RAD, "coordinate match: %f vs %f (delta = %f)", rDVO, onSky->r*PM_DEG_RAD, rDVO - onSky->r*PM_DEG_RAD); 238 ok_float(dDVO, onSky->d*PM_DEG_RAD, "coordinate match: %f vs %f (delta = %f)", dDVO, onSky->d*PM_DEG_RAD, dDVO - onSky->d*PM_DEG_RAD); 239 } 240 } 241 psFree (onSky); 242 psFree (onTPA); 243 psFree (onFPA); 244 psFree (onChip); 245 246 skip_end(); 247 psFree (fpa); 248 psFree (chip); 249 psFree (header); 250 251 ok(!psMemCheckLeaks (id, NULL, stderr, false), "no memory leaks"); 252 } 253 254 void test3() 255 { 256 diag("test pmAstromReadWCS"); 257 psMemId id = psMemGetId(); 258 259 // build a DVO-style coordinate system 260 Coords coords; 261 strcpy (coords.ctype, "RA---TAN"); 262 coords.crval1 = 0.0; 263 coords.crval2 = 0.0; 264 coords.crpix1 = 0.0; 265 coords.crpix2 = 0.0; 266 coords.cdelt1 = 1.0/3600; 267 coords.cdelt2 = 1.0/3600; 268 coords.pc1_1 = 1.0; 269 coords.pc1_2 = 0.0; 270 coords.pc2_1 = 0.0; 271 coords.pc2_2 = 1.0; 272 coords.Npolyterms = 2; 273 for (int i = 0; i < 7; i++) { 274 coords.polyterms[i][0] = 0.0; 275 coords.polyterms[i][1] = 0.0; 276 } 277 coords.polyterms[0][0] = 0.01; // L vs X^2 278 coords.polyterms[2][1] = 0.01; // M vs Y^2 279 280 281 psMetadata *header = WriteCoordsToHeader (&coords); 282 pmFPA *fpa = pmFPAAlloc (NULL); 283 pmChip *chip = pmChipAlloc (fpa, NULL); 284 285 bool status = pmAstromReadWCS (fpa, chip, header, PM_RAD_DEG*10.0/3600.0, false); 286 ok (status, "converted WCS keywords to WCS astrometry"); 287 skip_start (!status, 1, "*** WCS Conversion FAILS *** : skipping related tests"); 288 289 psPlane *onChip = psPlaneAlloc(); 290 psPlane *onFPA = psPlaneAlloc(); 291 psPlane *onTPA = psPlaneAlloc(); 292 psSphere *onSky = psSphereAlloc(); 293 294 double rDVO, dDVO; 295 for (double x = -2000; x <= +2000; x+= 500.0) { 296 for (double y = -2000; y <= +2000; y+= 500.0) { 297 XY_to_RD (&rDVO, &dDVO, x, y, &coords); 298 299 onChip->x = x; 300 onChip->y = y; 301 302 psPlaneTransformApply (onFPA, chip->toFPA, onChip); 303 psPlaneDistortApply (onTPA, fpa->toTPA, onFPA, 0.0, 0.0); 304 psDeproject (onSky, onTPA, fpa->toSky); 305 306 while (onSky->r > 2*M_PI) 307 onSky->r -= 2*M_PI; 308 while (onSky->r < 0) 309 onSky->r += 2*M_PI; 310 311 ok_float(rDVO, onSky->r*PM_DEG_RAD, "coordinate match: %f vs %f (delta = %f)", rDVO, onSky->r*PM_DEG_RAD, rDVO - onSky->r*PM_DEG_RAD); 312 ok_float(dDVO, onSky->d*PM_DEG_RAD, "coordinate match: %f vs %f (delta = %f)", dDVO, onSky->d*PM_DEG_RAD, dDVO - onSky->d*PM_DEG_RAD); 313 } 314 } 315 psFree (onSky); 316 psFree (onTPA); 317 psFree (onFPA); 318 psFree (onChip); 319 320 skip_end(); 321 psFree (fpa); 322 psFree (chip); 323 psFree (header); 324 325 ok(!psMemCheckLeaks (id, NULL, stderr, false), "no memory leaks"); 326 } 327 328 void test2() 329 { 330 diag("test pmAstromReadWCS"); 331 psMemId id = psMemGetId(); 332 333 // build a DVO-style coordinate system 334 Coords coords; 335 strcpy (coords.ctype, "RA---TAN"); 336 coords.crval1 = 0.0; 337 coords.crval2 = 0.0; 338 coords.crpix1 = 0.0; 339 coords.crpix2 = 0.0; 340 coords.cdelt1 = 1.0/3600; 341 coords.cdelt2 = 1.0/3600; 342 coords.pc1_1 = 0.9; 343 coords.pc1_2 = 0.1; 344 coords.pc2_1 =-0.1; 345 coords.pc2_2 = 0.9; 346 coords.Npolyterms = 0; 347 for (int i = 0; i < 7; i++) { 348 coords.polyterms[i][0] = 0.0; 349 coords.polyterms[i][1] = 0.0; 350 } 351 352 psMetadata *header = WriteCoordsToHeader (&coords); 353 pmFPA *fpa = pmFPAAlloc (NULL); 354 pmChip *chip = pmChipAlloc (fpa, NULL); 355 356 bool status = pmAstromReadWCS (fpa, chip, header, PM_RAD_DEG*10.0/3600.0, false); 357 ok (status, "converted WCS keywords to WCS astrometry"); 358 skip_start (!status, 1, "*** WCS Conversion FAILS *** : skipping related tests"); 359 360 psPlane *onChip = psPlaneAlloc(); 361 psPlane *onFPA = psPlaneAlloc(); 362 psPlane *onTPA = psPlaneAlloc(); 363 psSphere *onSky = psSphereAlloc(); 364 365 double rDVO, dDVO; 366 for (double x = -2000; x <= +2000; x+= 500.0) { 367 for (double y = -2000; y <= +2000; y+= 500.0) { 368 XY_to_RD (&rDVO, &dDVO, x, y, &coords); 369 370 onChip->x = x; 371 onChip->y = y; 372 373 psPlaneTransformApply (onFPA, chip->toFPA, onChip); 374 psPlaneDistortApply (onTPA, fpa->toTPA, onFPA, 0.0, 0.0); 375 psDeproject (onSky, onTPA, fpa->toSky); 376 377 while (onSky->r > 2*M_PI) 378 onSky->r -= 2*M_PI; 379 while (onSky->r < 0) 380 onSky->r += 2*M_PI; 381 382 ok_float(rDVO, onSky->r*PM_DEG_RAD, "coordinate match: %f vs %f (delta = %f)", rDVO, onSky->r*PM_DEG_RAD, rDVO - onSky->r*PM_DEG_RAD); 383 ok_float(dDVO, onSky->d*PM_DEG_RAD, "coordinate match: %f vs %f (delta = %f)", dDVO, onSky->d*PM_DEG_RAD, dDVO - onSky->d*PM_DEG_RAD); 384 } 385 } 386 psFree (onSky); 387 psFree (onTPA); 388 psFree (onFPA); 389 psFree (onChip); 390 391 skip_end(); 392 psFree (fpa); 393 psFree (chip); 394 psFree (header); 395 396 ok(!psMemCheckLeaks (id, NULL, stderr, false), "no memory leaks"); 30 397 } 31 398 … … 56 423 psMetadata *header = WriteCoordsToHeader (&coords); 57 424 pmFPA *fpa = pmFPAAlloc (NULL); 58 pmChip *chip = pm FPAAlloc (fpa, NULL);59 60 bool status = pmAstromReadWCS (fpa, chip, header, P S_RAD_DEG*10.0/3600.0, false);425 pmChip *chip = pmChipAlloc (fpa, NULL); 426 427 bool status = pmAstromReadWCS (fpa, chip, header, PM_RAD_DEG*10.0/3600.0, false); 61 428 ok (status, "converted WCS keywords to WCS astrometry"); 62 429 skip_start (!status, 1, "*** WCS Conversion FAILS *** : skipping related tests"); … … 77 444 psPlaneTransformApply (onFPA, chip->toFPA, onChip); 78 445 psPlaneDistortApply (onTPA, fpa->toTPA, onFPA, 0.0, 0.0); 79 psDeproject (on TPA, onSky, fpa->toSky);446 psDeproject (onSky, onTPA, fpa->toSky); 80 447 81 448 while (onSky->r > 2*M_PI) … … 94 461 95 462 skip_end(); 96 psFree (wcs); 463 psFree (fpa); 464 psFree (chip); 97 465 psFree (header); 98 466
Note:
See TracChangeset
for help on using the changeset viewer.
