IPP Software Navigation Tools IPP Links Communication Pan-STARRS Links

Changeset 19898


Ignore:
Timestamp:
Oct 4, 2008, 6:14:24 AM (18 years ago)
Author:
eugene
Message:

third and fourth moments are f r2 cos(nt) (divide by r and r2

File:
1 edited

Legend:

Unmodified
Added
Removed
  • trunk/psModules/src/objects/pmSourceMoments.c

    r19894 r19898  
    66 *  @author EAM, IfA: significant modifications.
    77 *
    8  *  @version $Revision: 1.3 $ $Name: not supported by cvs2svn $
    9  *  @date $Date: 2008-10-04 02:29:19 $
     8 *  @version $Revision: 1.4 $ $Name: not supported by cvs2svn $
     9 *  @date $Date: 2008-10-04 16:14:24 $
    1010 *
    1111 *  Copyright 2004 Maui High Performance Computing Center, University of Hawaii
     
    204204
    205205            // radius is just a function of (xDiff, yDiff)
    206             if (!VALID_RADIUS(xDiff, yDiff, R2)) continue;
     206            psF32 r2  = PS_SQR(xDiff) + PS_SQR(yDiff);
     207            psF32 r  = sqrt(r2);
     208            if (r > radius) continue;
    207209
    208210            psF32 pDiff = *vPix - sky;
     
    210212
    211213            // XXX EAM : should this limit be user-defined?
     214
    212215            if (PS_SQR(pDiff) < wDiff) continue;
    213216            if (pDiff < 0) continue;
     
    222225            psF32 yy = yDiff * y;
    223226
    224             psF32 xxx = xDiff * xx;
    225             psF32 xxy = xDiff * xy;
    226             psF32 xyy = xDiff * yy;
    227             psF32 yyy = yDiff * yy;
    228 
    229             psF32 xxxx = xDiff * xxx;
    230             psF32 xxxy = xDiff * xxy;
    231             psF32 xxyy = xDiff * xyy;
    232             psF32 xyyy = xDiff * yyy;
    233             psF32 yyyy = yDiff * yyy;
     227            psF32 xxx = xDiff * xx / r;
     228            psF32 xxy = xDiff * xy / r;
     229            psF32 xyy = xDiff * yy / r;
     230            psF32 yyy = yDiff * yy / r;
     231
     232            psF32 xxxx = xDiff * xxx / r2;
     233            psF32 xxxy = xDiff * xxy / r2;
     234            psF32 xxyy = xDiff * xyy / r2;
     235            psF32 xyyy = xDiff * yyy / r2;
     236            psF32 yyyy = yDiff * yyy / r2;
    234237
    235238            XX  += xx;
     
    264267    source->moments->Mxyyy = XYYY/Sum;
    265268    source->moments->Myyyy = YYYY/Sum;
     269
     270    if (source->moments->Mxx < 0) {
     271      fprintf (stderr, "error: neg second moment??\n");
     272    }
     273    if (source->moments->Myy < 0) {
     274      fprintf (stderr, "error: neg second moment??\n");
     275    }
    266276
    267277    psTrace ("psModules.objects", 4, "Mxx: %f  Mxy: %f  Myy: %f  Mxxx: %f  Mxxy: %f  Mxyy: %f  Myyy: %f  Mxxxx: %f  Mxxxy: %f  Mxxyy: %f  Mxyyy: %f  Mxyyy: %f\n",
Note: See TracChangeset for help on using the changeset viewer.