- Timestamp:
- Nov 27, 2019, 11:04:04 AM (7 years ago)
- Location:
- trunk/Ohana/src/opihi/cmd.astro
- Files:
-
- 3 edited
-
cdensify.c (modified) (2 diffs)
-
cdhistogram.c (modified) (3 diffs)
-
region.c (modified) (6 diffs)
Legend:
- Unmodified
- Added
- Removed
-
trunk/Ohana/src/opihi/cmd.astro/cdensify.c
r39294 r41158 39 39 } 40 40 41 int binning = 1; 42 if ((N = get_argument (argc, argv, "-binning"))) { 43 remove_argument (N, &argc, argv); 44 binning = atoi(argv[N]); 45 remove_argument (N, &argc, argv); 46 } 47 41 48 int PSFTYPE = IS_DOT; 42 49 if ((N = get_argument (argc, argv, "-psf"))) { … … 80 87 Ymax = graphmode.ymax; 81 88 Ymin = graphmode.ymin; 82 dX = (Xmax - Xmin) / (Xpix - 1); 83 dY = (Ymax - Ymin) / (Ypix - 1); 89 90 // (dX, dY) are the pixel scale of the output image (output pixels / input pixels) 91 92 dX = binning * (Xmax - Xmin) / (Xpix - 1); 93 dY = binning * (Ymax - Ymin) / (Ypix - 1); 84 94 85 95 CHECKVAL(Xmin); -
trunk/Ohana/src/opihi/cmd.astro/cdhistogram.c
r39233 r41158 13 13 int kapa; 14 14 Graphdata graphmode; 15 16 int binning = 1; 17 if ((N = get_argument (argc, argv, "-binning"))) { 18 remove_argument (N, &argc, argv); 19 binning = atoi(argv[N]); 20 remove_argument (N, &argc, argv); 21 } 15 22 16 23 range = NULL; … … 79 86 Ymax = graphmode.ymax; 80 87 Ymin = graphmode.ymin; 81 dX = (Xmax - Xmin) / (Xpix - 1); 82 dY = (Ymax - Ymin) / (Ypix - 1); 88 89 // (dX, dY) are the pixel scale of the output image (output pixels / input pixels) 90 91 dX = binning * (Xmax - Xmin) / (Xpix - 1); 92 dY = binning * (Ymax - Ymin) / (Ypix - 1); 83 93 84 94 CHECKVAL(Xmin); … … 90 100 CHECKVAL(dY); 91 101 92 int Nx = (Xmax - Xmin) / dX+ 1;93 int Ny = (Ymax - Ymin) / dY+ 1;102 int Nx = abs((Xmax - Xmin) / dX) + 1; 103 int Ny = abs((Ymax - Ymin) / dY) + 1; 94 104 95 105 Coords newcoords = graphmode.coords; -
trunk/Ohana/src/opihi/cmd.astro/region.c
r39225 r41158 3 3 int region (int argc, char **argv) { 4 4 5 double Ra, Dec , Radius;5 double Ra, Dec; 6 6 float dx, dy; 7 7 int N, kapa, NoClear, dXpix, dYpix; … … 54 54 } 55 55 56 float XSIZE = NAN; 57 if ((N = get_argument (argc, argv, "-xsize"))) { 58 remove_argument (N, &argc, argv); 59 XSIZE = atof (argv[N]); 60 remove_argument (N, &argc, argv); 61 if (XSIZE <= 0) { 62 gprint (GP_ERR, "ERROR: xsize <= 0\n"); 63 return FALSE; 64 } 65 } 66 67 float YSIZE = NAN; 68 if ((N = get_argument (argc, argv, "-ysize"))) { 69 remove_argument (N, &argc, argv); 70 YSIZE = atof (argv[N]); 71 remove_argument (N, &argc, argv); 72 if (YSIZE <= 0) { 73 gprint (GP_ERR, "ERROR: xsize <= 0\n"); 74 return FALSE; 75 } 76 } 77 56 78 if ((N = get_argument (argc, argv, "-ew"))) { 57 79 remove_argument (N, &argc, argv); … … 81 103 } 82 104 83 if ((argc != 4) && (argc != 5)) { 84 gprint (GP_ERR, "USAGE: region Ra Dec Radius [projection] [orientation]\n"); 105 int RadiusArg, CtypeArg; 106 if (!isnan(XSIZE) || !isnan(YSIZE)) { 107 RadiusArg = -1; 108 CtypeArg = 3; 109 if ((argc != 3) && (argc != 4)) { 110 gprint (GP_ERR, "USAGE: region Ra Dec [projection] [-xsize deg] [-ysize deg]\n"); 111 gprint (GP_ERR, " OR: region Ra Dec Radius [projection]\n"); 85 112 gprint (GP_ERR, " [-image] [-ew] [+ew] [-ns] [+ns] [-no-clear] [-angle theta]\n"); 86 113 gprint (GP_ERR, " current: %f %f (%f x %f) (%s)\n", … … 90 117 &graphmode.coords.ctype[5]); 91 118 return (FALSE); 92 } 93 119 } 120 } else { 121 RadiusArg = 3; 122 CtypeArg = 4; 123 if ((argc != 4) && (argc != 5)) { 124 gprint (GP_ERR, "USAGE: region Ra Dec Radius [projection]\n"); 125 gprint (GP_ERR, " OR: region Ra Dec [projection] [-xsize deg] [-ysize deg]\n"); 126 gprint (GP_ERR, " [-image] [-ew] [+ew] [-ns] [+ns] [-no-clear] [-angle theta]\n"); 127 gprint (GP_ERR, " current: %f %f (%f x %f) (%s)\n", 128 graphmode.coords.crval1, graphmode.coords.crval2, 129 fabs(graphmode.xmax - graphmode.xmin), 130 fabs(graphmode.ymax - graphmode.ymin), 131 &graphmode.coords.ctype[5]); 132 return (FALSE); 133 } 134 } 94 135 if (!ohana_str_to_radec (&Ra, &Dec, argv[1], argv[2])) return (FALSE); 95 Radius = atof (argv[3]); 136 137 // region 0 0 sin -- should raise an error (radius = 0 or non-numeric) 138 139 // I want to be able to support the old style call in which both of these were valid: 140 // region 0 0 90 ait 141 // region 0 0 90 <- uses existing, sticky projection type 142 // but I also want to be able to use 143 // region 0 0 ait -xsize 5 144 // region 0 0 ait -ysize 5 145 146 double Radius = NAN; 147 if (RadiusArg >= 0) { 148 Radius = atof (argv[RadiusArg]); 149 } 150 96 151 InitCoords (&graphmode.coords, "DEC--TAN"); 97 98 if (argc == 5) { 99 if (!strcasecmp (argv[4], "TAN")) 100 strcpy (graphmode.coords.ctype, "DEC--TAN"); 101 if (!strcasecmp (argv[4], "SIN")) 102 strcpy (graphmode.coords.ctype, "DEC--SIN"); 103 if (!strcasecmp (argv[4], "ARC")) 104 strcpy (graphmode.coords.ctype, "DEC--ARC"); 105 if (!strcasecmp (argv[4], "STG")) 106 strcpy (graphmode.coords.ctype, "DEC--STG"); 107 if (!strcasecmp (argv[4], "ZEA")) 108 strcpy (graphmode.coords.ctype, "DEC--ZEA"); 109 if (!strcasecmp (argv[4], "AIT")) 110 strcpy (graphmode.coords.ctype, "DEC--AIT"); 111 if (!strcasecmp (argv[4], "GLS")) 112 strcpy (graphmode.coords.ctype, "DEC--GLS"); 113 if (!strcasecmp (argv[4], "PAR")) 114 strcpy (graphmode.coords.ctype, "DEC--PAR"); 115 } 152 if (argc == CtypeArg + 1) { 153 if (!strcasecmp (argv[CtypeArg], "TAN")) { strcpy (graphmode.coords.ctype, "DEC--TAN"); goto got_ctype; } 154 if (!strcasecmp (argv[CtypeArg], "SIN")) { strcpy (graphmode.coords.ctype, "DEC--SIN"); goto got_ctype; } 155 if (!strcasecmp (argv[CtypeArg], "ARC")) { strcpy (graphmode.coords.ctype, "DEC--ARC"); goto got_ctype; } 156 if (!strcasecmp (argv[CtypeArg], "STG")) { strcpy (graphmode.coords.ctype, "DEC--STG"); goto got_ctype; } 157 if (!strcasecmp (argv[CtypeArg], "ZEA")) { strcpy (graphmode.coords.ctype, "DEC--ZEA"); goto got_ctype; } 158 if (!strcasecmp (argv[CtypeArg], "AIT")) { strcpy (graphmode.coords.ctype, "DEC--AIT"); goto got_ctype; } 159 if (!strcasecmp (argv[CtypeArg], "GLS")) { strcpy (graphmode.coords.ctype, "DEC--GLS"); goto got_ctype; } 160 if (!strcasecmp (argv[CtypeArg], "PAR")) { strcpy (graphmode.coords.ctype, "DEC--PAR"); goto got_ctype; } 161 gprint (GP_ERR, "ERROR: invalid projection type %s\n", argv[CtypeArg]); 162 gprint (GP_ERR, "allowed values: TAN, SIN, ARC, STG, ZEA, AIT, GLS, PAR\n"); 163 return FALSE; 164 } 165 got_ctype: 116 166 117 167 graphmode.coords.crval1 = Ra; … … 126 176 graphmode.coords.pc2_2 = cos(Angle*RAD_DEG)*pc2_2; 127 177 128 /* ask kapa for coordinate limits, to get the right aspect ratio */ 178 // ask kapa for coordinate limits, to get the right aspect ratio 179 // dx, dy are the size of the graph region in pixels 129 180 KapaGetLimits (kapa, &dx, &dy); 130 181 dx = fabs (dx); … … 132 183 133 184 /* define limits for Ra, Dec at center, grid in degrees */ 134 if (dy < dx) { 135 graphmode.xmin = -(dx/dy)*Radius; 136 graphmode.ymin = -Radius; 137 graphmode.xmax = (dx/dy)*Radius; 138 graphmode.ymax = Radius; 185 if (RadiusArg >= 0) { 186 // force non-anamorphic projection with Radius set to smaller axis 187 if (dy < dx) { 188 graphmode.xmin = -(dx/dy)*Radius; 189 graphmode.ymin = -Radius; 190 graphmode.xmax = (dx/dy)*Radius; 191 graphmode.ymax = Radius; 192 } else { 193 graphmode.xmin = -Radius; 194 graphmode.ymin = -(dy/dx)*Radius; 195 graphmode.xmax = Radius; 196 graphmode.ymax = (dy/dx)*Radius; 197 } 139 198 } else { 140 graphmode.xmin = -Radius; 141 graphmode.ymin = -(dy/dx)*Radius; 142 graphmode.xmax = Radius; 143 graphmode.ymax = (dy/dx)*Radius; 144 } 199 if (isnan(XSIZE)) { 200 graphmode.xmin = -(dx/dy)*YSIZE/2.0; 201 graphmode.ymin = -YSIZE/2.0; 202 graphmode.xmax = (dx/dy)*YSIZE/2.0; 203 graphmode.ymax = YSIZE/2.0; 204 } 205 if (isnan(YSIZE)) { 206 graphmode.xmin = -XSIZE/2.0; 207 graphmode.ymin = -(dy/dx)*XSIZE/2.0; 208 graphmode.xmax = XSIZE/2.0; 209 graphmode.ymax = (dy/dx)*XSIZE/2.0; 210 } 211 // anamorphic projection: 212 if (!isnan(XSIZE) && !isnan(YSIZE)) { 213 graphmode.xmin = -XSIZE/2.0; 214 graphmode.ymin = -YSIZE/2.0; 215 graphmode.xmax = XSIZE/2.0; 216 graphmode.ymax = YSIZE/2.0; 217 } 218 } 145 219 146 220 set_variable ("XMIN", graphmode.xmin);
Note:
See TracChangeset
for help on using the changeset viewer.
