Changeset 42584
- Timestamp:
- Jan 13, 2024, 2:39:37 PM (3 years ago)
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
branches/eam_branches/ipp-20230313/Ohana/src/opihi/cmd.astro/cdensify.c
r41515 r42584 1 1 # include "data.h" 2 # define dCOS(A) ((double) cos ((double)RAD_DEG*A)) 2 3 3 4 # define CHECKVAL(ARG) if (!isfinite(ARG)) { gprint (GP_ERR, "illegal value for %s: %f\n", #ARG, ARG); return (FALSE); } … … 116 117 PutCoords (&newcoords, &bf[0].header); 117 118 119 // use the mask to prevent double-counting 120 ALLOCATE_PTR (mask, char, Nx*Ny); 121 118 122 float scalescale = scale*scale; 119 123 float scale2 = (scale + 1.0) * (scale + 1.0); … … 142 146 coords.crval1 = rn; 143 147 coords.crval2 = *d; 148 149 // XXX do not oversample by more than a factor of 10 150 float dXn = dX * MAX(fabs(dCOS(*d)), 0.1); 144 151 145 152 float F = 1.0; 146 153 if (vv) { F = isFloatScale ? Fs[i] : Is[i]; } 154 155 // reset the mask so we do not double-count 156 memset (mask, 0, Nx*Ny); 147 157 148 158 switch (PSFTYPE) { … … 162 172 break; 163 173 case IS_SQUARE: 164 for (ix = -scale; ix <= scale; ix += dX ) {174 for (ix = -scale; ix <= scale; ix += dXn) { 165 175 for (iy = -scale; iy <= scale; iy += dY) { 166 176 double rp, dp; … … 184 194 break; 185 195 case IS_CIRCLE: 186 for (ix = -scale ; ix <= scale; ix += dX) {187 for (iy = -scale ; iy <= scale; iy += dY) {196 for (ix = -scale - dXn; ix <= scale + dXn; ix += dXn) { 197 for (iy = -scale - dY; iy <= scale + dY; iy += dY) { 188 198 float r2 = ix*ix + iy*iy; 189 199 double rp, dp; … … 199 209 if (Xb < 0) continue; 200 210 if (Yb < 0) continue; 211 if (mask[Xb + Yb*Nx]) continue; 212 mask[Xb + Yb*Nx] = 1; 201 213 if (vv) { 202 214 val[Xb + Yb*Nx] += Normalize ? fCircle*F : F; … … 208 220 break; 209 221 case IS_GAUSS: 210 for (ix = -3.0*scale; ix <= 3.0*scale; ix += dX ) {222 for (ix = -3.0*scale; ix <= 3.0*scale; ix += dXn) { 211 223 for (iy = -3.0*scale; iy <= 3.0*scale; iy += dY) { 212 224 float r2 = ix*ix + iy*iy; … … 232 244 } 233 245 } 246 247 free (mask); 234 248 return (TRUE); 235 249 }
Note:
See TracChangeset
for help on using the changeset viewer.
