예제 #1
0
파일: Rotate.cpp 프로젝트: hnicypb/VChecker
//RGB values = From 0 to 1
int CRotate::RGBtoHSL(double r, double g, double b, double* h, double* s, double* l)
{
  double vmin, vmax, delta;
  double dr,dg,db;

  vmin = ccmin( r, g, b );                // Min. value of RGB
  vmax = ccmax( r, g, b );                // Max. value of RGB
  delta = vmax - vmin;                    // Delta RGB value

  *l = ( vmax + vmin ) / 2;

  if ( delta == 0 )                     // This is a gray, no chroma...
  {
     *h = 0;                            // HSL results = From 0 to 1
     *s = 0;
  }
  else                                  // Chromatic data...
  {
     if ( *l < 0.5 ) *s = delta / ( vmax + vmin );
     else            *s = delta / ( 2 - vmax - vmin );

     dr = ( ( ( vmax - r ) / 6.0 ) + ( delta / 2.0 ) ) / delta;
     dg = ( ( ( vmax - g ) / 6.0 ) + ( delta / 2.0 ) ) / delta;
     db = ( ( ( vmax - b ) / 6.0 ) + ( delta / 2.0 ) ) / delta;

     if      ( r == vmax ) *h = db - dg;
     else if ( g == vmax ) *h = ( 1.0/3.0 ) + dr - db;
     else if ( b == vmax ) *h = ( 2.0/3.0 ) + dg - dr;

     if ( *h < 0 ) *h += 1;
     if ( *h > 1 ) *h -= 1;
  }

  return 1;
}
예제 #2
0
파일: Rotate.cpp 프로젝트: hnicypb/VChecker
int CRotate::RGBtoHSV(double r, double g, double b, double* h, double* s, double* v)
{
  double var_Min;
  double var_Max;
  double del_Max;

  var_Min  = ccmin( r, g, b );    //Min. value of RGB
  var_Max  = ccmax( r, g, b );    //Max. value of RGB
  del_Max = var_Max - var_Min;    //Delta RGB value 

  *v = var_Max;

  if ( del_Max == 0 )                      // This is a gray, no chroma...
  {
     *h = 0;                               // HSV results = From 0 to 1
     *s = 0;
  }
  else                                     // Chromatic data...
  {
     double del_R = ( ( ( var_Max - r ) / 6 ) + ( del_Max / 2 ) ) / del_Max;
     double del_G = ( ( ( var_Max - g ) / 6 ) + ( del_Max / 2 ) ) / del_Max;
     double del_B = ( ( ( var_Max - b ) / 6 ) + ( del_Max / 2 ) ) / del_Max;

     *s = del_Max / var_Max;


     if      ( r == var_Max ) *h = del_B - del_G;
     else if ( g == var_Max ) *h = ( 1./3 ) + del_R - del_B;
     else if ( b == var_Max ) *h = ( 2./3 ) + del_G - del_R;

     if ( *h < 0 ) ; 
	 *h += 1;
     if ( *h > 1 ) ; 
	 *h -= 1;
  }

  return 1;
}
예제 #3
0
파일: sampsize.c 프로젝트: glaziou/sampsize
int
main (int argc, char **argv)
{
  char *xmalloc ();
  char *xrealloc ();
  char *xstrdup ();
  int infpop;
  double nb;

  /* Check parameters */
  Cmdline *cmd = parseCmdline (argc, argv);

  if ((cmd->show_helpP) | (argc == 1))
    usage ();

  if (cmd->show_versionP)
    {
      printf ("%s %s\n", argv[0], VERSION);
      exit (0);
    }

  check_param (cmd);

  infpop = (cmd->pop == 0) ? 1 : 0;

  cmd->precision /= PC;
  cmd->prevalence /= PC;
  cmd->level /= PC;
  cmd->alpha /= PC;
  cmd->power /= PC;
  cmd->exposed /= PC;

  if (cmd->observedP)
    {
      nb = small_sampsi (cmd);
      display_small (cmd, nb);
    }

  else if (cmd->odds_ratioP && !cmd->sampleP)
    {
      cmd->ratio = floor (cmd->ratio);
      if (cmd->ratio < 1)
	sperror ("option -c should be >= 1");

      case_control (cmd);
    }

  /* Absolute precision then sample size equals population size */
  else if (cmd->precision == 0 && cmd->pop > 0)
    {
      nb = cmd->pop;
      display_surv (cmd, nb, infpop);
    }

  else if (cmd->precisionP)
    {
      nb = sampsi (cmd);
      display_surv (cmd, nb, infpop);
    }
  else if (cmd->binomialP)
    binom_ci (cmd);

  else if (cmd->compP && !cmd->sampleP && !cmd->deltaP)
    comp (cmd);

  else if (cmd->meansP && !cmd->sampleP && !cmd->deltaP)
    means (cmd);

  else if (cmd->sampleP && cmd->exposedP && !cmd->odds_ratioP && cmd->powerP
	   && !cmd->matchedP)
    ccmin (cmd);

  else if (cmd->sampleP && cmd->compP && !cmd->deltaP)
    ppower (cmd);

  else if (cmd->sampleP && cmd->meansP && !cmd->deltaP)
    mpower (cmd);

  else if (cmd->sampleP && cmd->odds_ratioP && cmd->exposedP
	   && !cmd->matchedP)
    ccpower (cmd);

  else if (cmd->sampleP && cmd->matchedP && cmd->odds_ratioP && cmd->exposedP)
    mccpower (cmd);

  else if (cmd->deltaP && cmd->compP && !cmd->sampleP)
    nequivp (cmd);

  else if (cmd->deltaP && cmd->meansP && !cmd->sampleP)
    nequivm (cmd);

  else
    sperror ("wrong combination of options, or missing options");

  exit (0);
}