Changeset 5385
- Timestamp:
- Oct 19, 2005, 9:19:24 PM (21 years ago)
- File:
-
- 1 edited
-
trunk/Ohana/src/addstar/src/gimages.c (modified) (7 diffs)
Legend:
- Unmodified
- Added
- Removed
-
trunk/Ohana/src/addstar/src/gimages.c
r5328 r5385 1 1 # include "addstar.h" 2 void SetImageCorners (double *X, double *Y, Image *image); 2 3 3 4 /* given image, find catalog images which overlap it */ … … 8 9 Image *timage, *pimage; 9 10 Coords tcoords; 10 double r, d ;11 double X i[5], Yi[5], Xo[5], Yo[5]; /* image and original corners */11 double r, d, x, y; 12 double Xb[5], Yb[5], Xi[5], Yi[5], Xo[5], Yo[5]; /* image and original corners */ 12 13 double zeropt; 13 14 … … 54 55 55 56 /* define original corners */ 56 Xo[0] = 0; Yo[0] = 0; 57 Xo[1] = image[0].NX; Yo[1] = 0; 58 Xo[2] = image[0].NX; Yo[2] = image[0].NY; 59 Xo[3] = 0; Yo[3] = image[0].NY; 60 Xo[4] = 0; Yo[4] = 0; /* so we can make a loop easily */ 57 SetImageCorners (Xo, Yo, &image[0]); 58 Xo[4] = Xo[0]; Yo[4] = Yo[0]; /* so we can make a loop easily */ 59 61 60 for (j = 0; j < 5; j++) { 62 61 /* XY-to_RD is two-level if ctype == WRP */ … … 82 81 83 82 addtolist = FALSE; 83 84 84 /* define image corners */ 85 Xi[0] = 0; Yi[0] = 0; 86 Xi[1] = timage[i].NX; Yi[1] = 0; 87 Xi[2] = timage[i].NX; Yi[2] = timage[i].NY; 88 Xi[3] = 0; Yi[3] = timage[i].NY; 89 Xi[4] = 0; Yi[4] = 0; /* so we can make a loop easily */ 85 SetImageCorners (Xi, Yi, &timage[i]); 86 Xi[4] = Xi[0]; Yi[4] = Yi[0]; 90 87 /* transform to tcoords */ 91 88 for (j = 0; j < 5; j++) { … … 94 91 } 95 92 /* check if any edges cross */ 96 /* not every robust - images must be close in size */97 93 for (j = 0; (j < 4) && !addtolist; j++) { 98 94 for (k = 0; (k < 4) && !addtolist; k++) { … … 100 96 } 101 97 } 98 99 /* note that 0,0 is a valid pixel for both DIS and !DIS */ 100 /* if no edges cross, check if 0,0 pixel of timage[i] is inside image[0] */ 101 SetImageCorners (Xb, Yb, &image[0]); 102 if (!addtolist) { 103 XY_to_RD (&r, &d, 0.0, 0.0, &timage[i].coords); 104 RD_to_XY (&x, &y, r, d, &image[0].coords); 105 addtolist = TRUE; 106 addtolist &= (x < Xb[0]); 107 addtolist &= (y < Yb[0]); 108 addtolist &= (x > Xb[2]); 109 addtolist &= (y > Yb[2]); 110 } 111 112 /* if no edges cross, check if one corner of image[0] is inside timage[i] */ 113 SetImageCorners (Xb, Yb, &timage[i]); 114 if (!addtolist) { 115 XY_to_RD (&r, &d, 0.0, 0.0, &image[0].coords); 116 RD_to_XY (&x, &y, r, d, &timage[i].coords); 117 addtolist = TRUE; 118 addtolist &= (x < Xb[0]); 119 addtolist &= (y < Yb[0]); 120 addtolist &= (x > Xb[2]); 121 addtolist &= (y > Yb[2]); 122 } 123 102 124 if (addtolist) { 103 125 pimage[npimage] = timage[i]; … … 130 152 131 153 */ 154 155 void SetImageCorners (double *X, double *Y, Image *image) { 156 157 if (!strcmp(&image[0].coords.ctype[4], "-DIS")) { 158 X[0] = -0.5*image[0].NX; Y[0] = -0.5*image[0].NY; 159 X[1] = +0.5*image[0].NX; Y[1] = -0.5*image[0].NY; 160 X[2] = +0.5*image[0].NX; Y[2] = +0.5*image[0].NY; 161 X[3] = -0.5*image[0].NX; Y[3] = +0.5*image[0].NY; 162 } else { 163 X[0] = 0; Y[0] = 0; 164 X[1] = image[0].NX; Y[1] = 0; 165 X[2] = image[0].NX; Y[2] = image[0].NY; 166 X[3] = 0; Y[3] = image[0].NY; 167 } 168 }
Note:
See TracChangeset
for help on using the changeset viewer.
