Changeset 14325 for trunk/psModules/src/objects/models/pmModel_SERSIC.c
- Timestamp:
- Jul 19, 2007, 2:31:43 PM (19 years ago)
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
trunk/psModules/src/objects/models/pmModel_SERSIC.c
r14324 r14325 51 51 52 52 psF32 f2 = pow(z,PAR[PM_PAR_7]); 53 psF32 f1 = exp(- z);53 psF32 f1 = exp(-f2); 54 54 psF32 z0 = PAR[PM_PAR_I0]*f1; 55 55 psF32 f0 = PAR[PM_PAR_SKY] + z0; 56 56 57 assert (isfinite(f2)); 58 assert (isfinite(f1)); 59 assert (isfinite(z0)); 60 assert (isfinite(f0)); 61 57 62 if (deriv != NULL) { 58 63 psF32 *dPAR = deriv->data.F32; 59 64 60 // note difference from a pure gaussian: q = params->data.F32[PM_PAR_I0]*r 61 psF32 z1 = z0*PAR[PM_PAR_7]*pow(z,PAR[PM_PAR_7] - 1.0);65 // gradient is infinite for z = 0; saturate at z = 0.01 66 psF32 z1 = (z < 0.01) ? z0*PAR[PM_PAR_7]*pow(0.01,PAR[PM_PAR_7] - 1.0) : z0*PAR[PM_PAR_7]*pow(z,PAR[PM_PAR_7] - 1.0); 62 67 63 68 dPAR[PM_PAR_SKY] = +1.0; 64 69 dPAR[PM_PAR_I0] = +f1; 65 70 dPAR[PM_PAR_7] = (z == 0.0) ? 0.0 : -z0*f2*log(z); 71 72 assert (isfinite(z1)); 73 assert (isfinite(dPAR[PM_PAR_7])); 66 74 67 75 dPAR[PM_PAR_XPOS] = +1.0*z1*(2.0*px/PAR[PM_PAR_SXX] + Y*PAR[PM_PAR_SXY]); … … 70 78 dPAR[PM_PAR_SYY] = +2.0*z1*py*py/PAR[PM_PAR_SYY]; 71 79 dPAR[PM_PAR_SXY] = -1.0*z1*X*Y; 72 } 73 return(f); 80 dPAR[PM_PAR_SXY] = -1.0*z1*X*Y; 81 } 82 return (f0); 74 83 } 75 84 … … 156 165 break; 157 166 case PM_PAR_7: 158 params_min = 0. 1;167 params_min = 0.25; 159 168 break; 160 169 default: … … 244 253 PAR[PM_PAR_SYY] = PS_MAX(0.5, M_SQRT2*shape.sy); 245 254 PAR[PM_PAR_SXY] = shape.sxy; 246 PAR[PM_PAR_7] = 1.0;255 PAR[PM_PAR_7] = 0.5; 247 256 248 257 return(true);
Note:
See TracChangeset
for help on using the changeset viewer.
