IPP Software Navigation Tools IPP Links Communication Pan-STARRS Links

Ignore:
Timestamp:
May 9, 2013, 12:24:53 PM (13 years ago)
Author:
eugene
Message:

WCS Newton-Raphson analysis has Alpha cross terms inverted; mods to fpaFileDefineFromArray, fpaFileDefineFromArray for readability and to allow for output config to differ from input config; add new function pmFPAfileDefineNewConfig; add pmChipSelectCells, pmFPAExcludeChips; set target chip and cell attributes to match source in pmFPACopy; split out errors in addSource

Location:
trunk/psModules
Files:
2 edited

Legend:

Unmodified
Added
Removed
  • trunk/psModules

  • trunk/psModules/src/astrom/pmAstrometryUtils.c

    r24096 r35561  
    2323#include "pmAstrometryUtils.h"
    2424
     25// this is used by the test output block
     26static int Nout = 0;
     27
    2528// given a 2D transformation -- L(x,y),M(x,y) -- find the coordinates x,y
    2629// for which L,M = 0,0. tol is the allowed error on x,y.
     
    3336    double Xo = (trans->y->coeff[0][0]*trans->x->coeff[0][1] - trans->x->coeff[0][0]*trans->y->coeff[0][1])/R;
    3437    double Yo = (trans->x->coeff[0][0]*trans->y->coeff[1][0] - trans->y->coeff[0][0]*trans->x->coeff[1][0])/R;
     38
     39    if (0) {
     40      // this is a test output block, not used in normal operations
     41      char filename[64];
     42      snprintf (filename, 64, "trans.%03d.md", Nout);
     43      FILE *f = fopen (filename, "w");
     44
     45      psMetadata *md = psMetadataAlloc();
     46
     47      psPolynomial2DtoMetadata (md, trans->x, "X");
     48      psPolynomial2DtoMetadata (md, trans->y, "Y");
     49      psMetadataConfigPrint (f, md);
     50      psFree (md);
     51      fclose (f);
     52      Nout ++;
     53    }
    3554
    3655    // iterate to actual solution: requires small non-linear terms
     
    5271        for (int i = 0; (dPos > tol) && (i < 20); i++) {
    5372            // NOTE: order for Alpha is: [y][x]
     73            // original Alpha->data.F32[1][0] = psPolynomial2DEval (XdY, Xo, Yo);
     74            // original Alpha->data.F32[0][1] = psPolynomial2DEval (YdX, Xo, Yo);
    5475            Alpha->data.F32[0][0] = psPolynomial2DEval (XdX, Xo, Yo);
    55             Alpha->data.F32[1][0] = psPolynomial2DEval (XdY, Xo, Yo);
    56             Alpha->data.F32[0][1] = psPolynomial2DEval (YdX, Xo, Yo);
     76            Alpha->data.F32[0][1] = psPolynomial2DEval (XdY, Xo, Yo);
     77            Alpha->data.F32[1][0] = psPolynomial2DEval (YdX, Xo, Yo);
    5778            Alpha->data.F32[1][1] = psPolynomial2DEval (YdY, Xo, Yo);
    5879
    59             Beta->data.F32[0] = psPolynomial2DEval (trans->x, Xo, Yo);
    60             Beta->data.F32[1] = psPolynomial2DEval (trans->y, Xo, Yo);
     80            Beta->data.F32[0] = -1.0 * psPolynomial2DEval (trans->x, Xo, Yo);
     81            Beta->data.F32[1] = -1.0 * psPolynomial2DEval (trans->y, Xo, Yo);
    6182
    6283            if (!psMatrixGJSolve (Alpha, Beta)) {
     
    7192            }
    7293
    73             Xo -= Beta->data.F32[0];
    74             Yo -= Beta->data.F32[1];
     94            Xo += Beta->data.F32[0];
     95            Yo += Beta->data.F32[1];
    7596            dPos = hypot(Beta->data.F32[0], Beta->data.F32[1]);
    76 
     97            psTrace ("psastro", 5, "i: %d, Xo,Yo : %f %f  dX, dY: %f %f dPos: %f\n", i, Xo, Yo, Beta->data.F32[0], Beta->data.F32[1], dPos);
    7798        }
    7899        psFree (Alpha);
Note: See TracChangeset for help on using the changeset viewer.