Changeset 12729
- Timestamp:
- Apr 3, 2007, 10:53:29 AM (19 years ago)
- File:
-
- 1 edited
-
trunk/Ohana/src/opihi/dvo/imextract.c (modified) (3 diffs)
Legend:
- Unmodified
- Added
- Removed
-
trunk/Ohana/src/opihi/dvo/imextract.c
r12332 r12729 1 1 # include "dvoshell.h" 2 2 3 enum {ZERO, RA, DEC, Xm, AIRMASS, MCAL, dMCAL, PHOTCODE, TIME, FWHM, EXPTIME, NSTAR, SKY, NCAL, FLAG };3 enum {ZERO, RA, DEC, Xm, AIRMASS, MCAL, dMCAL, PHOTCODE, TIME, FWHM, EXPTIME, NSTAR, SKY, NCAL, FLAG, NX_PIX, NY_PIX, THETA, SKEW, SCALE, DSCALE}; 4 4 5 5 int imextract (int argc, char **argv) { … … 91 91 if (!strcasecmp (argv[1], "sky")) mode = SKY; 92 92 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; 93 99 if (mode == ZERO) { 94 100 gprint (GP_ERR, "value may be one of the following:\n"); … … 121 127 if (FlagSelect && (FlagValue != image[j].code)) continue; 122 128 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 } 175 215 N++; 176 216 }
Note:
See TracChangeset
for help on using the changeset viewer.
