Changeset 23199 for branches/cnb_branches/cnb_branch_20090215/Ohana
- Timestamp:
- Mar 5, 2009, 11:24:29 AM (17 years ago)
- Location:
- branches/cnb_branches/cnb_branch_20090215
- Files:
-
- 5 edited
-
. (modified) (1 prop)
-
Ohana/Makefile.in (modified) (3 diffs)
-
Ohana/src/addstar/include/skycells.h (modified) (3 diffs)
-
Ohana/src/addstar/src/args_skycells.c (modified) (2 diffs)
-
Ohana/src/addstar/src/sky_tessalation.c (modified) (3 diffs)
Legend:
- Unmodified
- Added
- Removed
-
branches/cnb_branches/cnb_branch_20090215
- Property svn:mergeinfo changed
/trunk merged: 22727-22752,23115-23126,23128,23137-23157,23159-23174,23182-23195,23198
- Property svn:mergeinfo changed
-
branches/cnb_branches/cnb_branch_20090215/Ohana/Makefile.in
r19682 r23199 75 75 mkdir -p $(DESTLIB) 76 76 mkdir -p $(DESTBIN) 77 for i in $(LIBS); do make $$i.install || exit ; done77 for i in $(LIBS); do make $$i.install || exit 1; done 78 78 chmod +x ohana-config 79 79 cp -f ohana-config $(DESTBIN)/ … … 83 83 84 84 all: 85 make libs || exit 86 for i in $(PROGRAM); do make $$i || exit ; done85 make libs || exit 1 86 for i in $(PROGRAM); do make $$i || exit 1; done 87 87 88 88 extras: 89 for i in $(EXTRAS); do make $$i || exit ; done89 for i in $(EXTRAS); do make $$i || exit 1; done 90 90 91 91 pantasks: 92 make libs || exit 93 cd src/opihi; make pclient.install && exit 94 cd src/opihi; make pcontrol.install && exit 95 cd src/opihi; make pantasks.install && exit 92 make libs || exit 1 93 cd src/opihi; make pclient.install && exit 1 94 cd src/opihi; make pcontrol.install && exit 1 95 cd src/opihi; make pantasks.install && exit 1 96 96 97 97 mana: 98 98 make libs 99 99 make kapa2.install 100 cd src/opihi; make mana.install && exit 100 cd src/opihi; make mana.install && exit 1 101 101 102 102 dvoshell: 103 103 make libs 104 104 make kapa2.install 105 cd src/opihi; make dvo.install && exit 105 cd src/opihi; make dvo.install && exit 1 106 106 107 107 clean: 108 108 @if [ "$(ARCH)" = "" ]; then echo ""; echo " *** please define ARCH ***"; echo; exit 1; fi 109 for i in $(LIBS); do make $$i.clean || exit ; done110 for i in $(PROGRAM); do make $$i.clean || exit ; done111 for i in $(EXTRAS); do make $$i.clean || exit ; done109 for i in $(LIBS); do make $$i.clean || exit 1; done 110 for i in $(PROGRAM); do make $$i.clean || exit 1; done 111 for i in $(EXTRAS); do make $$i.clean || exit 1; done 112 112 @rm -f `find . -name .mana` 113 113 @rm -f `find . -name .dvo` … … 116 116 dist: 117 117 @if [ "$(ARCH)" = "" ]; then echo ""; echo " *** please define ARCH ***"; echo; exit 1; fi 118 for i in $(LIBS); do make $$i.dist || exit ; done119 for i in $(PROGRAM); do make $$i.dist || exit ; done118 for i in $(LIBS); do make $$i.dist || exit 1; done 119 for i in $(PROGRAM); do make $$i.dist || exit 1; done 120 120 @echo -n -e "\0033]0; *** Ohana: done $@ *** \0007" \ 121 121 122 122 install: 123 123 @if [ "$(ARCH)" = "" ]; then echo ""; echo " *** please define ARCH ***"; echo; exit 1; fi 124 for i in $(LIBS); do make $$i.install || exit ; done125 for i in $(PROGRAM); do make $$i.install || exit ; done124 for i in $(LIBS); do make $$i.install || exit 1; done 125 for i in $(PROGRAM); do make $$i.install || exit 1; done 126 126 @echo -n -e "\0033]0; *** Ohana: done $@ *** \0007" \ 127 127 128 128 install.extras: 129 for i in $(EXTRAS); do make $$i.install || exit ; done129 for i in $(EXTRAS); do make $$i.install || exit 1; done 130 130 @echo -n -e "\0033]0; *** Ohana: done $@ *** \0007" \ 131 131 -
branches/cnb_branches/cnb_branch_20090215/Ohana/src/addstar/include/skycells.h
r21536 r23199 12 12 # include <glob.h> 13 13 14 enum {SQUARES, TRIANGLES, LOCAL };14 enum {SQUARES, TRIANGLES, LOCAL, RINGS}; 15 15 enum {TETRAHEDRON, CUBE, OCTOHEDRON, DODECAHEDRON, ICOSAHEDRON}; 16 16 … … 67 67 double SCALE; 68 68 double PADDING; 69 double CELLSIZE; 69 70 int LEVEL; 70 71 … … 84 85 int sky_tessellation PROTO((FITS_DB *db, int level, int Nmax, int mode, double scale)); 85 86 int sky_tessellation_init PROTO((double scale)); 87 86 88 int sky_tessellation_local PROTO((FITS_DB *db, int level, int Nmax)); 87 89 int sky_tessellation_triangles PROTO((FITS_DB *db, int level, int Nmax)); 88 90 int sky_tessellation_squares PROTO((FITS_DB *db, int level, int Nmax)); 91 int sky_tessellation_rings PROTO((FITS_DB *db, int level, int Nmax)); 92 89 93 int sky_triangle_to_image PROTO((Image *image, SkyTriangle *triangle)); 90 94 int sky_triangle_to_rectangle PROTO((SkyRectangle *image, SkyTriangle *triangle)); 95 91 96 int sky_rectangle_local PROTO((SkyRectangle *rectangle)); 92 97 int sky_subdivide_image PROTO((Image *output, SkyRectangle *input, int Nx, int Ny)); 93 98 int sky_triangle_coords PROTO((SkyTriangle *triangle)); 99 100 SkyRectangle *sky_rectangle_ring PROTO((float dec, float dDEC, int *nring)); 101 94 102 SkyTriangle *sky_divide_triangles PROTO((SkyTriangle *in, int *ntriangles)); 95 103 SkyTriangle *sky_base_triangles PROTO((int *ntriangles)); -
branches/cnb_branches/cnb_branch_20090215/Ohana/src/addstar/src/args_skycells.c
r21048 r23199 35 35 MODE = LOCAL; 36 36 } 37 if (!strcasecmp (argv[N], "rings")) { 38 MODE = RINGS; 39 } 37 40 remove_argument (N, &argc, argv); 38 41 } … … 140 143 141 144 LEVEL = 8; 142 if ((MODE != LOCAL) && (N = get_argument (argc, argv, "-level"))) { 143 remove_argument (N, &argc, argv); 144 LEVEL = strtol (argv[N], &ptr, 10); 145 remove_argument (N, &argc, argv); 146 if ((*ptr != 0) || (LEVEL < 0)) { 147 fprintf (stderr, "-level requires an integer (>= 0) argument\n"); 145 if ((MODE == SQUARES) || (MODE == TRIANGLES)) { 146 if ((N = get_argument (argc, argv, "-level"))) { 147 remove_argument (N, &argc, argv); 148 LEVEL = strtol (argv[N], &ptr, 10); 149 remove_argument (N, &argc, argv); 150 if ((*ptr != 0) || (LEVEL < 0)) { 151 fprintf (stderr, "-level requires an integer (>= 0) argument\n"); 152 help (); 153 } 154 } 155 } 156 157 CELLSIZE = 4.0; 158 if ((MODE == RINGS) && (N = get_argument (argc, argv, "-cellsize"))) { 159 remove_argument (N, &argc, argv); 160 CELLSIZE = strtod (argv[N], &ptr); 161 if ((*ptr != 0) || (CELLSIZE < 0.0)) { 162 fprintf (stderr, "-level requires a floating-point argument\n"); 148 163 help (); 149 164 } 165 remove_argument (N, &argc, argv); 150 166 } 151 167 -
branches/cnb_branches/cnb_branch_20090215/Ohana/src/addstar/src/sky_tessalation.c
r21536 r23199 11 11 sky_tessellation_init (scale); 12 12 13 if (mode == SQUARES) { 14 sky_tessellation_squares (db, level, Nmax); 15 return TRUE; 16 } 17 18 if (mode == TRIANGLES) { 19 sky_tessellation_triangles (db, level, Nmax); 20 return TRUE; 21 } 22 23 if (mode == LOCAL) { 24 sky_tessellation_local (db, level, Nmax); 25 return TRUE; 13 switch (mode) { 14 case SQUARES: 15 sky_tessellation_squares (db, level, Nmax); 16 return TRUE; 17 case TRIANGLES: 18 sky_tessellation_triangles (db, level, Nmax); 19 return TRUE; 20 case LOCAL: 21 sky_tessellation_local (db, level, Nmax); 22 return TRUE; 23 case RINGS: 24 sky_tessellation_rings (db, level, Nmax); 25 return TRUE; 26 default: 27 break; 26 28 } 27 29 … … 222 224 223 225 free (image); 226 return (TRUE); 227 } 228 229 // the RINGS tessellation uses the declination zones proposed by Tamas Budavari 230 // we generate projects on uniform rings of constant dec height 231 int sky_tessellation_rings (FITS_DB *db, int level, int Nmax) { 232 233 int j, nDEC, Nimage, Nring; 234 float dec, dDEC; 235 SkyRectangle *ring; 236 Image *image; 237 238 // The tessellation has one input parameter: the approximate cell size. Starting with 239 // the cell size, determine the optimal projection cell height (dDEC) that results in an 240 // integer number of dec zones between -90 and +90 241 242 nDEC = 180.0 / CELLSIZE; 243 dDEC = 180.0 / nDEC; 244 245 // generate the a collection of rectangles for each ring 246 for (dec = -90.0 + 0.5*dDEC; dec < +90.0; dec += dDEC) { 247 248 ring = sky_rectangle_ring (dec, dDEC, &Nring); 249 250 // subdivide each image (Nx x Ny subcells) 251 Nimage = NX_SUB*NY_SUB*Nring; 252 ALLOCATE (image, Image, Nimage); 253 for (j = 0; j < Nring; j++) { 254 // convert the SkyRectangles to Images for output 255 sky_subdivide_image (&image[j*NX_SUB*NY_SUB], &ring[j], NX_SUB, NY_SUB); 256 } 257 258 /* add the new images and save */ 259 dvo_image_addrows (db, image, Nimage); 260 SetProtect (TRUE); 261 dvo_image_update (db, VERBOSE); 262 SetProtect (FALSE); 263 dvo_image_clear_vtable (db); 264 265 free (ring); 266 free (image); 267 } 224 268 return (TRUE); 225 269 } … … 480 524 481 525 return (TRUE); 526 } 527 528 // define the parameters of a single sky projection center 529 SkyRectangle *sky_rectangle_ring (float dec, float dDEC, int *nring) { 530 531 int i, nRA, NX, NY; 532 float dRA, decLower; 533 SkyRectangle *ring; 534 535 // 'dec' is a guess at the center of the cell; in fact, we need to choose decLower and 536 // decUpper to ensure complete overlap of the cells 537 538 // we can determine the 'lower' bound (bound closest to the equator): 539 decLower = (dec > 0.0) ? dec - 0.5*dDEC : dec + 0.5*dDEC; 540 541 // Subdivide the 'lower' bound into an integer number of segments: 542 nRA = cos(dec*RAD_DEG) * 360.0 / CELLSIZE; // CELLSIZE is a projection size 543 dRA = 360.0 / nRA; // dRA is a size in RA degrees 544 545 // I think we need to return the value of dec for the next ring, but I am not sure... 546 547 ALLOCATE (ring, SkyRectangle, nRA); 548 549 for (i = 0; i < nRA; i++) { 550 memset (&ring[i], 0, sizeof(SkyRectangle)); 551 memset (&ring[i].coords, 0, sizeof(Coords)); 552 ring[i].coords.crval1 = i*dRA; 553 ring[i].coords.crval2 = dec; 554 555 ring[i].coords.pc1_1 = +1.0; 556 ring[i].coords.pc1_2 = +0.0; 557 ring[i].coords.pc2_1 = -0.0; 558 ring[i].coords.pc2_2 = +1.0; 559 560 // range values are in projected degrees 561 NX = cos(dec*RAD_DEG) * dRA * 3600.0 / SCALE; 562 NY = dDEC * 3600.0 / SCALE; 563 564 // crpix1,crpix2 is the projection center 565 ring[i].coords.crpix1 = 0.5*NX; 566 ring[i].coords.crpix2 = 0.5*NY; 567 568 ring[i].coords.cdelt1 = SCALE / 3600.0; 569 ring[i].coords.cdelt2 = SCALE / 3600.0; 570 571 strcpy (ring[i].coords.ctype, "DEC--TAN"); 572 573 ring[i].NX = NX; 574 ring[i].NY = NY; 575 ring[i].photcode = 1; // this needs to be set more sensibly 576 577 578 fprintf (stderr, "%f %f : %f %f\n", 579 ring[i].coords.crval1, ring[i].coords.crval2, 580 ring[i].coords.crpix1, ring[i].coords.crpix2); 581 } 582 583 *nring = nRA; 584 return (ring); 482 585 } 483 586
Note:
See TracChangeset
for help on using the changeset viewer.
