IPP Software Navigation Tools IPP Links Communication Pan-STARRS Links

Ignore:
Timestamp:
Dec 24, 2006, 3:49:50 PM (20 years ago)
Author:
magnier
Message:

some API work to reduce dependencies on the recipes, support for mosaic astrometry

File:
1 edited

Legend:

Unmodified
Added
Removed
  • trunk/psModules/src/astrom/pmAstrometryDistortion.c

    r10825 r10829  
    77*  @author EAM, IfA
    88*
    9 *  @version $Revision: 1.8 $ $Name: not supported by cvs2svn $
    10 *  @date $Date: 2006-12-22 21:23:06 $
     9*  @version $Revision: 1.9 $ $Name: not supported by cvs2svn $
     10*  @date $Date: 2006-12-25 01:49:49 $
    1111*
    1212*  Copyright 2006 Institute for Astronomy, University of Hawaii
     
    5050}
    5151
    52 psArray *pmAstromMeasureGradients(psArray *grads, psArray *rawstars, psArray *refstars, psArray *matches, psMetadata *config)
     52psArray *pmAstromMeasureGradients(psArray *gradients, psArray *rawstars, psArray *refstars, psArray *matches, psMetadata *config)
    5353{
    5454
    55     if (grads == NULL) {
    56         grads = psArrayAllocEmpty (100);
     55    if (gradients == NULL) {
     56        gradients = psArrayAllocEmpty (100);
    5757    }
    5858
     
    141141            grad->dTPdM.y = local->coeff[0][1];
    142142
    143             psArrayAdd (grads, 100, grad);
    144         }
    145     }
    146     return grads;
     143            psArrayAdd (gradients, 100, grad);
     144        }
     145    }
     146    return gradients;
    147147}
    148148
    149 bool pmAstromFitDistortion(pmFPA *fpa, psArray *grads, psMetadata *config)
     149bool pmAstromFitDistortion(pmFPA *fpa, psArray *gradients, psMetadata *config)
    150150{
    151151
     
    154154
    155155    // assign the gradient elements to psVectors for fitting
    156     psVector *dPdL = psVectorAlloc (grads->n, PS_TYPE_F32);
    157     psVector *dQdL = psVectorAlloc (grads->n, PS_TYPE_F32);
    158     psVector *dPdM = psVectorAlloc (grads->n, PS_TYPE_F32);
    159     psVector *dQdM = psVectorAlloc (grads->n, PS_TYPE_F32);
    160     psVector *L = psVectorAlloc (grads->n, PS_TYPE_F32);
    161     psVector *M = psVectorAlloc (grads->n, PS_TYPE_F32);
    162 
    163     for (int i = 0; i < grads->n; i++) {
    164 
    165         pmAstromGradient *grad = grads->data[i];
     156    psVector *dPdL = psVectorAlloc (gradients->n, PS_TYPE_F32);
     157    psVector *dQdL = psVectorAlloc (gradients->n, PS_TYPE_F32);
     158    psVector *dPdM = psVectorAlloc (gradients->n, PS_TYPE_F32);
     159    psVector *dQdM = psVectorAlloc (gradients->n, PS_TYPE_F32);
     160    psVector *L = psVectorAlloc (gradients->n, PS_TYPE_F32);
     161    psVector *M = psVectorAlloc (gradients->n, PS_TYPE_F32);
     162
     163    for (int i = 0; i < gradients->n; i++) {
     164
     165        pmAstromGradient *grad = gradients->data[i];
    166166
    167167        dPdL->data.F32[i] = grad->dTPdL.x;
     
    176176
    177177    psStats *stats = psStatsAlloc (PS_STAT_SAMPLE_MEDIAN | PS_STAT_SAMPLE_STDEV);
    178     psVector *mask = psVectorAlloc (grads->n, PS_TYPE_MASK);
     178    psVector *mask = psVectorAlloc (gradients->n, PS_TYPE_MASK);
    179179    psVectorInit (mask, 0);
    180180
     
    185185
    186186    // set masks based on fpa->toTP
    187     for (int i = 0; i < fpa->toTPA->x->nX; i++) {
    188         for (int j = 0; j < fpa->toTPA->x->nY; j++) {
     187    for (int i = 0; i <= fpa->toTPA->x->nX; i++) {
     188        for (int j = 0; j <= fpa->toTPA->x->nY; j++) {
    189189            if (fpa->toTPA->x->mask[i][j]) {
    190                 localX->mask[i-1][j] = 1;
    191                 localY->mask[i][j-1] = 1;
     190                if ((i > 0) && (i < fpa->toTPA->x->nX)) {
     191                    localX->mask[i-1][j] = 1;
     192                }
     193                if ((j > 0) && (j < fpa->toTPA->y->nY)) {
     194                    localY->mask[i][j-1] = 1;
     195                }
    192196            }
    193197        }
     
    247251    psVector *dQdMf = psPolynomial2DEvalVector (localY, L, M);
    248252
    249     FILE *f = fopen ("grads.dat", "w");
     253    FILE *f = fopen ("gradients.dat", "w");
    250254    for (int i = 0; i < dPdLf->n; i++) {
    251255        fprintf (f, "%f %f  | %f %f  %f %f | %f %f  %f %f\n",
     
    290294    psFree (mask);
    291295
     296    // XXX need to reset the fromFPA terms here
     297
     298
    292299    return true;
    293300}
Note: See TracChangeset for help on using the changeset viewer.