Changeset 16040 for trunk/Ohana/src/libdvo
- Timestamp:
- Jan 8, 2008, 12:50:52 PM (19 years ago)
- Location:
- trunk/Ohana/src/libdvo
- Files:
-
- 1 added
- 3 edited
-
Makefile (modified) (1 diff)
-
include/dvo.h (modified) (1 diff)
-
src/dvosorts.c (added)
-
src/skyregion_gsc.c (modified) (1 diff)
Legend:
- Unmodified
- Added
- Removed
-
trunk/Ohana/src/libdvo/Makefile
r15694 r16040 36 36 $(SRC)/version.$(ARCH).o \ 37 37 $(SRC)/coordops.$(ARCH).o \ 38 $(SRC)/dvosorts.$(ARCH).o \ 38 39 $(SRC)/dvo_photcode_ops.$(ARCH).o \ 39 40 $(SRC)/dvo_photcode_convert_elixir.$(ARCH).o \ -
trunk/Ohana/src/libdvo/include/dvo.h
r15743 r16040 412 412 int SkyTableSetFilenames PROTO((SkyTable *sky, char *path, char *ext)); 413 413 414 /* dvo-specific sorting functions */ 415 void sortave (Average *ave, int N); 416 void sort_image_subset (Image *image, int *subset, int N); 417 void sort_coords_index (double *X, double *Y, int *S, int N); 418 void sort_stars_ra (Stars *stars, int N); 419 void sort_regions (SkyRegion *region, int N); 420 414 421 # endif -
trunk/Ohana/src/libdvo/src/skyregion_gsc.c
r12392 r16040 206 206 void SkyTableSort (SkyTable *table) { 207 207 208 int i, j, l, ir, N;209 208 SkyRegion *regions; 210 SkyRegion tempregion;211 char *tempfile = NULL;212 209 char **filename = NULL; 213 214 N = table[0].Nregions; 210 215 211 regions = table[0].regions; 216 212 filename = table[0].filename; 217 213 218 if (N < 2) return; 219 l = N >> 1; 220 ir = N - 1; 221 for (;;) { 222 if (l > 0) { 223 l--; 224 tempregion = regions[l]; 225 if (filename) tempfile = filename[l]; 226 } else { 227 tempregion = regions[ir]; 228 if (filename) tempfile = filename[ir]; 229 regions[ir] = regions[0]; 230 if (filename) filename[ir] = filename[0]; 231 if (--ir == 0) { 232 regions[0] = tempregion; 233 if (filename) filename[0] = tempfile; 234 return; 235 } 236 } 237 i = l; 238 j = (l << 1) + 1; 239 while (j <= ir) { 240 if (j < ir && regions[j].Rmin < regions[j+1].Rmin) ++j; 241 if (tempregion.Rmin < regions[j].Rmin) { 242 regions[i] = regions[j]; 243 if (filename) filename[i] = filename[j]; 244 j += (i=j) + 1; 245 } 246 else j = ir + 1; 247 } 248 regions[i] = tempregion; 249 if (filename) filename[i] = tempfile; 250 } 214 # define SWAPFUNC(A,B){ int tmp; \ 215 char *tempfile = filename[A]; filename[A] = filename[B]; filename[B] = tempfile; \ 216 SkyRegion tempregion = regions[A]; regions[A] = regions[B]; regions[B] = tempregion; \ 217 } 218 # define COMPARE(A,B)(regions[A].Rmin < regions[B].Rmin) 219 220 OHANA_SORT (table[0].Nregions, COMPARE, SWAPFUNC); 221 222 # undef SWAPFUNC 223 # undef COMPARE 251 224 } 252 225
Note:
See TracChangeset
for help on using the changeset viewer.
