IPP Software Navigation Tools IPP Links Communication Pan-STARRS Links

Changeset 12729


Ignore:
Timestamp:
Apr 3, 2007, 10:53:29 AM (19 years ago)
Author:
eugene
Message:

added theta, skew, scale, dscale

File:
1 edited

Legend:

Unmodified
Added
Removed
  • trunk/Ohana/src/opihi/dvo/imextract.c

    r12332 r12729  
    11# include "dvoshell.h"
    22
    3 enum {ZERO, RA, DEC, Xm, AIRMASS, MCAL, dMCAL, PHOTCODE, TIME, FWHM, EXPTIME, NSTAR, SKY, NCAL, FLAG};
     3enum {ZERO, RA, DEC, Xm, AIRMASS, MCAL, dMCAL, PHOTCODE, TIME, FWHM, EXPTIME, NSTAR, SKY, NCAL, FLAG, NX_PIX, NY_PIX, THETA, SKEW, SCALE, DSCALE};
    44
    55int imextract (int argc, char **argv) {
     
    9191  if (!strcasecmp (argv[1], "sky")) mode = SKY;
    9292  if (!strcasecmp (argv[1], "flag")) mode = FLAG;
     93  if (!strcasecmp (argv[1], "NX")) mode = NX_PIX;
     94  if (!strcasecmp (argv[1], "NY")) mode = NY_PIX;
     95  if (!strcasecmp (argv[1], "theta")) mode = THETA;
     96  if (!strcasecmp (argv[1], "skew")) mode = SKEW;
     97  if (!strcasecmp (argv[1], "scale")) mode = SCALE;
     98  if (!strcasecmp (argv[1], "dscale")) mode = DSCALE;
    9399  if (mode == ZERO) {
    94100    gprint (GP_ERR, "value may be one of the following:\n");
     
    121127    if (FlagSelect && (FlagValue != image[j].code)) continue;
    122128    switch (mode) {
    123     case (RA):
    124       if (!FindMosaicForImage (image, Nimage, j)) continue;
    125       x = 0.5*image[j].NX;
    126       y = 0.5*image[j].NY;
    127       XY_to_RD (&ra, &dec, x, y, &image[j].coords);
    128       vec[0].elements[N] = ra;
    129       break;
    130     case (DEC):
    131       if (!FindMosaicForImage (image, Nimage, j)) continue;
    132       x = 0.5*image[j].NX;
    133       y = 0.5*image[j].NY;
    134       XY_to_RD (&ra, &dec, x, y, &image[j].coords);
    135       vec[0].elements[N] = dec;
    136       break;
    137     case (Xm):
    138       vec[0].elements[N] = pow(10.0, 0.01*image[j].Xm);
    139       break;
    140     case (AIRMASS):
    141       vec[0].elements[N] = image[j].secz;
    142       break;
    143     case (MCAL):
    144       vec[0].elements[N] = image[j].Mcal;
    145       break;
    146     case (dMCAL):
    147       vec[0].elements[N] = image[j].dMcal;
    148       break;
    149     case (PHOTCODE):
    150       vec[0].elements[N] = image[j].photcode;
    151       break;
    152     case (TIME):
    153       t = image[j].tzero + 0.5*image[j].NY * image[j].trate / 10000;
    154       vec[0].elements[N] = TimeValue (t, TimeReference, TimeFormat);
    155       break;
    156     case (FWHM):
    157       vec[0].elements[N] = image[j].fwhm_x / 25.0;
    158       break;
    159     case (EXPTIME):
    160       vec[0].elements[N] = image[j].exptime;
    161       break;
    162     case (NSTAR):
    163       vec[0].elements[N] = image[j].nstar;
    164       break;
    165     case (NCAL):
    166       vec[0].elements[N] = image[j].Mxxxx;
    167       break;
    168     case (SKY):
    169       vec[0].elements[N] = image[j].Myyyy + 0x8000;
    170       break;
    171     case (FLAG):
    172       vec[0].elements[N] = image[j].code;
    173       break;
    174     }
     129      case RA:
     130        if (!FindMosaicForImage (image, Nimage, j)) continue;
     131        x = 0.5*image[j].NX;
     132        y = 0.5*image[j].NY;
     133        XY_to_RD (&ra, &dec, x, y, &image[j].coords);
     134        vec[0].elements[N] = ra;
     135        break;
     136      case DEC:
     137        if (!FindMosaicForImage (image, Nimage, j)) continue;
     138        x = 0.5*image[j].NX;
     139        y = 0.5*image[j].NY;
     140        XY_to_RD (&ra, &dec, x, y, &image[j].coords);
     141        vec[0].elements[N] = dec;
     142        break;
     143      case Xm:
     144        vec[0].elements[N] = pow(10.0, 0.01*image[j].Xm);
     145        break;
     146      case AIRMASS:
     147        vec[0].elements[N] = image[j].secz;
     148        break;
     149      case MCAL:
     150        vec[0].elements[N] = image[j].Mcal;
     151        break;
     152      case dMCAL:
     153        vec[0].elements[N] = image[j].dMcal;
     154        break;
     155      case PHOTCODE:
     156        vec[0].elements[N] = image[j].photcode;
     157        break;
     158      case TIME:
     159        t = image[j].tzero + 0.5*image[j].NY * image[j].trate / 10000;
     160        vec[0].elements[N] = TimeValue (t, TimeReference, TimeFormat);
     161        break;
     162      case FWHM:
     163        vec[0].elements[N] = image[j].fwhm_x / 25.0;
     164        break;
     165      case EXPTIME:
     166        vec[0].elements[N] = image[j].exptime;
     167        break;
     168      case NSTAR:
     169        vec[0].elements[N] = image[j].nstar;
     170        break;
     171      case NCAL:
     172        vec[0].elements[N] = image[j].Mxxxx;
     173        break;
     174      case SKY:
     175        vec[0].elements[N] = image[j].Myyyy + 0x8000;
     176        break;
     177      case FLAG:
     178        vec[0].elements[N] = image[j].code;
     179        break;
     180      case NX_PIX:
     181        vec[0].elements[N] = image[j].NX;
     182        break;
     183      case NY_PIX:
     184        vec[0].elements[N] = image[j].NY;
     185        break;
     186      case THETA: {
     187        double theta1, theta2, s1, s2;
     188        s1 = SIGN(image[j].coords.pc1_1);
     189        s2 = SIGN(image[j].coords.pc2_2);
     190        theta1 = DEG_RAD*atan2 (+s1*image[j].coords.pc1_2, s1*image[j].coords.pc1_1);
     191        theta2 = DEG_RAD*atan2 (-s2*image[j].coords.pc2_1, s2*image[j].coords.pc2_2);
     192        vec[0].elements[N] = 0.5*(theta1+theta2);
     193        break; }
     194      case SKEW: {
     195        double theta1, theta2, s1, s2;
     196        s1 = SIGN(image[j].coords.pc1_1);
     197        s2 = SIGN(image[j].coords.pc2_2);
     198        theta1 = DEG_RAD*atan2 (+s1*image[j].coords.pc1_2, s1*image[j].coords.pc1_1);
     199        theta2 = DEG_RAD*atan2 (-s2*image[j].coords.pc2_1, s2*image[j].coords.pc2_2);
     200        vec[0].elements[N] = (theta1-theta2);
     201        break; }
     202      case SCALE: {
     203        double scale1, scale2;
     204        scale1 = fabs(image[j].coords.cdelt1);
     205        scale2 = fabs(image[j].coords.cdelt2);
     206        vec[0].elements[N] = 0.5*(scale1+scale2);
     207        break; }
     208      case DSCALE: {
     209        double scale1, scale2;
     210        scale1 = fabs(image[j].coords.cdelt1);
     211        scale2 = fabs(image[j].coords.cdelt2);
     212        vec[0].elements[N] = (scale1-scale2);
     213        break; }
     214          }
    175215    N++;
    176216  }
Note: See TracChangeset for help on using the changeset viewer.