⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 defcolor.cpp

📁 FreeFem++可以生成高质量的有限元网格。可以用于流体力学
💻 CPP
字号:
// -*- Mode : c++ -*-//// SUMMARY  :      // USAGE    :        // ORG      : // AUTHOR   : Frederic Hecht// E-MAIL   : hecht@ann.jussieu.fr///*  This file is part of Freefem++  Freefem++ is free software; you can redistribute it and/or modify it under the terms of the GNU Lesser General Public License as published by the Free Software Foundation; either version 2.1 of the License, or (at your option) any later version.  Freefem++  is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU Lesser General Public License for more details.  You should have received a copy of the GNU Lesser General Public License along with Freefem++; if not, write to the Free Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA  02110-1301  USA */#include <cmath>using namespace std;void DefColor(float & r, float & g, float & b,              int k,int nb, bool hsv,bool grey,int nbcolors,float *colors); void hsvToRgb (float h, float s, float v, float & r, float & g, float & b){  int i;  float aa, bb, cc, f;  if (s == 0) /* Grayscale */    r = g = b = v;  else {    h = h - floor(h);    if (h == 1.0) h = 0;    h *= 6.0;    i =  int(h);    f = h - i;    aa = v * (1 - s);    bb = v * (1 - (s * f));    cc = v * (1 - (s * (1 - f)));    switch (i) {    case 0: r = v;  g = cc; b = aa; break;    case 1: r = bb; g = v;  b = aa; break;    case 2: r = aa; g = v;  b = cc; break;    case 3: r = aa; g = bb; b = v;  break;    case 4: r = cc; g = aa; b = v;  break;    case 5: r = v;  g = aa; b = bb; break;    }  }}//  def des couleurs de la tables void DefColor(float & r, float & g, float & b,              int k,int nb, bool hsv,bool grey,int nbcolors,float *colors){  if(k<=0) {  r=g=b=1.;} //  white  else if (k==1)  { r=g=b=0.; } // black  else if (k >= nb)   {  r=g=b=0.;} // black  else if (grey) { float gg = 0.1+0.9*float(k-2)/(nb-3); r=g=b=gg;}   else if (nbcolors<=1) {       float h=float(k-2)/(nb-2),s=1.,v=1.;     hsvToRgb(h,s,v,r,g,b);      return;}       else   { //  interpolation dans la table hsv          int i= (k-2);       int j0= i*(nbcolors-1) / (nb-2);      int j1=j0+1;      int i0=  j0*(nb-2)/(nbcolors-1);      int i1=  j1*(nb-2)/(nbcolors-1);      int j03=j0*3,j13=j1*3;      float a=float(i1-i)/(i1-i0),a1=1-a;      if (hsv)       {        float h = colors[j03+0]*a + colors[j13+0]*a1;        float s = colors[j03+1]*a + colors[j13+1]*a1;        float v = colors[j03+2]*a + colors[j13+2]*a1;        hsvToRgb(h,s,v,r,g,b); }      else       {       r = colors[j03+0]*a + colors[j13+0]*a1;       g = colors[j03+1]*a + colors[j13+1]*a1;       b = colors[j03+2]*a + colors[j13+2]*a1;      }    }      }

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -