【问题标题】:Colormap library for C++ which converts a given value into red, green and blue values用于 C++ 的颜色图库,可将给定值转换为红色、绿色和蓝色值
【发布时间】:2011-10-31 16:11:55
【问题描述】:

我正在寻找一个将给定值转换为红色、绿色和蓝色值的颜色图库。类似于 matlab [1] 的颜色图功能。最好在 C++ 中。

[1]http://www.mathworks.com/help/techdoc/ref/colormap.html

【问题讨论】:

  • 深夜问这个,看颜色选择器的时候想起来很简单:)

标签: c++ c colors visualization


【解决方案1】:

我个人认为这对于一个库来说太简单了,我自己实现了它,他们是 C 中的示例(您可以查找 wikipedia 以获取数学解释):

    /** 
     * Computes the color gradiant
     * color: the output vector 
     * x: the gradiant (beetween 0 and 360)
     * min and max: variation of the RGB channels (Move3D 0 -> 1)
     */
    void GroundColorMix(double* color, double x, double min, double max)
{
   /*
    * Red = 0
    * Green = 1
    * Blue = 2
    */
    double posSlope = (max-min)/60;
    double negSlope = (min-max)/60;

    if( x < 60 )
    {
        color[0] = max;
        color[1] = posSlope*x+min;
        color[2] = min;
        return;
    }
    else if ( x < 120 )
    {
        color[0] = negSlope*x+2*max+min;
        color[1] = max;
        color[2] = min;
        return;
    }
    else if ( x < 180  )
    {
        color[0] = min;
        color[1] = max;
        color[2] = posSlope*x-2*max+min;
        return;
    }
    else if ( x < 240  )
    {
        color[0] = min;
        color[1] = negSlope*x+4*max+min;
        color[2] = max;
        return;
    }
    else if ( x < 300  )
    {
        color[0] = posSlope*x-4*max+min;
        color[1] = min;
        color[2] = max;
        return;
    }
    else
    {
        color[0] = max;
        color[1] = min;
        color[2] = negSlope*x+6*max;
        return;
    }
}

【讨论】:

  • 是的,但您可能希望选择不同的方案,如在 matlab 中。
猜你喜欢
  • 2014-08-26
  • 2016-08-20
  • 1970-01-01
  • 2020-05-08
  • 1970-01-01
  • 2015-09-29
  • 2011-10-28
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多