IPP Software Navigation Tools IPP Links Communication Pan-STARRS Links

Ignore:
Timestamp:
Mar 5, 2009, 11:24:29 AM (17 years ago)
Author:
beaumont
Message:

sync with mainline

Location:
branches/cnb_branches/cnb_branch_20090215
Files:
5 edited

Legend:

Unmodified
Added
Removed
  • branches/cnb_branches/cnb_branch_20090215

  • branches/cnb_branches/cnb_branch_20090215/Ohana/Makefile.in

    r19682 r23199  
    7575        mkdir -p $(DESTLIB)
    7676        mkdir -p $(DESTBIN)
    77         for i in $(LIBS); do make $$i.install || exit; done
     77        for i in $(LIBS); do make $$i.install || exit 1; done
    7878        chmod +x ohana-config
    7979        cp -f ohana-config $(DESTBIN)/
     
    8383
    8484all:
    85         make libs || exit
    86         for i in $(PROGRAM); do make $$i || exit; done
     85        make libs || exit 1
     86        for i in $(PROGRAM); do make $$i || exit 1; done
    8787
    8888extras:
    89         for i in $(EXTRAS); do make $$i || exit; done
     89        for i in $(EXTRAS); do make $$i || exit 1; done
    9090
    9191pantasks:
    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
    9696
    9797mana:
    9898        make libs
    9999        make kapa2.install
    100         cd src/opihi; make mana.install && exit
     100        cd src/opihi; make mana.install && exit 1
    101101
    102102dvoshell:
    103103        make libs
    104104        make kapa2.install
    105         cd src/opihi; make dvo.install && exit
     105        cd src/opihi; make dvo.install && exit 1
    106106
    107107clean:
    108108        @if [ "$(ARCH)" = "" ]; then echo ""; echo " *** please define ARCH ***"; echo; exit 1; fi
    109         for i in $(LIBS); do make $$i.clean || exit; done
    110         for i in $(PROGRAM); do make $$i.clean || exit; done
    111         for i in $(EXTRAS); do make $$i.clean || exit; done
     109        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
    112112        @rm -f `find . -name .mana`
    113113        @rm -f `find . -name .dvo`
     
    116116dist:
    117117        @if [ "$(ARCH)" = "" ]; then echo ""; echo " *** please define ARCH ***"; echo; exit 1; fi
    118         for i in $(LIBS); do make $$i.dist || exit; done
    119         for i in $(PROGRAM); do make $$i.dist || exit; done
     118        for i in $(LIBS); do make $$i.dist || exit 1; done
     119        for i in $(PROGRAM); do make $$i.dist || exit 1; done
    120120        @echo -n -e "\0033]0; *** Ohana: done $@ *** \0007" \
    121121
    122122install:
    123123        @if [ "$(ARCH)" = "" ]; then echo ""; echo " *** please define ARCH ***"; echo; exit 1; fi
    124         for i in $(LIBS); do make $$i.install || exit; done
    125         for i in $(PROGRAM); do make $$i.install || exit; done
     124        for i in $(LIBS); do make $$i.install || exit 1; done
     125        for i in $(PROGRAM); do make $$i.install || exit 1; done
    126126        @echo -n -e "\0033]0; *** Ohana: done $@ *** \0007" \
    127127
    128128install.extras:
    129         for i in $(EXTRAS); do make $$i.install || exit; done
     129        for i in $(EXTRAS); do make $$i.install || exit 1; done
    130130        @echo -n -e "\0033]0; *** Ohana: done $@ *** \0007" \
    131131
  • branches/cnb_branches/cnb_branch_20090215/Ohana/src/addstar/include/skycells.h

    r21536 r23199  
    1212# include <glob.h>
    1313
    14 enum {SQUARES, TRIANGLES, LOCAL};
     14enum {SQUARES, TRIANGLES, LOCAL, RINGS};
    1515enum {TETRAHEDRON, CUBE, OCTOHEDRON, DODECAHEDRON, ICOSAHEDRON};
    1616
     
    6767double SCALE;
    6868double PADDING;
     69double CELLSIZE;
    6970int    LEVEL;
    7071
     
    8485int          sky_tessellation               PROTO((FITS_DB *db, int level, int Nmax, int mode, double scale));
    8586int          sky_tessellation_init          PROTO((double scale));
     87
    8688int          sky_tessellation_local         PROTO((FITS_DB *db, int level, int Nmax));
    8789int          sky_tessellation_triangles     PROTO((FITS_DB *db, int level, int Nmax));
    8890int          sky_tessellation_squares       PROTO((FITS_DB *db, int level, int Nmax));
     91int          sky_tessellation_rings         PROTO((FITS_DB *db, int level, int Nmax));
     92
    8993int          sky_triangle_to_image          PROTO((Image *image, SkyTriangle *triangle));
    9094int          sky_triangle_to_rectangle      PROTO((SkyRectangle *image, SkyTriangle *triangle));
     95
    9196int          sky_rectangle_local            PROTO((SkyRectangle *rectangle));
    9297int          sky_subdivide_image            PROTO((Image *output, SkyRectangle *input, int Nx, int Ny));
    9398int          sky_triangle_coords            PROTO((SkyTriangle *triangle));
     99
     100SkyRectangle *sky_rectangle_ring            PROTO((float dec, float dDEC, int *nring));
     101
    94102SkyTriangle *sky_divide_triangles           PROTO((SkyTriangle *in, int *ntriangles));
    95103SkyTriangle *sky_base_triangles             PROTO((int *ntriangles));
  • branches/cnb_branches/cnb_branch_20090215/Ohana/src/addstar/src/args_skycells.c

    r21048 r23199  
    3535      MODE = LOCAL;
    3636    }
     37    if (!strcasecmp (argv[N], "rings")) {
     38      MODE = RINGS;
     39    }
    3740    remove_argument (N, &argc, argv);
    3841  }
     
    140143
    141144  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");
    148163      help ();
    149164    } 
     165    remove_argument (N, &argc, argv);
    150166  }
    151167
  • branches/cnb_branches/cnb_branch_20090215/Ohana/src/addstar/src/sky_tessalation.c

    r21536 r23199  
    1111  sky_tessellation_init (scale);
    1212
    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;
    2628  }
    2729
     
    222224
    223225  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
     231int 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  }   
    224268  return (TRUE);
    225269}
     
    480524
    481525  return (TRUE);
     526}
     527
     528// define the parameters of a single sky projection center
     529SkyRectangle *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);
    482585}
    483586
Note: See TracChangeset for help on using the changeset viewer.