Changeset 35561 for trunk/psModules/src/astrom/pmAstrometryUtils.c
- Timestamp:
- May 9, 2013, 12:24:53 PM (13 years ago)
- Location:
- trunk/psModules
- Files:
-
- 2 edited
-
. (modified) (1 prop)
-
src/astrom/pmAstrometryUtils.c (modified) (4 diffs)
Legend:
- Unmodified
- Added
- Removed
-
trunk/psModules
- Property svn:mergeinfo changed
-
trunk/psModules/src/astrom/pmAstrometryUtils.c
r24096 r35561 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 … … 52 71 for (int i = 0; (dPos > tol) && (i < 20); i++) { 53 72 // 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); 54 75 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); 57 78 Alpha->data.F32[1][1] = psPolynomial2DEval (YdY, Xo, Yo); 58 79 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); 61 82 62 83 if (!psMatrixGJSolve (Alpha, Beta)) { … … 71 92 } 72 93 73 Xo -= Beta->data.F32[0];74 Yo -= Beta->data.F32[1];94 Xo += Beta->data.F32[0]; 95 Yo += Beta->data.F32[1]; 75 96 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); 77 98 } 78 99 psFree (Alpha);
Note:
See TracChangeset
for help on using the changeset viewer.
