IPP Software Navigation Tools IPP Links Communication Pan-STARRS Links

Ignore:
Timestamp:
Nov 30, 2008, 7:45:21 AM (18 years ago)
Author:
eugene
Message:

modify functions to use both int and flt vectors

File:
1 edited

Legend:

Unmodified
Added
Removed
  • branches/eam_branch_20081124/Ohana/src/opihi/cmd.data/vclip.c

    r20839 r20857  
    33int vclip (int argc, char **argv) {
    44
    5   int i, Npix, DO_NAN, DO_INF, N;
     5  int i, Npix, DO_NAN, DO_INF, DO_CLIP, N;
    66  double min, Vmin, max, Vmax, nan_val, inf_val;
    77  opihi_flt *in;
     
    3333  if ((vec = SelectVector (argv[1], OLDVECTOR, TRUE)) == NULL) return (FALSE);
    3434
     35  DO_CLIP = FALSE;
    3536  if (argc == 6) {
    3637    min = atof (argv[2]);
     
    3839    max = atof (argv[4]);
    3940    Vmax = atof (argv[5]);
     41    DO_CLIP = TRUE;
    4042  }
    4143
     44  if (DO_NAN && vec[0].type == OPIHI_INT) {
     45    gprint (GP_ERR, "  warning : clipping on NAN is invalid for INT vectors\n");
     46    return (FALSE);
     47  }
     48   
     49  if (DO_INF && vec[0].type == OPIHI_INT) {
     50    gprint (GP_ERR, "  warning : clipping on INF is invalid for INT vectors\n");
     51    return (FALSE);
     52  }
     53   
    4254  Npix = vec[0].Nelements;
    43   in =   vec[0].elements.Flt;
    4455
    45   if (argc == 6) {
     56  if (vec[0].type == OPIHI_FLT) {
     57    opihi_flt *in =  vec[0].elements.Flt;
    4658    for (i = 0; i < Npix; i++, in++) {
    47       if (*in < min)
     59      if (DO_CLIP && (*in < min)) {
    4860        *in = Vmin;
    49       if (*in > max)
     61      }
     62      if (DO_CLIP && (*in > max)) {
    5063        *in = Vmax;
    51     }
    52   }
    53   in = vec[0].elements.Flt;
    54   if (DO_NAN) {
    55     for (i = 0; i < Npix; i++, in++) {
    56       if (isnan (*in)) {
     64      }
     65      if (!finite (*in) && DO_INF) {
     66        *in = inf_val;
     67      }
     68      if (isnan (*in) && DO_NAN) {
    5769        *in = nan_val;
    5870      }
    5971    }
    60   }
    61   in = vec[0].elements.Flt;
    62   if (DO_INF) {
     72  } else {
     73    opihi_int *in =  vec[0].elements.Int;
    6374    for (i = 0; i < Npix; i++, in++) {
    64       if (!finite (*in)) {
    65         *in = inf_val;
     75      if (DO_CLIP && (*in < min)) {
     76        *in = Vmin;
     77      }
     78      if (DO_CLIP && (*in > max)) {
     79        *in = Vmax;
    6680      }
    6781    }
    6882  }
    6983  return (TRUE);
    70 
    7184}
    72 
    73 
Note: See TracChangeset for help on using the changeset viewer.