- Timestamp:
- Apr 2, 2013, 1:53:46 PM (13 years ago)
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
branches/eam_branches/ipp-20130307/psModules/src/astrom/pmAstrometryUtils.c
r24096 r35341 23 23 #include "pmAstrometryUtils.h" 24 24 25 // this is used by the test output block 26 static int Nout = 0; 27 25 28 // given a 2D transformation -- L(x,y),M(x,y) -- find the coordinates x,y 26 29 // for which L,M = 0,0. tol is the allowed error on x,y. … … 33 36 double Xo = (trans->y->coeff[0][0]*trans->x->coeff[0][1] - trans->x->coeff[0][0]*trans->y->coeff[0][1])/R; 34 37 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 } 35 54 36 55 // iterate to actual solution: requires small non-linear terms … … 53 72 // NOTE: order for Alpha is: [y][x] 54 73 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);74 Alpha->data.F32[0][1] = psPolynomial2DEval (XdY, Xo, Yo); 75 Alpha->data.F32[1][0] = psPolynomial2DEval (YdX, Xo, Yo); 57 76 Alpha->data.F32[1][1] = psPolynomial2DEval (YdY, Xo, Yo); 58 77 59 Beta->data.F32[0] = psPolynomial2DEval (trans->x, Xo, Yo);60 Beta->data.F32[1] = psPolynomial2DEval (trans->y, Xo, Yo);78 Beta->data.F32[0] = -1.0 * psPolynomial2DEval (trans->x, Xo, Yo); 79 Beta->data.F32[1] = -1.0 * psPolynomial2DEval (trans->y, Xo, Yo); 61 80 62 81 if (!psMatrixGJSolve (Alpha, Beta)) { … … 71 90 } 72 91 73 Xo -= Beta->data.F32[0];74 Yo -= Beta->data.F32[1];92 Xo += Beta->data.F32[0]; 93 Yo += Beta->data.F32[1]; 75 94 dPos = hypot(Beta->data.F32[0], Beta->data.F32[1]); 76 95 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); 77 96 } 78 97 psFree (Alpha);
Note:
See TracChangeset
for help on using the changeset viewer.
